ESP8266開發(fā)環(huán)境搭建, 尋尋覓覓, 依然是 Mac + Clion + PlatformIO


前言


這段時(shí)間有空就在寫智能家居的項(xiàng)目,這一篇主要是針對(duì)Mac OS系統(tǒng)下的Esp8266環(huán)境搭建重新搞一下.

剛開始開發(fā)硬件的時(shí)候,我是基于 安信可官網(wǎng) 的Eclipse C++進(jìn)行開發(fā),優(yōu)點(diǎn)就是傻瓜式擼代碼,其實(shí)也不應(yīng)該說擼代碼,就是可能下載下來(lái)Demo,然后改改IP 改改端口什么的就可以完美運(yùn)行了.雖然看是很簡(jiǎn)單,但是不太利于后期擴(kuò)展,主要是Eclipse這個(gè)IDE都是一個(gè)老古董了(雖然我承認(rèn)現(xiàn)在還是有人在用),但是說真的用起來(lái)是十分的難受....而且代碼集成度太高,對(duì)于新手來(lái)說基本上代碼就是一個(gè)黑盒,你不用懂實(shí)現(xiàn),只管輸入即可獲得輸出,對(duì)于后期的擴(kuò)展都會(huì)造成一定的困難.

為了在Mac上開發(fā)Esp8266或者Ardunio等板子.雖然也發(fā)過 基于MacOS的ESP8266 NodeMCU開發(fā)環(huán)境搭建 這種基于MacOS 和 VScode 進(jìn)行開發(fā)的,什么交叉編譯環(huán)境啊,什么燒錄工具啊,反正搭建起來(lái)還不如Windows舒服呢.

然后,無(wú)意間看到了PlatformIO這個(gè)vscode插件.功能強(qiáng)大的一匹,令我虎(shen)軀(jing)一(chou)震(chu).PlatformIO是一個(gè)支持多種硬件開發(fā)的嵌入式平臺(tái).有著比較完善的三方庫(kù)管理.上手簡(jiǎn)單,不需要太多的環(huán)境搭建,對(duì)新手是非常的友好.

PlatformIO 本來(lái)是vscode的一個(gè)插件,安裝起來(lái)非常方便,但是我為什么要選擇是用Clion呢?主要是出于代碼提醒的考慮,vscode的C++/C代碼的提醒有時(shí)有點(diǎn)抽風(fēng)(沒驗(yàn)證過,瞎說的),而且有時(shí)候根本就不提醒,導(dǎo)致作為小白的我,很多函數(shù)名或者類需要手動(dòng)去查找.非常的不方便,所以我就直接選擇 Mac + Clion + PlatformIO 這一套組合拳來(lái)完成開發(fā)工作了.


前期準(zhǔn)備


對(duì)于CH340的作用和驅(qū)動(dòng)安裝不在過多敘述, 沒有安裝驅(qū)動(dòng)可能導(dǎo)致Mac不能識(shí)別開發(fā)板.具體查看 基于MacOS的ESP8266 NodeMCU開發(fā)環(huán)境搭建.

首先需要下載Clion. 破解版的話,去找找度娘就可以查到.和Idea的破解過程是一樣的.稍微推薦一個(gè)吧.

Clion破解版?zhèn)魉烷T 密碼:sb9d


  • Python3的安裝

搭建 PlatformIO 的環(huán)境,首先是Python3的搭建,Mac系統(tǒng)基本上起始都是Python2.7,但是 PlatformIO 內(nèi)置的 esptool 燒錄工具最低版本是 Python3,所以需要先更新下Python.

安裝過程,這里就不過度敘述了,但是一定要注意去配置環(huán)境變量.把python 這個(gè)命令默認(rèn)為是啟動(dòng) python3,而不是 python2.7. 由于我是重新下載的 python3,并沒有直接覆蓋 python2.7. 所以我在 ~/.bash_profile 文件中添加了如下三行.具體命令如下所示.

vim ~/.bash_profile

i 開啟編輯模式,在最后添加下面三行. 按ESC 退出編輯. 然后 :wq 回車保存文件即可.

#Python 
# ${PATH}:/usr/local/Cellar/python@3.8/3.8.5/bin 這個(gè)路徑根據(jù)自己實(shí)際下載位置確定.
export PATH=${PATH}:/usr/local/Cellar/python@3.8/3.8.5/bin
alias python="/usr/local/Cellar/python@3.8/3.8.5/bin/python3"
alias pip="/usr/local/Cellar/python@3.8/3.8.5/bin/pip3"

命令太多,我是小白看不懂?OK,OK,直接下面一條命令打開文件手動(dòng)添加上面三行即可.

open ~/.bash_profile

接下來(lái),我們使用下面命令使我們的配置生效.

source ~/.bash_profile

驗(yàn)證我們是否已經(jīng)搭建好 python3 環(huán)境了.輸入如下代碼.

python --version

我安裝的是 python3.8.5版本,所以打印的結(jié)果如下所示.

Python 3.8.5


  • PlatformIO Core的安裝

接下來(lái)我們就安裝 PlatformIO 的環(huán)境了,我推薦使用Homebrew的形式,勝在簡(jiǎn)單.

brew install platformio

當(dāng)然了,也可以查找官方的文檔其他方式的安裝,下面直接給出傳送門.

PlatformIO 安裝傳送門

安裝完成之后,我們稍微驗(yàn)證一下是否安裝成功.輸入如下的終端命令查看一下.

platformio --version

打印如下證明安裝成功.

PlatformIO, version 4.3.4


  • PlatformIO插件的安裝

上面我們已經(jīng)配置好了環(huán)境,接下來(lái),我們安裝一下PlatformIO的Clion插件.

