前言
這段時(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)然了,也可以查找官方的文檔其他方式的安裝,下面直接給出傳送門.
安裝完成之后,我們稍微驗(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.c → main.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)原因.
- 雖然安裝了Python3,但是 python命令依然是 python2.5的版本, python版本的問題,這個(gè)問題的驗(yàn)證很簡(jiǎn)單,只需要在 Clion的終端中輸入如下命令查看python版本即可.
python --version
- 系統(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),騷棟感謝了...