ESP32连接WiFi并控制LED

1. 导入所需库

import network
import time
import socket
import machine

2. 定义连接WiFi的函数

def do_connect():
    #链接wifi网络
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('HUAWEI-NZX_2.4G', '987654321')
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())

这个函数用于连接指定的WiFi网络。首先创建一个WLAN对象,然后激活它。接着检查是否已经连接到网络,如果没有则尝试连接。最后打印出网络配置信息。

3. 创建UDP套接字

def start_udp():
    # 1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2. 绑定本地信息
    udp_socket.bind(("0.0.0.0", 7788))	#"0.0.0.0"接受所有的ip
    return udp_socket

这个函数用于创建一个UDP套接字,并将其绑定到本地IP地址和端口号7788上。返回创建好的UDP套接字对象。

4. 主函数

def main():
    #连接wifi
    do_connect()
    #创建udp对象
    udp_socket=start_udp()
    #创建GPIO对象
    pin2=machine.Pin(2,machine.Pin.OUT)
    #接收udp数据
    while True:
        recv_data,sender_info=udp_socket.recvfrom(1024)
        print("{}发送的数据:{}".format(sender_info,recv_data))
        recv_data_str=recv_data.decode("utf-8")	#解码
        print("解码后的数据:{}".format(recv_data_str))
        #根据解码后的udp数据控制led
        if recv_data_str =='on':
            pin2.value(1) 
        elif recv_data_str=='off':
            pin2.value(0) 

这个函数是程序的主入口。首先调用do_connect()函数连接WiFi网络,然后调用start_udp()函数创建UDP套接字。接着创建一个GPIO对象pin2,用于控制LED的亮灭。在无限循环中,接收UDP数据,并根据接收到的数据控制LED的亮灭。

5. 运行程序

在代码末尾添加以下语句来运行程序:

if __name__ == "__main__":
    main()

这样,当程序作为主模块运行时,会执行main()函数。

5.socket简介 (itprojects.cn)


完整代码

1.让esp32链接wifi,让其拥有ip地址
2.创建UDP socket
3.接收UDB数据
4.根据接收到的数据控制亮灭

import network
import time
import socket
import machine
def do_connect():
    #链接wifi网络
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('HUAWEI-NZX_2.4G', '987654321')
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())
def start_udp():
    # 1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2. 绑定本地信息
    udp_socket.bind(("0.0.0.0", 7788))	#"0.0.0.0"接受所有的ip
    return udp_socket

def main():
    #连接wifi
    do_connect()
    #创建udp对象
    udp_socket=start_udp()
    #创建GPIO对象
    pin2=machine.Pin(2,machine.Pin.OUT)
    #接收udp数据
    while True:
        recv_data,sender_info=udp_socket.recvfrom(1024)
        print("{}发送的数据:{}".format(sender_info,recv_data))
        recv_data_str=recv_data.decode("utf-8")	#解码
        print("解码后的数据:{}".format(recv_data_str))
        #根据解码后的udp数据控制led
        if recv_data_str =='on':
            pin2.value(1) 
        elif recv_data_str=='off':
            pin2.value(0) 
    
    
    

if __name__ == "__main__":
    main()


效果演示

发送电脑端串口发送on,LED和二极管点亮在这里插入图片描述
在这里插入图片描述

发送电脑端串口发送off,LED和二极管熄灭
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
1. 首先,在Arduino IDE中安装ESP32开发板支持库。打开Arduino IDE,点击“文件”->“首选项”,将以下链接添加到“附加开发板管理器网址”中:https://dl.espressif.com/dl/package_esp32_index.json。然后点击“工具”->“开发板”->“开发板管理器”,搜索“ESP32”并安装支持库。 2. 连接ESP32开发板和LED。将ESP32的GND引脚连接LED的负极,将ESP32的GPIO引脚连接LED的正极。 3. 编写Arduino代码。打开Arduino IDE,创建一个新的项目。在代码中引入WiFiESP32库,并定义LED的GPIO引脚号。在setup()函数中,连接WiFi网络。在loop()函数中,使用digitalWrite()函数控制LED的开关。 以下是示例代码: ``` #include <WiFi.h> #include <esp_wifi.h> const char* ssid = "Your_SSID"; const char* password = "Your_PASSWORD"; const int ledPin = 2; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } ``` 4. 上传代码到ESP32开发板。将ESP32开发板连接到计算机,选择正确的开发板和端口,并点击“上传”按钮将代码上传到开发板。 5. 测试LED控制。打开串口监视器,查看ESP32开发板是否成功连接WiFi网络。如果连接成功,LED会每隔一秒钟闪烁一次。如果没有闪烁,请检查连接是否正确。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁子希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值