老宇哥帶你玩轉ESP32:01入門(mén)介紹

接觸物聯(lián)網(wǎng)差不多10年了。
先跟大家聊聊,老宇哥11年進(jìn)入大學(xué),大一就在實(shí)驗室開(kāi)始了電子研發(fā),記得那時(shí)候師兄介紹我買(mǎi)了一塊郭天祥老師的51開(kāi)發(fā)板,還有配套的一本書(shū),雖然從小非常喜歡電子,經(jīng)常折騰,有一些硬件相關(guān)知識,但是軟件可是從來(lái)沒(méi)接觸過(guò),看到第一行代碼就懵逼了,這是啥?
后來(lái)問(wèn)隔壁師兄,師兄很耐心,跟我簡(jiǎn)單講解了一下,然后讓我看一本C語(yǔ)言的書(shū),說(shuō)先簡(jiǎn)單看一看,不用看的很深,邊看邊學(xué),就這樣,在無(wú)數次的逃課以及晚上挑燈奮斗之后,我成功點(diǎn)亮第一個(gè)燈了,那時(shí)候的興奮無(wú)以言表。郭老師的那本神作通俗易懂,我也是激動(dòng)的做一個(gè)個(gè)的小實(shí)驗,邊學(xué)邊補充,遇到不懂的先查資料,實(shí)在不會(huì )的,就跟實(shí)驗室的伙伴們討論,那時(shí)候的求知欲非常強烈,實(shí)驗室也是經(jīng)常呆到晚上10點(diǎn)之后,慢慢的小小的入門(mén)了。
后來(lái)大二參加比賽,第一個(gè)應該是合泰杯吧,比賽要求必須要用合泰的芯片開(kāi)發(fā),當時(shí)拿到幾個(gè)合泰的開(kāi)發(fā)板,開(kāi)始也是不知所措,我只用過(guò)51呀,這芯片怎么開(kāi)發(fā)?后來(lái)也是跟伙伴們討論交流,安裝對應的開(kāi)發(fā)環(huán)境,驅動(dòng),跑第一個(gè)點(diǎn)燈例程,簡(jiǎn)單熟悉串口,定時(shí)器等外設,再添加自己的邏輯。

當時(shí)做了一個(gè)WiFi智能排插,也是我做的第一個(gè)智能家居類(lèi)小制作,當時(shí)的條件并不像現在這么高級,我自己做硬件以及嵌入式軟件這邊,找同學(xué)介紹了一個(gè)計算機學(xué)院的同學(xué),做APP的開(kāi)發(fā),還有一個(gè)用java簡(jiǎn)單做了一個(gè)小服務(wù)器,用于數據轉發(fā),然后開(kāi)始惡補網(wǎng)絡(luò )方便的一些知識,什么路由器,TCP,UDP,WiFi模塊,端口映射、內網(wǎng)穿透什么的,用有人的WiFi模塊,花生殼做的內網(wǎng)穿透,也是實(shí)現了簡(jiǎn)單的遠程以及局域網(wǎng)控制,不過(guò)最后只拿了一個(gè)三等獎。
從這開(kāi)始,基本上都很關(guān)注物聯(lián)網(wǎng)行業(yè),到現在從事做家電相關(guān)產(chǎn)品,一直都是圍繞物聯(lián)網(wǎng)相關(guān)在做。
關(guān)于做產(chǎn)品或者是小制作,從方案角度,一般有以下幾種:
用一些開(kāi)源硬件平臺,類(lèi)似Arduino,樹(shù)莓派等,網(wǎng)上學(xué)習資料,各種庫,開(kāi)源項目非常多,簡(jiǎn)單易懂,但是靈活性、效率沒(méi)那么高,創(chuàng )客們用的多;
用51,STM8,MSP430,STM32等單片機,最接地氣的方式,可以深入控制到寄存器,MCU品牌,資料也是非常多,原子,野火等開(kāi)發(fā)板都非常不錯,簡(jiǎn)單點(diǎn)的裸機開(kāi)發(fā)即可,結合一些嵌入式的實(shí)時(shí)操作系統,FreeRTOS、UCOS、RTT等,可以做一些復雜點(diǎn)的項目;
用Linux或者FPGA開(kāi)發(fā),有一些要求高的項目,單片機等滿(mǎn)足不了,例如做一些高級的顯示,工控板,復雜的應用等,門(mén)檻比較高,韋東山,原子,野火,朱友鵬老師等都有出了一些非常好的教程,真正深入進(jìn)去,才能體會(huì )到Linux的博大精深。

