硬件
    esp8266 01s
    arduino uno
    TM1637 4位数码管

    软件
    Arduino IDE
    使用NTP服务需要先安装 NTPClient 库,按组合件 Crtrl + Shift + I 调出库管理 具体操作如下所示:

    NTP 服务 简介
    NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。esp8266也可以通过建立与NTP服务的连接,来获取实时时间。

    在计算机的世界里,时间非常地重要,例如对于火箭发射这种科研活动,对时间的统一性和准确性要求就非常地高,是按照A这台计算机的时间,还是按照B这台计算机的时间?NTP就是用来解决这个问题的,NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。

    NTPClient 库的安装
    使用NTP服务需要先安装 NTPClient 库,按组合件 Crtrl + Shift + I 调出库管理 具体操作如下所示:

    接线
    ESP8266 Arduino UNO
    3V3 3.3V
    GND GND
    RX D2
    TX D3
    数码管 Arduino UNO
    VCC 5V
    GND GND
    CLK D11
    DIO D12
    ESP8266获取时间

    1. #include <NTPClient.h>
    2. // change next line to use with another board/shield
    3. #include <ESP8266WiFi.h>
    4. //#include <WiFi.h> // for WiFi shield
    5. //#include <WiFi101.h> // for WiFi 101 shield or MKR1000
    6. #include <WiFiUdp.h>
    7. const char *ssid = "test";
    8. const char *password = "12345678";
    9. WiFiUDP ntpUDP;
    10. // You can specify the time server pool and the offset (in seconds, can be
    11. // changed later with setTimeOffset() ). Additionaly you can specify the
    12. // update interval (in milliseconds, can be changed using setUpdateInterval() ).
    13. NTPClient timeClient(ntpUDP,"ntp1.aliyun.com",60*60*8,30*60*1000);
    14. void setup(){
    15. Serial.begin(115200);
    16. WiFi.begin(ssid, password);
    17. while ( WiFi.status() != WL_CONNECTED ) {
    18. delay ( 500 );
    19. Serial.print ( "." );
    20. }
    21. timeClient.begin();
    22. }
    23. void loop() {
    24. timeClient.update();
    25. Serial.println(timeClient.getFormattedTime());
    26. delay(1000);
    27. }

    配置WiFi密码和名字
    需要设置路由器的密码(Password)和名称(SSID)这样才可以esp8266才可以上网,具体操作如下:
    … …
    const char ssid = “602”; // 路由器名称
    const char
    password = “602602602”; // 路由器密码
    … …

    校准时区
    校准时区 由于全球的时间是不同的,所以需要校准时间,以北京时间为例,在创建实例的时候,见校准参数传入即可,具体操作如下: NTPClient
    timeClient(ntpUDP, “ntp1.aliyun.com”,60608, 30601000);

    Arduino UNO

    1. #include <TM1637.h>
    2. // 数码管 配置引脚
    3. #define CLK 11 //!参数 clk -数字引脚连接到模块的时钟引脚数
    4. #define DIO 12//!参数 dio -数字引脚连接到模块的DIO引脚数
    5. TM1637 TM(CLK, DIO);//!初始化一个TM1637对象,设置时钟和数据引脚。
    6. #include <SoftwareSerial.h>
    7. SoftwareSerial mySerial(2,3);//RX=2,TX=3
    8. String comdata="";
    9. void setup() {
    10. // put your setup code here, to run once:
    11. mySerial.begin(115200);
    12. Serial.begin(9600);
    13. }
    14. void loop() {
    15. // put your main code here, to run repeatedly:
    16. while(mySerial.available()){
    17. comdata += char(mySerial.read()); //每次读一个char字符,并相加
    18. delay(2);
    19. }
    20. if (comdata.length() > 0){
    21. String h=comdata.substring(0,2);
    22. String m=comdata.substring(3,5);
    23. int hour_=h.toInt();
    24. int minture_=m.toInt();
    25. TM.DNum(hour_,minture_,true);//显示双数字,左边两位显示num1最后两位;左边两位显示num2最后两位;piont 是否显示中间的两点
    26. TM.show(true);//设置数码管显示 为真显示,否则不显示
    27. // Serial.println(minture_);
    28. comdata="";
    29. }
    30. }