Tristan_C 发表于 2023-8-30 08:56

【得捷电子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>

wangerxian 发表于 2023-8-31 14:21

<p>python确实方便,不像C那么繁琐。</p>

Tristan_C 发表于 2023-8-31 18:50

wangerxian 发表于 2023-8-31 14:21
python确实方便,不像C那么繁琐。

<p>对的,确实很方便。我也是学习阶段,其实给我个人感觉是CircuitPython做了底层的封装,包括硬件驱动,这样一来,直接在应用python试用就可以,免去太多跟底层打交道的过程,看起来才会这么方便了</p>
页: [1]
查看完整版本: 【得捷电子Follow me第2期】任务2:网络功能使用