電子開發網

              電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
              搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 嵌入式系統 >> ESP32 >> 正文

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

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

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

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

              第一部分:ESP32 入門

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

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

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

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

              第二部分:ESP32 開發工具

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

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

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

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

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

              第三部分:ESP32 開發示例

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

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

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

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

              第四部分:ESP32 項目示例

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

              1. 智能家居控制器

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

              1. 溫度監控系統

              ESP32 可以用于監測溫度,通過連接溫度傳感器并將數據傳輸到云端進行分析,從而實現溫度監測。這種系統可以用于監測房間、冰箱或者實驗室中的溫度。

              1. 智能農業系統

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

              1. 智能健身設備

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

              總結:

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


              在前面的文章中,簡單地介紹了ESP32開發板和開發環境,從本文開始,正式進入ESP32的開發,如果你對于編程方面并沒有經驗也沒問題,開始可以復制粘貼代碼來嘗試著使用你的開發板。文章也會盡量少用專業術語或艱澀難懂的語氣來介紹ESP32的開發。

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

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

               

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

               

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

               

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

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

              下面,我們可以開始寫我們的代碼了,我們從最基礎的開始,寫一個兩個數相加并得到結果的代碼。

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

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

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

              第1句:int a = 1;

              "int" :

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

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

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

               

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

              "a" :

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

              "= 1 ;":

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

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

              第三句 int c = a + b;

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

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

              如何觀察程序運行狀態

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

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

               

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

              完成以上設置后,就可以點擊編譯并上傳了。

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

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

               

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

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

              這里增加了兩句代碼,第一句作用是初始化串口通信,至于為什么要初始化這個東西,難道電腦不會自動初始化嗎,請記住,ESP32或者計算機不會做你沒有通知它要做的事。

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

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

               

              如果并未出現,不要著急,只要確定上傳成功,出現類似的文字

               

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

              最后,祝大家成功

              在之后的文章會繼續詳細地介紹關于ESP32的更多基礎入門知識

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

              還可以輸入 200 個字
              [ 查看全部 ] 網友評論
              推薦文章
              • 此欄目下沒有推薦文章
              最新推薦
              熱門文章
              • 此欄目下沒有熱點文章
              關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
              返回頂部
              刷新頁面
              下到頁底
              晶體管查詢
              国产午夜亚洲精品国产成人小说 | 黑人巨大精品欧美一区二区| 国产99久久久国产精品~~牛| 国产精品亚洲玖玖玖在线观看 | 欧美成人精品欧美一级乱黄| 呦交小u女国产精品视频| 亚洲欧美日韩国产精品影院 | 国产成人精品视频一区二区不卡| 国产精品亚洲午夜一区二区三区 | 亚洲精品二区国产综合野狼| 国产精品高清一区二区三区不卡| 精品国产福利盛宴在线观看| 亚洲处破女AV日韩精品| 国产亚洲精品va在线| 男女男精品视频网站在线观看| 爽爽精品dvd蜜桃成熟时电影院| 亚洲国产综合91精品麻豆| 亚洲日韩国产精品乱| 国产成人精品999在线观看| 精品一区二区三区色花堂| 91精品国产色综久久| 人妻无码精品久久亚瑟影视| 欧美精品欧美人与动人物牲交| 亚洲精品视频在线| 日本不卡一区高清二区 | 国产女人18毛片水真多18精品 | 91精品国产91久久综合| 国产亚洲午夜高清国产拍精品 | 99久久伊人精品综合观看| 水蜜桃一二二区视在线| 久久99精品国产一区二区三区| 日韩福利视频精品专区| 国产精品va无码一区二区| 亚洲AV永久无码精品网站在线观看| 久久精品国产精品国产精品污 | 久久久免费精品re6| 国产在线精品一区免费香蕉| 精品一区二区三区在线观看视频| 国产精品乱伦| 久久精品国产亚洲av影院| 国产精品手机在线观看你懂的 |