初始esp8266与nodemcu
笔者在2016年就买了套arduino的开发板套装,但只是简单的体验了下亮灯和简单的传感器就将其束之高阁了,去年有客户找我探讨物联网智能园林等系统,因为没对硬件与物联网的流程有深入的研究,所以自己是没有信心搞定,就推荐给了别人,结果还闹的十分不好,所以本人决心好好把物联网相关的知识体系研究透彻,以备后需。
笔者先是从GITHUB上采用合适的关键词搜索到了一些相关的项目代码,并且能搜索到不少企业级生产环境下的项目代码,了解到了云端代码主要就是对各种协议、如TCP、MQTT、HTTP(Websocket)等对信息进行解析、存储、逻辑处理,下发数据包。
去年买了本书《物联网python开发实战》读完很有豁然开郎,茅塞顿开的感觉 ,物联网的终端如传感器、继电器、电磁阀、GPS之类的并不是能自己就直接连入互联网的,而大多是通过一个网关来与终端、云端通讯,初学习一个领域总是有一些百度都搜索不到的疑问,通过多看书,多思考才能理解
也学习了解了下阿里云、腾讯云、百度天工的物联网解决方案,也是通过mqtt协议来管理设备,只是整合了认证等基础设施,用起来更快速方便,并能适应大规模设备的接入。
以上只是光输入知识还是得实践起来才能真正将知识内化,行动起来
起初本人是想购买一块用于arduino的上网扩展板来实验物联网,于是百度搜索到了esp8266和nodemcu,某宝花了二十几块钱买了片nodemcu、超声波、继电器回来,一看接口傻眼,这咋往arduino好插呀,然后又一顿上网看资料,才明白这东东号称arduino杀手,能独立完成连接设备上网,真是个好东东呀,并且是国人开发的,生态社区十分发达、风靡全球呀
固件类型
- at固件包 通过at指令来配置开发板 类似web开发中的模板标签、api接口等技术,不需要开发程序,只需要学会用指令就行,方便但是灵活性不高
- MicroPython固件 python开发
- nodemcu官方固件 lua语言开发,真心不太用这语言,好像有个nginx的版本可以用它来管理,游戏中也不少用这个做脚本
- Mongoose OS NodeJS开发,浏览器中开发
- arduino 采用arduino的方式开发,每次要编译上传
- ESPEasy WebUI的方式管理配置
- ESPHome https://esphome.io/ 在网页中采用纯配置的方式
根据个人的喜好技术栈来选择,将固件刷到开发板中,这里就不细说了。
USB转串口驱动安装
数据线一定要有数据传输功能的线,有很多线是只有充电功能的
windows10下最终我是用驱动精灵安装成功了驱动
安装Domoticz
espeasy与Domoticz结合比较方便,我是看的这篇文章才选择这种方式
智能家居折腾记 篇三:Nodemcu刷espeasy固件,制作二氧化碳检测器,并接入Domoticz
当然后来了解我这里是杀鸡用牛刀了,只是提交数据也可以用百度天工之类的云平台,domoticz和Home assistant是属于家居智能系统,比较强大,也让不小心跨入了智能家居开发的领域.
- domoticz中的硬件、设备配置
硬件类型:Dummy (Does nothing, use for virtual switches only)
然后再创建虚拟传感器 生成的Idx要配置到espeasy中 - espeasy中的设备、控制器配置
以上具体操作步骤可以看我推荐的文章,人家写的已经很详细
MQTT订阅的主题,可以通过别的方式编程互动
domoticz/in
domoticz/out
mqtt数据包
{"idx":4,"RSSI":10,"command":"switchlight","switchcmd":"Off"}
url控制
http://192.168.199.107/control?cmd=GPIO,14,1
关于开关类型的设置
swith button type : normal switch
我设置成了active high 所以不断的开灯又关了灯
mqtt服务器
这里选择了emqtt做为本机的mqtt broker服务器
高级应用
domoticz的事件触发器编程
espeasy的rules规则编写
第一次接触时,总觉得终端设备、电路板很难,其实慢慢了解流程和通讯规则后还是挺简单的。物联网也没有我们想的那么高大上,毕竟硬件终端能听懂的指令,提供的接口复杂度是有限的。
工具:
Domoticz 开源的智能家居/物联网控制中心
mqtt.fx MQTT调试工具
emqtt mqtt服务器
sscom 串口调试工具,这类工具很多
tcp网络调试工具
硬件与软件的设计理念有很多相通的 比如元件就是高内聚、低耦合、单一职责、接口的体现,
通过这种系统研究各类开发板的开发方式 硬件接口操作 云端系统开发 各种通讯协议的选择应用 收获满满
学习单片机确实可以更好的理解计算机系统原理 结构相比简单一些
后续学习计划
改成继电器就可以控制220v的电灯 结合其它传感器可以实现自动化智能控制
后续继续实验自建云端代码,数据库,自动操作逻辑,mqtt/tcp数据包的接收发送,
有条件再购买STM32、树莓派等强大些的开发板
购入其它的联网开发板、Lora、4g、NBiot、zigbee等,学习这些协议
做为一个中专学机械转电焊工转网页美工转开发人员的我,对电路原理电路图一脸蒙蔽,近期购买几本精典的电路原理先学习下,能看懂电路图,也为更好的理解计算机这个庞大的伟大的电路,更加热爱从事的开发工作.
学习电子电路,再拾起中专的专业 机械设计,配合多年的软件开发经验,说不定我也能走向真正创客之路呢,加油吧!终身学习!生活真美好!