Sadržaj:
- Pribor
- Korak 1: Izgradnja kruga
- Korak 2: Zabilježite temperaturu CPU -a pomoću ThingSpeak -a
- Korak 3: Dobivanje temperature procesora s Raspberry Pi pomoću Pythona
- Korak 4: Upravljanje ventilatorom na temelju temperature
- Korak 5: Završni Python kod
- Korak 6: Nadgledanje podataka putem oblaka Thingspeak
- Korak 7: Pokrenite Python skriptu pri pokretanju
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Kratak pregled
Prema zadanim postavkama, ventilator je izravno spojen na GPIO - to podrazumijeva njegov stalni rad. Unatoč relativno tihom radu ventilatora, njegov kontinuirani rad nije učinkovita uporaba aktivnog rashladnog sustava. Istodobno, stalni rad ventilatora može samo smetati. Također, ako je Raspberry Pi isključen, ventilator će i dalje raditi ako je napajanje priključeno.
Ovaj će članak pokazati kako jednostavnim, a ne kompliciranim manipulacijama, postojeći sustav hlađenja pretvoriti u pametan, koji će se uključiti samo kada procesoru stvarno treba. Ventilator bi se uključio samo kad se intenzivno koristi, čime bi se smanjila potrošnja energije i buka ventilatora. Također produžava vijek trajanja ventilatora držeći ga isključenim kada nije potrebno.
Što ćete naučiti
Kako implementirati Python skriptu za upravljanje ventilatorom na temelju trenutne temperature Raspberry CPU-a pomoću On-Off kontrole s temperaturnom histerezom. Kako prenijeti podatke s vašeg RaspberryPi-a u Things Speak Cloud.
Pribor
Komponente koje ćete trebati za ovaj projekt su sljedeće
- Raspberry Pi 4 Model računala B 4GB
- NPN tranzistorski otpornik S8050330ohms
- Armor Aluminijsko metalno kućište s dvostrukim ventilatorima za Raspberry Pi
- Kratki kabeli
- Oglasna ploča
Korak 1: Izgradnja kruga
Krug je prilično jednostavan. Napajanje ventilatora isključeno je pomoću NPN tranzistora. U ovoj konfiguraciji, tranzistor djeluje kao prekidač s niske strane. Otpornik je potreban samo za ograničavanje struje kroz GPIO. GPIO Raspberry Pi ima maksimalni trenutni izlaz od 16 mA. Koristio sam 330 ohma što nam daje baznu struju od oko (5-0,7)/330 = 13mA. Odabrao sam NPN tranzistor S8050, pa prebacivanje opterećenja od 400 mA s oba ventilatora nije problem.
Korak 2: Zabilježite temperaturu CPU -a pomoću ThingSpeak -a
ThingSpeak je platforma za projekte temeljene na konceptu Interneta stvari. Ova platforma omogućuje vam izradu aplikacija na temelju podataka prikupljenih sa senzora. Glavne značajke ThingSpeaka uključuju: prikupljanje podataka u stvarnom vremenu, obradu podataka i vizualizaciju. ThingSpeak API ne samo da vam omogućuje slanje, pohranu i pristup podacima, već nudi i različite statističke metode za njihovu obradu.
ThingSpeak može integrirati popularne uređaje i usluge kao što su:
- Arduino
- Pii od maline
- oBridge / RealTime.io
- Električni imp
- Mobilne i web aplikacije
- Društvene mreže
- Analiza podataka u MATLAB -u
Prije nego počnemo, potreban vam je račun na ThingSpeaku.
- Idite na sljedeću vezu i prijavite se na ThingSpeak.
- Nakon aktivacije računa prijavite se.
- Idite na Kanali -> Moji kanali
- Pritisnite gumb Novi kanal.
- Unesite naziv, opis i polja podataka koje želite prenijeti
- Pritisnite Spremi kanal da biste spremili sve svoje postavke.
Potreban nam je API ključ koji ćemo kasnije dodati python kodu kako bismo prenijeli temperaturu procesora u oblak Thingspeak.
Pritisnite karticu API Keys (Ključevi API -ja) da biste dobili API API Key
Nakon što dobijete API API ključ, gotovo smo spremni za prijenos naših podataka.
Korak 3: Dobivanje temperature procesora s Raspberry Pi pomoću Pythona
Skripta se temelji na dohvaćanju temperature procesora, koja se javlja svake sekunde. Može se dobiti s terminala pokretanjem naredbe vcgencmd s parametrom mjera_temp.
vcgencmd mjera_templa
Biblioteka Subprocess.check_output () korištena je za izvršavanje naredbe, a zatim pomoću regularnog izraza za izdvajanje stvarne vrijednosti iz vraćenog niza.
iz uvoza podprocesa check_output
from re import findalldef get_temp (): temp = check_output (["vcgencmd", "mjera_temp"]). decode () temp = float (findall ('\ d+\. / d+', temp) [0]) return (temp) print (get_temp ())
Nakon što se dohvati vrijednost temperature, podatke je potrebno poslati u oblak ThingSpeak. Koristite svoj API API ključ za promjenu varijable myApi u donjem Python kodu.
iz zahtjeva za uvoz urllib
from re import findall from time import sleep sleep from subprocess 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) osim KeyboardInterrupt: print ("Izlaz je pritisnut Ctrl+C")
Korak 4: Upravljanje ventilatorom na temelju temperature
Python skripta prikazana u nastavku implementira logiku koja uključuje ventilator kada temperatura poraste iznad tempOn i isključi se tek kad temperatura padne ispod praga. Na ovaj način ventilator se neće brzo uključiti i isključiti.
uvezite RPi. GPIO kao GPIO
import sys from re import findall from time import sleep iz potprocesa import check_output def get_temp (): temp = check_output (["vcgencmd", "mjera_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, a ne pinState ili temp <tempOn - prag i pinState: pinState = ne pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) sleep (1) osim KeyboardInterrupt: print ("Izlaz pritisnut Ctrl+C") osim: print ("Druga iznimka") print ("--- Pokreni podatke o iznimkama:") traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") konačno: print ("CleanUp") GPIO.cleanup () print ("Kraj programa")
Korak 5: Završni Python kod
Glavni Python kod možete pronaći na mom GitHub računu na sljedećoj poveznici. Ne zaboravite staviti vlastiti API API ključ.
- Prijavite se na svoju Raspberry PI ploču
- Pokrenite sljedeću naredbu na terminalu
python3 cpu.py
Korak 6: Nadgledanje podataka putem oblaka Thingspeak
Nakon nekog vremena otvorite svoj kanal na ThingSpeaku i trebali biste vidjeti kako se temperatura prenosi u oblak Thingspeak u stvarnom vremenu.
Korak 7: Pokrenite Python skriptu pri pokretanju
Da biste to učinili, na kraju datoteke /etc/rc.local:
sudo nano /etc/rc.local
Morate postaviti naredbu pokretanja skripte ispred izlaza retka 0:
sudo python /home/pi/cpu.py &
Prisutnost & simbola na kraju naredbe obavezna je jer je to zastavica za pokretanje procesa u pozadini. Nakon ponovnog pokretanja, skripta će se automatski pokrenuti i ventilator će se uključiti kada su ispunjeni navedeni uvjeti.