寫在最前面:本文僅僅只是ESP32的入門指南,對官網以及其他不負責任的博主文章的勘誤。
搞笑的是,我後來發現這樣焊接出來的ESP32的模塊不是很穩固,尤其是接線進行燒錄那裏,所以後面換用了ESP8266開發板,用一句流行的話表達我的心情“真香!”
一、什麼是ESP-WROOM-32模組
ESP-WROOM-32(ESP32)是樂鑫最新發布的新一代 WiFi & 藍牙 雙模雙核無線通信芯片。芯片集成藍牙4.2和WiFi HT40技術爲一身,擁有高性能Tensilica LX6 雙核處理器,支持超低功耗待機,是移動設備、可穿戴電子產品和物聯網應用的最佳拍檔。而且官方對該模組軟硬件進行了開源,原理圖與PCB佈局均可以免費下載。是我們開發物聯網設備時候的良好選擇。關於此芯片的詳細介紹,可以參考官網。官網開源資料也很豐富,本指南也是參考着官網資料纔開始進行的。
這裏插一句嘴,樂鑫官網的資料十分給力,包括github上面的源碼也很多,超級棒。ESP32的教程可以參考txgcwm的博客,個人認爲很有效果,而ESP8266的教程可以參考半顆心臟的博客。
二、我爲什麼要買ESP-WROOM-32模組
首先是爲了開發和學習XDDDDDD以及任何不可描述的原因。其次就是價格啦,我們打開某寶。看看模組的價格:
再看看官網給的開發板的價格:
:(快遞費都夠一個模組的價格了。所以還是選擇模組划算一點。但是!!!!這個模組就是個裸片,要啥啥沒有,如果想要豐富而且完整的功能,需要自己焊電路,而且要自己焊出串口來。所以總結一下就是:開發板開發方便,門檻低上手快,功能豐富,但是價格較高;模組門檻高,需要自己焊接外圍電路,需要一些硬件開發經驗,但是價格低。如果是想鼓搗鼓搗玩一玩,或者是爲了開發硬件,推薦使用模組,這樣對於這個模組的細節會更加了解,但是若是爲了軟件開發,還是建議使用開發板,可以節省大量的時間。
那麼,我爲什麼要選擇這個模組呢?以上說的種種都不是我選擇的原因==。我選擇買模組主要是因爲。。。。。。我下單下錯了:(。想買開發板買成了模組,這到手一看是個裸片,沒辦法只好硬着頭皮上了,發揚Geek精神。
三、模組的食用方法
3.1硬件準備
3.2原理圖準備
這麼多引腳,乍一看有點懵,我們主要借鑑官方提供的WROOM-32的數據手冊以及官方提供的ESP32串口鏈接圖。首先根據官方給出的入門指導,以及ESP32的數據手冊,找到ESP32通用的串口鏈接電路。
EN和3V3、GND、TXD、RXD不必細說,大家應該都懂。主要是IO15與IO0的管腳比較在意,根據手冊中寫的IO15的功能是GPIO15、MTDO、HSPICS、UART0_RTS;IO0的功能是GPIO0。模組不同,引腳的定義也不同。那麼上述兩種功能的引腳在ESP-WROOM-32模組中的定義爲:UART0_RTS在管腳IO22;GPIO0的定義在管腳IO0。其餘管腳都在模組上寫的很清楚。根據官方的描述過程,給出ESP-WROOM-32UART下載模式的電路原理圖:
大家可以根據這個電路自行焊接,有一點要注意,IO0和GND之間最好用杜邦線做一個活鏈接或者焊一個開關,因爲下載模式時IO0要拉低,而正常工作模式要拉高。給大家看下我焊的醜圖。
3.3編譯環境搭建
編譯環境的搭建,主要參考官方入門手冊,有中文而且超級詳細。我這裏做下簡單地說明。
1.首先是安裝編譯工具鏈,我是用的ubuntu 64位系統,首先下載對應系統版本的工具鏈。
64-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
32-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz
下載完成後,將它解壓到 ~/esp
目錄:mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
工具鏈將會被解壓到 ~/esp/xtensa-esp32-elf/
目錄。2.要使用工具鏈,你還需要在
~/.profile
文件中更新環境變量 PATH
。要使 xtensa-esp32-elf
在所有的終端會話中都有效,需要將下面這一行代碼添加到你的 ~/.profile
文件中:export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin"
3.退出並重新登錄以使 .profile
更改生效。4.獲取ESP-IDF,這個就是我們的開發庫。
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
5.下載完成之後,~/esp/esp-idf/example下面有很多示例代碼。我們可以先編譯一下hello_world。
3.4 hello_world的編譯與燒寫
1.將IO0接GND,插入小板。使用lsusb查看是否已經小板是否連接成功;並且使用ls -l 命令查看是否可以使用。一般來講USB轉TTL是不需要ubuntu的驅動的,直接插入之後,輸入指令,可以看到如下所示的圖片。