18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 嵌入式係統 >> ESP32 >> 正文

ESP32開發:從入門到精通的全麵指南,ESP32入門及Arduino使用教程

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2023/9/5

ESP32開發:從入門到精通的全麵指南

ESP32 是一款功能強大的微控製器,它可以幫助開發者構建各種物聯網(IoT)應用。ESP32 擁有 WiFi 和藍牙無線連接功能,並且可以輕鬆地與(yu) 各種傳(chuan) 感器和設備進行通信。本文將介紹 ESP32 的基本知識和常用開發工具,以及如何開始 ESP32 的開發。

第一部分:ESP32 入門

ESP32 是一款基於(yu) Xtensa® 雙核 32 位處理器的微控製器,它支持 WiFi 和藍牙無線連接,具有低功耗和高性能。ESP32 還擁有大量的 GPIO 引腳,可以輕鬆連接各種外部設備。要開始使用 ESP32 進行開發,您需要一些基本知識:

  1. 熟悉 C/C++ 編程語言。

  2. 了解電子電路和傳(chuan) 感器的基本知識。

  3. 掌握基本的無線網絡知識,包括 WiFi 和藍牙。

第二部分:ESP32 開發工具

為(wei) 了開始 ESP32 開發,您需要準備一些必要的開發工具:

  1. ESP-IDF 開發框架:這是 ESP32 官方開發框架,提供了許多開發工具和示例代碼。

  2. Eclipse IDE:這是一款功能強大的集成開發環境,可以幫助您更輕鬆地編寫(xie) 代碼和調試應用程序。

  3. Arduino IDE:如果您熟悉 Arduino 開發,可以使用 Arduino IDE 來編寫(xie) ESP32 應用程序。

  4. Git:這是一款版本控製工具,可以幫助您更好地管理代碼。

第三部分:ESP32 開發示例

為(wei) 了更好地了解如何使用 ESP32 進行開發,我們(men) 將介紹一些常用的 ESP32 開發示例:

  1. WiFi 連接:ESP32 可以輕鬆連接到 WiFi 網絡。您可以使用 ESP-IDF 提供的 WiFi 示例代碼來開始連接 WiFi。

  2. 藍牙連接:ESP32 還支持藍牙連接。您可以使用 ESP-IDF 提供的藍牙示例代碼來開始使用藍牙。

  3. 傳(chuan) 感器連接:ESP32 可以輕鬆連接各種傳(chuan) 感器和設備。您可以使用 ESP-IDF 提供的傳(chuan) 感器示例代碼來開始連接傳(chuan) 感器。

第四部分:ESP32 項目示例

為(wei) 了更好地了解如何使用 ESP32 構建項目,我們(men) 將介紹一些常見的 ESP32 項目示例:

  1. 智能家居控製器

ESP32 可以用於(yu) 開發智能家居控製器,通過 WiFi 連接到智能家居設備並控製其功能,比如燈光、電視和音響等。用戶可以通過手機應用程序遠程控製設備,實現智能化控製。

  1. 溫度監控係統

ESP32 可以用於(yu) 監測溫度,通過連接溫度傳(chuan) 感器並將數據傳(chuan) 輸到雲(yun) 端進行分析,從(cong) 而實現溫度監測。這種係統可以用於(yu) 監測房間、冰箱或者實驗室中的溫度。

  1. 智能農(nong) 業(ye) 係統

ESP32 可以用於(yu) 開發智能農(nong) 業(ye) 係統,通過連接各種傳(chuan) 感器,比如土壤濕度、光照和氣壓等,收集農(nong) 田數據,並將這些數據發送到雲(yun) 端進行分析。這樣,農(nong) 民可以了解土壤、水分和氣候狀況,從(cong) 而更好地管理農(nong) 田和提高作物產(chan) 量。

  1. 智能健身設備

ESP32 可以用於(yu) 開發智能健身設備,通過連接傳(chuan) 感器來監測心率、運動量和睡眠質量等指標,並將這些數據傳(chuan) 輸到手機應用程序,從(cong) 而幫助用戶更好地管理健康和健身計劃。

總結:

ESP32 是一款非常強大的芯片,可以用於(yu) 開發各種各樣的項目。它具有低功耗、多協議、高性能和豐(feng) 富的外設等特點。如果您正在尋找一個(ge) 靈活、可擴展和易於(yu) 使用的開發板,ESP32 是一個(ge) 不錯的選擇。


