[作品提交] 【得捷电子Follow me第2期】+任务2:网络功能使用

EPTmachine   2023-8-14 19:32 楼主

ESP32系列芯片的一大优点就是内置了Wifi功能,不需要外接Wifi芯片从而实现Wifi连接,这一优点使其特别适用于物联网应用。

1.程序使用到的硬件

由于芯片本身具有Wifi功能,所以实现网络功能只需要ESP32-S3芯片就可以了,不需要额外的器件,在Wifi应用中,ESP32-S3可以通过Wifi连接网络中,也可以创建为Wifi热点,让其他设备连接到ESP32-S3上。

2.连接到Wifi

参考Adafruit官网和CircutPython官网上对于Wifi功能的介绍,连接到附近的Wifi网络,需要的导入的库有os和wifi。

首先在对CIRCUTPY中的settings.toml修改,定义系统变量WIFI_SSID和WIFI_PASSWORD的值。settings.toml的内容示例如下:

WIFI_SSID = "WIFI名称"
WIFI_PASSWORD = "WIFI密码"

在code.py中添加以下代码,

# SPDX-FileCopyrightText: 2020 Brent Rubell for Adafruit Industries
#
# SPDX-License-Identifier: MIT

import os
import wifi

print("ESP32-S3 Station Test")

print(f"My MAC address: {[hex(i) for i in wifi.radio.mac_address]}")

print("Available WiFi networks:")
for network in wifi.radio.start_scanning_networks():
    print("\t%s\t\tRSSI: %d\tChannel: %d" % (str(network.ssid, "utf-8"),
                                             network.rssi, network.channel))
wifi.radio.stop_scanning_networks()

print(f"Connecting to {os.getenv('WIFI_SSID')}")
wifi.radio.connect(os.getenv("WIFI_SSID"), os.getenv("WIFI_PASSWORD"))
print(f"Connected to {os.getenv('WIFI_SSID')}")
print(f"My IP address: {wifi.radio.ipv4_address}")

在串口中打印的信息如下:

ESP32-S3 Station Test
My MAC address: ['0xf4', '0x12', '0xfa', '0x59', '0xd4', '0xe0']
Available WiFi networks:
	HOST_BWG		RSSI: -65	Channel: 6
	CMCC-2301		RSSI: -72	Channel: 6
	2101		RSSI: -63	Channel: 1
	ChinaNet-bb4Z		RSSI: -86	Channel: 1
	TP-LINK_1404		RSSI: -90	Channel: 1
	CMCC-2807		RSSI: -91	Channel: 11
	花花之家		RSSI: -93	Channel: 11
	2306		RSSI: -91	Channel: 4
	Xiaomi_85AB		RSSI: -88	Channel: 8
	Linzai_2401		RSSI: -91	Channel: 5
Connecting to HOST_BWG
Connected to HOST_BWG
My IP address: 192.168.0.101

3.创建Wifi热点

创建Wifi热点时,同时采用类似的方法,首先在CIRCUTPY中的settings.toml定义要创建的热点的AP_SSID和AP_PASSWORD。settings.toml的内容示例如下:

AP_SSID = "WIFI名称"
AP_PASSWORD = "WIFI密码"

在code.py中添加以下代码,

import os
import wifi
import adafruit_requests

print("ESP32-S3 Access Point Test")

print(f"My MAC address: {[hex(i) for i in wifi.radio.mac_address]}")

wifi.radio.start_ap(os.getenv("AP_SSID"), os.getenv("AP_PASSWORD"))

在电脑上就可以搜索到创建的热点名。

image.png  

4.总结

在官网和网上能找到的关于CircutPythton的Wifi使用教程,Wifi模块的设计高度模块化,各个函数的意义很明确,使用起来很方便,对于熟悉Wifi开发的人来说,可以很快地搭建应用,验证方案地可行性。

本帖最后由 EPTmachine 于 2023-8-14 19:38 编辑

回复评论 (4)

楼主你好,创建WiFi热点还需要特殊设计吗?代码没有提示错误,不过没有创建成功

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2023-8-20 07:45
引用: 秦天qintian0303 发表于 2023-8-20 07:45 楼主你好,创建WiFi热点还需要特殊设计吗?代码没有提示错误,不过没有创建成功

主程序最后要加一个

while:
    pass

点赞  2023-8-20 22:28

2c1806344d3aafe8c86edee5865dea6.jpg  

点赞  2023-8-20 22:30
引用: EPTmachine 发表于 2023-8-20 22:28 主程序最后要加一个 while:     pass

好的,我回去试一下  

在爱好的道路上不断前进,在生活的迷雾中播撒光引
点赞  2023-8-21 13:16
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复