這篇文章來(lái)源于DevicePlus.com英語(yǔ)網(wǎng)站的翻譯稿。
用于OTG、被動(dòng)冷卻系統(tǒng)、LED心跳燈以及大容量電容的VNC
profit_image – stock.adobe.com
什么是VNC?
VNC(虛擬網(wǎng)絡(luò)計(jì)算)一種易于使用的工具軟件,可以幫助您成功訪問(wèn)所連接到的任何設(shè)備上的圖形用戶界面(GUI)。它在帶寬、延遲以及安全性方面靈活性很高。當(dāng)您使用VNC時(shí),設(shè)備在局域網(wǎng)或外網(wǎng)都可以。
您可以輕松并且安全地從Windows、macOS 或Linux連接到您的Pi。這是一款適用于共享遠(yuǎn)程計(jì)算的通用設(shè)備。但是,當(dāng)使用微型服務(wù)器就足夠時(shí),就不要運(yùn)行大型服務(wù)器。Raspberry Pi計(jì)算機(jī)的使用十分環(huán)保,如此一來(lái)您就可以為解決氣候變化問(wèn)題出一份力了!
安裝和設(shè)置
該過(guò)程的實(shí)現(xiàn)不需要具備相關(guān)的網(wǎng)絡(luò)知識(shí),但是您需要準(zhǔn)備好一個(gè)Pi。Raspberry Pi 2 B+及以上的任何版本都可以,版本1對(duì)于響應(yīng)式VNC會(huì)話來(lái)說(shuō)太慢了。
基本設(shè)置請(qǐng)參考本文 , 而關(guān)于如何配置您的Raspberry Pi來(lái)使用靜態(tài)IP請(qǐng)參考此處 。
當(dāng)您身在外地想要連接家里或?qū)嶒?yàn)室的設(shè)備時(shí),才會(huì)需要靜態(tài)IP,這可以保證Pi沒(méi)有從DHCP獲取別的IP地址,從而防止擾亂端口轉(zhuǎn)發(fā)。
此處可用的所有Raspberry Pi Linux鏡像都為您提供了RealVNC服務(wù)器的選項(xiàng)。您應(yīng)該選擇“Raspbian Buster with desktop”變體,并通過(guò)USB轉(zhuǎn)microSD適配器,使用“dd”或您的Pi,將其閃存到microSD卡中。
sudo unzip -px raspbian_latest | dd bs=1M of=/dev/sdX
其中,“X”是相關(guān)磁盤,例如如果您使用的是一個(gè)Raspberry Pi,通過(guò)USB轉(zhuǎn)microSD適配器進(jìn)行閃存,“X”為/dev/sda。在這一點(diǎn)上請(qǐng)務(wù)必小心,否則將會(huì)寫(xiě)入錯(cuò)誤位置。在您的Pi/Linux系統(tǒng)上使用“l(fā)sblk”找出您想要寫(xiě)入的磁盤。
例如:
pi@raspberry$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 1 30.2G 0 disk /media/pi/SANDISK_32GB mmcblk0 179:0 0 29.8G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 29.6G 0 part / pi@raspberry$ sudo umount /media/pi/SANDISK_32GB pi@raspberry$ sudo unzip -px raspbian_latest | dd bs=1M of=/dev/sda &;&; sync &;&; echo If Raspbian has automounted your disk (again), see it with 'ls_blk' &;&; echo and then unmount it ... again.
一個(gè)更簡(jiǎn)單的方法是使用Etcher,它甚至可以幫助您直接解壓所下載的文件。請(qǐng)點(diǎn)擊此鏈接獲取相關(guān)說(shuō)明。
實(shí)例
完成microSD卡閃存后,您就可以啟動(dòng)Pi了。首先,您需要決定是否通過(guò)顯示器進(jìn)行操作。
一個(gè)無(wú)顯示器操作的實(shí)例是如果您的Pi在機(jī)器人中,同時(shí)您希望在系統(tǒng)運(yùn)行時(shí)使用一個(gè)GUI編輯器來(lái)對(duì)代碼進(jìn)行調(diào)整,而如果沒(méi)有連接顯示器,請(qǐng)使用“sudo raspi-config”指令。
-> ‘3 Boot Options’(三種啟動(dòng)選項(xiàng))
-> ‘B1 Desktop / CLI’(B1 桌面 / CLI)
-> ‘B1 Console’ (B1控制臺(tái))來(lái)停止Xserver。這樣做可以節(jié)省RAM和CPU的消耗。
通過(guò)LAN連接Raspberry Pi
如果要將Pi與顯示器一起使用,需要連接HDMI線纜和USB鍵盤及鼠標(biāo)。
然后,在您的Pi終端輸入指令“sudo raspi-config”,接下來(lái):
然后 ……
接下來(lái) ……
如果要求重新啟動(dòng),點(diǎn)擊“OK”,然后退出raspi-config。
現(xiàn)在,啟用RealVNC服務(wù)器,再次在Pi終端輸入指令“sudo raspi-config”。
然后……
接下來(lái)……
選擇“Yes”并再次退出raspi-config。如果系統(tǒng)發(fā)生更改時(shí)需要進(jìn)行重新啟動(dòng),您將會(huì)收到重啟的提示,此時(shí)請(qǐng)選擇“是”。
重新啟動(dòng)后,您可以使用用戶名“pi”和密碼進(jìn)行連接。我們稍后將介紹客戶端軟件的安裝。
如果您打算進(jìn)行無(wú)顯示器操作,請(qǐng)?jiān)凇?etc/rc.local”文件種添加以下行。如果不是,請(qǐng)?zhí)^(guò)本節(jié)。
# HEADLESS if /usr/bin/pgrep -U pi vncserver >/dev/null ; then /bin/sh -c '/usr/bin/sudo -u pi /usr/bin/vncserver -kill :1 >/dev/null 2>&;1 || :' fi /bin/sh -c '/usr/bin/sudo -u pi /usr/bin/vncserver -depth 24 -geometry 1280x1024 :0 >/dev/null 2>&;1'
現(xiàn)在,您可以使用VNC客戶端登錄您的Pi了。目前為止我認(rèn)為最好用的是Raspbian系統(tǒng)自帶或已經(jīng)安裝好的一個(gè)軟件:RealVNC Viewer。
它為macOS、Windows、Linux以及其他許多系統(tǒng)(包括Android和iPhone iOS)提供了客戶端(預(yù)編譯為二進(jìn)制包)。您可以點(diǎn)擊此處下載您所需要的客戶端。在macOS 和Windows上并不需要什么特殊的操作,只需雙擊所要下載的軟件即可。在Ubuntu或其他類似的基于Debian的發(fā)行版上,對(duì)于modern模式的設(shè)備,在終端窗口中使用以下指令下載“DEB x64”:
sudo dpkg -i VNC-Viewer-6.19.325-Linux-x64.deb
對(duì)于其他Linux系統(tǒng),請(qǐng)根據(jù)需要使用RPM或者獨(dú)立的BIN,或通用腳本。安裝完成后,輸入“vncviewer”并按下回車鍵。您將會(huì)看到一個(gè)高級(jí)的GUI界面。在頂部,您需要輸入Pi的地址,您可以通過(guò)在Pi終端輸入“hostname -I”來(lái)找到該地址信息。另一種選擇是使用適用于iPhone iOS 或Android的免費(fèi)Fing應(yīng)用程序。
地址格式為IP:PORTl。例如,在這個(gè)網(wǎng)絡(luò)中,10.0.9.116:5900是我的Pi上的“:0”實(shí)例,而“:1”實(shí)例將使用端口5901,因此我輸入10.0.9.116:5901。
輸入地址后,按下回車鍵,然后稍等片刻。系統(tǒng)會(huì)提示您進(jìn)行身份驗(yàn)證,并且可以設(shè)置VNC Viewer來(lái)存儲(chǔ)登錄信息。然后,您將直接進(jìn)入Pi的桌面環(huán)境中。
通過(guò)網(wǎng)絡(luò)/WAN連接Raspberry Pi
通過(guò)互聯(lián)網(wǎng)連接到您的Pi這一過(guò)程有點(diǎn)復(fù)雜。您需要在路由器上設(shè)置端口轉(zhuǎn)發(fā),還需要將Pi設(shè)置為使用靜態(tài)IP地址。使用安裝或設(shè)置部分中的鏈接來(lái)設(shè)置一個(gè)靜態(tài)IP地址,或者如果您的路由器包含此選項(xiàng),可以在網(wǎng)絡(luò)客戶端列表中選擇Pi,并設(shè)置DHCP地址保留。這樣的話就可以保證Pi始終具有相同的IP地址了。
接下來(lái),將外部端口20202/tcp通過(guò)端口轉(zhuǎn)發(fā)傳輸?shù)侥腜i端口22/tcp。如此一來(lái)就無(wú)需暴露VNC服務(wù)器,我們將能夠確保與您的Pi之間的連接是盡可能安全的。RealVNC只為企業(yè)用戶提供256位AES,但是我們暫時(shí)不需要購(gòu)買,SSH可以提供很大的幫助。
將以下指令復(fù)制到Pi的終端窗口中:
sudo service ssh start sudo systemctl enable ssh sudo apt-get update sudo apt-get -y install ufw sudo ufw enable sudo ufw default deny sudo ufw logging low sudo ufw allow log 5900/tcp sudo ufw allow log 5901/tcp sudo ufw allow log 22/tcp
請(qǐng)務(wù)必使用“sudo raspi-config”或“passwd pi”更改默認(rèn)密碼,千萬(wàn)不要在“raspberry”上公開(kāi)SSH密鑰。
需要明確的是,請(qǐng)確保您將通過(guò)端口轉(zhuǎn)發(fā)將20202 _TCP_傳輸?shù)搅薖i靜態(tài)IP地址—端口22 _TCP_。
動(dòng)態(tài)DNS?
現(xiàn)在一切都準(zhǔn)備好了,您可以在工作場(chǎng)所,或者任何其他地方連接到您的Pi了。如何連接?您的Pi所在網(wǎng)絡(luò)的外部地址是什么?
通過(guò)動(dòng)態(tài)DNS,您就可以使用“一般”名稱進(jìn)行連接,從而解決這個(gè)問(wèn)題了。“Example.com”中包含了一個(gè)使用“一般”名稱的示例,并且您無(wú)需記住IP地址就可以實(shí)現(xiàn)連接。想要記住IP地址“93.184.216.34”似乎有些麻煩,因?yàn)槟刑嘈枰涀〉氖虑榱恕?br />
但是,您可以輕松記住諸如“risingsun.csproject.org”之類的地址。讓我們?cè)谀腜i上安裝一個(gè)動(dòng)態(tài)DNS客戶端,這樣就可以保證這個(gè)名稱始終指向您的Pi的外部網(wǎng)絡(luò)地址了。
請(qǐng)?jiān)谀腜i終端粘貼以下指令:
apt-get update apt-get -y install inadyn
您需要選擇一個(gè)動(dòng)態(tài)DNS服務(wù)商。如果您想要免費(fèi)的,請(qǐng)使用FreeDNS。注冊(cè)并使用指令sudo nano /etc/inadyn.conf來(lái)編輯“/etc/inadyn.conf:”。為方便起見(jiàn),此處列出了相關(guān)參數(shù):
period = 300 # The FreeDNS username must be in lower case and # the password (max 16 chars) is case sensitive provider freedns.afraid.org { username = lower-case-username password = case-sensitive-pwd hostname = some.example.com }
獲取所有信息后,將這些指令粘貼到Pi的終端窗口:
# Start it now sudo service inadyn start # Persist across reboots sudo systemctl enable inadyn
要連接到您的Pi,現(xiàn)在需要在您的工作站或者筆記本電腦上執(zhí)行以下操作(這適用于macOS 和Linux,Windows上的SSH隧道不在本文討論范圍內(nèi)):
ssh -l pi -p 20202 -L 5900:localhost:5900 risingsun.csproject.org
這將為您的VNC通訊創(chuàng)建一個(gè)SSH隧道。對(duì)于Raspberry 2 B+及更高版本的型號(hào),SSH并不會(huì)造成CPU利用率增高的問(wèn)題,所以不用擔(dān)心。
為了通過(guò)隧道連接,請(qǐng)?jiān)赩NC Viewer中輸入地址“127.0.0.1:5900”,然后通過(guò)本地SSH隧道連接到Pi上的VNC服務(wù)。
如有必要,請(qǐng)輸入您的憑據(jù),然后您將會(huì)返回到Pi的桌面環(huán)境。即使您在一個(gè)咖啡廳或者機(jī)場(chǎng)使用公共Wi-Fi也不用擔(dān)心了。
當(dāng)然,您也可以僅通過(guò)SSH連接到Pi,然后使用以下指令啟動(dòng)VNC服務(wù)ad-hoc:
nohup vncserver :0
這將會(huì)持續(xù)運(yùn)行,直到您殺死進(jìn)程(例如用“pkill -9 -U pi vncserver”指令)。
提升您的VNC體驗(yàn)
您可以做一些事情來(lái)提升VNC性能。一種方法是將圖形減少到16位或16位以下,以獲得一個(gè)更加舒適的用戶體驗(yàn)。
延遲是很大的問(wèn)題,如果您將您的Pi通過(guò)以太網(wǎng)連接到本地網(wǎng)絡(luò),將會(huì)對(duì)緩解該問(wèn)題有很大的幫助。
如果您的連接速度不夠快(或者其他正在使用的用戶占用了很大的資源空間),您可以安裝speedtest-cli來(lái)發(fā)現(xiàn)這一情況。將以下行粘貼到您的終端中:
sudo apt update sudo apt-get -y install speedtest-cli speedtest-cli --bytes --simple
我的Pi上的輸出如下:
Ping: 2.723 ms Download: 9.96 Mbyte/s Upload: 0.50 Mbyte/s
上傳速度為0.5Mbyte/s,約等于4Mbit/s,對(duì)于24位、1280×1024分辨率的VNC來(lái)說(shuō)勉強(qiáng)夠用。
對(duì)于GUI,您應(yīng)該改掉默認(rèn)界面。該默認(rèn)界適用于舊的512MB RAM Raspberry Pi,但是如果您想要一個(gè)常規(guī)、直觀的界面,這就不是很好用了。
vanilla Raspberry Pi桌面主要由大量的功能包組成,這些包來(lái)自于元功能包集“raspberrypi-ui-mods”和“l(fā)xde-common”。它具有一個(gè)額外的功能,就是有助于向VNC用戶提供LXPolkit錯(cuò)誤信息。
如果您有一個(gè)16-32GB microSD卡和一個(gè)Raspberry Pi 2 B+(或更高版本),我強(qiáng)烈建議您安裝MATE桌面環(huán)境。
MATE將能夠大大提升您的整體使用體驗(yàn)!
請(qǐng)將以下命令行粘貼到您的Pi終端:
sudo apt-get update sudo apt-get -y remove raspberrypi-uid-mods lxde* sudo apt-get -y install mate-desktop-environment mate-themes mate-utils mate-tweak mate-terminal
如果您安裝了MATE,請(qǐng)將以下行粘貼到您的~/.vnc/xstartup文件中:
#! /bin/sh if [ -r ${HOME}/.Xresources ] ; then xrdb ${HOME}/.Xresources fi xsetroot -solid grey -cursor_name left_ptr &; mate-session
然后,重新啟動(dòng)。如果您有了內(nèi)存高達(dá)4GB的新版Raspberry Pi 4 B,這就更好了,您再也不會(huì)需要轉(zhuǎn)換到您的microSD卡了。即使在我使用的Raspberry Pi 2 B+上,MATE也很少會(huì)需要我去轉(zhuǎn)換。就是這么好用。
附加內(nèi)容
為您的Pi添加被動(dòng)冷卻系統(tǒng)
在CPU上切一個(gè)大圓孔
對(duì)于Raspberry Pi 2 B+及更高版本的型號(hào),都存在發(fā)熱的問(wèn)題。您可以通過(guò)指令“vcgencmd measure_temp”隨時(shí)查看系統(tǒng)溫度,如果溫度達(dá)到了閾值80C/176F,您的Pi將會(huì)自動(dòng)降低時(shí)鐘頻率,以避免發(fā)生過(guò)熱導(dǎo)致的“未定義行為”。
因此,您的1.2GHz CPU有可能會(huì)以600MHz的頻率運(yùn)行一段時(shí)間,并且在熱量消散之前不會(huì)恢復(fù)到全速運(yùn)行。如果您將Pi放置在一個(gè)氣流受限的機(jī)箱中,那么那些微型散熱器將可能不會(huì)起到作用,而如果您使用了四個(gè)核,且負(fù)載均為100%,那這些散熱器就真的一點(diǎn)作用也沒(méi)有了。有一個(gè)名為gpio-fan的內(nèi)置config.txt參數(shù)可用于驅(qū)動(dòng)風(fēng)扇(參見(jiàn)“/boot/overlays/README”),但是我們并不想在每次刷新microSD卡時(shí)都要對(duì)其進(jìn)行設(shè)置。
這時(shí)候,我們可以采取另一種方法—使用介電溫度開(kāi)關(guān)。通過(guò)使用絕緣導(dǎo)熱膠帶將其連接到CPU散熱器上,它將會(huì)接通5V軌道電源到一個(gè)5V風(fēng)扇之間的電路。我使用了一個(gè)常開(kāi)型,可以在溫度達(dá)到華氏113度時(shí)接通電路。電路一旦接通,風(fēng)扇就會(huì)驅(qū)散CPU中的熱量。0.75W的迷你風(fēng)扇是一個(gè)不錯(cuò)的選擇,如果我們使用一個(gè)環(huán)流二極管(ROHM BAT86肖特基),就可以防止產(chǎn)生電壓超過(guò)5V軌道電源的尖峰脈沖,這樣風(fēng)扇的使用就非常安全了。
BOM
您將會(huì)需要以下部件:
1x KSD9700 溫度開(kāi)關(guān),常開(kāi),45C/113F | https://www.aliexpress.com/item/10pcs-2500W-Temperature-control-switch-KSD9700-45-Degrees-Celsius-Normally-open-N-O-10A-250V-Thermal/32790498666.html |
1x BAT86 肖特基二極管 | https://www.newark.com/nexperia/bat86/rectifier-diode-single-50-v-200/dp/96K6771 |
1x 5V 風(fēng)扇 | https://www.banggood.com/5v-303010mm-3010-Cooling-Fan-with-2-Pin-Dupont-Wire-for-3D-Printer-Part-p-1421461.html?rmmds=buy&;cur_wbarehouse=CN |
細(xì)絞線 | https://www.daburn.com/2671UltraFlexibleSub-MiniatureWire-U/LSTYLE15681692.aspx |
1x 40V/2200uF 電容,電解 | https://www.newark.com/illinois-capacitor/228tta050m/aluminum-electrolytic-capacitor/dp/30K6693 |
導(dǎo)熱膠帶 | https://www.adafruit.com/product/1468 |
2x Raspberry Pi 散熱器 | https://www.adafruit.com/product/3082 |
開(kāi)始構(gòu)建!
實(shí)際上,只需將5V GPIO引腳上的一根電線(或一種會(huì)使保修失效的方式—在microUSB端口一邊的大功率“D5”二極管上焊接一根線)連接到介質(zhì)開(kāi)關(guān)的一根電線上,然后再將其另一根電線連接到風(fēng)扇的正極端子即可。
將一個(gè)BAT86肖特基環(huán)流二極管按照從風(fēng)扇負(fù)極端子到正極端子的方向進(jìn)行正向偏置連接,然后將風(fēng)扇的負(fù)極端子連接到GND來(lái)完成電路連接。您可以自行創(chuàng)建構(gòu)成地面的條件,那么GND將是無(wú)處不在的。Pi功能性非常強(qiáng),可以處理極微小的接地回路。
或者,選擇一個(gè)不會(huì)出錯(cuò)的方法,即直接將其連接到一個(gè)GPIO GND引腳上。唯一要注意的細(xì)節(jié)是要確保導(dǎo)熱膠帶導(dǎo)熱性能很好,需要事先用異丙醇對(duì)散熱器和開(kāi)關(guān)進(jìn)行擦拭。一切準(zhǔn)備就緒后,請(qǐng)使用一大塊熱膠將其固定在該位置上。
使用熱膠將其固定
KSD9700被埋在熱膠和Kapton膠帶下面,位于上圖中CPU的右側(cè)。在運(yùn)行過(guò)程中,當(dāng)“vcgencmd measure_temp”返回53C/127.4F時(shí),45C/113F開(kāi)關(guān)將閉合,并持續(xù)驅(qū)動(dòng)風(fēng)扇,直到“vcgencmd measure_temp”保持返回38C/100.4F為止。即便是在CPU四核100%負(fù)載的情況下,也只有持續(xù)時(shí)間發(fā)生變化。這是因?yàn)殚_(kāi)關(guān)本身必須吸收足夠多的熱量才會(huì)達(dá)到133F,而CPU傳感器的讀數(shù)會(huì)超前一些。
這種類型的開(kāi)關(guān)可以使用十年,并且十分耐用,獨(dú)立于config.txt 中的“gpio-fan”參數(shù)。同時(shí),它也很容易制作。準(zhǔn)備好您的熱膠槍吧!
為您的Pi添加一個(gè)LED心跳燈電路
BOM
4x ROHM SLR343BC4TT32 3mm 藍(lán)色 LEDs | https://www.avnet.com/shop/us/products/rohm/slr343bc4tt32-3074457345627700657?CMP=EMA_ECIA_inventoryfeed_VSE?aka_re=1 |
1x 2N7000 N-通道 MOSFET | https://www.oddwires.com/2n7000-2n7000ta-small-signal-mosfet-10-pack/ |
4x 330 ohm 電阻 | https://www.sparkfun.com/products/14490 |
細(xì)絞線 | https://www.daburn.com/2671UltraFlexibleSub-MiniatureWire-U/LSTYLE15681692.aspx |
1x 4.7kOhm 電阻 | https://www.adafruit.com/product/2783 |
開(kāi)始構(gòu)建!
一個(gè)小的Pi植入板可以成為一個(gè)真正的藍(lán)色心跳燈。LED的萬(wàn)向性將會(huì)通過(guò)熱膠和一些來(lái)自反編譯筆記本電腦LCD的薄膜得到增強(qiáng)。
關(guān)閉和啟動(dòng)性能良好!陽(yáng)極氧化鋁網(wǎng)可以保護(hù)風(fēng)扇不受損傷,但是會(huì)減少約40%的氣流流動(dòng)。
那么,為什么這個(gè)Pi上有一個(gè)大容量2200uF電容呢?是的,這里有一個(gè)電容,并且直接連接到了5V/GND GPIO 引腳上。
這里使用電容的原因和低音喇叭中使用電容的原因相同。即使您已經(jīng)一切準(zhǔn)備就緒了,使用了官方Raspberry Pi 5.25V SMPS電源和低電阻線,但是如果您的電流消耗突然激增(比如電流需要快速?gòu)?A變?yōu)?A),可能還是會(huì)遇到問(wèn)題。
對(duì)我來(lái)說(shuō),這種情況最常發(fā)生在我在寫(xiě)入一個(gè)USB硬盤的同時(shí)又執(zhí)行大量CPU工作和網(wǎng)絡(luò)工作的時(shí)候。這種時(shí)候我會(huì)收到嚴(yán)重的欠壓警告。如果您的5V引腳上的電壓約為4.65V或低于這個(gè)數(shù)值,就會(huì)遇到這種情況,這非常令人心煩。
那么,如果SMPS電源無(wú)法應(yīng)對(duì)偶爾出現(xiàn)的尖峰電壓或傳輸電壓怎么辦?您需要添加一個(gè)存儲(chǔ)電容器,電容量越大越好,但是根據(jù)經(jīng)驗(yàn)法則,系統(tǒng)每流入1A的電流需要1000uF,實(shí)際電容量要略大于這個(gè)值,所以為2200uF。Raspberry Pi 4 B的額定電流為3A,因此需要使用約3300uF的電容。您也可以選擇更高性能的電容,比如使用一個(gè)超級(jí)電容肯定會(huì)進(jìn)一步提高性能。電容的另一個(gè)優(yōu)點(diǎn)是也可以用于點(diǎn)焊。
您可以在心跳燈電路中使用這個(gè)簡(jiǎn)單的Python 3腳本。
[ begin heartbeat.py ]
#! /usr/bin/env python3 import RPi.GPIO as GPIO from time import sleep GPIO.setmode( GPIO.BCM ) # # Count 12 from the 3V3,5V pins at the top of the # GPIO header _led = 18 # BCM18/BOARD12/PWM0 pin GPIO.setup( _led , GPIO.OUT ) pwm = GPIO.PWM( _led, 100 ) pwm.start( 0 ) p=print _step = 3 def get_load(): _f = open( '/proc/loadavg', 'r' ) _buf = _f.read( 30 ) _f.close() return float ( _buf.split()[0] ) def get_delay(): _load = get_load() _delay_base = 0.2 if _load >= 0 and _load < 0.33: _delay = _delay_base elif _load < 0.66 and _load >= 0.33: _delay = _delay_base / 2 elif _load < 1 and _load >= 0.66: _delay = _delay_base / 3 elif _load < 1.33 and _load >=1: _delay = _delay_base / 4 elif _load < 1.66 and _load >= 1.33: _delay = _delay_base / 5 elif _load < 2 and _load >= 1.66: _delay = _delay_base / 6 elif _load < 2.33 and _load >= 2: _delay = _delay_base / 7 elif _load < 2.66 and _load >= 2.33: _delay = _delay_base / 8 elif _load < 3 and _load >= 2.66: _delay = _delay_base / 9 elif _load < 3.33 and _load >= 3: _delay = _delay_base / 10 elif _load < 3.66 and _load >= 3.33: _delay = _delay_base / 11 elif _load < 4 and _load >= 3.66: _delay = _delay_base / 12 else: _delay = _delay_base / 20 # GO FAST # ET CETERA return _delay if __name__ == '__main__': try: while True: for _it in range( 20, 100, _step ): pwm.ChangeDutyCycle( _it ) sleep( get_delay() ) sleep( 0.25 ) for _it in range( 100, 20, -(_step) ): pwm.ChangeDutyCycle( _it ) sleep( get_delay() ) sleep( 0.25 ) except KeyboardInterrupt: print( "[!] Caught ^C, breaking ..." ) # Stop the PWM now that we're leaving pwm.stop() # Clean up pin states, bring them all low GPIO.cleanup() exit()
[ end heartbeat.py ]
將腳本“heartbeat.py”放入“/home/pi”中,并使用如下指令確保在您的Pi啟動(dòng)時(shí)會(huì)開(kāi)始運(yùn)行腳本:
/bin/sh -c '/usr/bin/sudo -u pi /usr/bin/python3 /home/pi/heartbeat.py >/dev/null 2>&;1' &;
同樣,請(qǐng)務(wù)必將其放置在“exit 0”行上方。
現(xiàn)在,當(dāng)您的Pi沒(méi)有負(fù)載時(shí),您會(huì)看到穩(wěn)定跳動(dòng)的藍(lán)光,中等負(fù)載時(shí)看到以更高的頻率跳動(dòng)的藍(lán)光,并且每次您的Pi加載時(shí)都會(huì)出現(xiàn)快速跳動(dòng)。
然而,在這么簡(jiǎn)單的一個(gè)事物上投入時(shí)間還有一個(gè)更重要的原因。
這是中等負(fù)載下的一張照片:
一個(gè)舒緩的藍(lán)光跳動(dòng)節(jié)奏可以提示Pi操作者一切都在按照計(jì)劃進(jìn)行。
“我的PI崩潰了嗎?”—設(shè)法了解這一問(wèn)題的答案始終是必要的,尤其是當(dāng)您在運(yùn)行一個(gè)無(wú)顯示器系統(tǒng)時(shí)。如果Pi真的崩潰了,心跳燈將會(huì)死機(jī)并停止跳動(dòng),或者直接熄滅。
為了給您的Pi生成負(fù)載,請(qǐng)將以下內(nèi)容粘貼到您的終端中:
dd if=/dev/zero bs=1M of=/dev/zero &; dd if=/dev/zero bs=1M of=/dev/zero &; dd if=/dev/zero bs=1M of=/dev/zero &; dd if=/dev/zero bs=1M of=/dev/zero &; # Let it load, let it load, let it load ... sleep 120 kill $( jobs -p )
接下來(lái)請(qǐng)觀看我的小型Raspberry Pi 2 B+在重負(fù)載下的視頻剪輯(所有核的利用率均為100%):
冷卻并不容易,但是是十分必要的!我們采用被動(dòng)冷卻的方式從Raspberry交換熱量。
Lasse Efrayim Jespersen
Lasse出生在以色列,后來(lái)移居到較冷的緯度地區(qū)。出于個(gè)人興趣,他逐漸了解到了Perl的直接、C/C++的高效以及MicroPython的優(yōu)雅。他喜歡用ESP8266/ESP32/Raspberry Pi和Arduino來(lái)制作機(jī)器。
審核編輯黃宇
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9029瀏覽量
85207 -
VNC
+關(guān)注
關(guān)注
0文章
19瀏覽量
9254 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
557瀏覽量
22165
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論