然后是硬件esp-8266,我用的是esp-12系列,10块包邮岂不美哉?
买的时候建议买个转接板方便接线
固件的源码工程我放在了github
https://github.com/zhangguanzhang/ESP8266_NONOS_SDK-mqtt-uart_set求给个星星阿
从乐鑫官方的non_os的mqtt的demo修改,我用的是esp-12系列,12F和12S测试了都可以用
官方的自带的demo好像串口编译不通过,改了一些引用文件和增加了几个定义就能过了
具体信息可看github里的readme.md
下面是开发软件sdk链接,需要自己改的可以下载后导入我的工程来修改
链接:
http://pan.baidu.com/s/1eSIIAdG 密码:vy55
---烧录固件
ESP8266_NONOS_SDK-mqtt-uart_set/bin/里的就是固件
下面是文件名对应的烧写地址
eagle.flash.bin——–>0x00000
eagle.irom0text.bin—->0x10000
上面俩文件是任何时候都必须烧录的,下面俩文件是刚拿到模块初始化必须烧录的
esp_init_data_default.bin—->0x3fc000
blank.bin—->0x3ff000
烧写软件链接:
http://pan.baidu.com/s/1c1DgTwO 密码:z2dk
烧写的时候自己用串口电路或者usb转串口模块下载,我是直接接在原子mini板子上的串口电路下载的,GPIO0要拉低,然后点击start后reset引脚触碰下gnd就进入下载了
接线是VCC,GND,RX,TX 另外俩根是一个GND-GPIO0,那根杜邦针式接GND上的
点击了start后杜邦针触碰下reset就下载了
下载过程图如图所示
下载完后拔掉GPIO0的线,然后触碰下reset给个低电平重启下就行了,不拔掉GPIO的线的话不会进入工作模式并且会乱码
然后打开串口调试软件参数如图所示
初始的一些mqtt参数在app/include/mqtt_config.h里宏定义的
我改写了官方固件,通过串口即可设置参数,具体设置协议在我github的readme下拉就能看到
先设置wifi和mqtt的用户名密码和hid和你mqtt的server端的ip和端口,主机有域名也可以直接用域名,wifi名字不能是中文
设置好后发下show看看信息,无误后发送restart重启加载信息
上面的是连接不上的打印,我才意识到我手机开的wifi热点后我手机没打开数据流量,连接上了就是红框部分的下面
然后源码里默认订阅的主题是receive,推送主题名字是send,服务器上推送下一个ON的信息,
打印部份我的代码是判断云端的id部分是不是和自身一样,一样就打印,模块硬件id我设置成testid的上图可以看到
str_cut是我自定的函数,在uart.c里根据传入字符来分割字符串
也就是按照等号分割出第二部分的id写进temp后判断和自身id一致不,不一致就不打印,一致就打印信息
由此可见硬件可以和服务器通信了
--------------------------------------------------------------------------
8266是一款由wifi能力的mcu,有兴趣和时间的可以自己去研究sdk开发,不过我是只把它当作wifi传送数据的
有串口的单片机拿个串口接8266的串口上就可以传输了
处理云端的数据思路是以下这样: 举例 1假如连接不上wifi就是STATION_IDLE多次串口打印 2心跳包(Send keepalive packet to字样)的打印 所有动作和状态都会从串口输出,内容里包含多个回车换行符,所以建议串口中断不要以回车换行判定接收完成 建议开启一个定时器 串口中断里使能定时器并且接受每一个字节的时候定时器数值清零,溢出了直接标记flag标志位为接收完成并失能定时器,听不懂我这段话的话看下面图 参考原子的代码
然后是单片机部分的源码工程分享,写的很渣,就这样*大的拿去扩展吧
链接:
http://pan.baidu.com/s/1bppj7aB 密码:wkz2
--------------------------------------------------------------------
顺带这样暂时处理的只是下发,写的那个publish可以用php调用外部命令来推送
服务器可以接入微信后根据消息type和正则匹配来推送消息给硬件就是微信控制硬件了
也可以自己写个页面然后ajax按钮发送调用那个publish推送就是网页控制硬件了
-------------------------------------------------------------------
发下自己之前录制的视频
链接:
http://pan.baidu.com/s/1slFf4rr 密码:ebfy