得捷电子Follow me第2期】+任务2:网络功能使用
[复制链接]
本帖最后由 施小杰 于 2023-11-6 17:37 编辑
任务介绍:
任务2的内容是网络功能的使用,也就是完成网络功能的使用,能够创建热点和连接到WiFi,鉴于Circuit Python非常丰富的案列,再结合ESP32-S3本身也已经有原生软硬件支持WiFi,因此也是非常容易实现WiFI的AP模式和Station模式。
1.Wifi AP 热点功能
首先我们实现AP 功能,就是FSP32作为接入点,可以发射wifi。然后我们通过手机去连接。
首先在文件settings.toml中设置WiFi使用到的SSID和Password
然后利用os.getenv接口获取
import os
import wifi
print("Flow Me Task 2:WiFi AP Mode")
wifi.radio.start_ap(os.getenv("WIFI_SSID"),os.getenv("WIFI_PASSWORD"))
while True:
pass
1.1 实验现象:
然后打开电脑的WIFI开关,搜寻附近wifi,发现有我们设置的wifi,输入密码连接即可,整体来说很简单。
2.WiFi Station功能连接到WiFi热点
Station 功能可以连接到连接到指定ssid和password的ap,wifi工作在无线终端模式,可通过连接热点连接到网络,基本上现实我们使用的设备都可以工作在此模式,像我们的电脑、手机,工作在这种模式称为从模式。首先同样需要在文件settings.toml中定义WiFi使用到的SSID和Password,只不过这次使用的ssid和password是被链接的ap的信息。然后再定义时间戳获取的接口api地址。接下来设置连接的信息:除了wifi密码 还有一个就是API接口的地址,我选择苏宁的接口地址,每2秒获取一次。
设置好连接参数后,接下来编写代码:
import os
import ssl,wifi,time
import socketpool
import adafruit_requests
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
# 打印MAC地址
print(f"MAC address: {[hex(i) for i in wifi.radio.mac_address]}")
#进入联网
wifi.radio.connect(os.getenv("WIFI_SSID"), os.getenv("WIFI_PASSWORD"))
#打印IP地址
print(f"My IP address: {wifi.radio.ipv4_address}")
pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())
while True:
#每2秒获取一次时间
time.sleep(2)
response = requests.get(os.getenv("SUNING_TIME_API"))
print(f"{response.json()['sysTime2']}")
实验现象如下:在屏幕上面会显示时间,因为图片是以前拍的,所以时间会和发布时间有差距。
心得体会:网络连接实现挺简单的,对于小白很友好。感觉可以做个类似小电视那种东西 。感谢得捷电子举办的此次活动。
|