esp32 连接 WIFI
-
WIFI 两种模式
-
- AP模式 自己开放wifi 提供别人连接
-
- STA模式 连接wifi
-
官方文档
https://docs.micropython.org/en/latest/esp32/quickref.html#wlan
连接WIFI代码
import network
wlan = network.WLAN(network.STA_IF) # 创建wifi 对象
wlan.active(True) # 开启wifi
wlan.scan() # 查找wifi
wlan.isconnected() # 判断有没有连接wifi
wlan.connect('ssid', 'key') # 连接wifi
wlan.ifconfig() # 查看IP地址等信息
开放WIFI代码
import network
ap = network.WLAN(network.AP_IF) # create access-point interface
ap.config(ssid='ESP-AP') # set the SSID of the access point
ap.config(max_clients=10) # set how many clients can connect to the network
ap.active(True) # activate the interface
测试网络连通性 socket 连接
- 在本地电脑执行以下代码 创建一个udp 连接 打印 接收 消息
- 下面是一个示例代码:
import socket
# 定义IP地址和端口号
HOST = '0.0.0.0' # IP地址为本机(localhost)
PORT = 8888 # 自定义端口号
# 创建UDP Socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 将Socket绑定到指定的IP地址和端口上
server_socket.bind((HOST, PORT))
while True:
# 接收客户端发送过来的数据
data, client_address = server_socket.recvfrom(1024)
# 处理接收到的数据
response = "Received message from {} : {}".format(client_address[0], data.decode())
print(response)
- 在 ESP32 上运行 连接udp 发送数据
from socket import *
# 创建udp socket
udp_socket = socket(AF_INET,SOCK_DGRAM)
# 指定对方地址 和端口
HOST = '192.168.1.2'
PORT = 8888
# 指定发送数据
send_data = 'hello word'
# 发送数据
udp_socket.sendto(send_data.encode('utf-8'),(HOST,PORT))
# 当输入发送数据时 本地电脑上显示 Received message from 192.168.1.13 : hello world 内容为成功
由此可以设置 esp32 启动程序 自动连接wifi 后 开启一个 tcp 端口 然后电脑远程 tcp 端口 实现临时远程开发
import network
from machine import Pin
import time
def led_flicker():
led = Pin(2,Pin.OUT)
while True:
led.vlaue(1)
time.sleep(0.3)
led.vlaue(0)
time.sleep(0.3)
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
try:
wlan.connect('CMCC-XAhw','xxx')
except Exception as e: # 当连接wifi 失败时 频闪led
led_flicker()
if not wlan.isconnected(): # 当连接wifi 失败时 频闪led
led_flicker
from socket import *
server_socket = socket(AF_INET, SOCK_STREAM)
HOST = '0.0.0.0'
PORT = 8888
server_socket.bind((HOST,PORT))
server_socket.listen(1)
client_socket, ip_port = server_socket.accept()
while True:
recv_data = client_socket.recv(1024) # 接收消息
response = recv_data.decode()
print(response)
exec_return = eval(response)
print(exec_return)
client_socket.sendall(exec_return .encode('utf-8'))
自己电脑端 (地址需要手动 扫描一下)
from socket import *
client_socket = socket(AF_INET, SOCK_STREAM)
HOST = '192.168.1.13'
PORT = 8888
client_socket.connect((HOST,PORT))
exec = '1+2'
client_socket.sendall(exec.encode('utf-8'))
exec_retrun = client_socket.recv(1024)
print(exec_return.decode())