esp32 连接wifi 并测试udp socket 连接

esp32 连接 WIFI

连接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())
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32-C3是一款由Espressif Systems公司开发的低功耗单片机,它集成了Wi-Fi和蓝牙功能,特别适合于物联网应用。当涉及到Wi-Fi数据收发时,ESP32-C3使用了集成的Wi-Fi模块(通常称为ESP32-WROOM-32C或类似型号)来进行通信。 Wi-Fi收发数据的过程主要包括以下几个步骤: 1. **初始化网络**:首先,你需要初始化Wi-Fi模块并设置SSID(Wi-Fi网络名称)和密码。使用API如`esp_wifi_set_config()`配置Wi-Fi连接参数。 2. **连接到网络**:调用`esp_wifi_start()`函数尝试连接到所选的Wi-Fi网络,如果连接成功,`esp_event_loop_create_default()`可以用于处理接收到的网络事件。 3. **建立TCP/UDP连接**:如果你想进行TCP传输,使用`tcp_socket()`创建套接字,并调用`connect()`与服务器建立连接。如果是UDP,直接创建套接字即可。 4. **发送数据**:使用`send()`或`write()`函数将数据发送给服务器,如果是TCP,确保数据已打包成适当格式(如加上报头)。 5. **接收数据**:对于TCP,可以使用`recv()`或`read()`接收数据。UDP则通常需要使用`recvfrom()`来指定接收缓冲区和目标地址。 6. **数据处理和响应**:接收的数据可能需要解析和处理,然后根据应用需求决定是否回复或执行其他操作。 7. **断开连接**:在完成数据交换后,记得关闭套接字并可能断开Wi-Fi连接,使用`close()`或`disconnect()`。 8. **错误处理**:整个过程中都需要处理可能出现的错误,比如Wi-Fi连接失败、数据包丢失等。 **相关问题--:** 1. ESP32-C3如何设置静态IP地址进行Wi-Fi连接? 2. 如何在ESP32-C3上启用UDP数据包收发? 3. 什么是ESP32-WROOM-32C的API调用示例来创建TCP连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值