第02篇 ESP32的HelloWorld燒錄

架構好ESP32的開發環境後,就可以開始寫程式,一般來說除了一開始的helloworld之外
arduino有很多感測及輸出模組(塊)

我的ESP32實做書籍:我出書了 ESP32 物聯網專題
博客來網址:https://www.books.com.tw/products/0010901195


前言

架構好ESP32的開發環境後(第一篇 ESP32 Arduino開發環境架設(取代Arduino UNO及ESP8266首選)),就可以開始寫程式,一般來說除了一開始的helloworld之外,arduino有很多感測及輸出模組(塊),依據難度可以暫時分成以下幾個類型,以後會依序介紹。

數位輸出、類比輸出差別

1.數位感測、輸出

數位輸出:供電就會啟動,不需要任何控制,例如:LED、Relay、錄放音等,LED也可作為類比輸出pwm
數位感測:這類感測器只會提供兩個選項:HIGH(高電壓)、LOW(低電壓),例如振動感測、人體感測器HC-SR501、觸摸感測器TTP223B,有人經過時會給HIGH,沒人時會給LOW。

2.類比感測、輸出

類比感測:這類項目比較多,例如火焰大小、水位、雨滴、土壤、氣體mq2,這類感測可以提供一個0-4095之間的數值,例如水位感測的數值為100,代表該處有一點點水,若回覆4095則是代表水已經滿了,因此類比感測能提供變化較多的數值提供使用者作為參考。
類比輸出:蜂鳴器、伺服馬達、DC馬達等,在ESP32中類比輸出pwm稍微複雜些,可以引入analogWrite的lib,或者直接寫ledcSetup控制。

3.其他感測器、模塊

I2C類感測器:例如1602LCD、MPU-6000陀螺儀加速器。
SPI模塊:高速傳輸設備,例如SD卡、RC522 RFID、TFT顯示器等。
UART模塊:源自於RS232,例如BLE藍芽通訊,也可以用來讓兩個arduino傳輸資料
其他特殊類:例如WIFI網路、聲音、影像,這類較為複雜的傳感器,需要透過特殊的函式庫來讀取資訊。
這裡我們先從最簡單的HelloWorld開始吧。

Arduino的程式結構-HelloWorld

先了解Arduino的程式結構,主要分成Setup()與Loop(),Setup用來做初始設定,Arduino只會執行一次,然後就會執行Loop,Loop就是迴圈,會不斷重複的執行,一般要做什麼重複感測(例如每1分鐘感測一次溫濕度),都會放在Loop這裡。

Arduino的程式結構

通常我們第一個程式是標準HelloWorld,用以檢測開發環境是否正常、晶片有沒有故障之類。而這隻程式暫時沒有用到Loop,我們僅須寫在Setup中。

HelloWorld程式會用到第一個物件Serial:序列通訊,用以將Arduino的資訊傳輸到開發工具的序列視窗,如果你常寫程式的話就是Log除錯的功能,將獲得的資料顯示出來,主要是Arduino沒有程式中斷點(Breakpoint)功能,所以Serial非常重要,每一隻程式幾乎都會用到。

Serial.begin(115200);//代表以胞率115200啟動序列通訊,另外一個常見的胞率是9600,兩者速度對人類來說是幾乎一樣的,這裡建議先用115200。
Serial.println(“Hello World!”);//代表在訊列視窗中顯示HelloWorld並換行,另外一個語法是Serial.print(),這樣的寫法是印出資料後不換行。
delay(1000);//delay代表休息,1000=1000ms=1秒,所以這句代表休息一秒
整個程式的意思將HelloWorld每秒印在序列視窗一次,重複執行不停止。

Arduino IDE操作界面

無一鍵下載功能時的處理方式

由於目前市面上仍有少數的ESP32 缺少一鍵下載的功能,仍需要按Flash 按鈕才能上傳程式,此時請依照以下步驟:

點選上傳程式按鈕後,(舊款)ESP32要注意需要在畫面出現Connecting….___.……___…..時
按住ESP32右下側按鈕(BOOT或標示為IO0)不放,直到畫面跳開( 如果太晚放開,要在燒錄完畢後,按一下左側RESET重開機以開始工作 )

Connecting上傳畫面
(舊款)ESP32上傳程式鈕位置

完成程式上傳後,點選開啟序列視窗按鈕,可以看到每秒不斷出現的Hello World,若無顯示任何資訊,請先檢查胞率設定是否相同。

上傳成功,序列視窗Hello World畫面

延伸閱讀

???? 第三篇 ESP32數位輸出digitalWrite

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *