這篇文章來(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)磁盤(pá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ě)入的磁盤(pán)。
例如:
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鍵盤(pán)及鼠標(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或其他類(lèi)似的基于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”并按下回車(chē)鍵。您將會(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。
輸入地址后,按下回車(chē)鍵,然后稍等片刻。系統(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)買(mǎi),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,您就可以使用“一般”名稱(chēng)進(jìn)行連接,從而解決這個(gè)問(wèn)題了?!癊xample.com”中包含了一個(gè)使用“一般”名稱(chēng)的示例,并且您無(wú)需記住IP地址就可以實(shí)現(xiàn)連接。想要記住IP地址“93.184.216.34”似乎有些麻煩,因?yàn)槟刑嘈枰涀〉氖虑榱恕?br />
但是,您可以輕松記住諸如“risingsun.csproject.org”之類(lèi)的地址。讓我們?cè)谀腜i上安裝一個(gè)動(dòng)態(tài)DNS客戶端,這樣就可以保證這個(gè)名稱(chēng)始終指向您的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ì)超前一些。
這種類(lèi)型的開(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硬盤(pán)的同時(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文章
9630瀏覽量
87100 -
VNC
+關(guān)注
關(guān)注
0文章
19瀏覽量
9395 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
616瀏覽量
22826
發(fā)布評(píng)論請(qǐng)先 登錄
如何在Raspberry Pi上安裝TensorFlow

如何在Raspbian上設(shè)置沒(méi)有顯示器和鍵盤(pán)的Raspberry Pi

【Raspberry Pi 3試用體驗(yàn)】搭建minidlna服務(wù)器(結(jié)項(xiàng)二)
請(qǐng)問(wèn)Raspberry Pi怎么傳輸視頻?
安裝Raspberry Pi Clock Hat的教程分享
怎樣在RaspberryPi上設(shè)置VNC服務(wù)器
基于諾基亞5110的Raspberry Pi帽子
如何將Raspberry Pi用作DNS服務(wù)器?

如何使用Raspberry Pi搭建VPN服務(wù)器

如何將Raspberry Pi用作Web服務(wù)器?

將Raspberry Pi設(shè)置為家庭媒體服務(wù)器

如何在Raspberry Pi零2W上阻止帶有Pi孔的廣告

使用Raspberry PI 4單板計(jì)算機(jī)構(gòu)建Samba NAS服務(wù)器

評(píng)論