【.NET與樹莓派】上手前的一些準備工作

東邪獨孤發表於2021-01-13

.NET Iot 不是什麼新鮮事物,百科很強大,故老周在此也不必多介紹。現在的時代和老周當年學 QBasic 的時代不同,那時候拉根電話線上網,下載速度只有可憐的 3.5 kb/s。而且還要去店裡買上網路卡。上網路卡用完了(計時的喲)還要再買。除了買上網路卡的錢外,還要交 0.2 元/分鐘的附加費(中國電信收)。

所以,你想想那時候有些什麼概念、名詞解釋不懂的,都是往書上找,或者往圖書館跑;到了圖書館還要交 100 大洋的押金。上網成本高,速度慢,很多東西都懶得上網查。

現在不同了,小孩子們多幸福!幾乎每天線上 20 小時以上。網路也基本覆蓋,所以呢,名詞解釋之類的東西就不必像以前那麼當回事了,啥時候需要,直線網上找。

老周習慣在開始之前扯些題外話,多年養成的壞習慣,打70大板也改不了,請各位莫見笑。

老周接下來計劃寫一系列爛文,主要講述用.NET開發硬體控制方面的東東(其實這個挺好玩的,上大學的時候居然沒有機會玩,可惜了,不然泡幾打小學妹不成問題)。當然了,要在板子上跑.NET 程式,對開發板是有要求的——起碼無作業系統的板子就沒辦法了。有作業系統的板子裡面,名氣較大的當數樹莓派了。

樹莓派以前在書上看過,但不流行網購的年代,去實體店根本買不到(也不知道上什麼型別的店買)。所以,一直沒機會去體驗一下。之後就放一邊了,也沒去想了。但若干年後回頭想想,還是要玩一下的,不然這碼農生涯就不專業,不完美了。於是,模糊地記得在 201x 年從二手平臺買了一塊,也不知道是幾代(肯定不是3、4代)的,買回來只是裝了系統耍了兩下。然後……說起來丟人,吃灰了。

疫情快一週年了,相信各位都記得 2020 年那個春節的,反正我是覺得比當年“非典”時還恐怖。當初“非典”橫行時,我們還正常上學上課,只是個別工廠沒開工,也沒戴口罩,最多就是用消毒粉洗洗地。也許是當年資訊滯後的原因吧。

於是就宅在家裡搞破壞,就想著把一些電器(尤其是一些什麼智慧檯燈、DVD機的)自己改裝一下,能不能弄成像小時候在奧特曼裡面看到的那些高大上裝置,可以遠端控制,還可以用手招呼一下就能控制家裡的東西——大概就是現在所謂的“智慧家居”吧。看著別人演示總覺得不夠意思,自己弄出來的才有成就感,就算弄成了人工智障也不要緊,重點是自己親自體驗過。

最初的思想火花就是想用無線網路來控制各種遙控器,想想在家裡放幾個紅外發射器,然後樹莓派上執行個Web伺服器,這樣各種客戶端只要開個瀏覽器就可以控制紅外發射器,家裡的電視、盒子、風扇、電燈、紅外攝像頭就可以整合在一塊了。遙控的鍵碼可以用紅外接收模組記錄,然後存入資料庫。用的時候從資料庫裡提。

頭腦一發熱,做事就迅速。在某寶買了一塊 Raspberry Pi4 B型。買回來一看,哇,your god,還是 1.4 版本,挺新鮮的。

其實嘛,那個最初的想法並沒有完全實現,僅僅控制了兩臺DVD和一個“芒果雲”智慧盒子而已。

好,又扯多了。本篇作為這一系列的開頭,我們們不寫程式碼,老周簡單說說要準備些什麼工具和裝備。

一、軟套裝

軟體方面,很簡單。

1、開發工具。我們熟悉的 Visual Studio,或者 VS Code都行。

2、開發機。這個嘛,還是在電腦上寫程式碼的好,樹莓派那點配置還是挺弱的。

3、樹莓派上的系統。這個還是用官方的系統好一點。這裡老周說一個事,官方系統有個輕量級版本(Lite),就是帶 Linux 核心功能,沒有桌面部分,也沒有帶附加軟體,純命令控制。這個版本其實很好,但是總出現一個現象——開機不會自動連線無線網(配置了也沒用),或者一直提示正在搜尋網路。但是,安裝帶桌面的版本就沒有這個問題。這個問題一直存在,目前不知原因。

