Cuprins:
- Provizii
- Pasul 1: Construirea circuitului
- Pasul 2: Înregistrați temperatura CPU cu ThingSpeak
- Pasul 3: Obținerea temperaturii procesorului de la un Raspberry Pi folosind Python
- Pasul 4: Controlul ventilatorului pe baza temperaturii
- Pasul 5: Codul final Python
- Pasul 6: Monitorizarea datelor prin Thingspeak Cloud
- Pasul 7: Rulați scriptul Python la pornire
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
Prezentare scurta
În mod implicit, ventilatorul este conectat direct la GPIO - aceasta implică funcționarea sa constantă. În ciuda funcționării relative silențioase a ventilatorului, funcționarea sa continuă nu este o utilizare eficientă a unui sistem de răcire activ. În același timp, funcționarea constantă a unui ventilator poate fi doar enervantă. De asemenea, dacă Raspberry Pi este oprit, ventilatorul va funcționa în continuare dacă alimentarea este conectată.
Acest articol va arăta cum, folosind manipulări simple și nu complicate, transformă un sistem de răcire existent într-unul inteligent, care va fi pornit doar atunci când procesorul are într-adevăr nevoie de el. Ventilatorul ar fi pornit numai atunci când există o utilizare intensă, reducând astfel consumul de energie al ventilatorului și zgomotul. De asemenea, extindeți durata de viață a ventilatorului, menținându-l oprit atunci când nu este necesar.
Ce vei învăța
Cum să implementați un script Python pentru a controla un ventilator pe baza temperaturii actuale a procesorului Raspberry folosind controlul On-Off cu histerezis de temperatură. Cum să transportați date de la RaspberryPi la Things Speak Cloud.
Provizii
Componentele care vă vor fi necesare pentru acest proiect sunt următoarele
- Raspberry Pi 4 Computer Model B 4GB
- Rezistor N80 tranzistor S8050330ohms
- Carcasă metalică din aluminiu Armor cu ventilatoare duale pentru Raspberry Pi
- Cabluri jumper
- Pană de pâine
Pasul 1: Construirea circuitului
Circuitul este destul de simplu. Alimentarea ventilatorului este întreruptă folosind tranzistorul NPN. În această configurație, tranzistorul acționează ca un comutator în partea de jos. Rezistorul este necesar doar pentru a limita curentul prin GPIO. GPIO-ul Raspberry Pi are o putere de curent maximă de 16 mA. Am folosit 330 ohmi, ceea ce ne oferă un curent de bază de aproximativ (5-0,7) / 330 = 13mA. Am selectat un tranzistor NPN S8050, deci comutarea unei sarcini de 400mA de la ambele ventilatoare nu este o problemă.
Pasul 2: Înregistrați temperatura CPU cu ThingSpeak
ThingSpeak este o platformă pentru proiecte bazate pe conceptul Internetului obiectelor. Această platformă vă permite să creați aplicații pe baza datelor colectate de la senzori. Principalele caracteristici ale ThingSpeak includ: colectarea datelor în timp real, procesarea datelor și vizualizarea. API-ul ThingSpeak nu numai că vă permite să trimiteți, să stocați și să accesați date, dar oferă și diverse metode statistice pentru prelucrarea acestora.
ThingSpeak poate integra dispozitive și servicii populare, cum ar fi:
- Arduino
- Zmeura pii
- oBridge / RealTime.io
- Imp electric
- Aplicații mobile și web
- Retele sociale
- Analiza datelor în MATLAB
Înainte de a începe, aveți nevoie de un cont la ThingSpeak.
- Accesați următorul link și înscrieți-vă la ThingSpeak.
- După activarea contului dvs., conectați-vă.
- Accesați Canale -> Canalele mele
- Faceți clic pe butonul Canal nou.
- Introduceți numele, descrierea și câmpurile datelor pe care doriți să le încărcați
- Faceți clic pe butonul Salvare canal pentru a salva toate setările.
Avem nevoie de o cheie API, pe care o vom adăuga ulterior la codul python pentru a încărca temperatura procesorului nostru în norul Thingspeak.
Faceți clic pe fila Chei API pentru a obține Scrie cheia API
Odată ce aveți cheia API de scriere, suntem aproape gata să încărcați datele noastre.
Pasul 3: Obținerea temperaturii procesorului de la un Raspberry Pi folosind Python
Scriptul se bazează pe recuperarea temperaturii procesorului, care are loc în fiecare secundă. Poate fi obținut de la terminal executând comanda vcgencmd cu parametrul measure_temp.
vcgencmd măsură_temp
Biblioteca Subprocess.check_output () a fost utilizată pentru a executa comanda și apoi a folosit expresia regulată pentru a extrage valoarea reală din șirul returnat.
din importul subprocesului check_output
din re import findalldef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d + \. / d +', temp) [0]) return (temp) print (get_temp ())
După preluarea valorii temperaturii, datele trebuie trimise în cloud ThingSpeak. Utilizați cheia API de scriere pentru a modifica variabila myApi din codul Python de mai jos.
din cererea de import urllib
din re import findall din timp import somn din subproces 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) exceptând KeyboardInterrupt: print („Ieșiți apăsat Ctrl + C”)
Pasul 4: Controlul ventilatorului pe baza temperaturii
Scriptul Python prezentat mai jos implementează logica care pornește ventilatorul atunci când temperatura crește peste tempOn și se oprește numai atunci când temperatura scade sub prag. În acest fel, ventilatorul nu se va porni și opri rapid.
importați RPi. GPIO ca GPIO
import sys from re import findall from time import sleep from subprocess import check_output def get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d + \. / d + ', temp) [0]) return (temp) try: GPIO.setwarnings (False) tempOn = 50 prag = 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)) sleep (1) exceptie KeyboardInterrupt: print ("Exit press Ctrl + C") exceptie: print ("Other Exception") print ("--- Start Exception Data:") traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") în cele din urmă: print ("CleanUp") GPIO.cleanup () print ("End of program")
Pasul 5: Codul final Python
Codul principal Python poate fi găsit pe contul meu GitHub în linkul următor. Nu uitați să puneți propria cheie API Write.
- Conectați-vă la placa dvs. Raspberry PI
- Rulați următoarea comandă pe terminal
python3 cpu.py
Pasul 6: Monitorizarea datelor prin Thingspeak Cloud
După un timp, deschide-ți canalul pe ThingSpeak și ar trebui să vezi temperatura încărcată în cloud-ul Thingspeak în timp real.
Pasul 7: Rulați scriptul Python la pornire
Pentru a face acest lucru, la sfârșitul fișierului /etc/rc.local:
sudo nano /etc/rc.local
Trebuie să plasați comanda de pornire a scriptului în fața ieșirii de linie 0:
sudo python /home/pi/cpu.py &
Prezența simbolului & la sfârșitul comenzii este obligatorie, deoarece este un steag pentru a începe procesul în fundal. După repornire, scriptul va rula automat și ventilatorul se va activa atunci când sunt îndeplinite condițiile specificate.