在前麵的文章中,簡單地介紹了ESP32開發板和開發環境,從(cong) 本文開始,正式進入ESP32的開發,如果你對於(yu) 編程方麵並沒有經驗也沒問題,開始可以複製粘貼代碼來嚐試著使用你的開發板。文章也會(hui) 盡量少用專(zhuan) 業(ye) 術語或艱澀難懂的語氣來介紹ESP32的開發。

首先,每個(ge) 人所購買(mai) 的開發板可能不盡相同,開發板有不同的版本,也存在個(ge) 人或廠家設計開發的異形開發板,從(cong) 指甲蓋大小到模塊化的,從(cong) 十多塊到上百塊的。如果入門學習(xi) 的話,個(ge) 人的建議是購買(mai) 時注意該商品的評價(jia) 就好了,同時,因為(wei) 有的版本可能是沒有WIFI或藍牙模塊的。學習(xi) 該開發板大多也是因為(wei) 針對物聯網方麵的開發,所以,最好是購買(mai) 帶有WIFI和藍牙模塊的。對於(yu) 芯片的選擇在學習(xi) 階段並沒有太大的影響,比較新的版本也許隻是在運行效率之類的性能加強了,正式開發時,再選擇性能更好更強的也不遲。

經過前麵的文章,本文默認看到這裏的已經安裝好arduino IDE和開發板支持了。該開發環境打開後,基本就是一個(ge) 類似記事本的編輯器。

 

這裏最重要的就是代碼編輯區了,所有有代碼需要在這裏進行編輯設計,代碼設計完成後,可以點擊編譯來測試是否出現錯誤代碼,當出現錯誤代碼時,會(hui) 在信息反饋區給於(yu) 提示,並在編輯區把可能錯誤的代碼行顯示為(wei) 紅底,大多數情況下,出錯的代碼會(hui) 出現在紅底文字行的提示附近。具體(ti) 的錯誤,還需要配合信息的反饋來確定。

 

以上圖為(wei) 例 ,以上的代碼錯誤提示顯示在第3行,但是真正的錯誤是在第2行,在使用arduino IDE中開發,使用的是C語言來進行開發,C語言的一個(ge) 規則是每一個(ge) 完整的代碼語句需要用一個(ge) 引號(;)來代表這一句代碼的結束,在第2行的代碼(int a)在結尾缺少了結束的引號(;),所以導致編譯的出錯。

 

在如上圖的代碼中原本正常可以寫(xie) 在一行的代碼被分開寫(xie) 在二行,但編譯依然能正常通過。但強烈建議你不要這樣做,這裏隻是做為(wei) 說明在arduino IDE開發時,很多語句可以這樣做,但會(hui) 造成代碼的可讀性變差。

在以後的開發中,有的情況下利用這個(ge) 規則也可以讓你的代碼更具有可讀性。

下麵,我們(men) 可以開始寫(xie) 我們(men) 的代碼了,我們(men) 從(cong) 最基礎的開始,寫(xie) 一個(ge) 兩(liang) 個(ge) 數相加並得到結果的代碼。

