###### tags: `程式語言` # ESP32安裝 ![](https://i.imgur.com/rSK2cAS.png) IDE安裝: 3.1 IDE工具下載: 請至https://www.arduino.cc/en/Main/Software網站下載,筆者比較建議直接下載免安裝檔(如下圖:Windows ZIP for non admin install),解壓縮後直接可用,因為這樣的程式可以帶著走,不需要安裝,未來電腦更新或升級也可以直接開啟,甚至放在USB都可以使用。 ▼ 下載後,直接解壓縮到C:或D:底下都可以使用,整個路徑建議不要有任何中文。 ![](https://i.imgur.com/mNigvwh.png) 此處選擇Just Download,另外一個選項則是捐獻Arduino基金會。 ![](https://i.imgur.com/IoRcZxt.png) 下載完成後,找到下載的壓縮檔,選擇解「壓縮所有檔案」,直接將壓縮檔解壓縮到C:\或D:\跟目錄下,例如筆者常放在C:\之下。 ![](https://i.imgur.com/PbAR2cE.png) 等候3~5分鐘解壓縮完畢之後,我們可以在C:\Arduino1.8.x下找到主程式Arduino.exe,這樣主程式就算安裝完畢,接下來準備安裝ESP32開發核心。 ![](https://i.imgur.com/4dDJoAp.png) 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 ![](https://i.imgur.com/QDyGBX6.png) ▼接著點選工具/開發板/開發板管理員,即會出現開發板管理員視窗,在開發板管理員視窗中,輸入關鍵字ESP32後,即可篩選出ESP32核心套件,目前(2020/02月)最新版本為1.0.4,直接點選右側的安裝按鈕,並等候5~10分鐘讓系統下載核心套件並完成安裝,最後再關閉開發板管理員視窗。 ![](https://i.imgur.com/jwqwL6h.png) ▼完成以上步驟,再次選擇工具/開發板,並往下拉即可在下方找到最新的ESP32系列主板,接下來就看您買的是哪一種ESP32主板來選擇。 ![](https://i.imgur.com/oo4e2Zj.png) ▼完成以上步驟,再次選擇工具/開發板,並往下拉即可在下方找到最新的ESP32系列主板,接下來就看您買的是哪一種ESP32主板來選擇。 ![](https://i.imgur.com/Ou2oLlY.png) 若您購買的是NodeMCU-32s,選擇正確的版本後會出現以下畫面,除了序列埠稍後要更改之外,其餘都請保留預設值不要更動。 ![](https://i.imgur.com/Wp6drhB.png) 3.3 驅動程式 完成環境設定後,我們將購買的ESP32插入USB,會發現需要安裝USB驅動程式,目前ESP32大部分採用CH340或者CP2102與電腦溝通並上傳程式,傳統UNO則是CH340,目前windows或MAC系統都沒有內建驅動,因此當您接上ESP32的USB後,還需要安裝驅動。 開啟檔案總管,並在本機上按右鍵/管理,可以進入裝置管理員。由於尚未安裝驅動程式,因此會列在其他裝置,使用者應該能找到這個前方有驚嘆號「!」的USB to UART裝置,就是Arduino ESP32的USB裝置。 ![](https://i.imgur.com/KFGS5YW.png) 若是CH340請至這裡下載:http://www.wch.cn/download/CH341SER_ZIP.html 若是CP2102請至這裡下載:https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers 由於兩者安裝方式大致相同,因此這裡以CH340為例,依照您的作業系統在網站點選下載 ![](https://i.imgur.com/JST5HKy.png) 下載後,執行並直接install安裝 ![](https://i.imgur.com/zgc7lQc.png) 安裝完成 ![](https://i.imgur.com/19JpDjm.png) 在我的電腦(本機)上按右鍵,並點選管理,開啟電腦管理視窗 ![](https://i.imgur.com/RyLaxWw.png) 點選裝置管理員,若安裝正確的話,前方的驚嘆號會消失,並會將裝置放在連接埠下,此時要記得紀錄一下最後方的COM編號喔。 ![](https://i.imgur.com/dhXq2wW.png) 完成驅動程式安裝,再回到Arduino IDE中,此時在工具/開發板的序列埠選擇取得正確的COM編號(本例為COM3)。 ![](https://i.imgur.com/lNea9Nm.png) 完成以上步驟即算完成開發環境設定,接下來我們寫第一個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!。完整程式如下圖。 ![](https://i.imgur.com/iSsZ6m9.png) 接著我們將程式上傳到ESP32,點選左上的→符號,先會跳出一個存檔視窗,我們先按取消略過存檔,然後等候下方訊息列出現連線訊息時: Connecting…...____......___...... 長按ESP32主板上右下的IO0按鈕(有些會標示為BOOT),直到出現上傳開始再放開IO0,此按鈕為工作模式切換鈕,上傳程式時都需要按這個按鈕將ESP32的「工作模式」轉換成「下載模式」,此為保護措施,避免無意間覆蓋掉原有的程式內容,不過有些ESP32已經取消這個機制,稱為一鍵下載(或一鍵燒錄)。 ![](https://i.imgur.com/nXebtdt.png) 程式更新中,會出現程式上傳的%數,提示使用者程式上傳進度。 ![](https://i.imgur.com/BQW1YCf.png) 上傳完畢則會出現Hard resetting via RTS pin...,意思是利用左側的RST按鈕重開機,讓ESP32重新開機來執行程式,不過一般按RST這個步驟是可以省略。 ![](https://i.imgur.com/9teeqI0.png) 完成HelloWorld程式上傳後,點選右上角的放大鏡圖示開啟序列視窗,即可看到一秒一次的「HelloWorld!」出現。這裡要注意的是序列視窗的baud率必須與Serial.begin的數字相同,才有辦法顯示,否則可能會空白,或是亂碼。 ![](https://i.imgur.com/IZ97t0o.png) ## ESP32數位輸出digitalWrite 數位寫入是最基礎的Arduino課程,用來指定某腳位輸出高電壓(HIGH=3.3V)或低電壓(LOW=0)。通常我們必須先告訴ESP32要使用那一個腳位,是用作輸入偵測,還是輸出以開啟某個裝置(例如LED),語法則是pinMode(腳位,模式);//宣告腳位模式語法,腳位是腳位編號,模式則有作為輸入INPUT或輸出OUTPUT,都是大寫digitalWrite(腳位,電位);//數位寫入語法,腳位是腳位編號,電位則有HIGH或LOW都是大寫,也可以寫1或0 這裡要注意的是ESP32的腳位,除了灰色系統用之外,GPIO34-39僅能提供INPUT,另外有些腳位則是有特殊用途,因此筆者會先避開 TXRX:GPIO1、3 I2C:GPIO21、22 SPI:GPIO5、18、19、23 pinMode(腳位,模式);//宣告腳位模式語法,腳位是腳位編號,模式則有作為輸入INPUT或輸出OUTPUT digitalWrite(腳位,電位);//數位寫入語法,腳位是腳位編號,電位則有HIGH或LOW都是大寫,也可以寫1或0 ## 一、ESP32+LED線路佈置 ESP32不像arduino把插孔預留在主板上,而是腳位向下,因此為了方便起見,多會將ESP32插入麵包板中(如下圖),方式是將ESP32的USB插孔朝下,麵包板的編號1朝下,數字多的朝上。將ESP32腳位對準後,完整用力的壓入麵包板中,避免接觸不良。 ![](https://i.imgur.com/XlsbFQ8.png) ![](https://i.imgur.com/VKtgdrz.png) ## 二、程式撰寫 這次我們來練習LED最常見的範例叫做Blink,也就是閃耀,我們希望它亮一秒後,暗一秒,不斷的重複,開啟Arduino IDE後,寫入以下程式,相關說明都註解在程式內。 ``` void setup() { //setup設定,只執行一次 pinMode(15, OUTPUT);//選告GPIO15作為輸出(綠色LED) } void loop() { //loop迴圈,重複執行不停止 digitalWrite(15, HIGH);//將GPIO15綠色LED給予高電位(3.3V) delay(1000);//休息一秒 digitalWrite(15, LOW);//將GPIO15綠色LED給予低電位(0) delay(1000);//休息一秒 } ``` 一樣的提醒您,當出現「......____......____」,要按下右側的BOOT按鈕,直至開始燒錄,即可放開(如果沒有放開,要在燒錄完畢後,按一下左側RESET重開機以開始工作)\\ ![](https://i.imgur.com/sb10HXq.png) ![](https://i.imgur.com/pEEtDl2.png) ![](https://i.imgur.com/a9RgXrD.png) ![](https://i.imgur.com/d0XryTz.png) ![](https://i.imgur.com/DnhLQ6G.png) ![](https://i.imgur.com/ROGYWxz.png) ![](https://i.imgur.com/JzaxjxN.png) 三、什麼是超音波感測器? ![](https://i.imgur.com/XymgsQb.png) * 超音波感測器是由超音波的發射器、接收器和控制電路所組成的。發射器 (Transmitter) 會發出 40 kHz 的聲波,由於這個聲波的頻率超過人類可聽見的 20 kHz,因此被稱為超音波,接收器 (Receiver) 可以接收超音波。HC-SRO4 可以感測的距離為 2cm 到 400cm,感應角度為 15 度。 * 超音波感測器測量距離的方法,是利用超音波碰到物體會反射的特性,計算發射與接收的時間差,來計算出距離。 * 給trig pin一個10 us TTL pluse, 模組會發射8個40k Hz的聲波出去,然後量測訊號是否回來。 * 如果有收到TTL的高電位訊號,那Echo會送出超音波來回的時間,此 HIGH 位準脈衝上緣可以看成超音波開始發射時間; 而下緣則是接收到反射波的時間, 所以整個高位準脈衝的寬度就是超音波往返的總時間。 ![](https://i.imgur.com/qmly0ss.png) ![](https://i.imgur.com/uu61cF7.png) 四、Line的推播服務 1. 調整Arduino IDE中Esp32的版本 2. 下載Line Notify函式庫 3. 登入Line Notify取得Token