二、樹莓派開發板必備件

買板子時,你需要買一張 Micrio SD 卡,就是你手機用的記憶體卡。老周建議 32 G吧,16和32的價格差不多的,所以不如直接上32。如果你有很多記憶體卡,那就不用買了。有些某寶店賣的雜牌卡,還宣稱樹莓派專用,其實壓根不必要。老周做過測試,用了幾個世紀的金士頓(從行車記錄儀上拔下來的)和閃迪(手機和電視盒子上都用),寫入系統後正常執行,而且速度還不錯。總之,隨便即可。

寫入系統映象是在電腦上進行(多數情況下是這樣的)的,所以,讀卡器要有,或者如果你有帶記憶體卡口的 USB Hub 也行。這個老周建議買好的,質量太差的真的用出一大堆問題來。老周家裡的各種集線器、轉換線都是綠聯的,不是做廣告,真的好用。記得前兩年,買了個外接光碟機,那種 0.8 元包郵的資料線老是識別不了光碟機,識別出來了,讀碟時經常斷。我曾懷疑過光碟機,但用戴爾筆記本拆出來的光碟機測試也是不行。最後買了一根綠聯的線。即插即識別,而且不斷線。真的,一分價錢一分貨。

關於電源,樹莓派的供電口好像每一代都不太一樣,我買的 4 代是 C 口。原裝電源挺貴的,可以買其他的,5V / 3A 即可。另外,還有兩種選擇:

1、充電寶。新款都能輸出最大 3A 的。

2、帶外部供電的 USB Hub。比如這種。

 號稱工業級的,能正常供電,它帶12V/4A的外部電源,輸出口是5V。無外部電源的 USB Hub 帶不動。

3、乾電池 + 電池盒。這種不怎麼好用,乾電池電量減小後電壓會跟著降的,很容易掛。

4、可調電源。就是可以調節電壓的電源,這個除非你捨得買貴的,便宜的不怎麼好用。老周買過便宜的,被它電過兩次。

實際使用測試,5V/2A、5V/1A的供電也能讓樹莓派正常執行。總的來說,電流大小由負載決定,重點是電壓,要選5V的。電壓太高的話可能會導致樹莓派升級為“煙霧”版。

三、其他裝備

1、麵包板。接線多了這個方便。

2、杜邦線。這個肯定要的了,至少買多長,自己看著辦,實驗的實,10-20 CM 可以了。

3、盒子。這個是可選的,就是給樹莓派加個盒子,一來起保護作用,二來可以散熱(塑料的估計散不了熱,要貼散熱片)。老周買的盒子是金屬的,還不錯,CPU 一直在36度左右。

4、網線。老周直接拿買路由器時送的線用,簡單快捷。雖然樹莓派有無線網路卡,但有線網路卡更快,用網線直接連到電腦的網線介面上,在電腦上用 SSH 登系統比較快。

5、“T”形擴充套件板。因為我把樹莓派裝進盒子裡,接線就不方便了,所以買塊T形板,把 40 個引腳引出來,扣在麵包板上,接線就方便多了。

【.NET與樹莓派】上手前的一些準備工作

上面的圖是盜來的,出處不明。接的時候注意方向要一致,不要弄反了

6、電子放大鏡。電子模組比較小,視力不好的話不太好操作。有些地方就算視力好也不好對付。可以買個電子放大鏡,帶LED燈可以照明。USB與電腦連線,用法和外接攝像頭一樣,用 Win10 自帶的相機就行。不用買太強大的,能放大、有燈就行,一般 50 塊大洋左右。

【.NET與樹莓派】上手前的一些準備工作

 

7、萬用表。這個不是必要,但可以有。測電壓電阻很有用。

8、滅火器。這個嘛,有些教程上會提到,不過老周覺得沒那麼嚴重吧,一般操作也燒不起來。