void setup() { //這句我們(men) 可以先不管,之後會(hui) 詳細介紹 int a = 1; int b = 2; int c = a + b; } //這個(ge) 括號也先不管,之後會(hui) 詳細介紹 //這裏後麵的代碼也會(hui) 在以後詳細介紹 void loop() { }

在寫(xie) 完這幾句代碼後,其實已經寫(xie) 好了一個(ge) 可以運行的程序了。這個(ge) 程序的作用是計算1+2的結果,如果運行正確,我們(men) 應該得到計算的結果3,這裏先詳細解說一下這段代碼的第2、3、4行。我們(men) 把它們(men) 拿出來解釋一下:

int a = 1; int b = 2; int c = a + b;

第1句:int a = 1;

"int" :

對變量的數據類型進行定義(yi) ,可選的類型還有比如: "char","float","double","long"等,當然,如果有必要也可以自已定義(yi) 變量的類型。C語言開發中,數據類型的概念是非常重要的知識點。

那麽(me) ,為(wei) 什麽(me) 要對不同的數據進行不同的類型定義(yi) 呢,這裏要先介紹內(nei) 存的基本概念,我們(men) 可以把內(nei) 存想象成像作文本一樣的一個(ge) 個(ge) 格子。每個(ge) 格子隻可以寫(xie) 一個(ge) 字,在內(nei) 存裏,我們(men) 把每個(ge) 格式用一個(ge) 單位:"字節(byte)"來表示,和作文本一樣,格子是有限的,內(nei) 存也是有限的。

為(wei) 了節省,也為(wei) 了方便管理,用正確的類型來定義(yi) 變量是比較重要的。因為(wei) 每種數據類型放到內(nei) 存中,需要的格子數量是不一樣的。比如上麵的代碼中所用的數據類型"int",每定義(yi) 一個(ge) "int"類型的數據,需要占用4個(ge) 格子,也就是占用4個(ge) 字節,那麽(me) 就需要電腦在內(nei) 存的格子裏給這個(ge) 數據保留4個(ge) 字節的內(nei) 存。所以,比如在第1句代碼"int a = 1;"中,等於(yu) 是我們(men) 通知電腦,給我保留4個(ge) 字節內(nei) 存,並把數字"1"保存在這4個(ge) 字節的內(nei) 存中。當然,我們(men) 會(hui) 想,隻保存一個(ge) 數字"1",為(wei) 什麽(me) 需要4個(ge) 格子。這裏要說明一下"int"或其它數據類型的大小範圍,"int"類型的數據可以保存從(cong) -2,147,483,648 到 2,147,483,647的數字,總範圍是4,294,967,295,為(wei) 什麽(me) 是這麽(me) 奇怪的一個(ge) 數字。我們(men) 用電腦的計算機的程序員模式來查看一下這個(ge) 值:

 

可以看到,當這個(ge) 值轉換為(wei) 16進製時,值為(wei) FFFFFFFF,為(wei) 2進製時,值為(wei) 1111 1111 1111 1111 1111 1111 1111 1111。現在,是不是感覺4個(ge) 字節可能寫(xie) 不下一個(ge) "int"了,不然,因為(wei) 每個(ge) 字節的內(nei) 存可以保存的最大值並不是F或1111,而是每個(ge) 字節的內(nei) 存可以保存FF或1111 1111。看到這裏,大多人已經開始淩亂(luan) ,因為(wei) ,雖然我們(men) 說作文本的一個(ge) 格子隻可以寫(xie) 一個(ge) 字,但電腦中的內(nei) 存定義(yi) 每個(ge) 字節裏可以有8個(ge) 位(bit),相當於(yu) 作文本的每個(ge) 格子可以寫(xie) 筆劃數量為(wei) 8的字。位(bit),才是計算機中最小的單位。8位(bit) = 1字節(byte)。說到為(wei) 什麽(me) 是8位(bit)等於(yu) 1字節(byte),原因主要是當年創造計算機的並非中國人吧。詳細大家可以自行搜索了解一下。

"a" :

變量名,變量的名稱可以自定義(yi) ,但有一些固定的規則,比如一些係統保留的字和用數字開頭,一部份特殊符號不能作為(wei) 變量名或不能作為(wei) 變量名的一部份。變量本身並不占用內(nei) 存,變量名可以理解為(wei) 一個(ge) 代號,這個(ge) 代號今天可以指代張三,明天可以指代李四。變量名稱的引入,可以讓人類用比較直觀地管理一些數據或理解這個(ge) 數據的作用,比如,我們(men) 有一個(ge) 數據35874,我們(men) 要把這個(ge) 數據和另一個(ge) 數據68794相加。數據並不大,花點時間還是能記住的,但如果我們(men) 用一個(ge) 名稱來分別指代這兩(liang) 個(ge) 數據,如:data1和data2,是不是能很直觀地理解這個(ge) 數據的作用了。

"= 1 ;":

等號,在這裏的這個(ge) 等號,並非數學中的等號,在C語言中,等號(=)稱為(wei) 賦值運算符,他的作用是告訴計算機,該變量指代的數據改變為(wei) 當前提供的數據(本例中為(wei) 1),等號(=)右邊的值即為(wei) 左邊變量名所指代的數據。在後續的使用中,隻要該變量名未被重新賦值,當使用該變量時,就可以說是相當於(yu) 使用該變量所指代的數據。最後的分號(;)在之前已經介紹過了,定義(yi) 一句(並非一行)語句的結束。

第二句可以參考第一句的解釋。

第三句 int c = a + b;

這句代碼和第一句以及第二句有小許區別。

在賦值運算符後麵是一個(ge) 算式: "a + b",不用懷疑,他就是數學裏的一個(ge) 加法算術,但這個(ge) 加法算的並非數字,怎麽(me) 能得到結果呢,這裏的a和b就是之前所定義(yi) 的變量名,所以在這裏,我們(men) 可以把這兩(liang) 個(ge) 變量所指代的數據代入該算術裏,a指代的是數字1,b指代的是數字2,那麽(me) 這個(ge) 算術相當於(yu) 是"1+2",最後,計算機會(hui) 把這個(ge) 算術的結果通過賦值運算符(=)賦值給c這個(ge) 變量。

如何觀察程序運行狀態

現在,可以點擊編譯並上傳(chuan) 我們(men) 的代碼了,如果你是第一次使用ESP32,先要用數據線把計算機和ESP32進行連接,有的版本可能需要安裝驅動。連接後,如果你的電腦係統是win10,右鍵點擊些電腦,點擊管理,找到設置管理器,在右邊找到端口(COM和LPT),點擊它前麵的小箭頭,展開可以看到你的通信端口的數量和名稱。如果你的電腦沒有連接過多的串口通信設備,應該能看到一到兩(liang) 個(ge) 通信的設備。大部份情況下,端口號(比如COM3)最高的那個(ge) 就是你的ESP32設備。如果設備過多或並不確定可以斷開它們(men) 的連接,看是否有端口連接消失,重新連接又再次出現的應該就是你的ESP32設備了。記住它的端口號(比如COM3),回到arduino IDE,點擊工具菜單,找到端口:COM1(也許為(wei) 空),在子菜單裏選擇你的ESP32端口號(比如COM3)。

如果通過之前的文章正確的安裝了ESP32支持,點擊工具菜單,找到開發板:

 

如果安裝正確,會(hui) 出現ESP32字樣的菜單,如果不確定你購買(mai) 的是哪個(ge) 開發板,可以觀察你的ESP32的芯片上的文字來查看比較對應的來設置。如果實在不知道怎麽(me) 選擇,某寶店家裏也很多高手的。

完成以上設置後,就可以點擊編譯並上傳(chuan) 了。

可以發現當這個(ge) 程序上傳(chuan) 到你的ESP32上運行時,隻是使用了ESP32上的一些內(nei) 存,我們(men) 看不到運行後有任何的變化,又或許他根本就沒有運行。所以,我們(men) 需要一個(ge) 能直觀地看到程序的確有在運行的方法。

我們(men) 的ESP32大部份不會(hui) 有屏幕,聲光模塊,所以,大部份情況下,需要觀察代碼的運行情況,我們(men) 需要他把運行的情況發送到計算機上方便我們(men) 調試或查看測試運行的情況。所以,我們(men) 需要增加一些代碼來實現。

 

先點擊右上角放大鏡樣子的按鈕,打開串號監視器窗口。查看右下角的當前波特率(這裏是9600波特率)設置,或設置成你喜歡的波特率,記下來。先別關(guan) 閉該窗口,回到編輯窗口,完善代碼

void setup() { //這句我們(men) 可以先不管,之後會(hui) 詳細介紹 Serial.begin(9600); //初始化串口通信 int a = 1; int b = 2; int c = a + b; Serial.print(c); //把變量c的數據發送到串口監視窗口 } //這個(ge) 括號也先不管,之後會(hui) 詳細介紹 //這裏後麵的代碼也會(hui) 在以後詳細介紹 void loop() { }

這裏增加了兩(liang) 句代碼,第一句作用是初始化串口通信,至於(yu) 為(wei) 什麽(me) 要初始化這個(ge) 東(dong) 西,難道電腦不會(hui) 自動初始化嗎,請記住,ESP32或者計算機不會(hui) 做你沒有通知它要做的事。

第二句的作用是把c這個(ge) 變量所指代的數據發送到串口監視窗口,現在姑且這麽(me) 說。串口通信是一種通信的協議,就是一種用規定的信號來發送或接收信息的一種規則,所有的通信(包括有線或無線:如摩斯碼通信,電腦上網的通信,電視的遙控器)都有相應的協議來進行通信,這裏就不展開來說了,我們(men) 大部份情況下隻要知道這句代碼可以實現這個(ge) 功能就可以了。

現在,我們(men) 再把代碼上傳(chuan) ,同時要注意觀察串口監視窗口,如果代碼沒有出錯並成功上傳(chuan) 運行,我們(men) 應該可以在串口監視器裏看到一個(ge) 數字3在窗口裏顯示出來。

 

如果並未出現,不要著急,隻要確定上傳(chuan) 成功,出現類似的文字

 

我們(men) 可以按一下ESP32上的重啟按鈕來重啟ESP32,在重啟過程中,注意不要過於(yu) 晃動設備,以免連線接觸不斷開與(yu) 計算機的連接,同時保持觀察串口監視窗口。

最後,祝大家成功

在之後的文章會(hui) 繼續詳細地介紹關(guan) 於(yu) ESP32的更多基礎入門知識

Tags:ESP32開發,ESP32,入門,開發  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章:
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    推薦文章
    • 此欄目下沒有推薦文章
    最新推薦
    熱門文章
    • 此欄目下沒有熱點文章
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