【得捷电子Follow me第1期】+ 任务3 网络时间同步到板端
[复制链接]
一、PICO上的WIFI
Raspberry Pico W 和 Pico WH 在PICO的基础上添加了WIFI功能,使用英飞凌(Infineon)CYW43439 添加了板载单频2.4GHz 无线接口 (802.11n),同时保留了 Pico 外形。
板载2.4GHz无线接口具有以下特点:
- 无线 (802.11n),单频段 (2.4 GHz)
- WPA3
- 最多支持四个客户端的软接入点
原文如图1所示。
图1
该天线是从 ABRACON(ProAnt)获得许可的板载天线。无线接口通过SPI连接到RP2040微控制器。
由于管脚限制,部分无线接口管脚是共用的。 CLK与VSYS共用,因此只有当没有正在进行的 SPI传输时,才能通过ADC读取 VSYS。 Infineon CYW43439 DIN/DOUT 和 IRQ 在 RP2040 上共享一个引脚。只有当 SPI 事务未在进行时才适合检查 IRQ。该接口通常以33MHz 运行。
二、WIFI连接测试
根据直播课连接WiFi方法或者找到connecting-to-the-internet-with-pico-w.pdf这个文档3.6节测试,如图2所示
图2
测试连接代码如下:
import time
import network
import urequests
#from machine import Pin, I2C
#from ssd1306 import SSD1306_I2C
#i2c=I2C(0,sda=Pin(8),scl=Pin(9),freq=400000)
#oled = SSD1306_I2C(128, 64, i2c)
ssid = 'ZBWL001'#wifi名称
passwd = '24458871'#wifi密码
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid,passwd)
#try to connect wifi
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print('等待连接WiFi')
#oled.fill(0)
#oled.text('Wait WiFi',1,12,1)
#oled.show()
time.sleep(1)
#判定网络状态
if wlan.status() != 3:
raise RuntimeError('联网失败')
else:
print('网络已连接')
status = wlan.ifconfig()
print('ip = '+status[0])
#访问互联网测试
r = urequests.get("https://www.digikey.cn/zh")
print(r.status_code)
print(r.headers)
r.close()
打印如图3所示。
图3
三、同步网络时间
首先下载ntptime模块,下载地址为https://github.com/micropython/micropython-lib/blob/master/micropython/net/ntptime/ntptime.py,点击Mu软件的文件,如果灰色先点击REPL,再点击文件,将ntptime.py拖到设备上,如图4所示。
图4
编写测试程序,如下所示:
import time
import network
import urequests
from machine import RTC
import ntptime
#from machine import Pin, I2C
#from ssd1306 import SSD1306_I2C
#i2c=I2C(0,sda=Pin(8),scl=Pin(9),freq=400000)
#oled = SSD1306_I2C(128, 64, i2c)
ssid = 'ZBWL001'#wifi名称
passwd = '24458871'#wifi密码
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid,passwd)
#try to connect wifi
max_wait = 10
while max_wait > 0:
if wlan.status() < 0 or wlan.status() >= 3:
break
max_wait -= 1
print('等待连接WiFi')
#oled.fill(0)
#oled.text('Wait WiFi',1,12,1)
#oled.show()
time.sleep(1)
#判定网络状态
if wlan.status() != 3:
raise RuntimeError('联网失败')
else:
print('网络已连接')
status = wlan.ifconfig()
print('ip = '+status[0])
#访问互联网测试
#r = urequests.get("https://www.digikey.cn/zh")
#print(r.status_code)
#print(r.headers)
#r.close()
点击运行后,打印窗口显示如图5所示,时间已经校准。
图5
四、总结
学习了WiFi的连接方法,以及连接时间服务器同步网络时间到板端,同时熟悉Mu软件的使用。
|