回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【AI】Maixduino轻松学系列 —— (3)基于Mind+的简易NTP网络时钟 简单

头像 豆爸 2021.10.25 1898 1

Maixduino轻松学系列课程:

1、Maixduino轻松学系列 —— (1)初识Maixduino

2、Maixduino轻松学系列 —— (2)Mind+带你畅玩经典红白机游戏

3、Maixduino轻松学系列 —— (3)基于Mind+的简易NTP网络时钟

4、Maixduino轻松学系列 —— (4)基于Mind+的图像识别:人脸检测

5、Maixduino轻松学系列 —— (5)有屏幕的地方就有BAD APPLE

6、Maixduino轻松学系列 —— (6)基于ASR语音识别控制红绿灯

7、Maixduino轻松学系列 —— (7)超声波传感器的认识与使用

 

NTP工作原理

1、NTP(Network Time Protocol, 网络时间协议)是由RFC 1305定义的时间同步协议,基于UDP协议进行传输,端口号是 123;
2、同步时钟过程需要记录四个时间点:离开被同步设备时间T1、达到同步设备时间T2、离开同步是被时间T3、回到被同步设备时间T4,由此可计算往返延迟时间为:(T4-T1)-(T3-T2),设备时间差为:((T2-T1)+(T3-T4))/2。

project-image

NTP的基本工作原理如上图所示。Device A和Device B通过网络相连,它们都有自己独立的系统时钟,需要通过NTP实现各自系统时钟的自动同步。为便于理解,作如下假设:

在Device A和Device B的系统时钟同步之前,Device A的时钟设定为10:00:00am,Device B的时钟设定为11:00:00am。

Device B作为NTP时间服务器,即Device A将使自己的时钟与Device B的时钟同步。

NTP报文在Device A和Device B之间单向传输所需要的时间为1秒。

步骤1 打开Mind+,连接Maixduino

project-image

步骤2 添加扩展库

本项目使用到了5个扩展库,分别为:网络、文字显示、NTP、定时器、机器视觉。

project-image

NTP扩展库,通过“扩展——网络服务——NTP”,进行添加。

project-image

机器视觉和定时器扩展库,通过“扩展——功能模块——机器视觉”、“扩展——功能模块——定时器”进行添加。

project-image

文字显示扩展库,通过“扩展——用户库”,分别输入项目网址https://gitee.com/hockel/chinese-display-for-maixduino,搜索,进行添加。

project-image

网络扩展库,通过“扩展——用户库”,分别输入项目网址https://gitee.com/hockel/nerwork,搜索,进行添加。

步骤3 编写程序

project-image

步骤4 修改代码

代码
# Maixduino网络时钟 by 豆爸 2021年10月25日
from network_esp32 import wifi
from machine import Timer
import lcd,image
import network
import ntptime
import time


# 事件回调函数
def timer0_tick(_):
  img.clear()
  img.draw_string(40, 100,  (str(time.localtime()[3]) + str((str(" : ") + str((str(time.localtime()[4]) + str((str(" : ") + str(time.localtime()[5])))))))), scale=4,color = 0xFFFFFF)
  lcd.display(img)

#主程序
lcd.init(freq=15000000, color=0, invert=0)
lcd.draw_string(40, 120, str("Connecting to the Network"), 65535, 0)
if wifi.isconnected() == False:
    for i in range(5):
        try:
            wifi.reset(is_hard=True)
            print('try AT connect wifi...')
            wifi.connect("GOCLOUD", "L2100Hbb")
            if wifi.isconnected():
                break
        except Exception as e:
            print(e)
lcd.clear(0)
print(wifi.ifconfig()[0])
lcd.draw_string(80, 120, str(wifi.ifconfig()[0]), 65535, 0)
ntptime.settime(8, "ntp.ntsc.ac.cn")
time.sleep(2)
lcd.clear(0)
img = image.Image()
tim0 =Timer(Timer.TIMER0,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=1000,callback=timer0_tick)

步骤5 运行

project-image

改进方向:

1、增加日期、星期显示功能

2、增加TTS语音模块,实现整点语音报时功能

3、增加未来3天的天气显示功能

4、连接MQTT,增加文字备忘提醒等功能

评论

user-avatar
  • 驴友花雕

    驴友花雕2021.10.26

    学习了

    0