9、消除靜電刷。這個老周覺得是可選的,釋放身上的靜電有個方法很簡單,把你自己接地就行,兩隻手在牆上或者地上按一下就行。不過,老周家裡有現成的消靜電工具,本來是用在黑膠唱片上的。這個你用過留聲機就知道,靜電太多的話,播放唱片時會炒豆響。而且老周的唱機有問題,安裝唱針的電路不太好,靜電多了功放會放不出來,斷斷續續。如果你怕靜電會傷害樹莓派和電子模組,可以某寶弄一個刷子,接觸裝置前在手上刷幾下。

 

四、其他開發板

樹莓派算是比較高階的板,它有作業系統,很多時候也可以用樹莓派來控制其他板子,尤其用到模組較多的時候,總不能全都接到樹莓派上吧。此時就可以考慮把一部分工作分給其他開發板去完成,樹莓派作為主控中心,指揮其他板子工作。

比如下面這個板子也不錯,義大利原裝進口。100 多大洋吧,比樹莓派便宜。其實這些在他們國家也不算貴,但兌成 RMB 就貴了點。

【.NET與樹莓派】上手前的一些準備工作

你要是覺得上面的板子貴,那下面這兩個就便宜,十幾大洋一塊。

【.NET與樹莓派】上手前的一些準備工作

當然了,還是那句話,一分價錢一分貨。以上兩款是國產的,也不知道哪個廠商,反正某寶上大把。注意這些非原裝的板子,在連線電腦時要手動安裝驅動,網上可以找 CH34x 晶片的驅動,一般是 CH340 和 CH341。一個版本不行的話,可以多試幾個,非官方的版本裝驅動是頭疼一點的。原裝主機板的話 Win 10 能自動識別。

這種便宜版本不太穩定,經常會出現上傳程式失敗的情況,而且焊接的引腳有的會搖搖晃晃,有的引腳是彎的,不是很好用,但也能用。老周買了兩塊 Nano 板,有一塊做成溫度計,掛在家裡長期使用。另一塊會嚴重發熱,燙手的,原因不明。

