【單片機入門】(一)應用層軟體開發的單片機學習之路-----基礎知識入門
引言
工作了五六年,一直都是以軟體為主,期間也是各個方向都玩,移動端,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)的縮寫,是一種高速的,全雙工,同步的通訊匯流排,並且在晶片的管腳上只佔用四根線,分別是

以上為ESP32系列單片機的所有的GPIO功能講解。後續我會帶大家,去進行和不同的感測器進行交互來獲取數據,單片機購買連接放在了最下方,我一直都是在這家店鋪購買,並不是托,哈哈
【手機天喵】//m.tb.cn/h.UdRqdqk?tk=MoLs2BOBtEQ CZ3457 「ESP32開發板WIFI+藍牙2合1雙核ESP32核心板無線藍牙開發板」
點擊鏈接直接打開
單片機結語
其實針對於單片機,我所認為的是通過這些GPIO引腳去進行和電子元器件進行通訊,通過那些匯流排通訊方式進行收發數據,消息傳遞,同時底層是通過不同引腳的高低電平去進行控制。總之,單片機開發要懂一些常用的基礎電路知識,不然很容易燒壞電路板,電子元器件,有錢可任意妄為,哈哈。
環境搭建
上面,我們對什麼是單片機,以及單片機上面都有哪些引腳,都具備那些功能做了一個解釋,那麼接下來我們講解一下ESP32開發環境在Arduino上面的一個配置。點擊首選項

在此處可以配置項目文件夾,新建項目的存放文件夾,以及開發板的配置,點擊附加的開發板網址,在彈出的介面中寫入//dl.espressif.com/dl/package_esp32_index.json,這個網址,用來配置ESP32的相關開發包。然後可以在工具,開發板,開發板管理中搜索ESP32,然後點擊安裝即可,但是此處需要梯子才可以下載,否則下載會很慢,可以自己去GITHUB下載後然後放在Arduino本地新建一個hardware文件夾,裡面文件夾名稱路徑就和我圖的一樣否則環境配置失敗是無法讀取配置資訊。
github下載地址://github.com/espressif/arduino-esp32,下載後將裡面的文件放進hardware/espressif/esp32文件夾中去,然後點擊tools/get.exe,會去下載配置環境等待結束就可以找到ESP32的開發板,這中間下載速度可能會很慢,我會把所有的東西一併上傳,然後下載稍作修改後就可以使用了。
下載地址://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系列的,有興趣的可以一起研究,一起學習。