在啟動(dòng)界面找到 插件選項(xiàng)(Configure → Plugins) 并且打開, 如下所示.

在 Marketplace 中 搜索 PlatformIO,然后 Install, 完成之后點(diǎn)擊OK, 重啟Clion即可完成.

如上幾步即可完成整體軟件環(huán)境的搭建.


Helloworld


總是要寫一個(gè) Helloworld 表示我們來(lái)過.

首先我們創(chuàng)建一個(gè)ESP8266的開發(fā)項(xiàng)目,點(diǎn)擊 New Project 創(chuàng)建項(xiàng)目. 由于我使用的是ESP8266 12E NodeMCU開發(fā)板,所以我們?nèi)缦逻x擇,如果想開發(fā)Arduino就選擇對(duì)應(yīng)的型號(hào)即可.如果你的列表沒法加載說明你前面的環(huán)境沒有配置好,需要回過頭去檢查一下.

第一次可能需要等幾分鐘構(gòu)建項(xiàng)目.構(gòu)建完成之后,我們先src目錄下的 main.cmain.cpp. 然后右鍵 Reload CMake Project, 重構(gòu)下CMake項(xiàng)目.(不重構(gòu)可能會(huì)出現(xiàn)導(dǎo)入類錯(cuò)誤爆紅等等)

CV戰(zhàn)士搞起來(lái),復(fù)制如下代碼到main文件中.

#include <Arduino.h>

void setup() {
    Serial.begin(9600);
    delay(500);
}

void loop() {
    delay(500);
    Serial.println("hello, world");
}


燒錄程序


代碼寫好了,我們需要把程序燒錄到我們的板子中.這就比較簡(jiǎn)單了.

首先我們需要先連接上我們的ESP8266開發(fā)板.

我們需要如圖選擇 PlatformIO Upload 選項(xiàng),然后點(diǎn)擊運(yùn)行即可編譯,自動(dòng)尋找串口上傳燒錄.

編譯過程中可能會(huì)報(bào)錯(cuò).如果上述環(huán)境都沒有問題的話,那么可能是如下幾點(diǎn)原因.

  1. 雖然安裝了Python3,但是 python命令依然是 python2.5的版本, python版本的問題,這個(gè)問題的驗(yàn)證很簡(jiǎn)單,只需要在 Clion的終端中輸入如下命令查看python版本即可.
python --version
  1. 系統(tǒng)自動(dòng)識(shí)別的串口不對(duì).像我的有一塊板子,雖然有兩個(gè)串口,但只有一個(gè)是好用的.終端命名 platformio device list 即可羅列所有的端口了.

/dev/cu.wchusbserial14740 是可用的串口.

所以我們需要手動(dòng)指定下上傳的串口.我們打開項(xiàng)目中的 platformio.ini 文件,加入如下信息即可.

upload_port = /dev/cu.wchusbserial14740

當(dāng)然了,platformio.ini的配置不僅僅只有這么多.后面我們稍微介紹下platformio.ini的配置問題.


PlatformIO 常用命令


PlatformIO 的命令可以去官網(wǎng)查找,這里說一下我比較常用的幾個(gè)命令.

查看設(shè)備列表

platformio device list

串口工具(我一般使用SecureCRT做串口調(diào)試)

platformio device monitor

庫(kù)文件搜索

platformio lib search xxxx

庫(kù)文件導(dǎo)入

platformio lib install

庫(kù)文件卸載

platformio lib uninstall

庫(kù)文件列表

platformio lib list


platformio.ini 配置


關(guān)于platformio.ini 配置有很多,大家可以自行去看官方文檔.

官方文檔

我現(xiàn)在用到的就是兩個(gè)一個(gè)是上傳串口的配置.

upload_port = /dev/cu.wchusbserial14740

另外一個(gè)就是三方庫(kù)管理的配置.

lib_deps =
  PubSubClient
  ArduinoJson

添加完成之后,需要如下操作重構(gòu)下項(xiàng)目.


結(jié)語(yǔ)


寫到這里就結(jié)束了,如果有任何問題,歡迎大家在評(píng)論區(qū)指導(dǎo)批評(píng),騷棟感謝了...


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惩嘉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子踢故,更是在濱河造成了極大的恐慌文黎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殿较,死亡現(xiàn)場(chǎng)離奇詭異耸峭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淋纲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門劳闹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說我怎么就攤上這事本涕∫堤” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵菩颖,是天一觀的道長(zhǎng)样漆。 經(jīng)常有香客問我,道長(zhǎng)晦闰,這世上最難降的妖魔是什么放祟? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮呻右,結(jié)果婚禮上跪妥,老公的妹妹穿的比我還像新娘。我一直安慰自己窿冯,他們只是感情好骗奖,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著醒串,像睡著了一般执桌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芜赌,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天仰挣,我揣著相機(jī)與錄音,去河邊找鬼缠沈。 笑死膘壶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洲愤。 我是一名探鬼主播颓芭,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柬赐!你這毒婦竟也來(lái)了亡问?” 一聲冷哼從身側(cè)響起漩符,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤利诺,失蹤者是張志新(化名)和其女友劉穎稳其,沒想到半個(gè)月后留攒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡陶耍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年赏陵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屑柔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沉帮。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡锈死,死狀恐怖贫堰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馅精,我是刑警寧澤严嗜,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布粱檀,位于F島的核電站洲敢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏茄蚯。R本人自食惡果不足惜压彭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渗常。 院中可真熱鬧壮不,春花似錦、人聲如沸皱碘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)癌椿。三九已至健蕊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踢俄,已是汗流浹背缩功。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留都办,地道東北人嫡锌。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像琳钉,于是被迫代替她去往敵國(guó)和親势木。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345