ESP8266环境搭建和部署MQTT测试代码

ESP8266环境搭建和部署MQTT测试代码

一. 环境搭建

  1. 安装安信可提供的eclipse开发环境包,参考如何安装安信可一体化开发环境。

  2. 下载 ESP8266_RTOS_SDK 的开发包。

    • 复制 examples/project_template 到项目根目录,更名为 app,删除里面的 sample_lib 文件夹。
    • driver_libextra_include 目录放到 examples 里,暂时项目不用。
    • third_party/makefile 重命名为 makefile.bak,暂时项目不用。
ESP8266环境搭建和部署MQTT测试代码_第1张图片
RTOS原始目录结构
ESP8266环境搭建和部署MQTT测试代码_第2张图片
RTOS修改后目录结构
  1. 导入项目
    • eclipse中选择 File-->Import,选择 C/C++ 分支,选择 Existing Code as Makefile Project
    • 配置项目名称、RTOS工程所在目录和选择合适的交叉编译器
ESP8266环境搭建和部署MQTT测试代码_第3张图片
导入项目配置
  1. 配置项目
    打开 app 目录下 Makefile 文件,添加和配置代码
# 在此处添加如下代码
#EXTRA_CCFLAGS += -u
parent_dir:=$(abspath $(shell pwd)/$(lastword $(MAKEFILE_LIST)))
parent_dir:=$(shell dirname $(parent_dir))
parent_dir:=$(shell dirname $(parent_dir))

SDK_PATH= $(parent_dir)
BIN_PATH=$(SDK_PATH)/bin
# 因为开始我们删除了 sample_lib 目录,所以我们要在去除多余的配置
# 当我们项目需要更多子目录的时候,我们还会在这里添加相应的配置

SUBDIRS=    \
    user    \
#去除 sample_lib

...

COMPONENTS_eagle.app.v6 = \
    user/libuser.a  \
# 去除    sample_lib/libsample.a
  1. 编译程序
    右键目标项目-->Build Project,编译成功之后在 Console 中可以看到显示出对应的应用文件的下载地址。
ESP8266环境搭建和部署MQTT测试代码_第4张图片
编译结果

二. 部署MQTT测试代码

参考和使用了一个github上的库 ESP-RTOS-MQTT,对他的目录结构和测试代码做了一些修改,修改之后的整个项目可参考 esp8266-rtos-mqtt,对修改的地方稍作介绍,仍然在上面配置好的工程中操作。

  • 复制参考库中的 examples/echo_example/user/user_main.c 替换本项目中的 app/user/user_main.c,配置本地WiFi AP信息。
// 配置AP信息
#define AP_SSID "ssid"
#define AP_PASSWORD "password"

...

