目錄
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是雙核微...