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。
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
步骤2 添加扩展库
本项目使用到了5个扩展库,分别为:网络、文字显示、NTP、定时器、机器视觉。
NTP扩展库,通过“扩展——网络服务——NTP”,进行添加。
机器视觉和定时器扩展库,通过“扩展——功能模块——机器视觉”、“扩展——功能模块——定时器”进行添加。
文字显示扩展库,通过“扩展——用户库”,分别输入项目网址https://gitee.com/hockel/chinese-display-for-maixduino,搜索,进行添加。
网络扩展库,通过“扩展——用户库”,分别输入项目网址https://gitee.com/hockel/nerwork,搜索,进行添加。
步骤3 编写程序
步骤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 运行
改进方向:
1、增加日期、星期显示功能
2、增加TTS语音模块,实现整点语音报时功能
3、增加未来3天的天气显示功能
4、连接MQTT,增加文字备忘提醒等功能
驴友花雕2021.10.26
学习了