ESP_NOW網路廣播
micro:bit不能連結WIFI,但是它有廣播功能,可以讓許多micro:bit進行一對一、一對多、多對多的廣播通訊。ESP32有WIFI功能,但是ESP32可否在不連接AP的情況下,也能像micro:bit一樣進行一對一、一對多、多對多的廣播通訊?利用ESP_NOW的功能,便能讓ESP32在不連接AP的情況下利用自身的WIFI訊號進行廣播通訊,於是便利用一些時間將ESP_NOW的廣播功能建立積木,讓大家方便使用,「ESP_NOW廣播積木」位於「吉哥積木」→「物聯網」→「ESP_NOW廣播」選單內。
利用ESP32本身的WIFI訊號,便能發送一對一、一對多、多對多的廣播訊息。WIFI可用的頻道有1~13,每個頻道可以容納未加密的20個裝置互相通訊。
WIFI的頻道說明:
ESP_NOW相關細節
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html
ESP_NOW廣播互動範例
範例一:一個發送端,多個接收端
發送端程式:
以下以KSB065為發送端,將它的滑桿桿測值透過廣播訊息傳送給其他的ESP32。
需要先在初始化區塊內放置「ESP_NOW廣播 初始化」積木,並設定頻道編號,WIFI可用的頻道編號為1~13,相互相廣播的裝置,頻道編號必須一致,在本範例中設定為1。
發送端只要靠「ESP_NOW廣播 發送訊息」積木,便可以將特定文字發送出去,在廣播訊息中文字最大長度為256 bytes,可以傳送中文,一個中文佔3個bytes。
自己發的訊息自己不會收到,只有別的裝置會收到。
接收端程式:
以下以PocketCard當做接收端,接收來自KSB065的滑桿值,並顯示在OLED上。
需要先在初始化區塊內放置「ESP_NOW廣播 初始化」積木,並設定頻道編號,WIFI可用的頻道編號為1~13,相互相廣播的裝置,頻道編號必須一致,在本範例中設定為1。
使用「ESP_NOW廣播 當接收到訊息時」這個函式積木,便可以進行接收廣播訊息的程式。
「ESP_NOW廣播 接收到的訊息」積木可以取得廣播訊息內容,「ESP_NOW廣播 接收到的MAC位址」積木則可以知道這個訊息是從哪個MAC Adress的裝置發送出來的。
程式的結果:
範例二:多對多互相傳送訊號
每一片ESP32可以當做發送端,可以當做接收端,也可以發送和接收的功能都做在一起。
以下的範例以PocketCard為例,進行三片PocketCard的多對多廣播訊息傳送,三片的頻道編號必須一致,三片的程式除了發送的訊息不同之外,其餘的程式都相同,所以就不一個一個把程式秀出來,自行修改「ESP_NOW廣播 發送訊息」內要傳送的文字訊息即可。自己發送的訊息自己不會收到。
程式結果: