本文主要根据笔者从零开始接触硬件,以小白视角开启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,那即是另外一番景象,让咱们共同期待。