閱讀405 返回首頁    go 技術社區[雲棲]


智能家居——IoT零基礎入門篇

原文地址:https://www.cnblogs.com/rainmote/p/7617454.html

概要

本文主要根據筆者從零開始接觸硬件,以小白視角開啟IoT探索,根據相關資料DIY一個溫濕度傳感器。後經過探索發現新大陸——Home Assistant&Homebridge,最終實現了一個智能家居設備從數據采集到控製、展示。

整體結構圖

  • 智能設備:溫濕度傳感器
  • 主控芯片:STM32F103C8T6
  • 通信協議:Zigbee
  • 智能網關:樹莓派
  • 數據存儲、展示、設備控製:HomeAssistant + Home Kit

效果圖

傳感器效果圖

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

剛開始在網上找STM32資料,發現有驅動DHT11的源代碼,但是程序結構根本無法看懂。
另外,搭建了IAR開發環境,發現將源碼粘貼進去,根本編譯不過;網上也沒有詳細的STM32F103配置資料。

周末,去圖書館翻遍STM32相關書籍,找到了一本非常適合突擊,實戰入門的資料書籍《瘋狂STM32實戰講學錄》,作者歐陽駿,李英芬,王小強等。
花了大概5小時,熟悉了前七章的內容,主要有基本LED燈實驗(說明庫函數),GPIO入門之道(基本IO操作),中斷(程序流程、通信),時鍾,UART(串口)等知識點。

回家之後,發現STM32驅動DHT11程序能看懂了,但是開發環境中編譯還是報錯,從ST官網下載的固件庫也不知道如何使用。

無意間,搜索到“51自學網”的STM32教程,該網站講解的課程都很基礎,很適合零基礎,於是看了STM32開發環境搭建相關教程,於是自己動手實現了第一個LED燈。

按照教程又溫故了時鍾中斷等知識點,實現了定時休眠功能,接著結合教程,DHT11說明文檔,實現了讀取溫濕度數據。但是讀取的數據沒法顯示,於是看了串口通信相關教程,實現了基本的串口通信,將讀取的數據通過串口發送至電腦。

上述過程相關技術教程見《STM32F103X 開發環境搭建》、《STM32獲取DHT11溫度傳感器數據

嚐試IoT雲平台

串口讀取到DHT11數據後,開始嚐試將數據上傳雲平台保存,選擇阿裏雲IoT套件,熟悉了MQTT協議,按照官方文檔獲取HTTPS授權,並將數據通過MQTT協議推送到雲端,轉儲到表格存儲中,接下來想著搭建一個WEB服務,繪製溫濕度曲線圖。
接入阿裏雲物聯網套件相關教程見《智能家居——阿裏雲物聯網套件體驗

發現新大陸--Home Assistant

準備搭建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,那便是另一番景象,讓我們共同期待。


知識共享許可協議
作者:rainmote
博客:https://www.cnblogs.com/rainmote
本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。
歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁麵明顯位置給出原文連接。

最後更新:2017-10-01 21:36:54

  上一篇:go  你有什麼理由還不選擇阿裏雲服務器呢–從阿裏雲發布自研商用關係型數據庫POLARDB想到的
  下一篇:go  pythonchallenge_level13