【微控制器入門】(一)應用層軟體開發的微控制器學習之路-----基礎知識入門

2022-10-13 06:00:46

引言

工作了五六年,一直都是以軟體為主,期間也是各個方向都玩,行動端,PC端,網頁端,後面在去年西安疫情的那一個月,突然覺得硬體也有很多可玩之處,相比於軟體,看得見摸得著的東西可能更容易令人接受,做出成品也更容易有成就感,所以在那段時間我就去研究了一下樹莓派,然後當時用node還有c#操控樹莓派來進行和感測器等電子元器件進行互動,感興趣的可以看看我之前的文章C#控制樹莓派入門 - 四處觀察 - 部落格園 (cnblogs.com),這篇文章僅僅用了做樹莓派的入門,實際上,和我們這篇微控制器的入門實際上也是有一些共性相通的地方。接下來,讓我們一起了解一下微控制器的入門基礎知識吧。

何為微控制器

微控制器。最小計算機執行系統,百度百科做的解釋積體電路晶片,是採用超大規模積體電路技術把具有資料處理能力的CPU、隨機記憶體RAM、唯讀記憶體ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調變電路、模擬多路轉換器、A/D轉換器等電路)整合到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位元、8位元微控制器,發展到現在的300M的高速微控制器。

可以看到,一個微控制器基本上可以當作是一個小型計算機,具有儲存,計算,輸入和輸出,計時定時器等能力,當然了,我們一臺完整的計算機與我們進行互動,也是通過IO去進行互動,通過滑鼠或者鍵盤連線到IO口上就可以在計算機上面進行輸入輸出,那普通的微控制器上面的輸入輸出就需要通過微控制器上面的IO口,就是那些針腳去進行通訊,可以看如下圖,這是一個ESP32的一個微控制器,上面包括了那麼多的IO引腳,統稱為GPIO,那麼這個GPIO是何方神聖呢,GPIO的全稱是General-purpose input/output,翻譯過來也就是通用的輸入輸出介面,在這個微控制器上面一共有四十個gpio介面。

微控制器介面

按照GPIO分類可以分為:

POWER,電源介面,下圖這個開發板上面有一個3.3V和一個5V的一個電源介面,同時可以用來做輸入或者輸出電源,用來給微控制器進行供電,或者複雜的接串聯給整體專案中的所有電子元器件進行供電。

GND:電線接地端介面,上面的POWER是正極,那麼GND就是電路中的負極,或者接地線路。

GPIO:就是可以作為通用的輸入輸出介面,可以用來和電子元器件進行互動,例如讓一個LED燈亮起來,可以使用GPIO的輸出高低位來進行讓LED亮起來,高低位,則是給電子元器件進行釋放電流或者關閉電流就是一個開關,這裡不做過多解釋,後面我們會做實驗一步一步,讓大家學會。

ADC:模數轉換器,將輸入的一個模擬訊號的電壓,轉為數位,將輸入的模擬電壓或電流轉換為表示電壓或電流的大小的數位,獲取到採集的資料,然後轉為具體的數位,例如溫度感測器,氣壓感測器等等,都是通過獲取的模擬訊號電壓,轉為具體的數位。

CONTROL:控制引腳,通常微控制器帶了一個EN的按鈕用來重啟微控制器,如果將線路接入到這個EN引腳則可以控制微控制器進行重啟。

UART:串列埠通訊的一種,通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter),同一套UART,具有兩個引腳,一個是RX,一個是TX引腳,RX用來接收資料,TX引腳用來寫入資料,可以看到R的全稱是Receiver用來接收,T的全稱是Transmitter,用來傳輸資料,如果我們有一個USB轉TTL模組,則可以使用PC和我們的微控制器進行通訊傳送接收資料,忘了提一嘴,通常用來做串列埠通訊的時候,RX引腳必須接通訊方的TX引腳,TX引腳和RX引腳相接,即A和B兩個微控制器,需要進行UART串列埠通訊,那麼A的RX介面必須和B的TX介面相接,A的TX介面必須和B的RX介面相接,A接收資料來自於B的TX,A的傳送資料A的TX然後A寫入到B的RX,除非電子元器件有特別改動,通常情況都是RX接TX,TX接RX。

SPI:是序列外設介面(Serial Peripheral Interface)的縮寫,是一種高速的,全雙工,同步的通訊匯流排,並且在晶片的管腳上只佔用四根線,分別是

     (1)MISO– Master Input Slave Output,主裝置資料輸入,從裝置資料輸出;
     (2)MOSI– Master Output Slave Input,主裝置資料輸出,從裝置資料輸入;
     (3)SCLK – Serial Clock,時鐘訊號,由主裝置產生;
     (4)CS – Chip Select,從裝置使能訊號,由主裝置控制。
      首先從線的數量上,SPI就比UART多了兩條線,同時在裝置上,SPI可以支援多裝置的全雙工,但是同步的通訊匯流排,效能上可能不如UART,但是在裝置之間,SPI比UART具有更多的選擇性,由一個SPI主裝置,進行給從裝置通過設定好的地址進行傳送資料,可以使用同一個SPI線路,控制多個電子元器件。
