何為樹莓派
許久沒有寫博客了,十二月份西安疫情的影響,居家隔離了一個多月,在其期間,學習了一下樹莓派,覺得硬件還是挺有意思的,剛好也看到了巨硬有提供使用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協議是由四根線組成,分別是
目前為止我使用樹莓派寫過一個入門級別的智能小車,其中的功能有控制攝像頭,控制舵機,實現攝像頭的轉動,以及控制電機來實現小車的前進,后退,左右,同時帶有紅外線避障和超聲波測距模塊,以及蜂鳴器,等幾個案例,后面我會附上圖片以及視頻,展示我這段時間的一個學習成果。
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群有沒有叫四川觀察的基本上就是我了,歡迎大家騷擾,后續的樹莓派和單片機學習也會逐漸更新到博客中,期待各位大佬的關注。