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灯点亮。

审核编辑:汤梓红

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

    关注

    56

    文章

    4195

    浏览量

    142296
  • UDP
    UDP
    +关注

    关注

    0

    文章

    311

    浏览量

    33615
  • ESP32
    +关注

    关注

    13

    文章

    896

    浏览量

    15806

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

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

收藏 人收藏

    评论

    相关推荐

    使用ESP32实现蓝牙通信

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

    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的对讲机。它使用UDP广播或ESP-NOW传输音频。
    的头像 发表于 04-29 09:04 2.3w次阅读
    一款基于<b class='flag-5'>ESP32</b>的对讲机传输音频介绍

    浅谈Zephyr ESP32 wifi如何使用

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

    ESP32模组能实现什么功能

    将两颗ESP32 SoC串行连接,各自安装一个外部(Wi-Fi)天线后再套上一个漂亮的外壳。该设备将能够实现许多有趣的功能。基于功能强的ESP32,设计实现了ESPGateway网关设
    发表于 08-10 15:09 4472次阅读

    ESP32 SDIO 使用教程

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

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

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

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

    实现功能总结前言前面已经学习了如何操作io口点亮led灯,这次学习串口通信的原理。学习过51、32应该对串口通信都挺熟悉的,所以会操作基于arduino框架的库函数’实现串口
    发表于 12-20 19:34 17次下载
    <b class='flag-5'>ESP32</b>学习记录<三>串口<b class='flag-5'>通信</b>

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

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

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

    使用 esp32 开发程序,非常重要的功能就是使用 wifi,下面我们就讲一下 esp32 连接 wifi 的方法
    的头像 发表于 06-13 17:05 3924次阅读
    基于<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 2次下载
    <b class='flag-5'>ESP32</b>到<b class='flag-5'>ESP32</b>通过Internet进行<b class='flag-5'>通信</b>

    乐鑫ESP32-MINI-1U参考设计

    乐鑫ESP32-MINI-1U参考设计乐鑫多年来深耕?AIoT?领域软硬件产品的研发与设计,专注于研发高集成、低功耗、性能卓越、安全稳定、高性价比的无线通信SoC,现已发布ESP8266、ES
    发表于 10-19 16:13 1次下载

    乐鑫ESP32-MINI-1参考设计

    乐鑫ESP32-MINI-1参考设计乐鑫多年来深耕?AIoT?领域软硬件产品的研发与设计,专注于研发高集成、低功耗、性能卓越、安全稳定、高性价比的无线通信SoC,现已发布ESP8266、ESP
    发表于 10-19 16:13 12次下载