I2C:一個多主從的序列匯流排,又叫I2C,是由飛利浦公司發明的通訊匯流排,屬於半雙工同步傳輸型別匯流排。IIC匯流排是非常常見的資料匯流排,僅僅使用兩條線就能完成多機通訊,一條SCL時鐘線,另外一條雙向傳輸線SDA。兩條線一個SDA用來傳輸資料,一條SCL時鐘線,用來控制資料收發,應答等等。
TOUCH:ESP32板子上面帶了十個不同的個電容式觸控板,
DAC:ADC的逆轉,ADC為模擬訊號轉為數位的電子元器件,那DAC則為將數位訊號轉為模擬訊號從而轉為電壓的一種元器件。
FLASH:esp32上面帶了不同大小的記憶體,還可以自己進行分割區,貌似有4M的,8M的,還有16的,用來儲存一些小型檔案,臨時檔案。
PWM:脈衝寬度調變,輸入不同的波形,可以用這個控制一些電子元器件的速率或者快慢調變,通過對PWM高低電平的佔空比不同,進行控制。

 

 

 

 

 以上為ESP32系列微控制器的所有的GPIO功能講解。後續我會帶大家,去進行和不同的感測器進行互動來獲取資料,微控制器購買連線放在了最下方,我一直都是在這家店鋪購買,並不是託,哈哈

     【手機天喵】https://m.tb.cn/h.UdRqdqk?tk=MoLs2BOBtEQ CZ3457 「ESP32開發板WIFI+藍芽2合1雙核ESP32核心板無線藍芽開發板」
       點選連結直接開啟

 微控制器結語

 其實針對於微控制器,我所認為的是通過這些GPIO引腳去進行和電子元器件進行通訊,通過那些匯流排通訊方式進行收發資料,訊息傳遞,同時底層是通過不同引腳的高低電平去進行控制。總之,微控制器開發要懂一些常用的基礎電路知識,不然很容易燒壞電路板,電子元器件,有錢可任意妄為,哈哈。

環境搭建

上面,我們對什麼是微控制器,以及微控制器上面都有哪些引腳,都具備那些功能做了一個解釋,那麼接下來我們講解一下ESP32開發環境在Arduino上面的一個設定。點選偏好設定

在此處可以設定專案資料夾,新建專案的存放資料夾,以及開發板的設定,點選附加的開發板網址,在彈出的介面中寫入https://dl.espressif.com/dl/package_esp32_index.json,這個網址,用來設定ESP32的相關開發包。然後可以在工具,開發板,開發板管理中搜尋ESP32,然後點選安裝即可,但是此處需要梯子才可以下載,否則下載會很慢,可以自己去GITHUB下載後然後放在Arduino本地新建一個hardware資料夾,裡面資料夾名稱路徑就和我圖的一樣否則環境設定失敗是無法讀取設定資訊。

github下載地址:https://github.com/espressif/arduino-esp32,下載後將裡面的檔案放進hardware/espressif/esp32資料夾中去,然後點選tools/get.exe,會去下載設定環境等待結束就可以找到ESP32的開發板,這中間下載速度可能會很慢,我會把所有的東西一併上傳,然後下載稍作修改後就可以使用了。

下載地址:http://121.43.235.192:8082/s/Be88gki4eSFSMFs

 

 

 

 

    結語

其實使用VSCODE也可以開發這個在Arduino上設定好之後,在Vscode中下載Arduino外掛即可使用Vscode進行設定,取決於開發者,同時VSC開發還可以直接使用原生c語言進行開發,

可以參考i樂鑫官網給出的步驟,快速入門 - ESP32 - — ESP-IDF 程式設計指南 v4.4.2 檔案 (espressif.com),這個檔案還是很不錯,使用原生c語言進行開發,其難度也相較Arduino難一些,我是剛開始使用這個環境開發的,後來換成了Arduino相對簡單一些,同時還可以像c#的nuget一樣去搜尋自己想要的庫,同時也有例子,相對簡單一些。

後續文章會玩一些簡單的電子元器件,今年做智慧小車一共做了三個,同時買的電子元器件也有很多,後續我會一一帶大家去學習,去玩,然後有必要的話,也會直播做一些講解,方便更好的入門學習,有興趣的小夥伴可以持續關注,環境方面不懂的也可以隨時加這個群找我,這個群,用來對微控制器感興趣的小夥伴的專屬群,大家一起學習一起進步,目前玩的是ESP的板子,後面也會使用51或者STM系列的,有興趣的可以一起研究,一起學習。