基于ESP8266的微信门铃
前言
最近在学习ESP8266,所以想用他来做个小玩意儿。
于是就有了这篇文章,其实最终实现的效果很简单。
就是当门铃按键按下,微信会收到消息提醒。
先放上录的小视频。
" alt="aaa.gif" target="_blank" onclick="zoom(this, this.getAttribute('zoomfile'), 0, 0, '0')" zoomfile="" file="" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" lazyloaded="true" initialized="true">
当然这只是初期,拓展的话可以进一步设计一套协议,添加更多设备,比如开关或者插座之类的电器设备。
添加用户绑定功能,实现数据双向通信。
下面介绍怎么完成他。
一、硬件准备
1、ESP8266模块
我选择的是nodemcu。因为他可以直接用micro usb烧录,下载程序方便。实质上他就是一块ESP8266.
2、其他
本来准备外接一个按键的,结果发现nodemcu上面自带了两个按键,一个复位键,一个flash键。
因为是做门铃,所以暂时不需要杜邦线和按键了,一个安卓充电线当做下载线就可以了。
二、软件准备
nodemcu原生是lua脚本来开发,但是我还是习惯用C来开发。
于是我的开发环境就是VS2015+visual micro
。
软件环境的搭建,可以见我博客的前几篇文章。
arduino IDE配置ESP8266开发环境
https://blog.rayuu.com/arduinoesp8266.html[/url]
使用VS2015 visual micro安装开发arduino
[url]https://blog.rayuu.com/vs2015arduino.html[/url]
三、系统架构
-
单片机部分:nodemcu采用C来编写;
-
后台:linux平台下使用python来写;
-
数据库:待定。
- 通信协议:基于MQTT+私有协议。
初期计划实现步骤大致如下:
- ESP8266固件开发(NodeMcu);
- mqtt协议学习;
- python版mqtt开发;
- 把wxpy与mqtt融合(后台开发);
- 与web版微信对接。
使用说明
1、flash模式
用户在开机前3秒内按下flash key,系统进入flash模式。
在该模式下,esp8266是AP模式,会生成一个wifi热点。名称为smledart_xxxxx xxxxx为芯片ID。
" alt="QQ截图20171113200344.jpg" target="_blank" onclick="zoom(this, this.getAttribute('zoomfile'), 0, 0, '0')" zoomfile="" file="" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" lazyloaded="true" initialized="true">
用户连接该热点后,打开浏览器,输入192.168.4.1
打开配置wifi界面
" alt="QQ截图20171113200423.jpg" target="_blank" onclick="zoom(this, this.getAttribute('zoomfile'), 0, 0, '0')" zoomfile="" file="" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" lazyloaded="true" initialized="true">
输入正确的wifi热点和密码,即你家里的可以上网的wifi热点。
服务器地址和端口,后续不会对用户开放。这里仅供测试用。
" alt="Image.png" target="_blank" onclick="zoom(this, this.getAttribute('zoomfile'), 0, 0, '0')" zoomfile="" file="" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" lazyloaded="true" initialized="true">
另外后续可能采用通过smartconfig方式来连接wifi。即通过手机发送UDP报文出来,esp8266通过搜索报文自动建立连接。
配置完成后,重启esp8266即可。
热点名称,密码,服务器IP和端口,设备信息等信息 存在flash内,用文件系统spiffs来挂载读写。
网页同样用文件系统保存,用html,js,css来编写网页
2、normal模式
开机,等5~6秒后,esp8266连上第一步配置的wifi后,同时也会连上服务器。
这时就可以正常使用了。
按下flashkey后,微信就会收到相应的消息了。这里按下flashkey不同于开机前三秒按下进入flash模式。
" alt="QQ截图20171113200547.jpg" target="_blank" onclick="zoom(this, this.getAttribute('zoomfile'), 0, 0, '0')" zoomfile="" file="" inpost="1" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})" lazyloaded="true" initialized="true">