老宇哥打算寫(xiě)一些基礎的文章,跟大家一起做一些好玩有趣的項目,ESP8266,ESP32等樂(lè )鑫推出的芯片深受?chē)鴥韧鈵?ài)好者的喜歡,業(yè)內人士應該沒(méi)多少人沒(méi)聽(tīng)過(guò)ESP8266,我們本次選用ESP32系列的模塊進(jìn)行開(kāi)發(fā),以最簡(jiǎn)單的方式給大家展示。
關(guān)于ESP32的開(kāi)發(fā),有幾種開(kāi)發(fā)方式:
Arduino方式開(kāi)發(fā),得益于簡(jiǎn)單易上手的體驗,Arduino無(wú)疑成為最成功的開(kāi)源硬件平臺之一,結合眾多的開(kāi)源庫,可玩性非常非常高;
Espressif IDF,這是樂(lè )鑫官方的原生開(kāi)發(fā)方式,設置工具鏈,自己安裝CMake Ninja編譯構建工具,獲取ESP-IDF軟件開(kāi)發(fā)框架,運行工具鏈腳本,Windows,Linux,macOS下均可以開(kāi)發(fā),新手配置略顯復雜,但代碼效率最高;
在VSCode下添加ESP-IDF插件,跟第二種一樣,但可以一鍵配置好環(huán)境,編譯工具什么的都會(huì )自動(dòng)安裝好,體驗還是不錯的,產(chǎn)品級別的ESP32推薦此方式開(kāi)發(fā);
microPython方式開(kāi)發(fā),類(lèi)似Arduino的開(kāi)發(fā)方式,大部分語(yǔ)法都能跟Python兼容;
AT命令開(kāi)發(fā)方式。
這里我們選擇用Arduino的方式開(kāi)發(fā)(后續會(huì )介紹VSCode下添加ESP-IDF插件的開(kāi)發(fā)),Arduino core for the ESP32是樂(lè )鑫官方主導開(kāi)發(fā)維護的,看到這里可能有部分同學(xué)要批我,為啥還用Arduino這么“l(fā)ow”的開(kāi)發(fā)方式,有一些骨子里不太看得起Arduino,其實(shí)Arduino這些年發(fā)展非常好,效率雖然比傳統開(kāi)發(fā)可能會(huì )慢一丟丟,但是在這么強的芯片性能下基本上可以忽略了,還有一些說(shuō)底層屏蔽了太多的東西,看不到實(shí)際的寄存器操作,其實(shí)用官方SDK開(kāi)發(fā)也不是一樣,都是在調庫,當我們想了解實(shí)際怎么控制的,同樣的可以打開(kāi)庫,去看庫是怎么實(shí)現的。最最重點(diǎn)的一點(diǎn),Arduino有很多很多優(yōu)秀的庫,非常方便我們做一些小制作。
接下來(lái)進(jìn)入正式的開(kāi)發(fā),完全沒(méi)Arduino基礎的,先自行學(xué)習一下。
1、ESP32介紹ESP32 芯片是由樂(lè )鑫公司繼 ESP8266 芯片后推出的又一款集成 WiFi/BLE 功能的微控制器。性能比 ESP8266 更加強大,ESP32 芯片或模組具有下列特點(diǎn):

功能框圖:

引腳圖,初期開(kāi)發(fā)我們就用ESP32-DevKit開(kāi)發(fā)板,便宜好用。

Arduino軟件安裝,下載Arduino IDE并安裝,當然也可以用其它編輯器,VSCode + PlatformIO IDE插件等方式,這個(gè)后續介紹。https://www.arduino.cc/en/software
Arduino IDE中添加對應開(kāi)發(fā)板,在文件->首選項->附加開(kāi)發(fā)板管理****中,添加ESP32的管理****:https://dl.espressif.com/dl/package_esp32_index.json

添加開(kāi)發(fā)板,在工具->開(kāi)發(fā)板->開(kāi)發(fā)板管理中,搜索esp32,如下圖所示,安裝Arduino core for esp32,過(guò)程可能比較慢,也可能需要科學(xué)上網(wǎng)才能安裝好

然后選擇中對應的開(kāi)發(fā)板,我們可以看到這里有很多不同的ESP32開(kāi)發(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)單,默認已經(jīng)引用了ESP32的頭文件,通過(guò)Serial.begin(115200);初始化串口波特率之后,就可以通過(guò)Serial.println();打印輸出了。
選中對應串口并點(diǎn)擊編譯下載

通過(guò)串口觀(guān)察實(shí)際效果

今天我們先介紹到這里,先有個(gè)大概的感覺(jué),后面我們會(huì )一一介紹ESP32的外設,然后分享很多好玩有趣的物聯(lián)網(wǎng)項目,敬請期待!
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。