【得捷电子Follow me第2期】任务2:网络功能使用
本帖最后由 Tristan_C 于 2023-8-30 09:01 编辑<p>任务2的内容是网络功能的使用,也就是完成网络功能的使用,能够创建热点和连接到WiFi,鉴于Circuit Python非常丰富的参考,再结合ESP32-S3本身也已经有原生软硬件支持WiFi,因此也是非常容易实现WiFI的AP和Station。</p>
<p>一、WiFi AP热点功能</p>
<p>首先在文件settings.toml中定义WiFi使用到的SSID和Password</p>
<p></p>
<p>如下图定义。</p>
<p></p>
<p>然后在使用是,利用os.getenv接口获取。</p>
<p>具体实现代码如下</p>
<pre>
<code class="language-python">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</code></pre>
<p>保存运行之后板载显示屏显示信息如下</p>
<p></p>
<p>就可以用电脑扫描到该热点。</p>
<p></p>
<p>此时可以点击链接,输入前述密码建立链接如下。</p>
<p></p>
<p></p>
<p>二、WiFi Station功能连接到WiFi热点</p>
<p>昨晚了AP的功能,接下来实现任务中作为station链接到别的AP的功能。</p>
<p>完成的目标是能够连接到指定ssid和password的ap,并能通过网络API获取当前时。</p>
<p>首先同样需要在文件settings.toml中定义WiFi使用到的SSID和Password,只不过这次使用的ssid和password是被链接的ap的信息。然后再定义时间戳获取的接口api地址。</p>
<p>使用的地址可以参考如下的获取时间api接口大全</p>
<p></p>
<p>这里选择一个苏宁的接口接口地址</p>
<p><a href="http://quan.suning.com/getSysTime.do">http://quan.suning.com/getSysTime.do</a></p>
<p>该接口返回的时间信息如下图,会比较方便显示,通过json解析即可,在浏览器输入API获得回复如下。</p>
<p></p>
<p>我们将其也加到settings.toml中</p>
<p></p>
<p>而为了能让时间滚动起来,我们加入time,每2秒通过该api请求一次时间</p>
<p>本次需要额外添加的是adafruit_requests</p>
<p></p>
<p>具体代码如下:</p>
<pre>
<code class="language-python">import os
import wifi
import ssl
import socketpool
import adafruit_requests
import time
print("Flow Me Task 2:WiFi station Mode(connect to an AP)")
print(f"ESP32 connecting to {os.getenv('WIFI_SSID')}")
wifi.radio.connect(os.getenv("WIFI_SSID"), os.getenv("WIFI_PASSWORD"))
print(f"ESP32 connected to {os.getenv('WIFI_SSID')}")
print(f"My MAC address: {}")
print(f"My IP address: {wifi.radio.ipv4_address}")
print("Get time from SUNING.")
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']}")</code></pre>
<p>运行效果</p>
<p></p>
<p></p>
<p>python确实方便,不像C那么繁琐。</p>
wangerxian 发表于 2023-8-31 14:21
python确实方便,不像C那么繁琐。
<p>对的,确实很方便。我也是学习阶段,其实给我个人感觉是CircuitPython做了底层的封装,包括硬件驱动,这样一来,直接在应用python试用就可以,免去太多跟底层打交道的过程,看起来才会这么方便了</p>
页:
[1]