Innholdsfortegnelse:

Smart kontroll av Raspberry Pi -vifte ved hjelp av Python & Thingspeak: 7 trinn
Smart kontroll av Raspberry Pi -vifte ved hjelp av Python & Thingspeak: 7 trinn

Video: Smart kontroll av Raspberry Pi -vifte ved hjelp av Python & Thingspeak: 7 trinn

Video: Smart kontroll av Raspberry Pi -vifte ved hjelp av Python & Thingspeak: 7 trinn
Video: Vegan Since 1951! 32 Years Raw! A Natural Man of Many Skills; Mark Huberman 2024, November
Anonim
Smart kontroll av Raspberry Pi -vifte ved hjelp av Python & Thingspeak
Smart kontroll av Raspberry Pi -vifte ved hjelp av Python & Thingspeak

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

Bygg kretsen
Bygg kretsen
Bygg kretsen
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

Logg CPU -temperatur med ThingSpeak
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.

  1. Gå til følgende lenke og registrer deg for ThingSpeak.
  2. Etter at kontoen din er aktivert, logger du på.
  3. Gå til Kanaler -> Mine kanaler
  4. Klikk på Ny kanal -knappen.
  5. Skriv inn navn, beskrivelse og felt for dataene du vil laste opp
  6. 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.

  1. Logg deg på Raspberry PI -kortet
  2. Kjør følgende kommando på terminalen

python3 cpu.py

Trinn 6: Overvåke data via Thingspeak Cloud

Overvåke data via Thingspeak Cloud
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.

Anbefalt: