一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用ESP32實現(xiàn)UDP通信的方法

嵌入式開發(fā)愛好者 ? 來源:嵌入式開發(fā)愛好者 ? 作者:嵌入式開發(fā)愛好者 ? 2022-11-14 10:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,我是ST。

前面給大家分享了ESP32使用miropython編程環(huán)境搭建,今天給大家分享如何使用ESP32實現(xiàn)UDP通信。

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

一、前言

ESP32本身自帶WIFI模塊,可以連接網(wǎng)絡(luò)。本文主要是用ESP32連接手機熱點,利用UDP協(xié)議將ESP32作為服務端,電腦利用網(wǎng)絡(luò)助手軟件作為客戶端與ESP32通信,從而通過無線通信去控制ESP32上的LED燈的亮滅。

二、連接網(wǎng)絡(luò)

Mriopython官方文檔給出了一些方法和完整的案例,我們先來看看。

下面是官方給出的方法,根據(jù)這些方法可以自由處理連接網(wǎng)絡(luò)的步驟,或者獲取需要的信息。

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

下面是官方給出的一個連接網(wǎng)絡(luò)的完整案例

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

解釋:wlan.connect(‘ssid’,’key’)中的ssid是需要連接WIFI的名字,key是需要連接WIFI的密碼

以下是我連接我手機WIFI熱點的函數(shù)代碼

defdo_connect():
wlan=network.WLAN(network.STA_IF)
wlan.active(True)
ifnotwlan.isconnected():
print('連接網(wǎng)絡(luò)...')
#連接WIFI
wlan.connect('11','1234567a')
whilenotwlan.isconnected():
pass
print("聯(lián)網(wǎng)成功!")
print('networkconfig:',wlan.ifconfig())

運行程序后,串口打印出ESP32的IP地址,有了這個地址,后面UDP客戶端就可以往這個IP地址上發(fā)送消息了。

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

三、在ESP32端創(chuàng)建UDP服務端對象

本次實驗UDP服務端在ESP32上創(chuàng)建,UDP客戶端用電腦端的網(wǎng)絡(luò)助手上位機上創(chuàng)建。

代碼如下:

defstart_udp():
 #創(chuàng)建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協(xié)議。如果要用TCP協(xié)議則選擇socket.STREAM。7788為端口號,用戶可自行分配可用的端口號。

四、處理收到的數(shù)據(jù)

程序代碼如下:

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

解釋:當客戶端發(fā)送“l(fā)ed_off”時,熄滅ESP32上的LED燈,當客戶端發(fā)送“l(fā)ed_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('連接網(wǎng)絡(luò)...')
        #連接WIFI
        wlan.connect('11', '1234567a')
        while not wlan.isconnected():
            pass
    print("聯(lián)網(wǎng)成功!")
print('networkconfig:',wlan.ifconfig())


def start_udp():
    #創(chuàng)建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:
        #接收數(shù)據(jù)并拆包
        recv_data,sender_info=udp_socket.recvfrom(1024)
        #打印收到的數(shù)據(jù)
        print("{}發(fā)送{}".format(sender_info,recv_data))
        #取出接收到的數(shù)據(jù)
        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()

運行程序,用電腦上的網(wǎng)絡(luò)助手創(chuàng)建UDP客戶端發(fā)送消息,ESP32串口打印如下

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

當發(fā)送led_off時,ESP32上的LED燈熄滅,當發(fā)送led_on時,ESP32上的LED燈點亮。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 無線通信
    +關(guān)注

    關(guān)注

    58

    文章

    4752

    瀏覽量

    145196
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    330

    瀏覽量

    34641
  • ESP32
    +關(guān)注

    關(guān)注

    21

    文章

    1017

    瀏覽量

    19253

原文標題:使用ESP32實現(xiàn)UDP通信的方法

