C#控制樹莓派入門

陳顯達發表於2022-02-26

何為樹莓派

     許久沒有寫部落格了,十二月份西安疫情的影響,居家隔離了一個多月,在其期間,學習了一下樹莓派,覺得硬體還是挺有意思的,剛好也看到了巨硬有提供使用c#用來開發樹莓派應用的解決方案叫Net Iot,就自己買了一個樹莓派入手,嘗試用c#去控制樹莓派的各個引腳,當然,Net Iot不僅僅支援樹莓派一個開發板,同時支援Arduino開發板,以及香橙派,荔枝派,不過目前只是入手了樹莓派,所以此處以及後續開發板會以樹莓派為主,後面可能也會出樂鑫ESP32微控制器的入門教程,接下來我們瞭解一下什麼是樹莓派吧。

     樹莓派,一個只有信用卡大小的電腦,其作業系統是基於Linux系統,目前支援的系統為樹莓派官方作業系統Raspberry Img官方作業系統,Windows 10 IOT作業系統,Ubuntu,Centos,Debian,其中官方作業系統是基於Debian的。雖然樹莓派只有信用卡大小,但是別看它麻雀雖小,卻五臟俱全,它是一款基於ARM的微型電腦主機板,以電腦不同的是,它是使用SD卡用來做儲存,作業系統,資料都是儲存SD卡上的,最新版的樹莓派4B,有兩個3.0的USB介面,兩個USB2.0的介面以及一個千兆乙太網介面,大家可以看下圖,樹莓派發布至今的各個版本的對比。可以看到雖然樹莓派小,但是它有多個USB介面,支援乙太網介面,以及藍芽,音訊,以及HDMI介面,並且也是支援藍芽的,這上面沒有標註。並且樹莓派最重要並且最好玩的部分就是它的引腳模組,可以用來使用它的引腳去進行控制其他電子元器件,並且支援多種匯流排通訊協議,包括I²C,SPI,CAN,以及串列埠通訊,也包括了PWM脈衝寬度調製等,樹莓派總共提供了40的引腳,也叫GPIO,GPIO全稱是General-purpose input/output,翻譯過來就是通用的輸入輸出,可以看到下面的圖片展示了樹莓派的引腳,以及部分引腳所帶有的其他功能,其中3.3V的是供電介面可以用來給其他的電子元器件供電,5V也是同樣的道理,5v也可以給樹莓派供電,可以外接電源給樹莓派以及其他的電子元器件進行供電,GND為接地引腳,理解為我們三插插座的接地,GPIO開頭的為沒有任何其他功能的輸入輸出引腳,RXD和TXD為串列埠通訊可以使用這兩個引腳使用485或者232協議去進行通訊,CE是片選訊號,SDA和SCL的是I²C匯流排協議的介面,MOSI,MISO,SCLK是SPI協議的介面,引腳不一定非要全部記住,但是需要知道它的作用是什麼,剛開始的時候我以為SPI和I²C是一種什麼特製線路用來通訊的,後來知道了它僅僅是作為一種協議用來傳輸資料的,接好之後就可以用來傳輸資料。

      上面我們提到了一些匯流排協議,以及脈衝寬度調製,這裡我們做一下簡單的介紹,I²C協議是由兩根線組成的一個是SDA用來主控裝置和被控從裝置進行一個雙向資料傳輸的線路,SCL是一根時鐘線,用來協調雙方裝置進行傳送和傳輸資料;SPI協議是由四根線組成,分別是

