本文主要根據筆者從零開始接觸硬件,以小白視角開啓IoT探索,根據相關資料DIY一個溫溼度傳感器。後通過探索發現新大陸——Home Assistant&Homebridge,最終實現了一個智能家居設備從數據採集到控制、展現。php
傳感器效果圖
html
Home Assistant效果圖
編程
Home Kit效果圖
服務器
在大學時代時,宿舍有兩個路由器TP-LINK路由器,嘗試刷openwrt/dd-wrt,各類折騰,買了編程燒錄器、FLASH芯片等,拆機焊接等,嘗試用電烙鐵拆解芯片(不應輕易嘗試),搞壞了一個路由器。由此也開啓對硬件的興趣,看目前IoT備受你們關注與追捧,本身也想躍躍欲試——DIY智能家居。網絡
2017年七月份,開始瞭解各類物聯網設備、協議,糾結WiFi仍是Zigbee?瞭解ESP8266,CC2530,JN5168等芯片。函數
最開始想着作個簡單的,正好百寶箱中有一隻DHT11,因而先作個溫溼度設備。
溫溼度傳感器應該是功耗小的,若是用WiFi就必須使用電源,若是每一個房間一個,牆上基本插座確定不夠,即不美觀也不現實。
因此聚焦Zigbee, 因而在網上買了一套開發學習板,200+,買回來後才發現沒時間搞,除了用串口測試玩了一下,一直在被擱置了。學習
花了近一週的時間在網上搜索Zigbee相關資料及產品,因爲目前大多數Zigbee產品通訊協議各廠商都各自實現,且不是徹底開源,因此學習成本較大,Zigbee 3.0可能改善這一局面,不過目前網上資料甚少。爲了實現上述DIY智能家居的目標,我選擇暫時放下這個大骨頭,選擇一款支持透傳的Zigbee板子DL-20
, 串口轉Zigbee透傳。測試
無線傳輸問題解決了,下來就是如何驅動DHT11獲取數據,購買Zigbee設備時,看資料這個模塊應該是MCU,就是常常聽到的單片機,正好家裏百寶箱裏有STM8和STM32(大學買的,一直被擱置,沒時間搞,也不知道該怎麼玩),因而網上查閱資料,發現STM8資料比STM32要少不少,看了STM32F103C8T6核心板也就10塊錢左右,因而選擇STM32,一方面價格能接受,配置也比STM8高些,容易入門上手。網站
剛開始在網上找STM32資料,發現有驅動DHT11的源代碼,可是程序結構根本沒法看懂。
另外,搭建了IAR開發環境,發現將源碼粘貼進去,根本編譯不過;網上也沒有詳細的STM32F103配置資料。阿里雲
週末,去圖書館翻遍STM32相關書籍,找到了一本很是適合突擊,實戰入門的資料書籍《瘋狂STM32實戰講學錄》,做者歐陽駿,李英芬,王小強等。
花了大概5小時,熟悉了前七章的內容,主要有基本LED燈實驗(說明庫函數),GPIO入門之道(基本IO操做),中斷(程序流程、通訊),時鐘,UART(串口)等知識點。
回家以後,發現STM32驅動DHT11程序能看懂了,可是開發環境中編譯仍是報錯,從ST官網下載的固件庫也不知道如何使用。
無心間,搜索到「51自學網」的STM32教程,該網站講解的課程都很基礎,很適合零基礎,因而看了STM32開發環境搭建相關教程,因而本身動手實現了第一個LED燈。
按照教程又溫故了時鐘中斷等知識點,實現了定時休眠功能,接着結合教程,DHT11說明文檔,實現了讀取溫溼度數據。可是讀取的數據無法顯示,因而看了串口通訊相關教程,實現了基本的串口通訊,將讀取的數據經過串口發送至電腦。
上述過程相關技術教程見《STM32F103X 開發環境搭建》、《STM32獲取DHT11溫度傳感器數據》
串口讀取到DHT11數據後,開始嘗試將數據上傳雲平臺保存,選擇阿里雲IoT套件,熟悉了MQTT協議,按照官方文檔獲取HTTPS受權,並將數據經過MQTT協議推送到雲端,轉儲到表格存儲中,接下來想着搭建一個WEB服務,繪製溫溼度曲線圖。
接入阿里雲物聯網套件相關教程見《智能家居——阿里雲物聯網套件體驗》
準備搭建Web服務器時,查閱網上相關資料,無心間發下了新大陸,Home Assistant,太符合個人需求。
官網:https://home-assistant.io/
安裝教程可參考:https://zhuanlan.zhihu.com/p/28011522
國內論壇:https://bbs.hassbian.com/forum.php
智能家居控制展現圖
(圖片引用自Home Assistant官方文檔)
回看整個入門歷程,發現IoT設備用戶體驗,能耗等細節相當重要,同時也是約束。
簡單理解就是,要能耗低,那麼設備必定要簡單,簡單的設備開發涉及硬件知識不少,對於軟件工程師來講門檻較高。
另外一個就是通訊協議,WiFi能夠說是入門首選,可是其能耗較大決定了其不能成爲家庭小型傳感器所用。
這方面小米一直作的不錯,對於有源設備,好比智能排插等使用WiFi,同時推出Zigbee智能網關,溫溼度、門窗感應設備使用Zigbee通訊,而NXP公司的JN516X系列能耗與CC2530相比,又改善不少。因此網上查詢小米設備的拆解資料能夠看到,溫溼度傳感器等採用鈕釦電池供電。
隨着Zigbee 3.0的來臨,相信智能家居小型傳感器的網絡通訊仍是非Zigbee莫屬。
ESP8266所帶來的價格優點,也讓不少熱愛IoT的Geek投入,使得WiFi也佔一席之地。
目前各大廠商都在創建本身的生態圈,家裏買各類設備須要安裝不一樣的APP,用戶體驗較差,而有一羣人,熱衷Home Assistant這個開源平臺,投身在將各類設備適配到該平臺。 若是國內某個廠商可以進入開源社區,支持Home Assistant,那即是另外一番景象,讓咱們共同期待。