文章出處:【微信號:嵌入式開發(fā)愛好者,微信公眾號:嵌入式開發(fā)愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用ESP32實現(xiàn)藍牙通信

    上次給大家分享了如何使用ESP32實現(xiàn)UDP通信,今天跟大家聊聊如何使用ESP32實現(xiàn)藍牙
    發(fā)表于 11-21 09:31 ?1.6w次閱讀

    esp32 udp broadcast丟包怎么避免?

    esp32 udp broadcast 丟包
    發(fā)表于 06-17 06:05

    ESP32 UDP通信客戶端例程以及疑問

    本人在使用ESP32UDP通訊時,不知道怎么發(fā)送廣播包,請問應該如何發(fā)送廣播包呢。如下代碼,UDP client通信,當ip地址為192.168.1.220時,能夠發(fā)送出去,但換成
    發(fā)表于 12-29 13:44

    如何利用ESP32和Ubuntu搭建UDP通信系統(tǒng)?

    如何利用ESP32和Ubuntu搭建UDP通信系統(tǒng)?
    發(fā)表于 01-20 06:09

    esp32s2 AP模式UDP組網(wǎng)問題求解

    請問各位朋友們,我一塊ESP32s2開AP模式,建立UDP server。讓4塊STA模式的client ESP32連接。主機有何方法可以區(qū)分這4個從機。我想通過從機的AID和IP區(qū)分
    發(fā)表于 02-14 07:07

    淺談Zephyr ESP32 wifi如何使用

    和ethernt L2對接,因此在zephyr下只要通過簡單的配置就可以在應用層使用socket通過wifi進行網(wǎng)絡(luò)通信,而不需要去關(guān)心esp32 wifi驅(qū)動的細節(jié)。 配置方法 進行下面配置后開機
    的頭像 發(fā)表于 06-01 10:17 ?7442次閱讀

    ESP32 SDIO 使用教程

    ESP32 SDIO 使用教程本文旨在說明如何使用標準的 ESP32-WROOM-32D 開發(fā)板進行 SDIO 的通信。本文檔適用于所有需要與 ESP32 SDIO slave
    發(fā)表于 11-23 17:51 ?241次下載
    <b class='flag-5'>ESP32</b> SDIO 使用教程

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

    ESP32ESP-IDF 教學(九)—— 串口通信(UART)文章目錄ESP32ESP-IDF 教學(九)—— 串口
    發(fā)表于 11-26 13:21 ?45次下載
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教學(九)—— 串口<b class='flag-5'>通信</b>(UART)

    ESP32作為從機實現(xiàn)BLE藍牙功能淺析

    引言去年11月份,自己接到的第一個任務就是藍牙,二維碼任務結(jié)束后自己又開始做這一個任務,由于還沒有定好應用場景,自己先根據(jù)自己的理解,介紹一下如何用ESP32實現(xiàn)BLE藍牙。開發(fā)環(huán)境本工程將
    發(fā)表于 12-07 13:51 ?16次下載
    <b class='flag-5'>ESP32</b>作為從機<b class='flag-5'>實現(xiàn)</b>BLE藍牙功能淺析

    ESP32學習記錄<三>串口通信

    ESP32學習記錄串口通信文章目錄ESP32學習記錄串口通信前言一、通過串口打印出數(shù)據(jù)1.初始化串口2.打印數(shù)據(jù)二、串口控制LED亮滅1.接收串口發(fā)送的數(shù)據(jù)2.
    發(fā)表于 12-20 19:34 ?17次下載
    <b class='flag-5'>ESP32</b>學習記錄<三>串口<b class='flag-5'>通信</b>

    ESP32系列芯片的規(guī)格

    ESP32是一款2.4GHz Wi-Fi和藍牙組合芯片,采用TSMC超低功耗40nm設(shè)計技術(shù)它旨在實現(xiàn)最佳功率和射頻性能,顯示出魯棒性、多功能性和靈活性在各種應用和電源場景中的可靠性。ESP32系列芯片包括
    發(fā)表于 04-25 16:21 ?7次下載

    使用ESP32連接騰訊云實現(xiàn)遠程控制

    上次給大家分享了如何使用ESP32實現(xiàn)藍牙通信,今天跟大家聊聊如何使用ESP32連接騰訊云實現(xiàn)遠程控制。本次實驗用到MQTT協(xié)議,同樣,我用
    的頭像 發(fā)表于 11-22 09:19 ?4516次閱讀

    基于ESP32+MicroPython實現(xiàn)聯(lián)網(wǎng)并進行UDP通信

    使用 esp32 開發(fā)程序,非常重要的功能就是使用 wifi,下面我們就講一下 esp32 連接 wifi 的方法
    的頭像 發(fā)表于 06-13 17:05 ?7850次閱讀
    基于<b class='flag-5'>ESP32</b>+MicroPython<b class='flag-5'>實現(xiàn)</b>聯(lián)網(wǎng)并進行<b class='flag-5'>UDP</b><b class='flag-5'>通信</b>

    ESP32ESP32通過Internet進行通信

    電子發(fā)燒友網(wǎng)站提供《ESP32ESP32通過Internet進行通信.zip》資料免費下載
    發(fā)表于 06-15 09:58 ?5次下載
    <b class='flag-5'>ESP32</b>到<b class='flag-5'>ESP32</b>通過Internet進行<b class='flag-5'>通信</b>

    esp32如何接入豆包

    要在 ESP32 上接入豆包工具,本質(zhì)上是讓 ESP32 設(shè)備與豆包的 API 進行通信,以獲取相關(guān)服務
    的頭像 發(fā)表于 02-05 13:40 ?1964次閱讀
    <b class='flag-5'>esp32</b>如何接入豆包