開心農場
從arduino內擷取資料傳送至Server。當溫度過低時開燈加熱,當溼度過低時撒水,壓力過高時菜被偷了的警報。警報時蜂鳴器會響並將警報狀態傳送至Server
設備需求
- Arduino uno
- 感測器 溫度 溼度 壓力
- LED燈2顆(代表撒水器和加熱器)
- 蜂鳴器
- Arduino Ethernet Shield
- 麵包板+線材
- 筆電(模擬伺服主機)
千里之行,始於足下
- 介紹課程
- MQTT 架構
- mosquitto 安裝
- 開發工具 mqttlens 安裝
一日之所需 百工斯為備
- M2Mqtt函式庫安裝
- 訂閱者程式設計
- 發佈者程式設計
積沙成塔 集腋成裘
- Sensor模組接線與函式庫安裝
- AnalogInput程式設計
- DigitalOutput程式設計
- 加入判斷
積土成山,風雨興焉;積水成淵,蛟龍生焉;積善成德,而神明自得,聖心備焉。故不積蹞步,無以至千里;不積小流,無以成江海。騏驥一躍,不能十步;駑馬十駕,功在不舍。
- Ethernet與PubSubClient函式的使用
- Ethernet程式設計
- PubSubClient程式設計
- 功能測試
滴水穿石,不是水多厲害,更不是石頭不厲害,而是時間太厲害。
- Wampserver安裝
- 建置MySQL資料表
- 連結MySQL資料庫並查詢
- 新增資料至MySQL資料庫
- 當關閉程式時中斷連線
- 建置MySQL資料表
- Server連結資料庫
- 撒水和加熱記錄(訊息記錄)
- 偷菜記錄(異常記錄)
備註
期末補考總分90分,替代第6週作業分數
一、期末補考考題
- 請簡單介紹MQTT通訊協定(10)
- 參考5月17號作業最高分的洪健軒同學所錄的第2週影片(20)
請詳述影片中(MQTT Clint)MQTTLens、(MQTT Clint)Visual Studio程式和(MQTT Server)mosquitto訊息傳送的順序
- 參考5月31號作業最高分的李宗翰王奕霖所錄的第3週第1部影片(20)
請詳述本次專案所實作的聯網感測應用為何,以及所使用的感測器有哪些、功能為何
- 參考6月7日曹致晟補繳作業最高分的第4週影片(20)
請詳述影片中由(MQTT Clint)Arduino所發送的感測器收集之資料及異常情況發出之警告
為何(MQTT Clint)MQTTLens能夠接收,以及(MQTT Server)mosquitto在此影片中所扮演的角色
- 參考6月14日陳彥彰洪子婷組所錄製的影片(20)
請至少舉出兩項的影片中有誤的部份並解釋錯誤為何,正確解釋應為何
(可列舉多項依正確比例給分)
二、作答參考
第一題
https://swf.com.tw/?p=1002
只要將我第一週上課時拿來解釋示意圖(訂閱者 代理人 發佈者)畫上去
然後解釋一下這張圖就可以了
第二題
https://www.youtube.com/watch?v=tmvO3NnD__s
影片中訊息總共傳送了N次
第1次
xxx主題及yyy訊息由(MQTT Clint)MQTTLens 發佈至 (MQTT Server)mosquitto,因為(MQTT Clint)Visual Studio程式訂閱了xxx主題 所以(MQTT Server)mosquitto將xxx主題及yyy訊息轉送至(MQTT Clint)Visual Studio程式
第2次...
第3次...
第三題 參考
https://www.youtube.com/watch?v=1DbmWN-_zkE
https://yazelin.github.io/usc2017nsp/
開心農場是什麼樣的應用內容寫進來(網頁上第1段)
用到了哪些設備寫進來(網頁上第2段)
這些設備提供什麼功能寫進來(可參考同學影片講解)
第四題
https://www.youtube.com/watch?v=mAKF58OfFME
Arduino 是MQTT協定中的什麼端(Clint或Server)所扮演角色是(發佈者、訂閱者還是代理人)
在此影片中負責(接收、傳送還是轉發訊息)
mosquitto 是MQTT協定中的什麼端(Clint或Server)所扮演角色是(發佈者、訂閱者還是代理人)
在此影片中負責(接收、傳送還是轉發訊息)
MQTTLens 是MQTT協定中的什麼端(Clint或Server)所扮演角色是(發佈者、訂閱者還是代理人)
在此影片中負責(接收、傳送還是轉發訊息)
第五題
https://www.youtube.com/watch?v=E1K8Y5k1PmM
第11秒 影片中說 我們已經把MQTT的伺服器建起來(畫面上顯示的是MQTTLens) 有誤
錯誤在哪?正確解釋應為何?
第12秒 然後已經有加入了兩個資料表(畫面上顯示的是MQTTLens) 有誤
錯誤在哪?正確解釋應為何?
第38秒 他也一直在跑一直在記錄(畫面中的phpmyadmin資料並沒有更新) 有誤
錯誤在哪?正確解釋應為何?
第42秒 他也一直在記錄壓力感測(畫面中的phpmyadmin資料並沒有更新) 有誤
錯誤在哪?正確解釋應為何?
第45秒 現在我們開始跑程式(所以說之前程式都沒開資料庫就會收到資料嗎?) 有誤
錯誤在哪?正確解釋應為何?
第46秒 我們的顯示程式(只是顯示程式嗎?)
錯誤在哪?正確解釋應為何?