Kittenblock IOT使用說明 (Beta)

2018-05-17 17:46

[KittenBlock] Kittenblock IOT使用說明(Beta)

riven 發表於 2018-5-8 18:39:30 | 只看該作者 [複製連結]  

在Kittenblock 1.64我們更新了IOT擴展外掛程式,全部基於mqtt重構了相關功能。
Mqtt是目前IoT相關應用最廣泛的技術之一,如果對mqtt不熟悉的同學可以參考下下面這個設計框架:
 

Mqtt所有服務的核心是一個叫broker的中心發佈節點,所有的設備或者軟體都需要註冊到這個中心節點,並訂閱關注的消息主題,這個流程我們稱之為subscribe。當設備訂閱了主題後,當有另外一個設備向這個主題發送消息,已經訂閱了主題的設備就會收到對應的消息。
Kittenblock 1.64自帶一個微型的Mqtt中心發佈節點(broker),註冊埠分別是 TCP 1883和websocket 9234。在同一個局域網中只要通過mqtt標準和對應的tcp或者websocket協議向這兩個埠之一訂閱就行了。

首先我們在Kittenblock內測試一下mqtt的功能,我們選擇任何基於Arduino的硬體都可以在左下角的擴展外掛程式內看到IoT的選項。
 
導入IoT外掛程式後我們可以看到新添加了這幾個模組:
 

就像我們之前說過,Kittenblock內置一個mqtt broker。我們需要做的第一步就是連接上這個broker並且註冊一個消息,消息名字就用預設的/hello,為了保證協定和後續設備的相容性建議消息名字前面都帶上斜杠。全部代碼如下:
 

首先我們點擊綠旗幟,讓Kittenblock連接Mqtt broker。其中192.168.123.209就是本機的IP,當然這個ip也可以是局域網中其他Kittenblock的電腦,這樣就可以在局域網中實現多個Kittenblock互相通信。
右上方帽子模組“MQTT Topic”就是當本機收到這個消息的回呼函數。
接下來我們直接在工作區點擊“MQTT Publish”就可以發送一個消息給Broker了。
 

其實上面就是實現了一個消息自己發給自己的閉環,我們玩IoT可能是希望能做更複雜的應用,接下來我們使用MiniLFR實現IoT的功能(Rosbot主機板和Arduino類似)。
要使用Mqtt首先我們要使能wifi模組的IoT功能,我們先在Kittenblock內找到wifi模組的IP位址(如果不知道如何把Wifi模組連接到局域網的麻煩去論壇看看對應的帖子)。
 
之後在流覽器輸入wifi模組的IP位址,並找到mqtt的配置頁面,選中slip和mqtt兩個協定使能。
並且在MQTT下輸入運行Kittenblock的這部電腦的IP位址
 
這樣wifi模組在啟動後會自動連接上mqtt的伺服器了。
(PS:後面我們會在軟體內部增加配置頁面簡化這個配置流程)

回到Kittenblock接下來我們要編寫IoT相關的程式,這裡我們讓LFR收到對應的hello指令閃一下車頭大燈。
 
這裡要注意我們已經在wifi模組配置了連接mqtt伺服器的位址,就不需要連接的模組了(mqtt連接的模組只針對kittenblock有效,對硬體沒用)。
右側應該可以看到翻譯出來的arduino代碼:
 
之後點擊上傳燒錄到MiniLFR小車上面。
需要注意的是串口已經用於wifi模組和小車的slip協定通信,因此如果wifi模組開著slip協定通過usb下載固件肯定會失敗,這裡推薦通過網路連接硬體,kittenblock會自動通過wifi將編譯出來的遠端ota燒錄。
(如果您手上的是MiniLFR 2.0以前的版本是沒有OTA功能的,需要把wifi模組拔下來通過usb下載)

如果下載成功後,建議將LFR電源關了再開,這樣可以讓wifi模組啟動的時候自動連接到broker而arduino上的程式也會註冊對應的消息。
(出現通信不成功的情況大部分是因為wifi模組沒有正常連接到mqtt伺服器,或者arduino和wifi模組沒同步上,開關電源是最好的解決方法)

測試的話PC端我們只需要一個發送消息的就行了,點擊“Mqtt Publish”就可以看到LFR車頭燈閃爍了~

—————

返回