Obsah:
- Zásoby
- Krok 1: Budovanie obvodu
- Krok 2: Zaznamenajte teplotu procesora pomocou ThingSpeak
- Krok 3: Získanie teploty CPU z Raspberry Pi pomocou Pythonu
- Krok 4: Ovládanie ventilátora na základe teploty
- Krok 5: Finálny kód Pythonu
- Krok 6: Monitorovanie údajov prostredníctvom cloudu Thingspeak
- Krok 7: Spustite skript Python pri spustení
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Stručný prehľad
V predvolenom nastavení je ventilátor priamo pripojený k GPIO - to znamená, že je neustále v prevádzke. Napriek relatívne tichému chodu ventilátora nie je jeho nepretržitá prevádzka efektívnym využitím aktívneho chladiaceho systému. Nepretržitá prevádzka ventilátora môže byť zároveň nepríjemná. Aj keď je Raspberry Pi vypnutý, ventilátor bude fungovať, ak je pripojené napájanie.
Tento článok ukáže, ako pomocou jednoduchých a nie komplikovaných manipulácií zmeniť existujúci chladiaci systém na inteligentný, ktorý sa zapne iba vtedy, keď to procesor skutočne potrebuje. Ventilátor by sa zapínal iba vtedy, ak je intenzívne používaný, čím sa zníži spotreba energie a hluk ventilátora. Tiež predlžuje životnosť ventilátora tým, že ho vypne, keď nie je potrebný.
Čo sa naučíte
Ako implementovať skript Pythonu na ovládanie ventilátora na základe aktuálnej teploty CPU Raspberry pomocou ovládania On-Off s teplotnou hysteréziou. Ako prenášať údaje z vášho RaspberryPi do programu Things Speak Cloud.
Zásoby
Komponenty, ktoré budete potrebovať pre tento projekt, sú nasledujúce
- Počítač Raspberry Pi 4, model B 4 GB
- NPN tranzistor S8050330ohms odpor
- Hliníkové kovové puzdro Armor s dvoma ventilátormi pre Raspberry Pi
- Prepojovacie káble
- Breadboard
Krok 1: Budovanie obvodu
Obvod je veľmi jednoduchý. Napájanie ventilátora je prerušené pomocou tranzistora NPN. V tejto konfigurácii tranzistor funguje ako prepínač spodnej strany. Rezistor je potrebný iba na obmedzenie prúdu prostredníctvom GPIO. GPIO Raspberry Pi má maximálny prúdový výstup 16mA. Použil som 330 ohmov, čo nám dáva základný prúd asi (5-0,7)/330 = 13mA. Vybral som NPN tranzistor S8050, takže prepínať 400mA záťaž z oboch ventilátorov nie je problém.
Krok 2: Zaznamenajte teplotu procesora pomocou ThingSpeak
ThingSpeak je platforma pre projekty založené na koncepte internetu vecí. Táto platforma vám umožňuje vytvárať aplikácie na základe údajov zhromaždených zo senzorov. Medzi hlavné vlastnosti ThingSpeak patrí: zber údajov v reálnom čase, spracovanie údajov a vizualizácia. ThingSpeak API vám umožňuje nielen odosielať, ukladať a pristupovať k údajom, ale poskytuje aj rôzne štatistické metódy na ich spracovanie.
ThingSpeak môže integrovať obľúbené zariadenia a služby, ako napríklad:
- Arduino
- Malina pii
- oBridge / RealTime.io
- Elektrický imp
- Mobilné a webové aplikácie
- Sociálne siete
- Analýza údajov v MATLABe
Predtým, ako začneme, potrebujete účet v ThingSpeak.
- Prejdite na nasledujúci odkaz a zaregistrujte sa do ThingSpeak.
- Po aktivácii účtu sa prihláste.
- Prejdite na Kanály -> Moje kanály
- Kliknite na tlačidlo Nový kanál.
- Zadajte názov, popis a polia údajov, ktoré chcete nahrať
- Kliknutím na tlačidlo Uložiť kanál uložíte všetky svoje nastavenia.
Potrebujeme kľúč API, ktorý neskôr pridáme do kódu pythonu, aby sme mohli nahrať teplotu svojho procesora do cloudu Thingspeak.
Kliknutím na kartu API Keys získate kľúč Write API
Keď budete mať kľúč API rozhrania Write, sme takmer pripravení nahrať naše údaje.
Krok 3: Získanie teploty CPU z Raspberry Pi pomocou Pythonu
Skript je založený na načítaní teploty procesora, ktorá sa vyskytuje každú sekundu. Môžete ho získať z terminálu spustením príkazu vcgencmd s parametrom opatření_temp.
vcgencmd meraj_teplotu
Na vykonanie príkazu bola použitá knižnica Subprocess.check_output () a potom pomocou regulárneho výrazu extrahovaná aktuálna hodnota z vráteného reťazca.
z importu podprocesu check_output
from re import findalldef get_temp (): temp = check_output (["vcgencmd", "opatření_temp"]). decode () temp = float (findall ('\ d+\. / d+', temp) [0]) return (temp) print (get_temp ())
Po načítaní hodnoty teploty je potrebné odoslať údaje do cloudu ThingSpeak. Na zmenu premennej myApi v nižšie uvedenom kóde Pythonu použite svoj kľúč API API.
z žiadosti o import adresy URL
z opätovného importu findall z času import spánku z podprocesu import check_output myAPI = '###################' baseURL = 'https://api.thingspeak.com/update?api_key=% s ' % myAPIdef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall (' / d+\. / d+', temp) [0]) return (temp) try: while True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () sleep (1) okrem KeyboardInterrupt: print ("Ukončiť stlačením Ctrl+C")
Krok 4: Ovládanie ventilátora na základe teploty
Skript Python zobrazený nižšie implementuje logiku, ktorá zapne ventilátor, keď teplota vystúpi nad teplotu tempOn, a vypne sa iba vtedy, keď teplota klesne pod prahovú hodnotu. Ventilátor sa tak nebude rýchlo zapínať a vypínať.
importujte RPi. GPIO ako GPIO
import sys from re import findall from time import sleep from subprocess import check_output def get_temp (): temp = check_output (["vcgencmd", "opatření_temp"]). decode () temp = float (findall ('\ d+\. / d+ ', temp) [0]) return (temp) try: GPIO.setwarnings (False) tempOn = 50 prah = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, initial = 0) while True: temp = get_temp () if temp> tempOn and not pinState or temp <tempOn - threshold and pinState: pinState = not pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) spánok (1) okrem KeyboardInterrupt: print ("ExitPress Ctrl+C") okrem: print ("Other Exception") print ("--- Start Exception Data:") traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") konečne: print ("CleanUp") GPIO.cleanup () print ("End of program")
Krok 5: Finálny kód Pythonu
Hlavný kód pythonu nájdete na mojom účte GitHub v nasledujúcom odkaze. Nezabudnite zadať svoj vlastný kľúč API rozhrania Write.
- Prihláste sa na svoju dosku Raspberry PI
- Na termináli spustite nasledujúci príkaz
python3 cpu.py
Krok 6: Monitorovanie údajov prostredníctvom cloudu Thingspeak
Po chvíli otvorte svoj kanál na ThingSpeak a mali by ste vidieť, ako sa teplota nahráva do cloudu Thingspeak v reálnom čase.
Krok 7: Spustite skript Python pri spustení
Ak to chcete urobiť, na konci súboru /etc/rc.local:
sudo nano /etc/rc.local
Pred ukončenie riadka 0 musíte umiestniť príkaz na spustenie skriptu:
sudo python /home/pi/cpu.py &
Prítomnosť symbolu & na konci príkazu je povinná, pretože ide o príznak na spustenie procesu na pozadí. Po reštarte sa skript automaticky spustí a ventilátor sa zapne, keď sú splnené stanovené podmienky.