我的ESP32實做書籍:https://youyouyou.pixnet.net/blog/post/121105860
博客來網址:https://www.books.com.tw/products/0010901195
腳位:腳位36根,扣除系統使用約10根,還有約26根可用,腳位說明如下圖
這裡特別說明,如果你用過ESP8266系列產品,你會發現8266最大的問題是他的類比只有1個,而ESP32則有18個ADC,也就是說有18個腳位是不分數位類比,直接使用analogRead或digitalRead就可以分別做類別或數位讀取,光這點優勢你就可以換掉ESP8266了。
- 18 x Analog-to-Digital:可接類比或數位感測(粉紅色標示)
- 3 x SPI interfaces(MOSI,MISO,SCK,SS):高速資料傳輸 SD card, TFT, RFID(藍色標示)
- 3 x UART interfaces:藍芽、相機(不限腳位編號)
- 2 x I2C interfaces(SDA,SCL) and I2S interfaces:LCD、氣壓、陀螺儀(GPIO 21,22)
- 16 x PWM output channels:數位輸出也可類比輸出(不限定腳位編號,但需要宣告channel)
- 2 x Digital-to-Analog Converters (DAC):不太需要用
- 10 x Capacitive sensing GPIOs:提供觸控電容(棕色標示)
- GPIO 34,35,36,39:Input only(不能作為輸出腳位)
- GPIO 0,6,7,8,9,10,11:系統用,勿使用(淺灰色標示)
- GPIO 18:重開機
還有一些個人遇到的問題(不清楚原因,但會搞死你)
- 1. DHT11不可以用GPIO 5、26
- 2. GPIO 12, 2燒錄時不可接任何裝置,請空接,燒錄完成後,再接回,否則會上傳失敗。
- 3.WiFi啟動後,2,4,12,13,14,15,25,26,27僅能數位讀取,不可類比
也可以參考本人的ESP32 Youtube教學頻道
.IDE安裝:
3.1 IDE工具下載: 請至https://www.arduino.cc/en/Main/Software網站下載,筆者比較建議直接下載免安裝檔(如下圖:Windows ZIP for non admin install),解壓縮後直接可用,因為這樣的程式可以帶著走,不需要安裝,未來電腦更新或升級也可以直接開啟,甚至放在USB都可以使用。
▼ 下載後,直接解壓縮到C:或D:底下都可以使用,整個路徑建議不要有任何中文。
此處選擇Just Download,另外一個選項則是捐獻Arduino基金會。
下載完成後,找到下載的壓縮檔,選擇解「壓縮所有檔案」,直接將壓縮檔解壓縮到C:\或D:\跟目錄下,例如筆者常放在C:\之下。
等候3~5分鐘解壓縮完畢之後,我們可以在C:\Arduino1.8.x下找到主程式Arduino.exe,這樣主程式就算安裝完畢,接下來準備安裝ESP32開發核心。
3.2 安裝ESP32核心程式:由於ESP32是Arduino相容並非Arduino原廠產品,因此必須在Arduino IDE中安裝ESP32核心程式,這樣才可使用Arduino IDE寫ESP32。
▼開啟Arduino IDE後,選擇功能表的檔案/偏好設定,開啟偏好設定視窗,在addition boards manager URL輸入以下文字後,按OK。
https://dl.espressif.com/dl/package_esp32_index.json
▼接著點選工具/開發板/開發板管理員,即會出現開發板管理員視窗,在開發板管理員視窗中,輸入關鍵字ESP32後,即可篩選出ESP32核心套件,目前(2020/02月)最新版本為1.0.4,直接點選右側的安裝按鈕,並等候5~10分鐘讓系統下載核心套件並完成安裝,最後再關閉開發板管理員視窗。
▼完成以上步驟,再次選擇工具/開發板,並往下拉即可在下方找到最新的ESP32系列主板,接下來就看您買的是哪一種ESP32主板來選擇。
若您購買的是NodeMCU-32s,選擇正確的版本後會出現以下畫面,除了序列埠稍後要更改之外,其餘都請保留預設值不要更動。
3.3 驅動程式
完成環境設定後,我們將購買的ESP32插入USB,會發現需要安裝USB驅動程式,目前ESP32大部分採用CH340或者CP2102與電腦溝通並上傳程式,傳統UNO則是CH340,目前windows或MAC系統都沒有內建驅動,因此當您接上ESP32的USB後,還需要安裝驅動。
開啟檔案總管,並在本機上按右鍵/管理,可以進入裝置管理員。由於尚未安裝驅動程式,因此會列在其他裝置,使用者應該能找到這個前方有驚嘆號「!」的USB to UART裝置,就是Arduino ESP32的USB裝置。
若是CH340請至這裡下載:http://www.wch.cn/download/CH341SER_ZIP.html
若是CP2102請至這裡下載:https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
由於兩者安裝方式大致相同,因此這裡以CH340為例,依照您的作業系統在網站點選下載
下載後,執行並直接install安裝
安裝完成
在我的電腦(本機)上按右鍵,並點選管理,開啟電腦管理視窗
點選裝置管理員,若安裝正確的話,前方的驚嘆號會消失,並會將裝置放在連接埠下,此時要記得紀錄一下最後方的COM編號喔。
完成驅動程式安裝,再回到Arduino IDE中,此時在工具/開發板的序列埠選擇取得正確的COM編號(本例為COM3)。
完成以上步驟即算完成開發環境設定,接下來我們寫第一個HelloWorld測試一下。
4. 程式上傳測試HelloWorld:
完成環境設定後,就可以來寫程式測試看看,由於ESP32的語法幾乎與Arduino UNO相同 ,因此這裡就先用HelloWorld先做個簡單練習。
首先在Setup()中輸入Serial.begin(115200); 此為宣告序列傳輸鮑率是115200(Baud),接著在Loop()中輸入Serial.println(“Hello World!”); 及delay(1000);,代表每1000ms(=1 second)就會在序列視窗印出Hello World!。完整程式如下圖。
接著我們將程式上傳到ESP32,點選左上的→符號,先會跳出一個存檔視窗,我們先按取消略過存檔,然後等候下方訊息列出現連線訊息時:
Connecting…...____......___......
長按ESP32主板上右下的IO0按鈕(有些會標示為BOOT),直到出現上傳開始再放開IO0,此按鈕為工作模式切換鈕,上傳程式時都需要按這個按鈕將ESP32的「工作模式」轉換成「下載模式」,此為保護措施,避免無意間覆蓋掉原有的程式內容,不過有些ESP32已經取消這個機制,稱為一鍵下載(或一鍵燒錄)。
程式更新中,會出現程式上傳的%數,提示使用者程式上傳進度。
上傳完畢則會出現Hard resetting via RTS pin...,意思是利用左側的RST按鈕重開機,讓ESP32重新開機來執行程式,不過一般按RST這個步驟是可以省略。
完成HelloWorld程式上傳後,點選右上角的放大鏡圖示開啟序列視窗,即可看到一秒一次的「HelloWorld!」出現。這裡要注意的是序列視窗的baud率必須與Serial.begin的數字相同,才有辦法顯示,否則可能會空白,或是亂碼。
經由上述的說明,ESP32確實可以由Arduino IDE進行開發,而且語法、感測器都相同,非常建議立即無痛移轉到ESP32陣營,大量的WiFi及藍牙專案等著您慢慢開發,由於篇幅有限,後續的WiFi及藍牙應用,將於下一期再詳述,敬啟期待。
ESP32藍牙連線及智慧家電
ESP32 ThinkSpeak雲端圖表製作及LINE Notify串接

