基于Domoticz智能家居系统(十四)用ESP8266做MQTT客户端实验
用ESP8266做MQTT客户端
本文主要是以ESP8266对接Domoticz服务器,做MQTT的简单客户端连接验证实验,以便后面作为MQTT和nRF24的无线网关。
IDE使用Arduino。
一些前期的准备
首先,准备ESP8266模块,并安装Arduino IDE:
- ESP8266模块可以在某宝上购买,选择这个模块的原因是,它自带了usb转串口芯片,本文中将会使用Arduino通过USB转串口的方式来直接烧录固件ROM;另外这个模块把引脚都引出来做成双排针接口,方便实验。某宝上大概有两类USB转串口芯片的ESP8266,一类是CH340芯片的,一类是CP2102芯片的,在价格上后者贵几块钱,性能上不知道有什么差别,笔者用的是后者;
- 下载并安装Arduino IDE,之所以选择Arduino,是因为后面我们需要使用基于Arduino的许多库例如MySensors进行开发。本文对该软件的只做个大概的介绍说明:
下载地址:https://www.arduino.cc/en/Main/Software?setlang=cn
笔者使用的是当前最新稳定版 ARDUINO 1.8.8
电脑操作系统为win7。
安装很简单,不赘述。
在安装过程中它可能会装一些驱动程序。
关于安装设置这个软件,可以参考:Arduino环境下开发NodeMCU(ESP8266)
安装完成后,运行,界面如下:
下面我们需要对它进行一些基本设置,以支持ESP8266模块开发板。
第一步 设置ESP8266开发板的BSP的搜索引擎链接
在菜单栏找 “文件”=>“首选项”=》“设置”选项卡,在那个“附加开发板管理器网址”那里填入:
http://wechat.doit.am/package_esp8266com_index.json
或者
http://arduino.esp8266.com/stable/package_esp8266com_index.json
第一个链接只能支持到 2.0.0版,第二个链接可以支持到2.5.0版,笔者选用2.5.0版本。
如图所示:
然后,点“好”。
第二步 下载安装ESP8266开发板支持包
“工具”=》“开发板:Arduion/Genuino Uno”=》“开发板管理器”,如图:
可以看到“正在下载平台索引”,等它下载完,正常情况下是会顺利下载完成的,如图所示:
如果这一步出错,会显示:
如果尝试几次出错的话,那么错误的原因是这个地址在你的网络中被墙了,需要设置番羽墻代理(怎么越墙请自行搜索。可以用ssr代理),在菜单栏找 “文件”=>“首选项”=》“网络”选项卡:
选“人工代理设置”,选中“SOCKS”,
主机名填入你的代理服务器IP地址,端口号填入代理服务器指定的代理端口号。
本人使用的是ssr,在ssr上设置好代理功能,在电脑本机上。于是,可以设置如下:
然后再回到“工具”=》“开发板:Arduion/Genuino Uno”=》“开发板管理器”,可以看到能正常下载了。
下载完成后,在搜索栏搜ESP8266:
可以看到搜到了这个开发板,目前这个BSD最新版本是2.5.0。
点版号后面的“安装”,显示正在安装…。
可以看到,它下载相关的代码了,但是速度相当的慢,这没有办法,这要看你的网络连接这个esp8266.com官方网的速度速度如何。
这个过程中,甚至会多次失败,不过没关系,可以多次尝试安装,它每次已经下载好的数据包不会删掉,等于是有断点续传能力。这样直到最后下载完毕,进入安装过程。
装完之后:
第三步 设置ESP8266开发板支持包
点击 工具 –> 开发板,会看见esp8266 模块,选择相应的模块。之后,可以看到右下角出现了相应的信息。
我的ESP8266上面是ESP-12E模块,所以这里选对的模块。
第四步 编译验证
回到Arduino IDE的主界面,修改一下代码,做个简单测试:
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(“Hello,NodeMCU!”);
}
然后,菜单栏,文件–》另存为…。
然后点击左上角的对勾,编译一下:
编译成功。
第五步 下载、安装ESP8266模块的USB驱动
安装CP2102驱动(如果是CH340的USB转串口芯片就要下载安装相应的驱动)(请自行搜索下载),安装之后,把ESP8266开发板连上电脑USB,等待驱动匹配安装,成功之后显示: