Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Opbygning af kredsløbet
- Trin 2: Log CPU -temperatur med ThingSpeak
- Trin 3: Hent CPU -temperaturen fra en Raspberry Pi ved hjælp af Python
- Trin 4: Styring af blæseren baseret på temperatur
- Trin 5: Endelig Python -kode
- Trin 6: Overvågning af data via Thingspeak Cloud
- Trin 7: Kør Python -scriptet ved opstart
Video: Smart styring af Raspberry Pi -ventilator ved hjælp af Python & Thingspeak: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Kort overblik
Som standard er blæseren forbundet direkte til GPIO - dette indebærer dens konstante drift. På trods af ventilatorens relativt stille drift er dens kontinuerlige drift ikke en effektiv brug af et aktivt kølesystem. På samme tid kan den konstante drift af en blæser bare være irriterende. Hvis Raspberry Pi også er slukket, fungerer blæseren stadig, hvis strømmen er tilsluttet.
Denne artikel viser, hvordan man ved hjælp af enkle og ikke komplicerede manipulationer gør et eksisterende kølesystem til et smart, som kun tændes, når processoren virkelig har brug for det. Ventilatoren ville kun blive tændt, når der er stor brug, hvilket reducerer ventilatorens strømforbrug og støj. Forlænger også ventilatorens levetid ved at holde den slukket, når den ikke er nødvendig.
Hvad du vil lære
Sådan implementeres et Python-script til at styre en blæser baseret på den aktuelle temperatur på Raspberry CPU ved hjælp af On-Off-kontrol med temperaturhysterese. Sådan transporteres data fra din RaspberryPi til Things Speak Cloud.
Forbrugsvarer
De komponenter, du skal bruge til dette projekt, er som følger
- Raspberry Pi 4 Computer Model B 4GB
- NPN transistor S8050330ohms modstand
- Armor Aluminium Metal Case med Dual Fans til Raspberry Pi
- Jumper kabler
- Brødbræt
Trin 1: Opbygning af kredsløbet
Kredsløbet er ret simpelt. Strømmen til blæseren afbrydes ved hjælp af NPN -transistor. I denne konfiguration fungerer transistoren som en lavsideswitch. Modstand er kun påkrævet for at begrænse strømmen gennem GPIO. Raspberry Pi’s GPIO har en maksimal strømudgang på 16mA. Jeg brugte 330 ohm, hvilket giver os en basisstrøm på ca. (5-0,7)/330 = 13mA. Jeg valgte en NPN transistor S8050, så det er ikke noget problem at skifte en 400mA belastning fra begge ventilatorer.
Trin 2: Log CPU -temperatur med ThingSpeak
ThingSpeak er en platform for projekter baseret på Internet of Things -konceptet. Denne platform giver dig mulighed for at bygge applikationer baseret på data indsamlet fra sensorer. Hovedtrækkene i ThingSpeak omfatter: dataindsamling i realtid, databehandling og visualisering. ThingSpeak API giver dig ikke kun mulighed for at sende, gemme og få adgang til data, men giver også forskellige statistiske metoder til behandling af dem.
ThingSpeak kan integrere populære enheder og tjenester såsom:
- Arduino
- Hindbær pii
- oBridge / RealTime.io
- Elektrisk imp
- Mobil- og webapplikationer
- Sociale netværk
- Dataanalyse i MATLAB
Inden vi starter, har du brug for en konto på ThingSpeak.
- Gå til følgende link, og tilmeld dig ThingSpeak.
- Efter din kontoaktivering skal du logge ind.
- Gå til Kanaler -> Mine kanaler
- Klik på knappen Ny kanal.
- Indtast navn, beskrivelse og felter for de data, du vil uploade
- Klik på knappen Gem kanal for at gemme alle dine indstillinger.
Vi har brug for en API -nøgle, som vi senere vil tilføje til python -kode for at uploade vores CPU -temperatur til Thingspeak -skyen.
Klik på fanen API -nøgler for at få Skriv API -nøglen
Når du har Skriv API -nøglen, er vi næsten klar til at uploade vores data.
Trin 3: Hent CPU -temperaturen fra en Raspberry Pi ved hjælp af Python
Scriptet er baseret på en hentning af processortemperaturen, som forekommer hvert sekund. Det kan hentes fra terminalen ved at køre kommandoen vcgencmd med parameteren_temp.
vcgencmd måle_temp
Subprocess.check_output () bibliotek blev brugt til at udføre kommandoen og derefter bruge regulært udtryk til at udtrække den faktiske værdi fra den returnerede streng.
fra underprocesimport check_output
fra re import findalldef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d+\. / d+', temp) [0]) return (temp) print (get_temp ())
Efter at temperaturværdien er hentet, skal data sendes til ThingSpeak -skyen. Brug din Write API -nøgle til at ændre myApi -variablen i nedenstående Python -kode.
fra urllib importanmodning
fra re import findall fra tid import sleep fra 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) prøv: mens True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () sleep (1) undtagen KeyboardInterrupt: print ("Afslut trykket Ctrl+C")
Trin 4: Styring af blæseren baseret på temperatur
Python -script vist nedenfor implementerer logik, der tænder blæseren, når temperaturen stiger over tempOn og slukkes, når temperaturen falder under tærsklen. På denne måde tænder og slukker blæseren ikke hurtigt.
importer RPi. GPIO som GPIO
import sys fra re import findall fra tid import sleep fra subproces 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 tærskel = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, initial = 0) mens True: temp = get_temp () if temp> tempOn og ikke pinState eller temp <tempOn - tærskel og pinState: pinState = ikke pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) sleep (1) undtagen KeyboardInterrupt: print ("Exit presset Ctrl+C") undtagen: 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")
Trin 5: Endelig Python -kode
Hovedpythonkoden kan findes på min GitHub -konto i det følgende link. Husk at sætte din egen Write API -nøgle.
- Log ind på dit Raspberry PI -kort
- Kør følgende kommando på terminalen
python3 cpu.py
Trin 6: Overvågning af data via Thingspeak Cloud
Efter et stykke tid skal du åbne din kanal på ThingSpeak, og du skal se temperaturen uploades til Thingspeak-skyen i realtid.
Trin 7: Kør Python -scriptet ved opstart
For at gøre dette i slutningen af filen /etc/rc.local:
sudo nano /etc/rc.local
Du skal placere scriptstartkommandoen foran linjeudgang 0:
sudo python /home/pi/cpu.py &
Tilstedeværelsen af & -symbolet i slutningen af kommandoen er obligatorisk, da det er et flag til at starte processen i baggrunden. Efter genstart kører scriptet automatisk, og ventilatoren tændes, når de angivne betingelser er opfyldt.
Anbefalede:
Styring af 2 servoer ved hjælp af analog joystick .: 5 trin (med billeder)
Kontrol af 2 servoer ved hjælp af analog joystick .: Hej fyre, dette er min første instruerbare og i dette indlæg deler jeg, hvordan du bruger Analog Joystick til at styre servoer ved hjælp af Arduino UNO. Jeg vil prøve at forklare det så enkelt som muligt håber du kan lide det
Styring af syv segmentvisning ved hjælp af Arduino og 74HC595 skiftregister: 6 trin
Kontrol af syv segmenters display ved hjælp af Arduino og 74HC595 Shift Register: Hey, hvad sker der, fyre! Akarsh her fra CETech. Seven Segment Displays er gode at se på og er altid et praktisk værktøj til at vise data i form af cifre, men der er en ulempe ved dem, som er, at når vi styrer et Seven Segment Display i real
Styring af Raspberry Pi ved hjælp af Matlab: 5 trin
Styring af Raspberry Pi ved hjælp af Matlab: Hey, denne vejledning handler om at kontrollere din hovedløse hindbærpi ved hjælp af matlab. Du skal muligvis installere matlab til den nyeste version for at understøtte et nyere hindbær pi -bord
Fading/styring af LED/lysstyrke ved hjælp af potentiometer (variabel modstand) og Arduino Uno: 3 trin
Fading/styring af LED/lysstyrke Brug af potentiometer (variabel modstand) og Arduino Uno: Arduino analog indgangsstik er forbundet til udgangen af potentiometer. Så Arduino ADC (analog til digital konverter) analog pin læser udgangsspændingen af potentiometeret. Drejning af potentiometerknappen varierer spændingsudgangen og Arduino re
RF 433MHZ radiostyring ved hjælp af HT12D HT12E - Lav en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: 5 trin
RF 433MHZ radiostyring ved hjælp af HT12D HT12E | Oprettelse af en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: I denne instruktør vil jeg vise dig, hvordan du laver en RADIO -fjernbetjening ved hjælp af 433mhz sendermodtagermodul med HT12E -kode & HT12D -dekoder IC.I denne instruktive kan du sende og modtage data ved hjælp af meget meget billige KOMPONENTER SOM: HT