UDP廣播積木

micro:bit的廣播,有許多人覺得很好用,而7697以及ESP32就沒有這種2.4G的廣播功能,但是,透過區域網路的廣播功能便可以做到類似的效果。雖然,7697可以利用MQTT當做互相溝通的機制,但,如果對外網路斷線,便不能使用,雖然也可以在區網自行架一個MQTT伺服器,但總是多了一個手續。

區域網路中,有一個IP是保留供區網內廣播的功能,它的訊息不會透過路由傳到外網。假設你的無線AP的區網IP是192.168.0.1,而且沒有將它切開成多個子網路,那麼這個區網的廣播IP便是192.168.0.255,只要是針對這個IP的某個連接埠發送的訊息,在區網內的所有裝置若有偵聽這個連接埠的話,便能收到這個訊息。因為這些訊息只在區域網路廣播,不會傳到外網,因此,就算對外網路是中斷的情形下,這個廣播機制仍是能照常運作。micro:bit的廣播可以分群組,不同群組的訊息不會互相干擾,區域網路的廣播可以用連接埠的方式達成群組的功能,只有設定相同的網路連接埠的裝置,它們的訊息不會和別的連接埠的訊息互相干擾,進而也能讓區網UDP廣播達成群組的功能,看要一對一、一對多,或是多對多的裝置溝通都可以。

於是我便設計了這個「UDP廣播」的積木,讓7697也能使用好用像micro:bit一樣好用的廣播功能。在使用這些積木時,可以將發送端以及接收端的程式分開寫給不同的裝置,只要它的連接埠是相同的即可。也可以將發送端及接收端的程式寫在同一個裝置,讓每個裝置既是發送端,也是接收端。

以下的程式將發送端及接收端分成二個不同的裝置編寫程式,注意,兩個程式的連接埠要相同(這樣才會同一個群組),以下的例子連接埠都是7697

範例一:發送端程式

範例二:接收端程式

注意,接收端程式因為要隨時檢查是否有廣播訊息,因此需要將「UDP廣播 檢查UDP廣播訊息」這個積木放進「重複執行」的區塊中。