老宇哥帶你玩轉(zhuǎn)ESP32:01入門介紹
接觸物聯(lián)網(wǎng)差不多10年了。
先跟大家聊聊,老宇哥11年進(jìn)入大學(xué),大一就在實(shí)驗(yàn)室開始了電子研發(fā),記得那時(shí)候師兄介紹我買了一塊郭天祥老師的51開發(fā)板,還有配套的一本書,雖然從小非常喜歡電子,經(jīng)常折騰,有一些硬件相關(guān)知識(shí),但是軟件可是從來沒接觸過,看到第一行代碼就懵逼了,這是啥?
后來問隔壁師兄,師兄很耐心,跟我簡(jiǎn)單講解了一下,然后讓我看一本C語言的書,說先簡(jiǎn)單看一看,不用看的很深,邊看邊學(xué),就這樣,在無數(shù)次的逃課以及晚上挑燈奮斗之后,我成功點(diǎn)亮第一個(gè)燈了,那時(shí)候的興奮無以言表。郭老師的那本神作通俗易懂,我也是激動(dòng)的做一個(gè)個(gè)的小實(shí)驗(yàn),邊學(xué)邊補(bǔ)充,遇到不懂的先查資料,實(shí)在不會(huì)的,就跟實(shí)驗(yàn)室的伙伴們討論,那時(shí)候的求知欲非常強(qiáng)烈,實(shí)驗(yàn)室也是經(jīng)常呆到晚上10點(diǎn)之后,慢慢的小小的入門了。
后來大二參加比賽,第一個(gè)應(yīng)該是合泰杯吧,比賽要求必須要用合泰的芯片開發(fā),當(dāng)時(shí)拿到幾個(gè)合泰的開發(fā)板,開始也是不知所措,我只用過51呀,這芯片怎么開發(fā)?后來也是跟伙伴們討論交流,安裝對(duì)應(yīng)的開發(fā)環(huán)境,驅(qū)動(dòng),跑第一個(gè)點(diǎn)燈例程,簡(jiǎn)單熟悉串口,定時(shí)器等外設(shè),再添加自己的邏輯。
當(dāng)時(shí)做了一個(gè)WiFi智能排插,也是我做的第一個(gè)智能家居類小制作,當(dāng)時(shí)的條件并不像現(xiàn)在這么高級(jí),我自己做硬件以及嵌入式軟件這邊,找同學(xué)介紹了一個(gè)計(jì)算機(jī)學(xué)院的同學(xué),做APP的開發(fā),還有一個(gè)用java簡(jiǎn)單做了一個(gè)小服務(wù)器,用于數(shù)據(jù)轉(zhuǎn)發(fā),然后開始惡補(bǔ)網(wǎng)絡(luò)方便的一些知識(shí),什么路由器,TCP,UDP,WiFi模塊,端口映射、內(nèi)網(wǎng)穿透什么的,用有人的WiFi模塊,花生殼做的內(nèi)網(wǎng)穿透,也是實(shí)現(xiàn)了簡(jiǎn)單的遠(yuǎn)程以及局域網(wǎng)控制,不過最后只拿了一個(gè)三等獎(jiǎng)。
從這開始,基本上都很關(guān)注物聯(lián)網(wǎng)行業(yè),到現(xiàn)在從事做家電相關(guān)產(chǎn)品,一直都是圍繞物聯(lián)網(wǎng)相關(guān)在做。
關(guān)于做產(chǎn)品或者是小制作,從方案角度,一般有以下幾種:
用一些開源硬件平臺(tái),類似Arduino,樹莓派等,網(wǎng)上學(xué)習(xí)資料,各種庫,開源項(xiàng)目非常多,簡(jiǎn)單易懂,但是靈活性、效率沒那么高,創(chuàng)客們用的多;
用51,STM8,MSP430,STM32等單片機(jī),最接地氣的方式,可以深入控制到寄存器,MCU品牌,資料也是非常多,原子,野火等開發(fā)板都非常不錯(cuò),簡(jiǎn)單點(diǎn)的裸機(jī)開發(fā)即可,結(jié)合一些嵌入式的實(shí)時(shí)操作系統(tǒng),F(xiàn)reeRTOS、UCOS、RTT等,可以做一些復(fù)雜點(diǎn)的項(xiàng)目;
用Linux或者FPGA開發(fā),有一些要求高的項(xiàng)目,單片機(jī)等滿足不了,例如做一些高級(jí)的顯示,工控板,復(fù)雜的應(yīng)用等,門檻比較高,韋東山,原子,野火,朱友鵬老師等都有出了一些非常好的教程,真正深入進(jìn)去,才能體會(huì)到Linux的博大精深。
老宇哥打算寫一些基礎(chǔ)的文章,跟大家一起做一些好玩有趣的項(xiàng)目,ESP8266,ESP32等樂鑫推出的芯片深受國(guó)內(nèi)外愛好者的喜歡,業(yè)內(nèi)人士應(yīng)該沒多少人沒聽過ESP8266,我們本次選用ESP32系列的模塊進(jìn)行開發(fā),以最簡(jiǎn)單的方式給大家展示。
關(guān)于ESP32的開發(fā),有幾種開發(fā)方式:
Arduino方式開發(fā),得益于簡(jiǎn)單易上手的體驗(yàn),Arduino無疑成為最成功的開源硬件平臺(tái)之一,結(jié)合眾多的開源庫,可玩性非常非常高;
Espressif IDF,這是樂鑫官方的原生開發(fā)方式,設(shè)置工具鏈,自己安裝CMake Ninja編譯構(gòu)建工具,獲取ESP-IDF軟件開發(fā)框架,運(yùn)行工具鏈腳本,Windows,Linux,macOS下均可以開發(fā),新手配置略顯復(fù)雜,但代碼效率最高;
在VSCode下添加ESP-IDF插件,跟第二種一樣,但可以一鍵配置好環(huán)境,編譯工具什么的都會(huì)自動(dòng)安裝好,體驗(yàn)還是不錯(cuò)的,產(chǎn)品級(jí)別的ESP32推薦此方式開發(fā);
microPython方式開發(fā),類似Arduino的開發(fā)方式,大部分語法都能跟Python兼容;
AT命令開發(fā)方式。
這里我們選擇用Arduino的方式開發(fā)(后續(xù)會(huì)介紹VSCode下添加ESP-IDF插件的開發(fā)),Arduino core for the ESP32是樂鑫官方主導(dǎo)開發(fā)維護(hù)的,看到這里可能有部分同學(xué)要批我,為啥還用Arduino這么“l(fā)ow”的開發(fā)方式,有一些骨子里不太看得起Arduino,其實(shí)Arduino這些年發(fā)展非常好,效率雖然比傳統(tǒng)開發(fā)可能會(huì)慢一丟丟,但是在這么強(qiáng)的芯片性能下基本上可以忽略了,還有一些說底層屏蔽了太多的東西,看不到實(shí)際的寄存器操作,其實(shí)用官方SDK開發(fā)也不是一樣,都是在調(diào)庫,當(dāng)我們想了解實(shí)際怎么控制的,同樣的可以打開庫,去看庫是怎么實(shí)現(xiàn)的。最最重點(diǎn)的一點(diǎn),Arduino有很多很多優(yōu)秀的庫,非常方便我們做一些小制作。
接下來進(jìn)入正式的開發(fā),完全沒Arduino基礎(chǔ)的,先自行學(xué)習(xí)一下。
1、ESP32介紹ESP32 芯片是由樂鑫公司繼 ESP8266 芯片后推出的又一款集成 WiFi/BLE 功能的微控制器。性能比 ESP8266 更加強(qiáng)大,ESP32 芯片或模組具有下列特點(diǎn):
功能框圖:
引腳圖,初期開發(fā)我們就用ESP32-DevKit開發(fā)板,便宜好用。
Arduino軟件安裝,下載Arduino IDE并安裝,當(dāng)然也可以用其它編輯器,VSCode + PlatformIO IDE插件等方式,這個(gè)后續(xù)介紹。https://www.arduino.cc/en/software
Arduino IDE中添加對(duì)應(yīng)開發(fā)板,在文件->首選項(xiàng)->附加開發(fā)板管理****中,添加ESP32的管理****:https://dl.espressif.com/dl/package_esp32_index.json
添加開發(fā)板,在工具->開發(fā)板->開發(fā)板管理中,搜索esp32,如下圖所示,安裝Arduino core for esp32,過程可能比較慢,也可能需要科學(xué)上網(wǎng)才能安裝好
然后選擇中對(duì)應(yīng)的開發(fā)板,我們可以看到這里有很多不同的ESP32開發(fā)板,這里選擇ESP32 Dev Module就可以了
void setup() { Serial.begin(115200); Serial.println(""); }void loop() { Serial.println("Hello World!"); Serial.println("This is my first esp32 code!"); delay(1000); }
非常非常簡(jiǎn)單,默認(rèn)已經(jīng)引用了ESP32的頭文件,通過Serial.begin(115200);初始化串口波特率之后,就可以通過Serial.println();打印輸出了。
選中對(duì)應(yīng)串口并點(diǎn)擊編譯下載
通過串口觀察實(shí)際效果
今天我們先介紹到這里,先有個(gè)大概的感覺,后面我們會(huì)一一介紹ESP32的外設(shè),然后分享很多好玩有趣的物聯(lián)網(wǎng)項(xiàng)目,敬請(qǐng)期待!
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。