樹(shù)莓派入坑筆記(1.上)
這個(gè)專欄分上 中 下 三部分
上篇:配置硬件和系統(tǒng)
0:Introduction and Hardware Preparation
如果會(huì)數(shù)電,模電和C語(yǔ)言,那么閱讀體驗(yàn)更佳.如果不會(huì)上述知識(shí)也沒(méi)關(guān)系,我盡力講明白,下面先上最終效果.

通俗的說(shuō),樹(shù)莓派4B (Raspberry Pi 4 Model B)可以理解成一個(gè)低配的電腦,頂配的單片機(jī),有4個(gè)ARM Cortex A72 64位核心,2個(gè)USB3.0口,2個(gè)USB2.0口,40個(gè)GPIO口.我用的這塊有8GB的內(nèi)存和64G的SD卡(功能上相當(dāng)于硬盤),相比于STM32F1XX的ARM Cortex M3 32位核心在性能上有了非常明顯的提升,在開(kāi)發(fā)方式上也相對(duì)簡(jiǎn)單了些,代價(jià)是更高的價(jià)格,更明顯的費(fèi)電,更嚴(yán)重的發(fā)熱(需要有風(fēng)扇).

此外,樹(shù)莓派4b的通信接口數(shù)量更少了,GPIO口上只有1個(gè)IIC 1個(gè)SPI 1個(gè)串口.但是通過(guò)USB和CH340模塊可以擴(kuò)展到5個(gè)串口.
和STM32F103C8T6對(duì)比下,STM32F103C8T6有2個(gè)IIC 2個(gè)SPI 3個(gè)串口.另外1個(gè)Micro USB口支持USB2.0,只不過(guò)所有的驅(qū)動(dòng)程序需要手寫.

我去年入手一個(gè)樹(shù)莓派,只是一直沒(méi)怎么用到.經(jīng)歷了小學(xué)期的必修STM32F103ZET6課程和暑期玩(cai)耍(keng)STM32F103C8T6以后,我想玩一玩這個(gè)高端板子,于是就有了這個(gè)文章.
在這個(gè)實(shí)驗(yàn)里面,我們需要在面包板上給各個(gè)元件接線
有硬件清單的示意圖:

僅供參考,字丑勿噴:)
用的128*64 4線制SPI接口的OLED屏幕某寶10塊多錢1片 面包板某寶1塊多錢1個(gè).
接好后的效果圖:


2:Briefing of GPIO and SPI Interface
GPIO(General-purpose input/output),通用型輸入輸出口,功能類似8051的P0—P3,其接腳可以供使用者由程控自由使用,PIN腳依現(xiàn)實(shí)考量可作為通用輸入(GPI)或通用輸出(GPO)或通用輸入與輸出(GPIO)如當(dāng)clock generator, chip select等.
串行外設(shè)接口(Serial Peripheral Interface)是一種同步外設(shè)接口,它可以使單片機(jī)與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息.外圍設(shè)備包括Flash RAM,網(wǎng)絡(luò)控制器,LCD顯示驅(qū)動(dòng)器,A/D轉(zhuǎn)換器和MCU等.
SPI系統(tǒng)可直接與各個(gè)廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件接口.它只需4條線:串行時(shí)鐘線(SCK)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線(MISO)、主機(jī)輸出/從機(jī)輸人數(shù)據(jù)線(MOSI)和低電平有效的從機(jī)選擇線(NSS).
(1)MISO:主設(shè)備輸入/從設(shè)備輸出引腳.該引腳在從模式下發(fā)送數(shù)據(jù),在主模式下接收數(shù)據(jù).
(2)MOSI:主設(shè)備輸出/從設(shè)備輸入引腳.該引腳在主模式下發(fā)送數(shù)據(jù),在從模式下接收數(shù)據(jù).
(3)SCK:串口時(shí)鐘,作為主設(shè)備的輸出,從設(shè)備的輸入.
(4)NSS:從設(shè)備選擇.這是一個(gè)可選的引腳,用來(lái)選擇主/從設(shè)備.它的功能是用來(lái)作為片選引腳,讓主設(shè)備可以單獨(dú)地與特定從設(shè)備通信,避免數(shù)據(jù)線上的沖突.
SPI是一個(gè)環(huán)形總線結(jié)構(gòu),由NSS、SCK、MISO、MOSI構(gòu)成,NSS引腳設(shè)置為輸入,MOSI引腳相互連接,MISO引腳相互連接,數(shù)據(jù)在主和從之間串行地傳輸(MSB位在前).
在STM32編程中,我們需要直接配置GPIO引腳寄存器或者調(diào)用GPIO庫(kù)來(lái)配置GPIO口,直接配置SPI相關(guān)寄存器或者調(diào)用SPI庫(kù)(標(biāo)準(zhǔn)庫(kù) HAL庫(kù)均可)來(lái)實(shí)現(xiàn)相關(guān)的SPI通信功能(大概要寫或者copy幾百行C語(yǔ)言代碼).不過(guò)在這篇專欄中不涉及:)
在樹(shù)莓派我們只需要調(diào)用類似Arduino風(fēng)格的庫(kù)函數(shù)即可.主流的有兩種,BCM2835(有持續(xù)的更新)和WiringPi(因?yàn)樽髡咴颥F(xiàn)在已經(jīng)停止使用).本文采用前者.

