ESP8266環(huán)境搭建和部署MQTT測(cè)試代碼
一. 環(huán)境搭建
安裝安信可提供的eclipse開發(fā)環(huán)境包抗蠢,參考如何安裝安信可一體化開發(fā)環(huán)境。
-
下載 ESP8266_RTOS_SDK 的開發(fā)包。
- 復(fù)制 examples/project_template 到項(xiàng)目根目錄皂贩,更名為 app罐寨,刪除里面的 sample_lib 文件夾。
- 把 driver_lib 和 extra_include 目錄放到 examples 里,暫時(shí)項(xiàng)目不用蜈抓。
- 將 third_party/makefile 重命名為 makefile.bak启绰,暫時(shí)項(xiàng)目不用。
- 導(dǎo)入項(xiàng)目
- eclipse中選擇 File-->Import沟使,選擇 C/C++ 分支委可,選擇 Existing Code as Makefile Project
- 配置項(xiàng)目名稱、RTOS工程所在目錄和選擇合適的交叉編譯器
- 配置項(xiàng)目
打開 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
# 因?yàn)殚_始我們刪除了 sample_lib 目錄着倾,所以我們要在去除多余的配置
# 當(dāng)我們項(xiàng)目需要更多子目錄的時(shí)候,我們還會(huì)在這里添加相應(yīng)的配置
SUBDIRS= \
user \
#去除 sample_lib
...
COMPONENTS_eagle.app.v6 = \
user/libuser.a \
# 去除 sample_lib/libsample.a
- 編譯程序
右鍵目標(biāo)項(xiàng)目-->Build Project燕少,編譯成功之后在 Console 中可以看到顯示出對(duì)應(yīng)的應(yīng)用文件的下載地址卡者。
二. 部署MQTT測(cè)試代碼
參考和使用了一個(gè)github上的庫 ESP-RTOS-MQTT,對(duì)他的目錄結(jié)構(gòu)和測(cè)試代碼做了一些修改客们,修改之后的整個(gè)項(xiàng)目可參考 esp8266-rtos-mqtt崇决,對(duì)修改的地方稍作介紹,仍然在上面配置好的工程中操作底挫。
- 復(fù)制參考庫中的 examples/echo_example/user/user_main.c 替換本項(xiàng)目中的 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);
- 復(fù)制參考庫中的 lib 目錄到本項(xiàng)目的 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
測(cè)試項(xiàng)目中用到了串口UART盈厘,所以還要引入U(xiǎn)ART的驅(qū)動(dòng)文件
在 app 目錄中新建 driver/include 文件夾,復(fù)制 examples/driver_lib/include/uart.h 到 app/driver/include官边,復(fù)制 examples/driver_lib/driver/uart.c 到 app/driver沸手。
在 app/driver 中新建 Makefile 文件并添加配置
ifndef PDIR
GEN_LIBS = libdriver.a
endif
INCLUDES := $(INCLUDES) -I $(PDIR)include
INCLUDES += -I ./
PDIR := ../$(PDIR)
sinclude $(PDIR)Makefile
- 因?yàn)樵陧?xiàng)目新建了幾個(gè)目錄和文件,需要最后配置 app/Makefile
# 添加子目錄
SUBDIRS= \
user \
driver \
lib
...
# 添加靜態(tài)鏈接庫
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
最終配置好的整個(gè)項(xiàng)目的目錄樹
│ 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
三. 程序燒寫和啟動(dòng)
- ESP官方燒寫工具下載 flash_download_tools拒逮,解壓后直接可以雙擊運(yùn)行罐氨。選擇 ESP8266 DownloadTool
一共需要下載四個(gè)文件,都在RTOS項(xiàng)目的 bin 目錄下
文件 | 地址 |
---|---|
bin/eagle.flash.bin | 0x00000 |
bin/eagle.irom0text.bin | 0x20000 |
bin/esp_init_data_default.bin | 0x3fc000 |
bin/blank.bin | 0x3fe000 |
COM串口選擇需要對(duì)應(yīng)ESP8266插入電腦的串口號(hào)滩援,波特率可以自由選擇栅隐,不要超過串口芯片極限值就可以。
- 下載串口驅(qū)動(dòng)程序開始燒寫程序
根據(jù)自己的串口芯片下載玩徊,目前使用的時(shí)CP2102的驅(qū)動(dòng)芯片租悄,可以下載 CP210x_Windows_Drivers,直接解壓安裝就可以恩袱,如果安裝成功泣棋,插入U(xiǎn)SB之后不顯示串口號(hào),需要重新啟動(dòng)電腦畔塔。
打開燒寫軟件潭辈,按照上述配置選擇對(duì)應(yīng)的串口鸯屿,然后點(diǎn)擊燒寫軟件上的 START 按鈕就可以自動(dòng)下載,等待下載完成把敢,點(diǎn)擊復(fù)位按鍵就可以啟動(dòng)程序寄摆。
如果確定配置都正確,點(diǎn)擊 START 沒有執(zhí)行下載修赞,可以按住ESP8266開發(fā)板的燒寫按鍵不松開婶恼,然后再按一下復(fù)位按鍵。
- 若想查看串口調(diào)試信息和輸出內(nèi)容柏副,需要下載 串口調(diào)試工具勾邦,在端口號(hào)一欄選擇對(duì)應(yīng)的串口號(hào),波特率那一欄選擇和程序中匹配的波特率割择,之后就可以打開串口查看輸出眷篇。