查看: 2354|回复: 2

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

[复制链接]

该用户从未签到

发表于 2019-1-15 14:57:51 | 显示全部楼层 |阅读模式
分享到:
一. 环境搭建

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

2.下载 ESP8266_RTOS_SDK 的开发包。

  • 复制 examples/project_template 到项目根目录,更名为 app,删除里面的 sample_lib 文件夹。
  • 把 driver_lib 和 extra_include 目录放到 examples 里,暂时项目不用。
  • 将 third_party/makefile 重命名为 makefile.bak,暂时项目不用。


1.png
RTOS原始目录结构
2.png
RTOS修改后目录结构

3.导入项目
  • eclipse中选择 File-->Import,选择 C/C++ 分支,选择 Existing Code as Makefile Project
  • 配置项目名称、RTOS工程所在目录和选择合适的交叉编译器

3.png

4.配置项目
打开 app 目录下 Makefile 文件,添加和配置代码
  1. # 在此处添加如下代码
  2. #EXTRA_CCFLAGS += -u
  3. parent_dir:=$(abspath $(shell pwd)/$(lastword $(MAKEFILE_LIST)))
  4. parent_dir:=$(shell dirname $(parent_dir))
  5. parent_dir:=$(shell dirname $(parent_dir))

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

  3. SUBDIRS=    \
  4.     user    \
  5. #去除 sample_lib

  6. ...

  7. COMPONENTS_eagle.app.v6 = \
  8.     user/libuser.a  \
  9. # 去除    sample_lib/libsample.a
复制代码

5.编译程序
右键目标项目-->Build Project,编译成功之后在 Console 中可以看到显示出对应的应用文件的下载地址。
4.png

二. 部署MQTT测试代码

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

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

  1. // 配置AP信息
  2. #define AP_SSID "ssid"
  3. #define AP_PASSWORD "password"

  4. ...

  5. void wifi_task(void *pvParameters)
  6. {
  7.     struct station_config sta_config;
  8.     struct ip_info ip_config;
  9.     bzero(&sta_config, sizeof(struct station_config));
  10.     // 配置AP信息
  11.     sprintf(sta_config.ssid, AP_SSID);
  12.     sprintf(sta_config.password, AP_PASSWORD);
  13.     wifi_station_set_config(&sta_config);
复制代码
  • 复制参考库中的 lib 目录到本项目的 app 中,在 app/lib 目录中新建 Makefile 文件并添加配置

  1. ifndef PDIR
  2. UP_EXTRACT_DIR = ..
  3. GEN_LIBS = libcomm.a
  4. COMPONENTS_libcomm = MQTTClient/libmqttclient.a \
  5.                      MQTTPacket/libmqttpacket.a
  6. endif


  7. INCLUDES := $(INCLUDES) -I $(PDIR)include
  8. INCLUDES += -I ./
  9. PDIR := ../$(PDIR)
  10. sinclude $(PDIR)Makefile
复制代码
  • 在 app/lib/MQTTClient 中新建 Makefile 文件并添加配置

  1. ifndef PDIR
  2. GEN_LIBS = libmqttclient.a
  3. endif

  4. INCLUDES := $(INCLUDES) -I $(PDIR)include
  5. INCLUDES += -I ./
  6. PDIR := ../$(PDIR)
  7. sinclude $(PDIR)Makefile
复制代码
  • 在 app/lib/MQTTPacket 中新建 Makefile 文件并添加配置

  1. ifndef PDIR
  2. GEN_LIBS = libmqttpacket.a
  3. endif

  4. INCLUDES := $(INCLUDES) -I $(PDIR)include
  5. INCLUDES += -I ./
  6. PDIR := ../$(PDIR)
  7. sinclude $(PDIR)Makefile
复制代码
测试项目中用到了串口UART,所以还要引入UART的驱动文件

  • 在 app 目录中新建 driver/include 文件夹,复制 examples/driver_lib/include/uart.h 到 app/driver/include,复制 examples/driver_lib/driver/uart.c 到 app/driver。
  • 在 app/driver 中新建 Makefile 文件并添加配置

  1. ifndef PDIR
  2. GEN_LIBS = libdriver.a
  3. endif

  4. INCLUDES := $(INCLUDES) -I $(PDIR)include
  5. INCLUDES += -I ./
  6. PDIR := ../$(PDIR)
  7. sinclude $(PDIR)Makefile
复制代码

  • 因为在项目新建了几个目录和文件,需要最后配置 app/Makefile

  1. # 添加子目录
  2. SUBDIRS=    \
  3.     user    \
  4.     driver  \
  5.     lib

  6. ...

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

  12. ...

  13. # 添加头文件路径
  14. INCLUDES := $(INCLUDES) -I $(PDIR)include
  15. INCLUDES += -I $(PDIR)/driver/include   \
  16.             -I $(PDIR)/lib/MQTTClient/include   \
  17.             -I $(PDIR)/lib/MQTTPacket/include
复制代码

最终配置好的整个项目的目录树
  1. │  gen_misc.bat
  2. │  gen_misc.sh
  3. │  Makefile
  4. │  readme.txt

  5. ├─driver
  6. │  │  Makefile
  7. │  │  uart.c
  8. │  │
  9. │  └─include
  10. │          uart.h

  11. ├─include
  12. │      user_config.h

  13. ├─lib
  14. │  │  Makefile
  15. │  │
  16. │  ├─MQTTClient
  17. │  │  │  Makefile
  18. │  │  │  MQTTClient.c
  19. │  │  │  MQTTESP8266.c
  20. │  │  │
  21. │  │  └─include
  22. │  │          MQTTClient.h
  23. │  │          MQTTESP8266.h
  24. │  │
  25. │  └─MQTTPacket
  26. │      │  Makefile
  27. │      │  MQTTConnectClient.c
  28. │      │  MQTTConnectServer.c
  29. │      │  MQTTDeserializePublish.c
  30. │      │  MQTTFormat.c
  31. │      │  MQTTPacket.c
  32. │      │  MQTTSerializePublish.c
  33. │      │  MQTTSubscribeClient.c
  34. │      │  MQTTSubscribeServer.c
  35. │      │  MQTTUnsubscribeClient.c
  36. │      │  MQTTUnsubscribeServer.c
  37. │      │
  38. │      └─include
  39. │              MQTTConnect.h
  40. │              MQTTFormat.h
  41. │              MQTTPacket.h
  42. │              MQTTPublish.h
  43. │              MQTTSubscribe.h
  44. │              MQTTUnsubscribe.h
  45. │              StackTrace.h

  46. └─user
  47.         Makefile
  48.         user_main.c

复制代码

三. 程序烧写和启动
  • ESP官方烧写工具下载 flash_download_tools,解压后直接可以双击运行。选择 ESP8266 DownloadTool

5.png
烧写工具配置

一共需要下载四个文件,都在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插入电脑的串口号,波特率可以自由选择,不要超过串口芯片极限值就可以。

2.下载串口驱动程序开始烧写程序
根据自己的串口芯片下载,目前使用的时CP2102的驱动芯片,可以下载 CP210x_Windows_Drivers,直接解压安装就可以,如果安装成功,插入USB之后不显示串口号,需要重新启动电脑。

6.png
ESP8266开发板

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

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

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


作者:Kake
來源:简书


回复

使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2019-1-30 14:39:11 | 显示全部楼层
    308.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2019-2-24 15:28:58 | 显示全部楼层
    初学者,谢谢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-18 10:57 , Processed in 0.140776 second(s), 23 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.