Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Bygg kretsen
- Trinn 2: Logg CPU -temperatur med ThingSpeak
- Trinn 3: Få CPU -temperaturen fra en Raspberry Pi ved hjelp av Python
- Trinn 4: Kontrollere viften basert på temperatur
- Trinn 5: Endelig Python -kode
- Trinn 6: Overvåke data via Thingspeak Cloud
- Trinn 7: Kjør Python -scriptet ved oppstart
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Kort overblikk
Som standard er viften koblet direkte til GPIO - dette innebærer konstant drift. Til tross for den relativt stille driften av viften, er dens kontinuerlige drift ikke en effektiv bruk av et aktivt kjølesystem. Samtidig kan den konstante driften av en vifte bare være irriterende. Hvis Raspberry Pi også er slått av, vil viften fortsatt fungere hvis strømmen er tilkoblet.
Denne artikkelen viser hvordan man ved hjelp av enkle og ikke kompliserte manipulasjoner gjør et eksisterende kjølesystem til et smart, som bare slås på når prosessoren virkelig trenger det. Viften vil bare slås på når det er mye bruk, og dermed redusere vifteens strømforbruk og støy. Forlenger også viftelivet ved å holde den av når den ikke trengs.
Hva du vil lære
Hvordan implementere et Python-script for å kontrollere en vifte basert på gjeldende temperatur på Raspberry CPU ved å bruke On-Off-kontroll med temperaturhysterese. Hvordan transportere data fra RaspberryPi til Things Speak Cloud.
Rekvisita
Komponentene du trenger for dette prosjektet er som følger
- Raspberry Pi 4 datamaskin modell B 4 GB
- NPN transistor S8050330ohms motstand
- Armour Aluminium Metal Case med doble vifter for Raspberry Pi
- Hoppekabler
- Brødbrett
Trinn 1: Bygg kretsen
Kretsen er ganske enkel. Strømmen til viften kuttes ved bruk av NPN -transistor. I denne konfigurasjonen fungerer transistoren som en lavsidesbryter. Motstand er bare nødvendig for å begrense strømmen gjennom GPIO. Raspberry Pi's GPIO har en maksimal strømutgang på 16mA. Jeg brukte 330 ohm som gir oss en basestrøm på ca (5-0,7)/330 = 13mA. Jeg valgte en NPN -transistor S8050, så det er ikke noe problem å bytte en 400mA belastning fra begge viftene.
Trinn 2: Logg CPU -temperatur med ThingSpeak
ThingSpeak er en plattform for prosjekter basert på Internet of Things -konseptet. Denne plattformen lar deg bygge applikasjoner basert på data samlet inn fra sensorer. Hovedtrekkene i ThingSpeak inkluderer: datasamling i sanntid, databehandling og visualisering. ThingSpeak API lar deg ikke bare sende, lagre og få tilgang til data, men gir også forskjellige statistiske metoder for å behandle dem.
ThingSpeak kan integrere populære enheter og tjenester som:
- Arduino
- Bringebær pii
- oBridge / RealTime.io
- Elektrisk imp
- Mobil- og webapplikasjoner
- Sosiale nettverk
- Dataanalyse i MATLAB
Før vi begynner, trenger du en konto hos ThingSpeak.
- Gå til følgende lenke og registrer deg for ThingSpeak.
- Etter at kontoen din er aktivert, logger du på.
- Gå til Kanaler -> Mine kanaler
- Klikk på Ny kanal -knappen.
- Skriv inn navn, beskrivelse og felt for dataene du vil laste opp
- Klikk på Lagre kanal -knappen for å lagre alle innstillingene dine.
Vi trenger en API -nøkkel, som vi senere vil legge til i python -koden for å laste opp CPU -temperaturen til Thingspeak -skyen.
Klikk på kategorien API -nøkler for å få skrive -API -nøkkelen
Når du har Write API -nøkkelen, er vi nesten klare til å laste opp dataene våre.
Trinn 3: Få CPU -temperaturen fra en Raspberry Pi ved hjelp av Python
Skriptet er basert på å hente prosessortemperaturen, som skjer hvert sekund. Den kan hentes fra terminalen ved å kjøre vcgencmd -kommandoen med parameteren Measure_temp.
vcgencmd måle_temp
Subprocess.check_output () bibliotek ble brukt til å utføre kommandoen og deretter bruke vanlig uttrykk for å trekke ut den faktiske verdien fra den returnerte strengen.
fra subprosessimport check_output
fra re import findalldef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). dekode () temp = float (findall ('\ d+\. / d+', temp) [0]) retur (temp) print (get_temp ())
Etter at temperaturverdien er hentet, må data sendes til ThingSpeak -skyen. Bruk Write API -nøkkelen din til å endre myApi -variabelen i Python -koden nedenfor.
fra urllib importforespørsel
from re import findall from time import 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]) retur (temp) prøv: while True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () sleep (1) unntatt KeyboardInterrupt: print ("Avslutt trykket Ctrl+C")
Trinn 4: Kontrollere viften basert på temperatur
Python -skriptet vist nedenfor implementerer logikk som slår på viften når temperaturen stiger over tempOn og av bare når temperaturen synker under terskelen. På denne måten slås viften ikke av og på raskt.
importer RPi. GPIO som 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]) retur (temp) prøv: GPIO.setwarnings (False) tempOn = 50 terskel = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, initial = 0) while True: temp = get_temp () if temp> tempOn og ikke pinState eller temp <tempOn - terskel og pinState: pinState = ikke pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) sleep (1) unntatt KeyboardInterrupt: print ("Exit presset Ctrl+C") unntatt: print ("Other Exception") print ("--- Start Exception Data:") traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") finally: print ("CleanUp") GPIO.cleanup () print ("Programslutt")
Trinn 5: Endelig Python -kode
Hovedpythonkoden finner du på min GitHub -konto i følgende lenke. Husk å sette din egen Write API -nøkkel.
- Logg deg på Raspberry PI -kortet
- Kjør følgende kommando på terminalen
python3 cpu.py
Trinn 6: Overvåke data via Thingspeak Cloud
Etter en stund åpner du kanalen din på ThingSpeak, og du bør se temperaturen lastes opp til Thingspeak-skyen i sanntid.
Trinn 7: Kjør Python -scriptet ved oppstart
For å gjøre dette, på slutten av filen /etc/rc.local:
sudo nano /etc/rc.local
Du må plassere skriptstartkommandoen foran linjeutgang 0:
sudo python /home/pi/cpu.py &
Tilstedeværelsen av & -symbolet på slutten av kommandoen er obligatorisk, siden det er et flagg for å starte prosessen i bakgrunnen. Etter omstarten kjøres skriptet automatisk og viften slås på når de angitte betingelsene er oppfylt.