2015/06/23


PTT 地震文團隊的三連發系列分享, 壓軸最後一棒, 由景智主講 "M2M Communication with mbed". 這是場硬底子的分享, 內容主要談到 M2M (Machine to Machine) 之間的通訊協定 (MQTT, HTTP, CoAP) 與實作示範.





前情提要:
藍色小鋪, PTT地震文團隊分享三連發, (1) Maker 的 IOT 遊樂場 (PTT, Hackathon, Python, Xively, Internet of Things)
藍色小鋪, PTT地震文團隊分享三連發, (2) mbed 新手分享 (mbed, MPU6050, Hackathon, Internet of Things)

這篇分享會以景智的投影片為主, 再輔以一些萊恩大兵的筆記.

[1] PTT 自動發文器的架構


RPi 與 mbed 之間是走 MQTT 協定. mbed 連接 g-sensor (MPU6050 或 FXOS8700), 扮演 MQTT client 的 publish 角色. RPi 則同時有兩個角色, 一是 MQTT broker, 另一是 MQTT client 的 subscribe 角色.

RPi 與 PTT 之間則是 telnet 協定. 當 RPi 收到 MQTT broker 發出來的 g-sensor 數據後, 會有個判斷邏輯, 當判斷為地震發生時, 就用 python 程式去 PTT 發文.

[2] MQTT

來談談 MQTT 協定吧. 

- 什麼是 MQTT?



- MQTT 運作流程




詳細請參考景智的部落格: Message Queuing Telemetry Transport.

- 用 mbed 做 MQTT client, publish 的示範 

直接在 mbed 開發環境 import MQTT client 的 library 與 program. (這邊要搭配前面 MQTT 運作流程一併服用, 就能看出程式碼到底在做什麼事).




- 用 RPi 當作 MQTT broker, 同時也作為 MQTT client, subscribe 的示範 


這段基本都是拿現成的套件或工具安裝在 RPi 上, 請參考景智的部落格 (Message Queuing Telemetry Transport) 來完成安裝設定.




- 全部放一起 demo


有了 MQTT broker 與 client, 全部兜在一起執行, 就是 PTT 地震自動發文器底層的資料傳遞技術了.





趁時間還多, 景智佛心來著地多談了其它常見的 M2M protocol.

[3] HTTP

- HTTP 也是很常用在物聯網的, 尤其日漸正紅的 Physical Web. Mokoversity 這篇文章 (從 Google 的 Physical Web 計畫解讀 IoT 技術趨勢) 值得一讀. 



- HTTP 的封包

常常用到的 http protocol, 它的封包到底有哪些東西? 



- mbed + HTTP Client 程式碼片段

這邊景智也貼了一段程式碼, 示範用 mbed + HTTP client, 將 g sensor 的數據資料傳給 MTK Cloud Sandbox.



- 全部放一起 demo 

HTTP 這部份的示範. Client 端是 mbed + http client, server 則是 MTK Cloud Sandbox. 全部串連在一起後, 就能看到 MTK Cloud Sandbox 上面的 g-sensor 數值持續在更新.






[4] CoAP

CoAP 也是一種 M2M protocol. 它有類似 HTTP 的 request 與 Response. 



- CoAP Header 

CoAP 封包的內容. (重點.. CoAP 的封包 size 比 HTTP 小很多, 比較適合用在 lightweight 低頻寬的環境)







- 紙上 demo 


因時間緣故, 景智沒有做這部份的 demo. 若有興趣想做這部份的朋友, 可參考這篇文章 (树莓派学习笔记——webiopi安装与入门).






[萊恩大兵的其它文章]

自製大四軸

自製大四軸, 實作分享@華山文創園區
自製大四軸, (1) 零組件篇, 遙控器 (Drone, Quadcopter, Futaba, Maker, Arduino, Animatronic Eye)
自製大四軸, (2) 零組件篇, 飛控板 (Drone, Quadcopter, MultiWii, Arduino, Futaba, Maker)
自製大四軸, (3) 零組件篇, 自行雷切木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自製大四軸, (4) 零組件篇, 馬達與電變調整 (Drone, Quadcopter, Maker, Electric Speed Control, Motor)
自製大四軸, (5) 組裝篇, 四軸飛行器成形 (Drone, Quadcopter, MultiWii, Arduino, Maker, Electric Speed Control, Motor)
自製大四軸, (6) 調整篇, 飛行前兩三事 (Drone, Quadcopter, Maker, Futaba, Arduino, MultiWii)
自製大四軸, (7) 充電篇, iMax B6 充電器操作記要 (Charger, Battery)
自製大四軸, (8) 問題篇, 機架損壞維修 (Drone, Quadcopter, Laser Cut)
自製大四軸, (9) 改良篇, 方便拆卸的木質機架 (Drone, Quadcopter, Maker, Laser Cut)
自製大四軸, (10) 外飛篇, 新手的青蛙跳與遛狗 (Drone, Quadcopter, Maker, MultiWii)

自動報球速的棒球



CC2540 Bluetooth Low Energy
筆記, CC2540 Bluetooth Low Energy, (1) 開發環境 架設 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (2) 跑第一個範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (3) SimpleBLEPeripheral 簡單介紹 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (4) 在智慧手機上執行範例程式 (Bluetooth, CC2540)
筆記, CC2540 Bluetooth Low Energy, (5) 偵測與發送 iBeacon 訊號 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 發訊器 x 防丟器 (Bluetooth, CC2540, iBeacon)
實作, iBeacon 尋寶遊戲 (Bluetooth, CC2540, iBeacon, iOS app)
實作, BLE + iOS app, 遙控燈泡君 (Bluetooth, CC2540, iOS app)
做實驗, 用 iBeacon 做自動控制的可行性 (Bluetooth, iBeacon, CC2540, Automation, URL Scheme, iOS app)

藍色小鋪一起來做

藍色小鋪一起來做, (1) 用 beacon 控制開關的枱燈
藍色小鋪一起來做, (2) 講解 BLE CC2540 UART 通訊範例程式 (Bluetooth, CC2540, UART)
藍色小鋪一起來做, (3) 藍牙枱燈專案實作 (上) (Bluetooth, CC2540)
藍色小鋪一起來做, (4) 藍牙枱燈專案實作 (下) (Bluetooth, CC2540)
藍色小鋪一起來做, (5) iBeacon scanner 專案示範與解說 (Bluetooth, CC2540, iBeacon)
藍色小鋪一起來做, (6) 完成, 用 iBeacon 控制開關的枱燈 (Bluetooth, CC2540, iBeacon)
藍色小鋪, 初嚐樹莓派 (Raspberry Pi)
藍色小鋪, iBeacon 應用, 自動記錄到訪時間 (iBeacon, Geohopper, Zapier)
藍色小鋪, 菲力普的 Docker 應用分享 (Docker)
藍色小鋪, PTT地震文團隊分享三連發, (1) Maker 的 IOT 遊樂場 (PTT, Hackathon, Python, Xively, Internet of Things)
藍色小鋪, PTT地震文團隊分享三連發, (2) mbed 新手分享 (mbed, MPU6050, Hackathon, Internet of Things)

小惡魔 無線溫度感測器

108 大眼仔
Plot Clock

體驗, 原住民互動故事書@宜蘭大同鄉泰雅生活館
體驗, 蛋生音互動裝置@兒童美術館 (Arduino, 3D Printing, HC-SR04, Interactive)



實作, 電容感應音樂樹

0 意見:

張貼留言