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,暂时项目不用。
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. 若想查看串口调试信息和输出内容,需要下载 串口调试工具,在端口号一栏选择对应的串口号,波特率那一栏选择和程序中匹配的波特率,之后就可以打开串口查看输出。
串口调试工具
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容