美文网首页ESP8266物联网loT从业者
ESP8266环境搭建和部署MQTT测试代码

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

作者: Kake | 来源:发表于2017-10-24 11:27 被阅读335次

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

    一. 环境搭建

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

    2. 下载 ESP8266_RTOS_SDK 的开发包。

      • 复制 examples/project_template 到项目根目录,更名为 app,删除里面的 sample_lib 文件夹。
      • driver_libextra_include 目录放到 examples 里,暂时项目不用。
      • third_party/makefile 重命名为 makefile.bak,暂时项目不用。
    RTOS原始目录结构 RTOS修改后目录结构
    1. 导入项目
      • eclipse中选择 File-->Import,选择 C/C++ 分支,选择 Existing Code as Makefile Project
      • 配置项目名称、RTOS工程所在目录和选择合适的交叉编译器
    导入项目配置
    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 中可以看到显示出对应的应用文件的下载地址。
    编译结果

    二. 部署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
    烧写工具配置

    一共需要下载四个文件,都在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开发板

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

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

    1. 若想查看串口调试信息和输出内容,需要下载 串口调试工具,在端口号一栏选择对应的串口号,波特率那一栏选择和程序中匹配的波特率,之后就可以打开串口查看输出。
    串口调试工具

    相关文章

      网友评论

        本文标题:ESP8266环境搭建和部署MQTT测试代码

        本文链接:https://www.haomeiwen.com/subject/sfxzuxtx.html