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