老師好 第一次安裝, 要安什麼程式開發板才會有nodemcu-32s的選項? 謝謝
上面有寫喔,要附加板子
老師您好: 我想將 ESP32 拿來當 Reader 使用,使用 BLE 接收資料後,再用 WiFi 將資料送到 PC,先測試 BLE 接收,上傳程式碼時沒有問題,當把 WiFi.h Include進來後,加上WiFi.mode(WIFI_STA),在編譯的時候就產生草稿碼太大的錯誤,請問 ESP32 是否真的不能這樣做?或者有方法可以解決?
喔~沒遇過<你能不能提供一下程式碼,我測試看看
老師您好: 這是我的程式碼,請撥空指點。 #include
#include //BLE lib include
#include
const char *ssid = "MySSID"; //要連接的WiFi名稱
const char *password = "MyPasswd"; //WiFi的密碼
WiFiServer server; //聲明服務器對象
//declare a BLE scan object
class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks
{void onResult(BLEAdvertisedDevice advertisedDevice)
{
Serial.printf("Advertised Device: %s \n", advertisedDevice.toString().c_str());
}
};
int scanTime=5;//set scantime, if time too less, you will lost some beacons that not discovered
void setup()
{
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_STA); //將ESP32設成Station
WiFi.setSleep(false); //關閉STA模式下WiFi休眠,提高響應速度
WiFi.begin(ssid, password); //連接WiFi
while (WiFi.status() != WL_CONNECTED) //進入迴圈直到連接成功
{
delay(500);
Serial.print(F("."));
}
Serial.println(F("Connected"));
Serial.print(F("IP Address:"));
Serial.println(WiFi.localIP()); //連接後取得的IP Address
server.begin(5000); //服務器啟動監聽port 5000
}
void loop()
{
Serial.println(F("Beacon Scanning...."));
BLEDevice::init("");//clear beacon list
BLEScan* pBLEScan = BLEDevice::getScan(); //create scan
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true); //start to scan
BLEScanResults foundDevices = pBLEScan->start(scanTime);//wait for scanning
}
哇~一直都忘記了,晚上幫你看
老師: 不知道您測試的結果如何?
老師您好 請問我如果要建一個可以讀WIFI跟Bluetooth的MAC及RSSI 這個可以做到嗎? 以及該如何做?@@ 謝謝
WIFI及BLE同時運作會有問題,查網路似乎是說共用天線的關係
請問我在您的拍賣網站購買一片 esp-32的開發版 但是按照您的說明在上載程式時 一直連不上 Arduino:1.8.10 (Windows 10), 開發板:"NodeMCU-32S, 80MHz, 115200" 草稿碼使用了 623662 bytes (47%) 的程式儲存空間。上限為 1310720 bytes。 全域變數使用了 38744 bytes (11%) 的動態記憶體,剩餘 288936 bytes 給區域變數。上限為 327680 bytes 。 esptool.py v2.6 Serial port COM4 Connecting........_____....._____....._____....._____....._____....._____.....____上傳草稿碼時發生錯誤 _ A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header 我也有按 flash 鍵 還是連不上 請問該如何解決 ?
Arduino:1.8.10 (Windows 10), 開發板:"NodeMCU-32S, 80MHz, 115200" 您的速度不對呀,要把速度115200改成921600
問題已解決 但是 似乎每次傳送都要按按鍵?有點麻煩
ESP32就是要按,有些可以不用按,你要搜尋有一鍵下載功能的ESP32,其實還好啦,我都按習慣了
請問這些數字指的是腳位編號 還是GPIO編號? ”3.WiFi啟動後,2,4,12,13,14,15,25,26,27僅能數位讀取,不可類比“
是GPIO喔
老師,請問一下,如果WIFI連線一直失敗,無法連線,有甚麼方式可以處理呢? 我有買幾顆跟老師一樣型的ESP32控制器,在同樣的程式碼裡就有一顆不能連線,有一顆用WiFiClient去送HTTP GET到ThingSpeak很不穩定,常送不成功,再換一顆就都正常,請問有甚麼原因會導致這樣呢?謝謝
wifi天線不佳
老師,想請問:藍芽可以設連結密嗎嗎? 還有esp32連結wifi是連別人開的熱點嗎? 因為我想使用物連網的概念,但不知道如何開熱點讓esp32連結
1.藍芽可以設連結密嗎?可以,但是有點複雜 2.一般是ESP32去連無線AP上網,或者用手機開熱點也是可以。要在程式裡面指定無線網路SSID及密碼
必利吉 https://kmed.tw/index.php/product/biliji378 日本夜狼 https://kmed.tw/index.php/product/yelang12 日本藤素 https://kmed.tw/index.php/product/tengsu123
請問我在您的蝦皮購買 esp-32的開發版 但是按照您的說明在上載程式時 一直連不上, 也有按按鍵 Arduino:1.8.19 (Windows Store 1.8.57.0) (Windows 10), 開發板:"NodeMCU-32S, 80MHz, 921600" 草稿碼使用了 213181 bytes (16%) 的程式儲存空間。上限為 1310720 bytes。 全域變數使用了 15372 bytes (4%) 的動態記憶體,剩餘 312308 bytes 給區域變數。上限為 327680 bytes 。 esptool.py v2.6 Serial port COM4 Connecting........_____....._____....._____....._____....._____....._____.....____上傳草稿碼時發生錯誤 _ A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
ESP32安裝問題請教 重新安裝esp-32的開發版說明在編譯程式時出現 �t�Χ䤣����w�����|�C exit status 1 開發板 NodeMCU-32S 編譯錯誤。 Arduino:1.8.19, 開發板:"NodeMCU-32S, 80MHz, 115200" preference: https://dl.espressif.com/dl/package_esp32_index.json 不曉得之前安裝1.8.12免安裝版路徑清除不乾淨,會不會影響後版本成功性?