Arduino 的板子不像樹莓派,不能裝系統;樹莓派是一臺完整的計算機,只是相對一般電腦來說,效能還是有差距的(任憑官方怎麼宣傳,但實際情況是如此)。所以,樹莓派上你可以用.NET(C#/VB.NET),可以用 Go,用 Python,或者直接C++;而 Arduino 上用的其實就是C++語言。

 

關於開發板之間的通訊,你可以有以下選擇:

1、有線連線,使用串列埠通訊(交叉連線 TX,RX 引腳)。這個方案不錯,也好擺弄,跟讀寫文字檔案差不多。

2、有線連線,使用 IIC/I2C、SPI 等標準協議。讓樹莓派作為主機,其他板子作從機。樹莓派可以指手畫腳來命令其他板子幹活。就相當於樹莓派是主子,其他板子是打工的。樹莓派:“小順子,幫我測測水壓”,板子A:“Yes, sir”。

3、無線串列埠,比如 ESP8266 系列,方法和一般串列埠差不多,只是它可以無線傳輸,能實現透傳。

4、自己設計的協議。裝置之間通過高低電平,以及持續的時間,可以組合出許多通訊規則。所以,這個協議你完全可以自己設計。比如,板子B傳送一個位元組給樹莓派,可以約定:每個二進位制位以低電平開始,並持續50微秒;50微秒後,如果還保持低電平,說明是0;如果把電平拉高,說明是1;接著把電平拉低再拉高100微秒,表示一位傳送完畢。如此反覆 8 次,一個位元組就搞定了。

 

五、寫系統映象

這個教程就很多了。

不過,老周補充一些內容。

1、SD卡其實不用格式化的,實際測試沒任何問題。在寫系統映象前,可以用 Windows 自帶的“磁碟管理工具”把 SD 卡的分割槽(或卷)刪除,開啟 Win32DiskImager 後直接選 SD 那盤就行了,這個軟體它能自動識別出可移動裝置,你的硬碟分割槽不會出現在選擇列表中。

2、設定固定 IP,這個主要是指用網線和電腦連線時用。你不設定固定IP的話,每次啟動樹莓派的IP地址都不同,那連線起來就很蛋癢。網上有許多教程,你跟著教程改 .conf 檔案就好。不過,老周介紹一種特簡單的方法,下面說明一下。

當你成功寫入系統映象後,你會看到有兩個分割槽,如下圖所示。

 

 比如我這裡,一個卷標為 boot 的F區,一個是G區。這個G區是 Windows 不能識別的檔案系統,每次連線時,Windows 都會提示你格式化,你千萬千萬不要格式化,你忽略提示就行。

開啟 boot 分割槽,裡面有很多玩具,其中有兩個玩具是.txt 檔案,可以直接開啟。最好用 NotePad++ 之類的工具來編輯。主要是因為 Windows 的換行符是帶回車符的,Linux 下不使用。

config.txt 是用來配置樹莓派開啟哪些設定/功能的,比如啟用 i2c,啟用 1-Wire(雙向單匯流排)等。這個檔案你可以不改,在登入系統後可以通過系統命令修改——raspi-config。有的教程會告訴你關掉藍芽,因為主控的串列埠模組分給了藍芽,而TX、RX引腳用的是微控制器中的晶片(次要),因此要調過來。這個其實影響不是很大,除非你有更嚴格的效率要求。當然,不一定要關閉藍芽的,你可以在 config.txt 檔案中加上這一行,這樣既可以把兩個串列埠控制器調換,也不必禁用藍芽。

dtoverlay=miniuart-bt, krnbt=on

這些配置的詳細說明在 /boot/overlays/README 檔案裡面,你閒著的時候可以去瞄幾眼。

下面重點來了,另一個文字檔案是 cmdline.txt,它用來存一些命令,這些命令在系統啟動時會執行,每個命令用空格分隔。開啟 cmdline.txt 檔案,在檔案的最前面加上 ip=192.168.11.25,等號後面的就是你要用的靜態IP地址,具體什麼地址你自己決定。

ip=192.168.11.25 console=serial0,115200 console=tty1 root=PARTUUID=2e9f1d8c-02 ……

這個是不是比修改 .conf 檔案簡單?而且設定的還是全域性的IP地址。

最後,你記得在 boot 分割槽的根目錄下建一個空白檔案,什麼檔案型別都無所謂,反正是空的,檔名為 SSH,無副檔名,這樣當系統初始化後就會啟用SSH功能,你才能在無顯示器無鍵盤無滑鼠的情況下通過一根網線登入樹莓派。

Windows 10 自帶有 ssh 工具,你不用到處找工具。開啟命令列提示符視窗,輸入:

ssh pi@192.168.11.25

其中,pi 是使用者名稱,這是系統預設的使用者名稱,預設密碼是 raspberry。登入系統後改不改密碼也無所謂,反正都是你自己用。如果你拿到外面用,或者別人有可能訪問到你的樹莓派,那就要改密碼了,乾脆連使用者名稱、主機名也改掉。

Win 10 上如果第一次連某臺 Linux 主機,會問你一串XX,你看不懂這串XX不要緊,輸入 yes,然後回車就是了;如果發生錯誤,那就到 C:\Users\<你的使用者名稱>\.ssh 目錄下,把裡面的 known_hosts 檔案滅了(裡面放的是與主機繫結的金鑰)。接著重新 ssh 連線就好了。

 

六、購買模組/感測器

如果你買樹莓派只是為了當 Web 伺服器或者學習 Linux 系統,那不必花錢去買各種電子模組。可是,老周覺得,買塊開發板來學Linux,是不是有點太過分了,這邊建議你掛閒魚上打三折給我吧。既然是開發板,當然得玩玩硬體了,不然你對不起這幾百塊大洋(我買的2G記憶體 268 元,4G/8G更貴)。

至於買哪些模組,哪些感測器,那就你自己喜歡了。

1、控制按鈕類。可以買輕觸開關、觸控開關、熱敏開關、光敏開關、聲控開關等;

2、感測器類。如 MPU 6050(三軸加速計,陀螺儀,這個有點複雜)、PAJ7620(手勢感應)、DHT11(溫度/溼度檢測,這個簡單一些)、DS18B20(溫度檢測,1-wire協議,這個在樹莓派中可以直接以檔案方式訪問,用起來也簡單)。很多感測器都使用了 IIC 協議(i2c),不過你不必自己去模擬,.NET有相關的 Nuget 包。

3、電機。舵機比較好玩,它可以控制旋轉的角度,你可以用來做機械手。

4、發光二極體,LED小燈。記得順便買200 - 250 Ω 的電阻,這個範圍的阻值已經夠了。老周做過實驗,發光二極體在電流達到 18mA 時基本全亮。樹莓派輸出的電流最大 50 mA(說明書上是這樣說的),單個引腳的輸出電流應該沒這麼高。所以,如果你膽子大的話,你可以在接 LED 小燈時不串聯電阻,直接裸奔多爽。其實二極體燒不了的,老周用 80mA 的電流點了一晚上都沒燒。為了驗證網上的說法,老周特意燒了兩個燈,一個白的,一個紅的。

白燈在電流增到 280 mA 後才燒的,紅燈在 250 mA 左右就炸了。電流增到 190 mA 的時候,燈會閃,而且迅速發熱,還會發出 Zi zi zi 的美妙聲響。這麼算下來。串聯 200 歐姆的電阻或者裸奔完全沒問題。

GPIO 引腳高電平(電壓)一般是 3.3 V,二極體工作在 2 到 2.2 V間,電流 18 - 23 mA 之間(估計的,不同顏色的燈電流不一樣)。我們姑且當電流是 20 mA,算一下

( 3.3 - 2.0 ) / 0.02

算得結果是 65 Ω,所以說 200 Ω 足夠安全了。

5、超聲波測距模組(比如HC-SR04模組)。想做玩具車的話,這個好用,比鐳射測距的好。根據老周自己做的實驗,超聲波能測到 5 米遠,2-4 米範圍應該準確一點。這個只是實驗資料,沒有代表性,你自己也可以試試,看能測多遠。

上面只是列了幾個,這些模組很多,沒辦法全列出來。

買這些模組的時候,老周建議不要一次性全買,可以分開買,或幾個幾個地買,這樣做雖然收快遞麻煩,但相對划算,哪家便宜買哪家。不過呢,常用的快遞也就那幾個“通”,如果多個快遞同時到,可以一起收。有時候,同樣的模組,有的店賣得特貴,如果你一大堆一起買,顯然有些模組你會買貴了的。

 

七、樹莓派的引腳

雖說有 40 個腳,但你能用的 28 個。關於這引腳次序怎麼數,你可不要數反了,數反了容易接錯,弄不好會燒電路。把引腳面向你,開發板的USB口向下,從左到右從上到下地數。看看這張圖。

【.NET與樹莓派】上手前的一些準備工作

 

 或者看這張。

【.NET與樹莓派】上手前的一些準備工作

 

 

樹莓派資料手冊可以從這裡下載:用力點選

你數數看,兩個3.3V,兩個5V,八個 GND(電源負),這裡就佔了 12 個腳了,能用於資料 IO 的引腳就剩 28 個,包括專用的串列埠通訊,IIC,SPI這幾類專門用途的引腳。標註 GPIO XX 的一般可以隨你用。當然了,通過修改引腳重用配置也可以稍稍擴充套件幾個口。

引腳重用(或者叫複用)是用一個叫 ALT 的數值來表示的,資料手冊上都有。或者,你還可以看這個:https://pinout.xyz/,這上面對每個引腳的功能都有介紹。

舉個例子,GPIO 12,在板子上是第 32 號引腳(右排從下往上,倒數第5個,在GND上方)。

 

 我們看到,它的 ALT 0 屬性是 PWM0,即第一路 PWM 輸出(實際上只有兩路,雖然有四個PWM引腳,兩個PWM0是相通的,兩個PWM1也是相通的,相通的引腳輸出引數相同;另外兩個是 GPIO 18 和 19,但要手動修改ALT)。表示 12 號GPIO預設作為PWM輸出(前提是要開啟這個功能,都在 config.txt 檔案中修改),如果把 12 腳的 ALT改成 ALT1,那它的功能就是SD4(用來通過引腳讀寫SD卡,這個不知道怎麼用)。

 

==================================================

好了,暫時就介紹這麼多。這些爛文老周都是每天寫一點,然後拼出來的,有時候一篇要寫一星期。沒有足夠的時間一口氣寫完,只能這樣做。

 

相關文章