3:Software setup on Raspberry Pi?
step0:燒錄系統(tǒng)
我們用的Ubuntu(一種Linux)不用Windows 10 IoT是因?yàn)?span style="text-decoration: line-through;">據(jù)說(shuō)缺硬件驅(qū)動(dòng),支持不好.
如果不會(huì)Linux可以參考這些掃盲博客
上ubuntu官網(wǎng)下載最新的Ubuntu Desktop for Raspberry Pi 鏡像 鏈接:
注意不要下Ubuntu Server因?yàn)?strong>沒(méi)有桌面
下載燒錄工具 我用的BalenaEtcher
把SD卡插入讀卡器,連接電腦,然后打開(kāi)BalenaEtcher,把剛才下載的鏡像掛載進(jìn)去,點(diǎn)擊燒錄
燒錄完成后把SD卡插入樹(shù)莓派4B的卡槽.
上電,開(kāi)機(jī),配置用戶,連接自家wifi(先不考慮校園網(wǎng)的情況,因?yàn)楸容^復(fù)雜)
step1.配置國(guó)內(nèi)包源
只說(shuō)核心的步驟.
先聯(lián)網(wǎng),然后切換到root用戶
有桌面的話可以用gedit打開(kāi)包源文件`/etc/apt/sources.list`
否則用vim打開(kāi): sudo vim /etc/apt/sources.list
以使用清華大學(xué)鏡像為例 編輯`/etc/apt/sources.list`為以下內(nèi)容
保存文件(注意需要root權(quán)限)
step.2安裝需要用的常用軟件包
在root用戶更新包源 安裝和升級(jí)軟件包
在raspi-config里面配置Interface 啟用GPIO SPI IIC 串口 SSH
關(guān)于樹(shù)莓派的SSH配置可以參考這些博客:
windows電腦上安裝SSH工具putty 和 ftp傳文件程序filezilla
樹(shù)莓派命令行ifconfig 查看ip配置 在wlan0處應(yīng)該有一個(gè)ip地址
在putty里面輸入
最重要的是啟用root用戶
樹(shù)莓派命令行passwd root 設(shè)置root密碼啟用root
參考下面博文配置root能夠遠(yuǎn)程登錄
完成以后在windows上用putty遠(yuǎn)程ssh登錄樹(shù)莓派(試下普通用戶和root)

step.3 安裝BCM2835
官方網(wǎng)站(下面第1個(gè)鏈接)??下載安裝包(下面第2個(gè)鏈接)
在剛才下載安裝包的目錄打開(kāi)命令行
如果沒(méi)有報(bào)錯(cuò),在root用戶運(yùn)行他里面自帶的測(cè)試程序(src目錄下的test)
如果任何一個(gè)環(huán)節(jié)有報(bào)錯(cuò)要回去檢查
至此 上篇硬件配置基本上算完成了,中篇更新Python處理視頻.