你需要知道的开发ESP8266的MQTT版固件

嵌入式技术

1330人已加入

描述

乐鑫的IoT芯片出货量已经超过1亿片,ESP8266是一款WiFi芯片,主要用于IoT数据的I/O。

MQTT (Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。可以使用EMQ搭建自己的MQTT服务器。

一、ESP8266简介

1、ESP8266的各引脚定义如下图。其中GPIO0、GPIO2、GPIO4、GPIO5、GPIO12、GPIO13、GPIO14可以当做GPIO使用,其他口被内部占用,不能用作普通GPIO口使用。同时,GPIO0是固件烧录的选择引脚,在上电时需要保持高电平,否则进入烧写模式。

ESP8266

2、下图的连接方式就可以正常开发或者使用ESP8266了。CH_PD是使能引脚,需要保持高电平。官方手册上说明GPIO15应上拉。通过UART串口就可以进行通信和固件下载了。

ESP8266

3、FLASH布局

不支持在线更新和支持在线更新的模式下FLASH布局不同

ESP8266

ESP8266

二、ESP8266开发环境搭建

由于ESP8266官方没有提供开发工具,这里使用了安信可开发的ESP8266开发工具,可以在安信可官网下载一体化开发SDK,其它需要的工具有:固件烧录下载工具,串口调试工具(XCOM)。可以根据官方SDK来修改工程。

1、下载好一体化开发SDK后解压,如下。

ESP8266

2、先解压cygwin到要安装的目录如D:\目录下,路径不能出现中文。

3、解压eclipse到要安装的文件夹,路径不能出现中文。

4、将ESP_IDE.exe移动到自己经常用到的软件文件夹中,并发送快捷方式到桌面

5、首次打开ESP_IDE.exe进行配置,有两个文件路径必须配置,Eclipse Path设置为之前自己解压的eclipse中eclipse.exe所在的文件夹,Cygwin Path设置为之前解压的cygwin文件夹,IDE Path可以不用设置。

6、设置完成,可以使用eclipse进行ESP8266的开发了。

三、ESP8266SDK导入

使用乐鑫官方ESP8266 NONOS SDK V2.1.0为模板进行开发,下载后解压到合适的目录。

1、打开基于eclipse的esp_ide,导入官方SDK。

ESP8266

2、选择导入的为Makefile工程!!

ESP8266

3、选择工程路径为之前解压的ESP8266 NONOS SDK V2.1.0文件夹,并在编译器中选择Cygwin GCC作为编译器,完成导入。

ESP8266

四、ESP8266开发

1、导入NONOS_SDK-2.1.0_mqtt_uart 工程,结构如下

ESP8266

2、主要修改部分是mqtt_config.h和user_main.c、uart.c。来实现自己想要的功能。

关键是mqtt_config.h部分,该部分涉及到连接WiFi和MQTT服务器的参数,代码如下

#ifndef __MQTT_CONFIG_H__#define __MQTT_CONFIG_H__#define CFG_HOLDER0x00FF55A1#define CFG_LOCATION0xFD#define MQTT_SSL_ENABLE#define MQTT_HOST"192.168.1.2" //MQTT服务器IP端口等信息修改#define MQTT_PORT1883#define MQTT_BUF_SIZE1024#define MQTT_KEEPALIVE120 #define MQTT_DEVICE_TYPE"IoT"#define MQTT_CLIENT_ID"IoT_00000"#define MQTT_USER"user" //MQTT服务器连接用户名密码#define MQTT_PASS"password"#define MQTT_DEBUGTOPIC"debug_topic"#define MQTT_PUBTOPIC1"debug/device_topic1"#define MQTT_PUBTOPIC2"debug/device_topic2"#define MQTT_SUBTOPIC"debug/iot_device"#define MQTT_PINGTOPIC"debug/ping"#define MQTT_RESPONSETOPIC"debug/response"#define MQTT_LWT"RICOH/LWT"#define OTA_HOST"192.168.1.3" //OTA部分,不适用可以不管#define OTA_PORT80#define OTA_PATH"esp_upgrade/"#define STA_SSID "WiFi" //修改WiFi名称和密码#define STA_PASS "password"#define STA_TYPE AUTH_WPA2_PSK#define MQTT_RECONNECT_TIMEOUT 5#define DEFAULT_SECURITY0#define QUEUE_BUFFER_SIZE 2048#define PROTOCOL_NAMEv31//#define PROTOCOL_NAMEv311#endif // __MQTT_CONFIG_H__

3、修改完成后编译代码烧录到ESP8266中,上电即可连接到MQTT服务器。

五、ESP8266固件烧录

1、ESP8266有两种途径更新固件(运行的程序),一种是通过串口烧录(物理连接),另一种就是OTA可从云端下载新版本的ESP8266固件(不需要物理连接)。在两种方式下编译也是不同的,生成的bin文件也不同,烧录的程序和地址也不同。

下面是支持OTA的4096FLASH的ESP8266的BIN文件的烧录地址

ESP8266

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分