接收udp資料 五 ESP32使用UDP通訊

2021-10-16 06:34:16 字數 2254 閱讀 7696

目錄

udp簡介

udp協議是一種無需建立連線就可以傳送封裝的ip資料出去的方式,相比較於tcp協議來說無需先建立連線之後再進行傳送資料,udp屬於一種面向事務的簡單不可靠資訊傳送服務,我們在使用esp32進行udp通訊時相對於tcp連線來說由於協議簡單資料傳輸會更為迅速,但是相對的資料也容易丟失,所以udp傳輸資訊相對來說不那麼可靠,下面我們將使用esp32發出熱點之後用電腦與esp32進行簡單的udp通訊

udp通訊

程式流程

我們下面將編寫乙個包含udp通訊資料接收和資料傳送的程式以方便我們學習,我們在電腦上開啟udp通訊軟體向esp32傳送資料,esp32將會把接收到的資料原樣返回到電腦上

上面是我們本次程式的大致流程,下面我們看到esp32使用udp通訊部分基礎函式

udp函式參考

uint8_t begin(ipaddress a, uint16_t p)

引數a為監聽的ip位址

p為監聽的埠號

int parsepacket()

函式功能:獲取接收資料資訊

返回值:如果有資料報可用,則返回對首資料報長度,否則返回0

ipaddress remoteip()

uint16_t remoteport()

函式功能:獲取目標裝置的埠號

返回值:目標埠號

int read(char* buffer, size_t len)

函式功能:讀取資料

int beginpacket(ipaddress ip, uint16_t port)

函式功能:準備傳送資料

引數ip為目標ip

port為目標埠號

int endpacket()

函式功能:傳送資料

void stop()

函式功能:停止監聽,釋放資源

貼上**我們了解完一些需要用到的函式之後,我們開始看到**部分,注釋都打上了,可以看注釋來學習程式

#include  //wifi功能需要的庫wifiudp udp;//宣告udp物件const char* wifi_ssid="esp32_udp"; //儲存ap的名稱資訊const char* wifi_password="esp32_1234"; //儲存ap的密碼資訊uint16_t udp_port=1122; //儲存需要監聽的埠號char incomingpacket[255]; //儲存udp客戶端發過來的資料void setup() void loop() /*將接受到的資料傳送回去*/udp.beginpacket(udp.remoteip(),udp.remoteport()); //準備傳送資料到目標ip和目標埠udp.print("receive data:"); //將資料receive data:放入傳送的緩衝區udp.println(incomingpacket); //將接收到的資料放入傳送的緩衝區udp.endpacket(); //向目標ip目標埠傳送資料}}
程式燒錄驗證將以上程式燒錄進esp32之後,我們在網上找乙個可以進行udp通訊的軟體進行通訊測試,成功之後以上程式可以作為以後寫udp通訊程式的模板進行使用

燒錄程式之後開啟串列埠監視器,按下復位鍵可以看到返回的ip位址如下圖所示

在用電腦上位機進行通訊的時候需要注意兩個引數,乙個是上面獲取的ip位址,一般都會是預設的192.168.4.1,另乙個是我們在程式裡面設定的監聽埠號,我們上面設定的埠號會需要用到,wifi的賬號密碼就不說了再前面的文章中有相關的說明

總結

ESP32使用micropython心得

本次環境使用工具pycharm,需依次安裝 esptool,adafruit ampy。在pycharm上安裝 intellij micropython 外掛程式 乙個命令列工具,用於與esp8266和esp32微控制器中的rom引導引導程式通訊。允許訪問快閃儲存器韌體,讀回韌體,查詢晶元引數等。使...

使用MicroPython開發ESP32網路開發

micropython庫分為三部分。一部分是把基礎python中常用的庫結合硬體特典重新實現的,為了做區分這部分庫在命名上稍有改變,比如原版的 json 模組在micropython中改名為 ujson 不過在使用的時候用 json 和 ujson 兩個名稱都可以。micropython庫第二部分是...

使用Arduino IDE對ESP32雙核進行程式設計

esp模組因其wi fi功能 如esp8266 esp 12e等 而廣受歡迎。這些都是具有wi fi功能的強大微控制器模組。還有乙個esp模組,它比以前的esp模組更強大,更通用 其名稱為esp32。它具有藍芽和wi fi連線,並在許多物聯網專案中使用了esp32。但是很少有人知道esp32是雙核微...