LDM6432 MQTT

之前曾為了micro:bit寫了Lumex LDM6432燈板的擴充積木,讓micro:bit能夠很容易便能控制燈板的內容。最近Lumex又為這個燈板推出了ESP32的無線控制器,因為7697本身就是個可連WIFI的無線開發板,於是我便將原本可用在micro:bit上的積木改寫為7697的版本,而且是WIFI網路版,讓7697可以很方便的透過MQTT控制LDM6432燈板。這些積木概念在我以前為micro:bit設計燈板積木時,許多概念是一樣的,所以可以參考以前我寫的micro:bit的積木文章,對於部份積木的使用會比較了解:micro:bit控制Lumex燈板文章

以下的影片便是用7697來群控一群燈板,以及單獨控制某個燈板。

透過MQTT,除了可用7697控制燈板之外,只要任何能連上MQTT的裝置,例如手機,都可以無線控制燈板。

我設計的LDM6432用MQTT控制的全部積木,這些積木其中有一個傳送圖檔的功能,因為需要透過MQTT傳送長度為4096 bytes的字串,但原來的MQTT使用的library內定是128 bytes,因此我有修改一下設定。雖然我的積木只要安裝後會自動更新,但因為有更動到library,因此,需要手動下載及安裝更新,「吉哥積木」的安裝方法請參考:如何安裝吉哥自製積木。如果沒有安裝這個更新的話,傳送圖檔的指令會失效,其他的功能仍是正常的。

MQTT可以讓我們很方便的透過Topic ,讓不同的裝置經由MQTT broker互相的溝通訊息。不同的裝置,訂閱相同的Topic便能互相溝通,進而達到控制的效果。

每一個燈板的ESP32控制板,在連上網路時會自動訂閱一個Topic,Topic名稱是「ezDisplay/LumexXXX」,其中LumexXXX是每一個ESP32控制板的裝置名稱,在板子的背面可以查得到,所以如果想要控制這個燈板的話,7697只要也訂閱相同的Topic即可。如下圖,LumexXXX即是這個無線控制器的裝置編號。剛購買到的無線控制板,必須先設定您自己的WIFI及密碼才可以使用,且必須要透過藍芽設定。手機可以安裝「Serial Bluetooth Terminal」,執行以下二個指令,更改ESP32無線控制卡內的WIFI的SSID及密碼才可以連上家中的AP,指令必須包含括號:

以上兩個指令透過藍芽設定給ESP32控制板後,需要將電關掉,再重新接電,設定才會變更。

燈板預設的MQTT伺服器是broker.hivemq.com,如果想要自行修改你習慣用的broker,相關的指令是:

範例一:單頁無特效頁面顯示

先用電腦繪圖要顯示的圖案,傳送圖案到燈板的第0到第6頁,用7697透過WIFI控制燈板,讓燈板每一秒變換一次頁面。

範例二:單頁動畫顯示

利用燈板內建功能,按A鍵以1的速度執行由上飛入的動畫,單頁動畫會持續進行;按B鍵以10的速度執行由上飛進並飛出的動畫。速度數字愈小會愈快。

範例三:多頁動畫顯示

利用燈板內建功能,讓第0到第6頁的頁面(共七個頁面)組合在一起,並以特效播放。按A鍵及B鍵會以不同的特效效果呈現,播放速度數字愈小愈快。

範例四:控制二片以上的LDM6432(非群控)

每個無線控制器的裝置編號都不同,透過不同的裝置編號,控制不同的燈板。按下A鍵,第一片燈板更換不同頁面;按下B鍵,第二片燈板更換不同頁面。

範例五:利用MQTT傳送圖案,以及動態文字

這個例子會透過7697連上網路,查詢台灣各地的PM2.5的濃度,並且在燈板上顯示出來,這個例子是按下A鍵時,會呈現「頭份」的PM2.5濃度;按下B鍵則會顯現「苗栗」的PM2.5濃度,關於這個部份積木的使用方法,可以參考我之前的文章:空氣品質積木

燈板無法呈現中文的畫面,所以我們可以先透過Lumex  ezDisplay軟體,進入離線模式,選擇64*32的大小,透過軟體先繪製要呈現的畫面(這個例子做了二個圖案,一個是「頭份」,一個則是「苗栗」),將它轉成16進制的文字,再透過MQTT可以將這些文字傳送到燈板,但是注意,Lumex ezDisplay軟體的版本必須是1.9.7.7以上的版本,才會轉成合乎規格的文字。

程式碼:

關於積木文字的大小以及座標系統,請參考我之前的文章,Lumex LDM6432 micro:bit積木

查詢到的頭份PM2.5濃度,並動態顯示文字以及數據

查詢到的苗栗PM2.5濃度,並動態顯示文字以及數據

範例六:群控

假如您有多個可無線控制的燈板,讓這些燈板訂閱相同的MQTT Topic,便能讓其他的裝置群控燈板,就算這些燈板在不同的位置,只要它們能夠連上網路,您在任何一個地方都可以控過網路控制它們。再搭配控制個別燈板裝置的積木,您就可以同時群控或個別控制某個燈板了。但是在群控之前,必須要為每個燈板的ESP32無線控制器設定群控的Topic。除了群控Topic之外,也要設定群控傳圖的Topic,但是這些Topic的設定,必須透過藍芽。手機透過「Serial Bluetooth Terminal」這個APP連線之後,連接個別的燈板後,執行以下的二個指令,便能設定共同的Topic,所以您的不同的燈板您要先想二個Topic名稱,便可以群控了。指令如下,第一個指令是設定共同的控制Topic;第二個指令則是設定傳送圖檔的Topic,指令都必須別含前後的括號:

以上兩個指令透過藍芽設定給ESP32控制板後,需要將電關掉,再重新接電,設定才會變更。請注意,這二個Topic名稱請不要用中文,並且能夠想個別人不會和您重複的Topic,以免您的Topic和別人的Topic互相干擾。

以下範例按下A鍵,7697訂閱相同的二個Topic,便會開始群控所有相同Topic的燈板,從第0頁依序顯示到第6頁;按下B鍵,則只單獨控制某個燈板,從第0個頁面依序顯示到第6頁。

以下是群控以及單獨控制的影片: