0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用ESP32实现UDP通信的方法

嵌入式开发爱好者 来源:嵌入式开发爱好者 作者:嵌入式开发爱好者 2022-11-14 10:21 次阅读

大家好,我是ST。

前面给大家分享了ESP32使用miropython编程环境搭建,今天给大家分享如何使用ESP32实现UDP通信

8fcbc438-629c-11ed-8abf-dac502259ad0.png

一、前言

ESP32本身自带WIFI模块,可以连接网络。本文主要是用ESP32连接手机热点,利用UDP协议将ESP32作为服务端,电脑利用网络助手软件作为客户端与ESP32通信,从而通过无线通信去控制ESP32上的LED灯的亮灭。

二、连接网络

Mriopython官方文档给出了一些方法和完整的案例,我们先来看看。

下面是官方给出的方法,根据这些方法可以自由处理连接网络的步骤,或者获取需要的信息

91341f64-629c-11ed-8abf-dac502259ad0.jpg

下面是官方给出的一个连接网络的完整案例

917c9f14-629c-11ed-8abf-dac502259ad0.jpg

解释:wlan.connect(‘ssid’,’key’)中的ssid是需要连接WIFI的名字,key是需要连接WIFI的密码

以下是我连接我手机WIFI热点的函数代码

defdo_connect():
wlan=network.WLAN(network.STA_IF)
wlan.active(True)
ifnotwlan.isconnected():
print('连接网络...')
#连接WIFI
wlan.connect('11','1234567a')
whilenotwlan.isconnected():
pass
print("联网成功!")
print('networkconfig:',wlan.ifconfig())

运行程序后,串口打印出ESP32的IP地址,有了这个地址,后面UDP客户端就可以往这个IP地址上发送消息了。

91a21b90-629c-11ed-8abf-dac502259ad0.jpg

三、在ESP32端创建UDP服务端对象

本次实验UDP服务端在ESP32上创建,UDP客户端用电脑端的网络助手上位机上创建。

代码如下:

defstart_udp():
 #创建udp套接字
 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
 #绑定一个固定的端口号,0.0.0.0表示绑定所有IP
udp_socket.bind(("0.0.0.0",7788))
 returnudp_socket

解释:udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)中的socket.AF_INET表示用于Internet进程间通信,socket.SOCK_DGRAM表示用UDP协议。如果要用TCP协议则选择socket.STREAM。7788为端口号,用户可自行分配可用的端口号。

四、处理收到的数据

程序代码如下:

def main():
    do_connect()
    udp_socket=start_udp()
    led=machine.Pin(22,machine.Pin.OUT)
    while True:
        #接收数据并拆包
        recv_data,sender_info=udp_socket.recvfrom(1024)
        #打印收到的数据
        print("{}发送{}".format(sender_info,recv_data))
        #取出接收到的数据
 recv_data_str=recv_data.decode("utf-8")
ifrecv_data_str=='led_off':
 led.value(1)
 elifrecv_data_str=='led_on':
 led.value(0)

解释:当客户端发送“led_off”时,熄灭ESP32上的LED灯,当客户端发送“led_on”时,点亮ESP32上的LED灯。

五、整体程序代码

代码如下:

import socket
import time
import network
import machine


def do_connect():
    wlan=network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('连接网络...')
        #连接WIFI
        wlan.connect('11', '1234567a')
        while not wlan.isconnected():
            pass
    print("联网成功!")
print('networkconfig:',wlan.ifconfig())


def start_udp():
    #创建udp套接字
    udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #绑定一个固定的端口号
    udp_socket.bind(("0.0.0.0",7788))
    return udp_socket


def main():
    do_connect()
udp_socket=start_udp()
    led=machine.Pin(22,machine.Pin.OUT)
    while True:
        #接收数据并拆包
        recv_data,sender_info=udp_socket.recvfrom(1024)
        #打印收到的数据
        print("{}发送{}".format(sender_info,recv_data))
        #取出接收到的数据
        recv_data_str=recv_data.decode("utf-8")
        if recv_data_str=='led_off':
            led.value(1)
        elif recv_data_str=='led_on':
            led.value(0)




if __name__ == "__main__":
    main()

运行程序,用电脑上的网络助手创建UDP客户端发送消息,ESP32串口打印如下

91c22f2a-629c-11ed-8abf-dac502259ad0.jpg

当发送led_off时,ESP32上的LED灯熄灭,当发送led_on时,ESP32上的LED灯点亮。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 无线通信
    +关注

    关注

    58

    文章

    4565

    浏览量

    143505
  • UDP
    UDP
    +关注

    关注

    0

    文章

    325

    浏览量

    33933
  • ESP32
    +关注

    关注

    18

    文章

    971

    浏览量

    17214

原文标题:使用ESP32实现UDP通信的方法

