<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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

    文章

    4238

    瀏覽量

    142470
  • UDP
    UDP
    +關注

    關注

    0

    文章

    311

    瀏覽量

    33663
  • ESP32
    +關注

    關注

    13

    文章

    898

    瀏覽量

    15948

原文標題:使用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 ?6084次閱讀

    ESP32模組能實現什么功能

    將兩顆ESP32 SoC串行連接,各自安裝一個外部(Wi-Fi)天線后再套上一個漂亮的外殼。該設備將能夠實現許多有趣的功能?;诠δ軓姷?b class='flag-5'>ESP32,設計實現了ESPGateway網關設
    發表于 08-10 15:09 ?4510次閱讀

    ESP32 SDIO 使用教程

    ESP32 SDIO 使用教程本文旨在說明如何使用標準的 ESP32-WROOM-32D 開發板進行 SDIO 的通信。本文檔適用于所有需要與 ESP32 SDIO slave
    發表于 11-23 17:51 ?230次下載
    <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 ?2635次閱讀

    基于ESP32+MicroPython實現聯網并進行UDP通信

    使用 esp32 開發程序,非常重要的功能就是使用 wifi,下面我們就講一下 esp32 連接 wifi 的方法。
    的頭像 發表于 06-13 17:05 ?4139次閱讀
    基于<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次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>