(1)MISO– Master Input Slave Output,主裝置資料輸入,從裝置資料輸出;
(2)MOSI– Master Output Slave Input,主裝置資料輸出,從裝置資料輸入;
(3)SCLK – Serial Clock,時鐘訊號,由主裝置產生;
(4)CS – Chip Select,從裝置使能訊號,由主裝置控制,這裡的CS對應的是我們樹莓派上面的CE引腳,片選訊號。
    PWM脈衝寬度調製則是簡單理解就是,用來控制高低電壓的佔位比,即一段時間內,高電平在這段時間內的佔比。
    以上三種協議等,有一些是個人理解,以及有些是出自百度百科,如有不對,歡迎指正。

     目前為止我使用樹莓派寫過一個入門級別的智慧小車,其中的功能有控制攝像頭,控制舵機,實現攝像頭的轉動,以及控制電機來實現小車的前進,後退,左右,同時帶有紅外線避障和超聲波測距模組,以及蜂鳴器,等幾個案例,後面我會附上圖片以及視訊,展示我這段時間的一個學習成果。

   

     Net IOT

     接下來進入到我們的重頭戲,我們可以看看巨硬提供的關於硬體的樹莓派等開發板的解決方案,我們可以在API瀏覽器上面找到一個叫Net Iot Libraries的一個專案這個專案提供了我們樹莓派,香橙派等開發板的解決方案API,而且微軟預設的編碼都是使用的是BCM編碼,可以參考上面引腳圖檢視對應的引腳BCM編碼,但是由於這裡都是英文的,所以在過年期間我把他所支援的硬體主要是感測器等電子元器件進行了一個翻譯並且整理成了一個文件,後面我會附上文件的一個地址,當然有些還是不全面的,後續也會慢慢完善,目前是大部分都已經整理出來了,我們可以看到下圖,API瀏覽器可以看到他所支援的一些電子元器件,包括ADC(模數轉換器),以及PN532讀寫晶片,還支援了RFID,蜂鳴器,電機,攝像頭,螢幕等電子元器件的封裝,最主要的是巨硬已經幫我們把I²C,Spi,CAN匯流排通訊協議,以及PWM脈衝寬度調製封裝好了,這樣我們只需在理解了匯流排的協議概念之後,就可以直接用了,這個類庫下面是沒有提供串列埠通訊的,不過大家都知道我們在PC機上面是可以進行串列埠通訊的,那樹莓派肯定也可以,依舊用的是SerialPort類來實現串列埠通訊,使用方式是沒有任何變化的,不過剛才我也說了對應的引腳是RXD和TXD,對於串列埠怎麼接線,一般都是樹莓派的RXD接通訊裝置的TXD,RXD的意思是Read資料,TXD是用來傳輸資料的,這樣就是傳送接傳輸,傳輸接傳送來實現串列埠通訊,此處的話我是寫了一個樹莓派和ESP32實現串列埠通訊的Demo,本文會展示一些我整理的資料以及部分寫好的Demo,後續也會為我家裡打造一個智慧家居的一個解決方案,用樹莓派做大腦控制系統來向微控制器傳送接收的遠端指令,從而實現控制窗簾,或者空調或者門鎖的一個解決方案,當然成本可能有些高,也可能會只是用微控制器用來做控制。因為ESP微控制器同時也是支援連結無線網,或者啟動一個Web伺服器並且成本相較於樹莓派低很多,一個樹莓派好幾百塊錢一個ESP32開發板僅需20塊錢左右,當然後續也會用一些其他開發板用來實踐,譬如樹莓派PICO價格也是二十塊錢,或者是51或者stm系列的微控制器。

 

 

     最後我為大家展示一下我這段時間用樹莓派做的一些東西以及和微控制器串列埠通訊,視訊和電子元器件程式碼和小車的程式碼以及資料都在我的網盤中,有興趣的朋友可以下載下來看看。

   小車程式碼:http://121.43.235.192:8082/s/WEtG2ZKLpTsmGKb

   各種電子元器件感測器程式碼:http://121.43.235.192:8082/s/DdoWXYfTLb7npoN

    由於本篇部落格寫的可能有些凌亂,往大家見諒,如果有不懂想入門的同學可以新增QQ群6406277找到我,或者看所在QQ群有沒有叫四川觀察的基本上就是我了,歡迎大家騷擾,後續的樹莓派和微控制器學習也會逐漸更新到部落格中,期待各位大佬的關注。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     

 

相關文章