文章出处:【微信号:嵌入式开发爱好者,微信公众号:嵌入式开发爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用ESP32实现蓝牙通信

    上次给大家分享了如何使用ESP32实现UDP通信,今天跟大家聊聊如何使用ESP32实现蓝牙
    发表于 11-21 09:31 1.5w次阅读

    esp32 udp broadcast丢包怎么避免?

    esp32 udp broadcast 丢包
    发表于 06-17 06:05

    ESP32 UDP通信客户端例程以及疑问

    本人在使用ESP32UDP通讯时,不知道怎么发送广播包,请问应该如何发送广播包呢。如下代码,UDP client通信,当ip地址为192.168.1.220时,能够发送出去,但换成
    发表于 12-29 13:44

    如何利用ESP32和Ubuntu搭建UDP通信系统?

    如何利用ESP32和Ubuntu搭建UDP通信系统?
    发表于 01-20 06:09

    esp32s2 AP模式UDP组网问题求解

    请问各位朋友们,我一块ESP32s2开AP模式,建立UDP server。让4块STA模式的client ESP32连接。主机有何方法可以区分这4个从机。我想通过从机的AID和IP区分
    发表于 02-14 07:07

    ESP32开发套件 ESP32-DevKitC

    ,具备丰富的外设和优化的引脚布局,助力用户快速实现产品开发,它有4MB Flash,有I/O,USB以及按键、LED   支持 Wi-Fi 蓝牙连接 ESP32-DevKitC 是一款基于 ESP32
    的头像 发表于 01-06 16:55 8402次阅读

    浅谈Zephyr ESP32 wifi如何使用

    和ethernt L2对接,因此在zephyr下只要通过简单的配置就可以在应用层使用socket通过wifi进行网络通信,而不需要去关心esp32 wifi驱动的细节。 配置方法 进行下面配置后开机
    的头像 发表于 06-01 10:17 6846次阅读

    ESP32 SDIO 使用教程

    ESP32 SDIO 使用教程本文旨在说明如何使用标准的 ESP32-WROOM-32D 开发板进行 SDIO 的通信。本文档适用于所有需要与 ESP32 SDIO slave
    发表于 11-23 17:51 233次下载
    <b class='flag-5'>ESP32</b> SDIO 使用教程

    ESP32ESP-IDF 教学(九)—— 串口通信(UART)

    ESP32ESP-IDF 教学(九)—— 串口通信(UART)文章目录ESP32ESP-IDF 教学(九)—— 串口
    发表于 11-26 13:21 44次下载
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教学(九)—— 串口<b class='flag-5'>通信</b>(UART)

    ESP32作为从机实现BLE蓝牙功能浅析

    引言去年11月份,自己接到的第一个任务就是蓝牙,二维码任务结束后自己又开始做这一个任务,由于还没有定好应用场景,自己先根据自己的理解,介绍一下如何用ESP32实现BLE蓝牙。开发环境本工程将
    发表于 12-07 13:51 16次下载
    <b class='flag-5'>ESP32</b>作为从机<b class='flag-5'>实现</b>BLE蓝牙功能浅析

    ESP32学习记录<三>串口通信

    ESP32学习记录串口通信文章目录ESP32学习记录串口通信前言一、通过串口打印出数据1.初始化串口2.打印数据二、串口控制LED亮灭1.接收串口发送的数据2.
    发表于 12-20 19:34 17次下载
    <b class='flag-5'>ESP32</b>学习记录<三>串口<b class='flag-5'>通信</b>

    ESP32系列芯片的规格

    ESP32是一款2.4GHz Wi-Fi和蓝牙组合芯片,采用TSMC超低功耗40nm设计技术它旨在实现最佳功率和射频性能,显示出鲁棒性、多功能性和灵活性在各种应用和电源场景中的可靠性。ESP32系列芯片包括
    发表于 04-25 16:21 7次下载

    使用ESP32连接腾讯云实现远程控制

    上次给大家分享了如何使用ESP32实现蓝牙通信,今天跟大家聊聊如何使用ESP32连接腾讯云实现远程控制。本次实验用到MQTT协议,同样,我用
    的头像 发表于 11-22 09:19 3672次阅读

    基于ESP32+MicroPython实现联网并进行UDP通信

    使用 esp32 开发程序,非常重要的功能就是使用 wifi,下面我们就讲一下 esp32 连接 wifi 的方法
    的头像 发表于 06-13 17:05 6204次阅读
    基于<b class='flag-5'>ESP32</b>+MicroPython<b class='flag-5'>实现</b>联网并进行<b class='flag-5'>UDP</b><b class='flag-5'>通信</b>

    ESP32ESP32通过Internet进行通信

    电子发烧友网站提供《ESP32ESP32通过Internet进行通信.zip》资料免费下载
    发表于 06-15 09:58 4次下载
    <b class='flag-5'>ESP32</b>到<b class='flag-5'>ESP32</b>通过Internet进行<b class='flag-5'>通信</b>