這篇文章來(lái)源于DevicePlus.com英語(yǔ)網(wǎng)站的翻譯稿。
目錄
1 簡(jiǎn)介
1.1 適用的網(wǎng)絡(luò)附屬存儲(chǔ)
1.2 啟動(dòng)并運(yùn)行自己的NAS
1.2.1 磁盤(pán)設(shè)置
1.2.2 NAS服務(wù)
1.2.3 磁盤(pán)和網(wǎng)絡(luò)性能
2 附加收獲:Raspberry Pi “HURRiCANE!”冷卻系統(tǒng)
2.1 BOM
2.2 項(xiàng)目完成!
1 簡(jiǎn)介
多年來(lái),許多計(jì)算機(jī)愛(ài)好者都會(huì)向?yàn)樵O(shè)計(jì)供大眾使用的Pi而辛勞工作的工程師們哭訴:“USB3有了嗎?USB3快點(diǎn)出來(lái)吧,拜托了!”。Raspberry Pi 3 B+幾乎是完美的微型計(jì)算機(jī),但是仍然不適用于網(wǎng)絡(luò)附屬存儲(chǔ)(NAS),或者快速USB,甚至USB。由于以太網(wǎng)連接受限而出現(xiàn)的鍵盤(pán)輸入滯后現(xiàn)象就是不良反應(yīng)之一。
如果您的祖母打電話(huà)給您,問(wèn)如何將她的老照片以“現(xiàn)代潮流的方式”進(jìn)行數(shù)字化,您會(huì)怎么做呢?她只是想能夠在新型iPad上流暢地瀏覽這些照片,因?yàn)樗氖种敢呀?jīng)沒(méi)有那么大的力氣去翻閱笨重的相冊(cè)來(lái)重溫那些飽含著珍貴回憶的柯達(dá)照片了?,F(xiàn)在,她要開(kāi)始迎接使用科技產(chǎn)品的新生活。
但是,本文并不是專(zhuān)門(mén)針對(duì)數(shù)字化照片而寫(xiě)的。我們這里將要介紹的是有關(guān)存儲(chǔ)的內(nèi)容:簡(jiǎn)單、快速的網(wǎng)絡(luò)存儲(chǔ)。
1.1 適用的網(wǎng)絡(luò)附屬存儲(chǔ)
首先,任何能夠在網(wǎng)絡(luò)上存儲(chǔ)數(shù)據(jù)并為用戶(hù)提供服務(wù)的功能都可以稱(chēng)為網(wǎng)絡(luò)附屬存儲(chǔ)(NAS)。但是,該功能的實(shí)現(xiàn)是以一種用戶(hù)友好的、流暢且不會(huì)對(duì)用戶(hù)造成困擾的方式進(jìn)行的。
例如,我的Android盒子里有KODI。它的速度不太快,并且microSD里裝滿(mǎn)了舊的數(shù)據(jù)。但是,在我安裝了KODI插件從而連接到本地網(wǎng)絡(luò)上的Samba服務(wù)器之后,觀看電影和播放音樂(lè)就都十分流暢了。它在容納千兆位音頻資源的同時(shí),僅用了幾分鐘的時(shí)間就完成了我的舊路由器(包含未知固件)的設(shè)置,以處理從插入的USB2硬盤(pán)中獲取的數(shù)據(jù)。這就是NAS,但它是比較差的NAS。我們可以做得更好一些。
優(yōu)質(zhì)的NAS具有穩(wěn)定、可快速傳輸數(shù)據(jù)、延遲少的特點(diǎn),且具有冗余性(例如RAIDI),在系統(tǒng)運(yùn)行時(shí)可以支持磁盤(pán)的熱交換,并且提供了用于訪問(wèn)所存儲(chǔ)數(shù)據(jù)的少量協(xié)議。如FTP,SMB/CIFS,NFS和AFP等現(xiàn)在常用的協(xié)議。多年來(lái),我一直在尋找一種性能優(yōu)于USB2和100Mbit/s,且具有足夠的CPU能源和RAM來(lái)承載所有服務(wù)內(nèi)容的低耗能系統(tǒng)。我對(duì)具有出色的SATA 端口的Cubieboard 2十分有興趣,但是Armbian對(duì)我來(lái)說(shuō)實(shí)在太陌生了。
當(dāng)所有希望都變成絕望的時(shí)候,Raspberry Pi 4發(fā)布了,它具有四核1.5GHz CPU,1/2/4GB DDR4 RAM,真正的千兆以太網(wǎng)和USB 3.0。您再也不會(huì)因?yàn)橐蕴W(wǎng)端口被USB2總線阻塞而被迫使用Wi-Fi了。它具有雙microHDMI端口,不過(guò)對(duì)性能來(lái)說(shuō)無(wú)功無(wú)過(guò)。
我現(xiàn)在需要一臺(tái)小型的臺(tái)式微型計(jì)算機(jī), 來(lái)驗(yàn)證其是否能夠在處理一些較大的網(wǎng)絡(luò)傳輸負(fù)載的同時(shí)還可以可靠地運(yùn)行。
我用這種方式對(duì)Raspberry Pi 4進(jìn)行了測(cè)試,并且測(cè)試成功了。當(dāng)然,會(huì)產(chǎn)生發(fā)熱的問(wèn)題。在卸載后,該微型計(jì)算機(jī)會(huì)通過(guò)自發(fā)熱來(lái)進(jìn)行調(diào)節(jié)。加載時(shí),它的系統(tǒng)溫度將會(huì)迅速達(dá)到176華氏度,這時(shí)候計(jì)算機(jī)并沒(méi)有死機(jī)或者壞掉,也沒(méi)有冒出什么奇特的煙霧,它只是變成了一個(gè)無(wú)法使用的紙壓——以600MHz的頻率運(yùn)行。但是,有一個(gè)方法可以解決這個(gè)問(wèn)題,就如您將會(huì)在第2部分看到的那樣,使用一種破解版GPIO控制的功率小于或等于45瓦的散熱風(fēng)扇。
盡管有過(guò)熱問(wèn)題,這款Pi還是非常適合于家庭/工作組NAS,并且2.5″的USB3硬盤(pán)足夠了。如果您希望能夠獲得最佳性能,建議您在磁盤(pán)托架中安裝一個(gè)12V 3.5″的驅(qū)動(dòng)器,而不是只用一根線纜的2.5″驅(qū)動(dòng)器。我的2.5″USB驅(qū)動(dòng)器使用一根線纜,最大功率為4.48W,所以如果您選擇了不帶外部電源的2.5″驅(qū)動(dòng)器,那么肯定需要為您的Pi提供15W的電源。
1.2 啟動(dòng)并運(yùn)行自己的NAS
讓我們來(lái)構(gòu)建一個(gè)Raspberry Pi 4 NAS吧!
請(qǐng)注意,如果您使用的是較早的Pi型號(hào),仍然可以按照本文中的說(shuō)明進(jìn)行操作,不過(guò)Pi 2是最低要求。在Pi 3上,您應(yīng)該通過(guò)Wi-Fi接口傳輸文件,因?yàn)檫@樣更快!
首先要做的是對(duì)Pi進(jìn)行設(shè)置。按照此處的說(shuō)明進(jìn)行操作,您將會(huì)很快實(shí)現(xiàn)Pi的啟動(dòng)和運(yùn)行。我們假設(shè)您已經(jīng)準(zhǔn)備好外部硬盤(pán)驅(qū)動(dòng)裝置了。這里需要注意的一點(diǎn)是,如果是在Slashdot上,相信馬上就會(huì)引發(fā)一場(chǎng)關(guān)于“btrfs”(或者那些完美主義者所堅(jiān)持的寫(xiě)法“Btrfs”)優(yōu)點(diǎn)的討論。我使用過(guò)它,也使用過(guò)ZFS。除非您想要拍快照,不然無(wú)論是btrfs還是ZFS都是無(wú)關(guān)緊要的,對(duì)于家庭/工作組NAS也是如此。這是一個(gè)磁盤(pán)的單獨(dú)設(shè)置,您絕對(duì)應(yīng)該使用ext4,這很酷。
對(duì)您的系統(tǒng)進(jìn)行更新。將以下指令復(fù)制并粘貼到您的Pi終端。
export DEBIAN_FRONTEND DEBIAN_PRIORITY DEBCONF_NOWARNINGS apt update || e c h o "[!] Failed to update index lists!" dpkg --configure -a || e c h o "[!] Failed to fix interrupted upgrades!" apt --fix-broken --fix-missing install || e c h o "[!] Failed to fix conflicts!" apt -y --allow-downgrades --fix-broken --fix-missing dist-upgrade
然后重新啟動(dòng),運(yùn)行以下指令,這將會(huì)安裝ProFTPd,Samba,一個(gè)密碼生成器,SMB/CIFS的客戶(hù)端以及用于實(shí)現(xiàn)簡(jiǎn)單GPIO控制的WiringPi。
sudo apt-get -y install proftpd samba pwgen smbclient wiringpi
1.2.1 磁盤(pán)設(shè)置
如果您不是一個(gè)極簡(jiǎn)主義者,那么您很可能使用的是Pi上的圖形用戶(hù)界面。如果是這樣,請(qǐng)按照以下說(shuō)明設(shè)置磁盤(pán)。注意:請(qǐng)牢記您打算設(shè)置的磁盤(pán),而不是對(duì)連接的microSD卡或者任何您不打算修改的磁盤(pán)進(jìn)行設(shè)置。
如果您選擇僅安裝Raspbian Lite(沒(méi)有圖形用戶(hù)界面),則可以使用“cfdisk”對(duì)磁盤(pán)進(jìn)行設(shè)置。確保沒(méi)有其他USB驅(qū)動(dòng)器連接到您的Pi后,我們就可以將其稱(chēng)為“sda”了。將USB驅(qū)動(dòng)器插入您的Pi,打開(kāi)一個(gè)終端窗口,然后發(fā)送指令:“sudo cfdisk /dev/sda”。
選擇 “dos”。
如果已經(jīng)有了一個(gè)分區(qū),選擇“Delete(刪除)”。然后,選擇“New(新建)”。或者可以直接選擇“New(新建)”。其類(lèi)型將會(huì)是“Linux”,如下圖所示。使用驅(qū)動(dòng)器上的所有可用空間。
使用箭頭鍵將高亮區(qū)移動(dòng)到“Write(寫(xiě)入)”的地方,并在出現(xiàn)提示對(duì)話(huà)框時(shí)點(diǎn)擊“yes(是)”。然后,將高亮區(qū)移動(dòng)到“Quit(退出)”的地方,按回車(chē)鍵。
回到提示對(duì)話(huà)框,讓我們稍事休息,思考一下。在一個(gè)沒(méi)有承載任何系統(tǒng)文件的文件系統(tǒng)上,我們是否要為“root”用戶(hù)保留磁盤(pán)空間的5%,甚至10%?畢竟這不是“/var”或者“/”。
不需要。我們希望所有的可用空間都被用于奶奶的照片數(shù)字化工作以及媒體/工作組的數(shù)據(jù)。mkfs.ext4的“-m”用于設(shè)置為“root”用戶(hù)保留的空間?!?L”用于設(shè)置磁盤(pán)名稱(chēng),您可以將其設(shè)置為任意名稱(chēng)。如果有疑問(wèn),可以使用“FOO”進(jìn)行查詢(xún)。現(xiàn)在,發(fā)出指令:
sudo mkfs.ext4 -L FOO -m 0 /dev/sda1
稍后,您的日志文件系統(tǒng)就在“/dev/sda1”上準(zhǔn)備好了。
您可以將其掛載在任意位置,但是我們還是為NAS創(chuàng)建一個(gè)用戶(hù)吧。我們稱(chēng)他為“nas”。我們將他的私人目錄設(shè)置為在任何地方都可寫(xiě)且可粘滯??烧硿聪瘛?tmp”那樣可以暫存文件。復(fù)制并粘貼以下指令到您的終端。
sudo useradd -b /home -m -p $( pwgen --secure 32 1 ) -c "NAS account" nas sudo chmod 1777 /home/nas sudo mount -o rw,noatime,nodev,nosuid,noexec /dev/sda1 /home/nas sudo chown nas:nas /home/nas sudo chmod 1777 /home/nas
為了確保我們每次都在“/home/nas”處掛載此磁盤(pán),請(qǐng)使用磁盤(pán)標(biāo)識(shí)符。“/dev/sda1”設(shè)備可能會(huì)被更改?!皊da”可能會(huì)變成下一次啟動(dòng)時(shí)的USB拇指驅(qū)動(dòng)硬盤(pán)。但是,磁盤(pán)標(biāo)識(shí)符不會(huì)被更改。那我們就來(lái)實(shí)現(xiàn)它吧!
sudo fdisk -l /dev/sda
將輸出類(lèi)似以下的內(nèi)容:
Disk /dev/sda: 223.6 GiB, 240057409536 bytes, 468862128 sectors Disk model: Crucial_CT240M50 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x0acb1143 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 468862127 468860080 223.6G 83 Linux
我們想要命令行以“磁盤(pán)標(biāo)識(shí)符”作為開(kāi)頭。刪除“0x0acb1143”中開(kāi)頭的“0x”,并在后面加上“-01”,這樣您就能夠得到與“/dev/sda1”意義相同、并且具有唯一性的磁盤(pán)標(biāo)識(shí)符了?,F(xiàn)在我們把所需要的字符串“0acb1143-01”添加到fstab:
PARTUUID=0acb1143-01 /home/nas ext4 defaults,noatime,nodev,nosuid,noexec,noauto 0 0
最后一個(gè)掛載參數(shù)是“noauto”,含義為在系統(tǒng)啟動(dòng)時(shí)Pi不會(huì)自動(dòng)將該分區(qū)掛載到指定掛載點(diǎn)中。這在您忘記插入磁盤(pán)的時(shí)候會(huì)很有用。在您準(zhǔn)備部署NAS的時(shí)候可以忽略“noauto”?!皀oauto”的唯一缺點(diǎn)是您必須以“pi”的身份登錄并運(yùn)行以下指令:
sudo mount /home/nas
…… 每次重啟之后。
現(xiàn)在使用以下指令掛載磁盤(pán):
sudo mount /home/nas
一切都進(jìn)展的很順利!好吧,也不完全是。
1.2.2 NAS服務(wù)
您需要啟用一些服務(wù)功能。幸運(yùn)的是,我們安裝了ProFTPd,Samba,并且在第一次啟動(dòng)的時(shí)候就已經(jīng)安裝了OpenSSH。
首先,將此文件解壓到“pi”主目錄中。您將會(huì)進(jìn)行大量的文件傳輸,所以最好現(xiàn)在安裝FileZilla 。將rpi4_nas+hurricane.zip復(fù)制到您Pi上的“/home/pi”中,然后將以下內(nèi)容復(fù)制并粘貼到Pi的終端:
unzip rpi4_nas+hurricane.zip sudo cp -vp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.bak sudo cp -v proftpd.conf /etc/proftpd sudo chown root:root /etc/proftpd/proftpd.conf sudo chmod 0644 /etc/proftpd/proftpd.conf sudo cp -vp /etc/samba/smb.conf /etc/samba/smb.conf.bak sudo cp -v smb.conf /etc/samba/smb.conf sudo chown root:root /etc/samba/smb.conf sudo chmod 0644 /etc/samba/smb.conf sudo service proftpd restart sudo systemctl enable proftpd echo "ProFTPd (FTP) has been started and enabled on boot!" sudo service smbd restart sudo systemctl enable smbd echo "Samba (SMB/CIFS) has been started and enabled on boot!" sudo service ssh start sudo systemctl enable ssh echo "Secure Shell (SSH) has been started and enabled on boot!" echo "Enter SMB/CIFS password to be used for user 'nas'" sudo smbpasswd nas echo "Enter SMB/CIFS password to be used for user 'pi'" echo "(This does not need to match your 'pi' login password!)" sudo smbpasswd pi
當(dāng)您的Pi完成了指令的接收后(并且您已經(jīng)輸入了一些密碼),您就可以通過(guò)FTP、SMB/CIFS以及SSH訪問(wèn)您的NAS了。FTP和SSH都可以讓您使用“nas”用戶(hù)的密碼登錄到您的NAS中。您可以根據(jù)需要使用“sudo passwd nas”指令對(duì)密碼進(jìn)行更改。“smbclient”已經(jīng)安裝好了,那么我們來(lái)看一下您的系統(tǒng)為網(wǎng)絡(luò)提供了哪些功能:
smbclient -N -L //localhost
輸出內(nèi)容
Anonymous login successful Sharename Type Comment --------- ---- ------- homes Disk User Home Directories IPC$ IPC Service (Samba 4.9.5-Debian) Reconnecting with SMB1 for workgroup listing. Anonymous login successful Server Comment --------- ------- Workgroup Master --------- ------- WORKGROUP
用我的“nas”用戶(hù)名(密碼為“foo bar baz”)進(jìn)行登錄,并將磁盤(pán)掛載到“/home/nas”中。
pi@uNAS 0 ~ $ smbclient --encrypt //localhost/homes --user=nas%'foo bar baz' Try "help" to get a list of possible commands. smb: > ls . D 0 Wed Jul 31 10:54:46 2019 .. D 0 Wed Jul 31 08:15:21 2019 nas D 0 Tue Jul 30 20:48:48 2019 lost+found D 0 Sun Oct 7 15:10:07 2018 disk_speed_test.log N 215 Wed Jul 31 09:16:49 2019 disk_speed_test.sh N 795 Wed Jul 31 07:10:49 2019 479639216 blocks of size 1024. 455131416 blocks available smb: > exit
“smbclient”的程序可能不太簡(jiǎn)單易懂,但是我們只需要關(guān)注兩個(gè)指令就可以了。這兩個(gè)指令是相同的,不過(guò)第一個(gè)是說(shuō)明性的,第二個(gè)會(huì)連接到“nas”用戶(hù)的主文件夾。
smbclient --encrypt //IP_ADDRESS/SERVICE --user=USERNAME%PASSWORD smbclient --encrypt //127.0.0.1/homes --user=nas%'foo bar baz'
1.2.3 磁盤(pán)和網(wǎng)絡(luò)性能
USB3.0的傳輸速度最高可以達(dá)到5Gbit/s (625MByte/s),但是幾乎沒(méi)有旋轉(zhuǎn)(如磁力)驅(qū)動(dòng)器的傳輸速度可以超過(guò)800Mbit/s (100MByte/s)。那要怎么辦呢?
在這種情況下,使用2.5″驅(qū)動(dòng)器,并且使用少于5W的功率是個(gè)不錯(cuò)的選擇。我在網(wǎng)絡(luò)上和本地Pi上的速度測(cè)試結(jié)果幾乎都約為640Mbit/s。您可以通過(guò)包含“disk_speed_test.sh”的腳本自己進(jìn)行測(cè)試,或者直接用以下指令進(jìn)行測(cè)試:
sudo ./disk_speed_test.sh [!] Unmounting /dev/sda1 (if mounted) ... vm.drop_caches = 0 [!] Testing write speed (cached) ... 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 12.1259 s, 88.5 MB/s vm.drop_caches = 3 [!] Testing write speed (uncached) ... 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 12.6074 s, 85.2 MB/s removed '/mnt/nulls.dd' vm.drop_caches = 0 [!] Testing cached/buffered read speeds (three times) ... /dev/sda: Timing cached reads: 1648 MB in 2.00 seconds = 824.24 MB/sec Timing buffered disk reads: 244 MB in 3.02 seconds = 80.78 MB/sec /dev/sda: Timing cached reads: 1658 MB in 2.00 seconds = 829.26 MB/sec Timing buffered disk reads: 242 MB in 3.01 seconds = 80.46 MB/sec /dev/sda: Timing cached reads: 1656 MB in 2.00 seconds = 827.66 MB/sec Timing buffered disk reads: 242 MB in 3.00 seconds = 80.65 MB/sec
USB2的理論最高傳輸速度為480Mbit/s (~60Mbyte/s),但實(shí)際上卻從來(lái)沒(méi)有達(dá)到過(guò)這個(gè)速度,所以從這一點(diǎn)來(lái)說(shuō)是一個(gè)很大的進(jìn)步?;谶@種數(shù)據(jù)傳輸速率,您可以在一分鐘以?xún)?nèi)傳輸約5.1GB的數(shù)據(jù)量,一小時(shí)內(nèi)傳輸超過(guò)300GB的數(shù)據(jù)量。如果測(cè)試性能不佳,使用指令“sudo hdparm -B 255 /dev/sda”,然后再次進(jìn)行測(cè)試。如果沒(méi)有成功,用“l(fā)susb”指令檢查一下您的USB3設(shè)備是否真的是一個(gè)USB3設(shè)備。查找bcdUSB。我的磁盤(pán)報(bào)告顯示的是“bcdUSB 3.0”。您的結(jié)果呢?
pi@uNAS 0 ~ $ lsusb # ... Bus 002 Device 003: ID 1058:0748 Western Digital Technologies, Inc. My Passport (WDBKXH, WDBY8L) # ... # Only look at specific device, use USB VID:PID pi@uNAS 0 ~ $ lsusb -d 1058:0748 Bus 002 Device 003: ID 1058:0748 Western Digital Technologies, Inc. My Passport (WDBKXH, WDBY8L) # More verbose, please pi@uNAS 0 ~ $ lsusb -d 1058:0748 -v | egrep 'bcdUSB|MaxPower' bcdUSB 3.00 MaxPower 896mA
報(bào)告的內(nèi)容很全面,而且我的驅(qū)動(dòng)器確實(shí)是USB3。同時(shí),它顯示使用了最大功率4.48W。太好了!
對(duì)于網(wǎng)絡(luò),請(qǐng)使用CAT6線纜,如果您的路由器和Pi之間有交換機(jī),請(qǐng)確保是千兆交換機(jī)。我費(fèi)了較大的功夫才找到了適用于許多TCP數(shù)據(jù)包的最佳設(shè)置,事實(shí)證明Raspbian在這方面已經(jīng)做的很好了。如果您發(fā)現(xiàn)有什么問(wèn)題,請(qǐng)?jiān)谀腜i終端嘗試以下操作:
sudo sysctl -w net.ipv4.tcp_window_scaling=1 sudo sysctl -w net.core.rmem_max=16777216 sudo sysctl -w net.core.wmem_max=16777216 sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216' sudo sysctl -w net.ipv4.tcp_wmem='4096 16384 16777216'
如果有幫助的話(huà),請(qǐng)按照以下方式來(lái)保存您的更改,使其不會(huì)在重啟后失效:
sudo cat>>/etc/sysctl.conf<<-"EOF" net.ipv4.tcp_window_scaling = 1 net.core.rmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 16384 16777216 EOF sysctl -p
2 附加收獲:Raspberry Pi “HURRiCANE!”冷卻系統(tǒng)
大量的能耗會(huì)產(chǎn)生大量的熱量。Raspberry Pi 4無(wú)法避免溫度高達(dá)176度的過(guò)熱問(wèn)題,而這種過(guò)熱問(wèn)題會(huì)導(dǎo)致CPU的頻率低至600MHz。您大可以將四個(gè)Raspberry Pi的集群設(shè)備放置到您的桌面上,但是如果沒(méi)有冷卻裝置,您就只能瀏覽文本形式的網(wǎng)頁(yè),以及用vi來(lái)閱讀電子書(shū)了。
有兩種方法可以解決這個(gè)問(wèn)題。第一個(gè)方法是使用像ICE Tower CPU散熱器這樣的僅對(duì)CPU進(jìn)行散熱的裝置。第二個(gè)方法是在每個(gè)負(fù)載下發(fā)熱的芯片上都安裝一個(gè)小尺寸的長(zhǎng)款散熱片,然后將足夠的氣流推入并穿過(guò)這些芯片。但是在本項(xiàng)目中,我僅使用了一個(gè)3W的風(fēng)扇,就將系統(tǒng)溫度降低到了約104度。CPU風(fēng)扇需要能在12伏電壓下運(yùn)行。讓我們一起來(lái)實(shí)現(xiàn)它吧!
2.1 BOM:
1x ROHM SLR343BC4TT32 3mm LED | https://www.avnet.com/shop/us/products/rohm/slr343bc4tt32-3074457345627700657 |
Raspberry Pi 4 | https://www.adafruit.com/product/4296 |
Raspberry Pi 4 電源 (USB-C) | https://www.raspberrypi.org/products/type-c-power-supply/ |
microHDMI 到 HDMI 適配器 | https://www.newark.com/pro-signal/psg03627/audio-video-connector-a-hdmi-plug/dp/86T1307 |
16GB microSD 卡 | https://www.newark.com/transcend/tsraspi10-16gv2/microsd-card-raspberry-pi-board/dp/49AC7645 |
USB3 硬盤(pán) | https://www.amazon.com/Seagate-Portable-External-Drive-STGX1000400/dp/B07CRG7BBH |
1x IRLZ24N N通道 MOSFET | https://www.newark.com/infineon/irlz24npbf/n-channel-mosfet-55v-18a-to-220ab/dp/63J7702 |
2x BAT86 肖特基二極管 | https://www.newark.com/nexperia/bat86/rectifier-diode-single-50-v-200/dp/96K6771 |
2x 330 歐姆電阻 | https://www.newark.com/multicomp/mccfr0w4j0331a50/carbon-film-resistor-330-ohm-250mw/dp/58K5042 |
1x 4K7 歐姆電阻 | https://www.newark.com/multicomp/mccfr0w4j0472a50/carbon-film-resistor-4-7kohm-250mw/dp/58K5056 |
1x 12V 1A 電源 | https://www.newark.com/xp-power/vel12us120-us-ja/adaptor-ac-dc-12v-1a/dp/71Y7923 |
1x 12V 風(fēng)扇 | https://www.newark.com/sanyo-denki/9a0812h401/axial-fan-80mm-12vdc-130ma/dp/96M6913 |
跳線 | https://www.newark.com/adafruit/758/kit-contents/dp/88W2570 |
萬(wàn)用板 | https://www.newark.com/multicomp/mc001796/stripboard-100mm-x-100mm/dp/24AC5039 |
面包板 | https://www.newark.com/global-specialties/ubs-100/breadboard-mold-in-bus-strips/dp/17C6982 |
3x 2P 2.54mm 螺絲端子 | https://www.newark.com/phoenix-contact/1725656/terminal-block-pcb-2-position/dp/71C4107 |
焊接 | https://www.newark.com/kester-solder/24-6040-0027/solder-wire-60-40-sn-pb-190-c/dp/34C5648 |
3x 長(zhǎng)款散熱片 | https://www.adafruit.com/product/3082 |
2.2 ‘HURRiCANE!’ Raspberry Pi 控制腳本
首先,將以下腳本程序復(fù)制到您的Pi主文件下。復(fù)制后,在您的Pi終端輸入“cat >>hurricane.sh<<-“EOF”。然后,粘貼腳本,按回車(chē)鍵,輸入EOF,再按回車(chē)鍵。
[begin hurricane.sh]
#! /usr/bin/env bash # Depends on the 'wiringpi' package. set -u -o pipefail trap 'printf "n[!] Cleaning up pin modes and bailing out!n" ; /usr/bin/gpio export 18 low ; /usr/bin/gpio export 23 low ; exit ' INT TERM _fan_pin=18 # BCM18, BOARD12 _led_pin=23 # BCM23, BOARD16 # Don't let it run for too long _temp_upper=55 # Start at _temp_lower=45 # Stop at _is_cooling_active=0 _interval=5 _gpio=$( which gpio || NO ) if [ $_gpio = NO ] ; then echo "ERROR: Is wiringpi installed? Do 'sudo apt-get -y install wiringpi'." exit 1 fi function printBanner { cat < ${_temp_f}F" return $_temp_f } # Fahrenheit to celsius: C = ( F - 32 ) * 5/9 function fahrenheit2celsius { local _temp_c=$( echo $1 | awk '{ printf( "%.1dn", ( $1 - 32 ) * 5/9 ) }' ) #echo "${1}F => ${_temp_c}C" return "$_temp_c" } function hurricane { if [ $# -eq 0 ] ; then echo no args? ; return 1 ; fi if [ $1 -eq 1 ] ; then echo "HURRiCANE cooling system: ACTIVE" $_gpio export $_fan_pin high $_gpio export $_led_pin high _is_cooling_active=1 elif [ $1 -eq 0 ] ; then echo "HURRiCANE cooling system: INACTIVE" $_gpio export $_fan_pin low $_gpio export $_led_pin low _is_cooling_active=0 fi } printBanner while true ; do _temp=$( vcgencmd measure_temp | awk -F= '{print $2} ' | awk -F. '{print $1}' ) _temp_f=$( celsius2fahrenheit $_temp ) if [[ $_temp -ge $_temp_upper && _is_cooling_active -eq 0 ]] then hurricane 1 elif [[ $_temp -le $_temp_lower && _is_cooling_active -eq 1 ]] then hurricane 0 fi celsius2fahrenheit $_temp printf "System temperature: ${_temp}C / %iFn" $? sleep $_interval done
[end hurricane.sh]
需要注意的是變量“_temp_upper”和“_temp_lower”之間的間隔很短。第一個(gè)設(shè)定的是您希望能夠觸發(fā)冷卻系統(tǒng)啟動(dòng)的溫度值,第二個(gè)設(shè)定的是風(fēng)扇停止運(yùn)作的最低溫度值。這樣既可以降低噪音,也可以延長(zhǎng)風(fēng)扇的使用壽命。
剩下的就是制作電路板了。不用擔(dān)心這會(huì)很復(fù)雜,其實(shí)非常簡(jiǎn)單。
2.3 項(xiàng)目完成!
看這張F(tuán)ritzing示意圖!展示的是已經(jīng)應(yīng)用到NASA太空實(shí)驗(yàn)室以外的微型計(jì)算機(jī)上的最棒的通風(fēng)系統(tǒng)!什么?通風(fēng)系統(tǒng)?因?yàn)橥馓仗淞耍鋮s系統(tǒng)其實(shí)就相當(dāng)于一個(gè)氣閥室,而且全面通風(fēng)對(duì)于太空站來(lái)說(shuō)是完全不可能的。
好吧,我們先來(lái)看一下兩種不同的冷卻方式:
功能強(qiáng)大,但是閑置的時(shí)候溫度為55C/131F。
很多電子設(shè)備會(huì)因?yàn)闊釕?yīng)力導(dǎo)致?lián)p壞,尤其是沒(méi)有移動(dòng)部件的電子設(shè)備。熱應(yīng)力來(lái)自于物體尺寸的膨脹和收縮,而這種尺寸變化肉眼是無(wú)法識(shí)別的。幾年更換一次風(fēng)扇要比無(wú)形中損失一個(gè)Pi好得多。Robinsons可承擔(dān)不了失去機(jī)器人朋友帶來(lái)的損失。
所幸的是,“HURRiCANE!”可以解決所有問(wèn)題!我們想要的是在CPU和Wi-Fi/藍(lán)牙芯片上,在主板的左上方,以及在CPU左邊的芯片上能夠有一些不錯(cuò)的長(zhǎng)款散熱器。銅的導(dǎo)熱性很好,但是鋁能夠更容易地將其釋放到“HURRiCANE!”的氣流中。
豎高型的結(jié)構(gòu)可以增加散熱的表面積,這意味著我們可以避免Raspberry Pi 4發(fā)生遲滯。
以上組件列表中的散熱器均帶有導(dǎo)熱膠帶。我們之所以需要三個(gè),是因?yàn)镽aspberry Pi左上角的三個(gè)大的芯片高度不均勻。
CPU 和Wi-Fi/藍(lán)牙芯片上有RF屏蔽罩,這使得在上面放置一個(gè)大尺寸散熱器變得非常困難。在接入三個(gè)散熱器之前,請(qǐng)務(wù)必先用蘸有異丙醇的棉簽將其擦拭干凈。
我為我的Raspberry Pi 4購(gòu)買(mǎi)了性能最好的小型“動(dòng)態(tài)冷卻系統(tǒng)”產(chǎn)品中的一種。但是它沒(méi)有達(dá)到冷卻的效果,反而吸收了很多熱量。IRLZ24N MOSFET消除了所有不合理的功率問(wèn)題,在2V電壓下順利導(dǎo)通(所以3.1V電壓會(huì)更好),并且以防MOSFET出現(xiàn)故障,我們使用BAT86肖特基勢(shì)壘二極管來(lái)保護(hù)我們的輸出引腳BCM18/BOARD12和BCM23/BOARD16。注意,BCM18/BOARD12引腳是PWM引腳,您可以根據(jù)需要將電壓降低到3.1V以下。
將12V電壓連接到風(fēng)扇的正極端子,并將風(fēng)扇的負(fù)極端子連接到MOSFET的漏極后,我們可以將負(fù)載放置到相應(yīng)位置。然后,我們將MOSFET的源極接地,將BCM18/BOARD12與一個(gè)正向偏置到柵極的BAT86二極管串聯(lián),最后連接一個(gè)330歐姆的電阻以將最大電流限制在10mA。
請(qǐng)注意,從柵極到GND有一個(gè)4K7下拉電阻,如果沒(méi)有這個(gè)電阻,當(dāng)柵極的供電沒(méi)有達(dá)到3.1V時(shí)會(huì)產(chǎn)生振蕩,這樣的話(huà)就無(wú)法可靠地(或者快速地)關(guān)閉MOSFET。所以一定記得加上下拉電阻。
然后,制作小尺寸電路板。
使用三個(gè)2P 2.54mm螺絲端子可以讓您Raspberry Pi的信號(hào)線連接變得更加容易,您需要為其做上永久性的標(biāo)記。我標(biāo)記的是“Fan S+”,“12V”,“GND”和“LED S+”,而在風(fēng)扇上,我只標(biāo)記了“+”和“-”。
保護(hù)您Pi輸出引腳的兩個(gè)二極管很重要。如果您的二極管偏置錯(cuò)誤,就必須把它們拆解下來(lái)并進(jìn)行翻轉(zhuǎn)。您需要將陰極面向Pi引腳,陽(yáng)極面向MOSFET和LED的陽(yáng)極。在上面的圖示中,陽(yáng)極用黑色小環(huán)進(jìn)行了標(biāo)記。肖特基二極管僅產(chǎn)生大約0.2V的壓降,所以我們可以放心地將它們與Pi配合使用, 并且可以保證MOSFET啟動(dòng)時(shí)產(chǎn)生合理的導(dǎo)通電阻。在3W的負(fù)載下,我們的IRLZ24N溫度甚至不會(huì)升高到室溫以上。如果您使用大功率CPU風(fēng)扇,比如10-12W,那可能需要連接一個(gè)1W的小散熱器,尺寸不要太大。
組裝并焊接好電路板后,將其連接到您的Raspberry Pi 4,該冷卻系統(tǒng)可以持續(xù)工作很多很多年。使用WiringPi庫(kù)可以使其比上文中的腳本簡(jiǎn)單很多,我們只用將引腳上的電壓值在3.3V和0V之間進(jìn)行翻轉(zhuǎn)就可以了。需要注意的是,使用12伏的風(fēng)扇只是因?yàn)樗鼈児β蚀蟛⑶覕?shù)量多。您也可以根據(jù)自己的需要選擇5伏的風(fēng)扇。
祝您玩得愉快!
Lasse Efrayim Jespersen
Lasse出生于以色列,后移居到緯度較冷的地區(qū)。出于個(gè)人天然的興趣愛(ài)好,他一步步走近了直接的Perl、高效的C/C++、以及優(yōu)雅的MicroPython。他非常喜歡用ESP8266/ESP32/Raspberry Pi 和Arduino來(lái)構(gòu)建機(jī)器。
審核編輯黃宇
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9248瀏覽量
85737 -
NAS
+關(guān)注
關(guān)注
11文章
290瀏覽量
112542 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
559瀏覽量
22310
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論