所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

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

hmilycheng hmilycheng 2021-10-25 11:51:07

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。

projectImage

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 步骤1
打开Mind+,连接Maixduino
projectImage
步骤2 步骤2
添加扩展库

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

projectImage

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

projectImage

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

projectImage

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

 

projectImage

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

 

步骤3 步骤3
编写程序
projectImage
步骤4 步骤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 步骤5
运行
projectImage

改进方向:

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

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

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

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

Makelog作者原创文章,未经授权禁止转载。
1
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]