void wifi_task(void *pvParameters)
{
    struct station_config sta_config;
    struct ip_info ip_config;
    bzero(&sta_config, sizeof(struct station_config));
    // 配置AP信息
    sprintf(sta_config.ssid, AP_SSID);
    sprintf(sta_config.password, AP_PASSWORD);
    wifi_station_set_config(&sta_config);
  • 复制参考库中的 lib 目录到本项目的 app 中,在 app/lib 目录中新建 Makefile 文件并添加配置
ifndef PDIR
UP_EXTRACT_DIR = ..
GEN_LIBS = libcomm.a
COMPONENTS_libcomm = MQTTClient/libmqttclient.a \
                     MQTTPacket/libmqttpacket.a
endif


INCLUDES := $(INCLUDES) -I $(PDIR)include
INCLUDES += -I ./
PDIR := ../$(PDIR)
sinclude $(PDIR)Makefile
  • app/lib/MQTTClient 中新建 Makefile 文件并添加配置
ifndef PDIR
GEN_LIBS = libmqttclient.a
endif

INCLUDES := $(INCLUDES) -I $(PDIR)include
INCLUDES += -I ./
PDIR := ../$(PDIR)
sinclude $(PDIR)Makefile
  • app/lib/MQTTPacket 中新建 Makefile 文件并添加配置
ifndef PDIR
GEN_LIBS = libmqttpacket.a
endif

INCLUDES := $(INCLUDES) -I $(PDIR)include
INCLUDES += -I ./
PDIR := ../$(PDIR)
sinclude $(PDIR)Makefile

测试项目中用到了串口UART,所以还要引入UART的驱动文件

  • app 目录中新建 driver/include 文件夹,复制 examples/driver_lib/include/uart.happ/driver/include,复制 examples/driver_lib/driver/uart.capp/driver

  • app/driver 中新建 Makefile 文件并添加配置

ifndef PDIR
GEN_LIBS = libdriver.a
endif

INCLUDES := $(INCLUDES) -I $(PDIR)include
INCLUDES += -I ./
PDIR := ../$(PDIR)
sinclude $(PDIR)Makefile
  • 因为在项目新建了几个目录和文件,需要最后配置 app/Makefile
# 添加子目录
SUBDIRS=    \
    user    \
    driver  \
    lib

...

# 添加静态链接库
COMPONENTS_eagle.app.v6 = \
    user/libuser.a  \
    driver/libdriver.a  \
    lib/libcomm.a

...

# 添加头文件路径
INCLUDES := $(INCLUDES) -I $(PDIR)include
INCLUDES += -I $(PDIR)/driver/include   \
            -I $(PDIR)/lib/MQTTClient/include   \
            -I $(PDIR)/lib/MQTTPacket/include

最终配置好的整个项目的目录树

│  gen_misc.bat
│  gen_misc.sh
│  Makefile
│  readme.txt
│
├─driver
│  │  Makefile
│  │  uart.c
│  │
│  └─include
│          uart.h
│
├─include
│      user_config.h
│
├─lib
│  │  Makefile
│  │
│  ├─MQTTClient
│  │  │  Makefile
│  │  │  MQTTClient.c
│  │  │  MQTTESP8266.c
│  │  │
│  │  └─include
│  │          MQTTClient.h
│  │          MQTTESP8266.h
│  │
│  └─MQTTPacket
│      │  Makefile
│      │  MQTTConnectClient.c
│      │  MQTTConnectServer.c
│      │  MQTTDeserializePublish.c
│      │  MQTTFormat.c
│      │  MQTTPacket.c
│      │  MQTTSerializePublish.c
│      │  MQTTSubscribeClient.c
│      │  MQTTSubscribeServer.c
│      │  MQTTUnsubscribeClient.c
│      │  MQTTUnsubscribeServer.c
│      │
│      └─include
│              MQTTConnect.h
│              MQTTFormat.h
│              MQTTPacket.h
│              MQTTPublish.h
│              MQTTSubscribe.h
│              MQTTUnsubscribe.h
│              StackTrace.h
│
└─user
        Makefile
        user_main.c

三. 程序烧写和启动

  1. ESP官方烧写工具下载 flash_download_tools,解压后直接可以双击运行。选择 ESP8266 DownloadTool
ESP8266环境搭建和部署MQTT测试代码_第5张图片
烧写工具配置

一共需要下载四个文件,都在RTOS项目的 bin 目录下

文件 地址
bin/eagle.flash.bin 0x00000
bin/eagle.irom0text.bin 0x20000
bin/esp_init_data_default.bin 0x3fc000
bin/blank.bin 0x3fe000

COM串口选择需要对应ESP8266插入电脑的串口号,波特率可以自由选择,不要超过串口芯片极限值就可以。

  1. 下载串口驱动程序开始烧写程序
    根据自己的串口芯片下载,目前使用的时CP2102的驱动芯片,可以下载 CP210x_Windows_Drivers,直接解压安装就可以,如果安装成功,插入USB之后不显示串口号,需要重新启动电脑。
ESP8266环境搭建和部署MQTT测试代码_第6张图片
ESP8266开发板

打开烧写软件,按照上述配置选择对应的串口,然后点击烧写软件上的 START 按钮就可以自动下载,等待下载完成,点击复位按键就可以启动程序。

如果确定配置都正确,点击 START 没有执行下载,可以按住ESP8266开发板的烧写按键不松开,然后再按一下复位按键。

  1. 若想查看串口调试信息和输出内容,需要下载 串口调试工具,在端口号一栏选择对应的串口号,波特率那一栏选择和程序中匹配的波特率,之后就可以打开串口查看输出。
ESP8266环境搭建和部署MQTT测试代码_第7张图片
串口调试工具

你可能感兴趣的:(ESP8266环境搭建和部署MQTT测试代码)