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的頻道說明:

https://zh.m.wikipedia.org/wiki/%E6%97%A0%E7%BA%BF%E5%B1%80%E5%9F%9F%E7%BD%91%E4%BF%A1%E9%81%93%E5%88%97%E8%A1%A8

ESP_NOW相關細節

https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html

ESP_NOW廣播互動範例

範例一:一個發送端,多個接收端

發送端程式:

以下以KSB065為發送端,將它的滑桿桿測值透過廣播訊息傳送給其他的ESP32。

  1. 需要先在初始化區塊內放置「ESP_NOW廣播 初始化」積木,並設定頻道編號,WIFI可用的頻道編號為1~13,相互相廣播的裝置,頻道編號必須一致,在本範例中設定為1。

  2. 發送端只要靠「ESP_NOW廣播 發送訊息」積木,便可以將特定文字發送出去,在廣播訊息中文字最大長度為256 bytes,可以傳送中文,一個中文佔3個bytes。

  3. 自己發的訊息自己不會收到,只有別的裝置會收到。


接收端程式:

以下以PocketCard當做接收端,接收來自KSB065的滑桿值,並顯示在OLED上。

  1. 需要先在初始化區塊內放置「ESP_NOW廣播 初始化」積木,並設定頻道編號,WIFI可用的頻道編號為1~13,相互相廣播的裝置,頻道編號必須一致,在本範例中設定為1。

  2. 使用「ESP_NOW廣播 當接收到訊息時」這個函式積木,便可以進行接收廣播訊息的程式。

  3. 「ESP_NOW廣播 接收到的訊息」積木可以取得廣播訊息內容,「ESP_NOW廣播 接收到的MAC位址」積木則可以知道這個訊息是從哪個MAC Adress的裝置發送出來的。

程式的結果:

範例二:多對多互相傳送訊號

每一片ESP32可以當做發送端,可以當做接收端,也可以發送和接收的功能都做在一起。

以下的範例以PocketCard為例,進行三片PocketCard的多對多廣播訊息傳送,三片的頻道編號必須一致,三片的程式除了發送的訊息不同之外,其餘的程式都相同,所以就不一個一個把程式秀出來,自行修改「ESP_NOW廣播 發送訊息」內要傳送的文字訊息即可。自己發送的訊息自己不會收到。

程式結果: