然后是硬件esp-8266,我用的是esp-12系列,10块包邮岂不美哉?
![](http://imgsrc.baidu.com/forum/w%3D580/sign=44401410eafe9925cb0c695804a95ee4/595a6a1ed21b0ef465bc948bd7c451da80cb3e23.jpg)
买的时候建议买个转接板方便接线
固件的源码工程我放在了github
https://github.com/zhangguanzhang/ESP8266_NONOS_SDK-mqtt-uart_set![](http://tb2.bdstatic.com/tb/editor/images/face/i_f09.png?t=20140803)
求给个星星阿
从乐鑫官方的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就进入下载了
![](http://imgsrc.baidu.com/forum/w%3D580/sign=529cd91b9325bc312b5d01906ede8de7/8086c51b0ef41bd5d207e4215bda81cb38db3d23.jpg)
接线是VCC,GND,RX,TX 另外俩根是一个GND-GPIO0,那根杜邦针式接GND上的
点击了start后杜邦针触碰下reset就下载了
下载过程图如图所示
![](http://imgsrc.baidu.com/forum/w%3D580/sign=6097a0c0b6315c6043956be7bdb0cbe6/2f8319f41bd5ad6e5dad683f8bcb39dbb7fd3c23.jpg)
下载完后拔掉GPIO0的线,然后触碰下reset给个低电平重启下就行了,不拔掉GPIO的线的话不会进入工作模式并且会乱码
然后打开串口调试软件参数如图所示
初始的一些mqtt参数在app/include/mqtt_config.h里宏定义的
![](http://imgsrc.baidu.com/forum/w%3D580/sign=2947984a24dda3cc0be4b82831e83905/7f13b11ea8d3fd1f2345a3ef3a4e251f94ca5f2b.jpg)
我改写了官方固件,通过串口即可设置参数,具体设置协议在我github的readme下拉就能看到
先设置wifi和mqtt的用户名密码和hid和你mqtt的server端的ip和端口,主机有域名也可以直接用域名,wifi名字不能是中文
![](http://imgsrc.baidu.com/forum/w%3D580/sign=3fe10034252eb938ec6d7afae56385fe/348f683e6709c93d1bc90d22953df8dcd0005440.jpg)
设置好后发下show看看信息,无误后发送restart重启加载信息
![](http://imgsrc.baidu.com/forum/w%3D580/sign=98e153dd06d79123e0e0947c9d355917/20cc414e9258d109e1bfaa67db58ccbf6d814d1b.jpg)
上面的是连接不上的打印,我才意识到我手机开的wifi热点后我手机没打开数据流量,连接上了就是红框部分的下面
然后源码里默认订阅的主题是receive,推送主题名字是send,服务器上推送下一个ON的信息,
打印部份我的代码是判断云端的id部分是不是和自身一样,一样就打印,模块硬件id我设置成testid的上图可以看到
str_cut是我自定的函数,在uart.c里根据传入字符来分割字符串
也就是按照等号分割出第二部分的id写进temp后判断和自身id一致不,不一致就不打印,一致就打印信息
![](http://imgsrc.baidu.com/forum/w%3D580/sign=1e77b5f50be9390156028d364bee54f9/bcac800a304e251ff764e92dad86c9177d3e53e8.jpg)
![](http://imgsrc.baidu.com/forum/w%3D580/sign=c556a038ab44ad342ebf878fe0a30c08/2c91a4de9c82d15898ca5b648a0a19d8bd3e4237.jpg)
由此可见硬件可以和服务器通信了