ESP8266環(huán)境搭建和部署MQTT測(cè)試代碼

ESP8266環(huán)境搭建和部署MQTT測(cè)試代碼

一. 環(huán)境搭建

  1. 安裝安信可提供的eclipse開發(fā)環(huán)境包抗蠢,參考如何安裝安信可一體化開發(fā)環(huán)境

  2. 下載 ESP8266_RTOS_SDK 的開發(fā)包。

    • 復(fù)制 examples/project_template 到項(xiàng)目根目錄皂贩,更名為 app罐寨,刪除里面的 sample_lib 文件夾。
    • driver_libextra_include 目錄放到 examples 里,暫時(shí)項(xiàng)目不用蜈抓。
    • third_party/makefile 重命名為 makefile.bak启绰,暫時(shí)項(xiàng)目不用。
RTOS原始目錄結(jié)構(gòu)
RTOS修改后目錄結(jié)構(gòu)
  1. 導(dǎo)入項(xiàng)目
    • eclipse中選擇 File-->Import沟使,選擇 C/C++ 分支委可,選擇 Existing Code as Makefile Project
    • 配置項(xiàng)目名稱、RTOS工程所在目錄和選擇合適的交叉編譯器
導(dǎo)入項(xiàng)目配置
  1. 配置項(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
  1. 編譯程序
    右鍵目標(biāo)項(xiàng)目-->Build Project燕少,編譯成功之后在 Console 中可以看到顯示出對(duì)應(yīng)的應(yīng)用文件的下載地址卡者。
編譯結(jié)果

二. 部署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.happ/driver/include官边,復(fù)制 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
  • 因?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)

  1. 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)滩援,波特率可以自由選擇栅隐,不要超過串口芯片極限值就可以。

  1. 下載串口驅(qū)動(dòng)程序開始燒寫程序
    根據(jù)自己的串口芯片下載玩徊,目前使用的時(shí)CP2102的驅(qū)動(dòng)芯片租悄,可以下載 CP210x_Windows_Drivers,直接解壓安裝就可以恩袱,如果安裝成功泣棋,插入U(xiǎn)SB之后不顯示串口號(hào),需要重新啟動(dòng)電腦畔塔。
ESP8266開發(fā)板

打開燒寫軟件潭辈,按照上述配置選擇對(duì)應(yīng)的串口鸯屿,然后點(diǎn)擊燒寫軟件上的 START 按鈕就可以自動(dòng)下載,等待下載完成把敢,點(diǎn)擊復(fù)位按鍵就可以啟動(dòng)程序寄摆。

如果確定配置都正確,點(diǎn)擊 START 沒有執(zhí)行下載修赞,可以按住ESP8266開發(fā)板的燒寫按鍵不松開婶恼,然后再按一下復(fù)位按鍵。

  1. 若想查看串口調(diào)試信息和輸出內(nèi)容柏副,需要下載 串口調(diào)試工具勾邦,在端口號(hào)一欄選擇對(duì)應(yīng)的串口號(hào),波特率那一欄選擇和程序中匹配的波特率割择,之后就可以打開串口查看輸出眷篇。
串口調(diào)試工具
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锨推,隨后出現(xiàn)的幾起案子铅歼,更是在濱河造成了極大的恐慌,老刑警劉巖换可,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厦幅,居然都是意外死亡沾鳄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門确憨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來译荞,“玉大人,你說我怎么就攤上這事休弃⊥碳撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵塔猾,是天一觀的道長(zhǎng)篙骡。 經(jīng)常有香客問我,道長(zhǎng)丈甸,這世上最難降的妖魔是什么糯俗? 我笑而不...
    開封第一講書人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮睦擂,結(jié)果婚禮上得湘,老公的妹妹穿的比我還像新娘。我一直安慰自己顿仇,他們只是感情好淘正,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開白布摆马。 她就那樣靜靜地躺著,像睡著了一般鸿吆。 火紅的嫁衣襯著肌膚如雪囤采。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,718評(píng)論 1 305
  • 那天伞剑,我揣著相機(jī)與錄音斑唬,去河邊找鬼。 笑死黎泣,一個(gè)胖子當(dāng)著我的面吹牛恕刘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抒倚,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼褐着,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了托呕?” 一聲冷哼從身側(cè)響起含蓉,我...
    開封第一講書人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎项郊,沒想到半個(gè)月后馅扣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡着降,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年差油,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片任洞。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蓄喇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出交掏,到底是詐尸還是另有隱情妆偏,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布盅弛,位于F島的核電站钱骂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏熊尉。R本人自食惡果不足惜罐柳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狰住。 院中可真熱鬧张吉,春花似錦、人聲如沸催植。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至伦忠,卻和暖如春省核,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背昆码。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工气忠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赋咽。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓旧噪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親脓匿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淘钟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容