Smart kontroll av Raspberry Pi -fläkt med Python & Thingspeak: 7 steg
Smart kontroll av Raspberry Pi -fläkt med Python & Thingspeak: 7 steg
Anonim
Smart kontroll av Raspberry Pi -fläkt med Python & Thingspeak
Smart kontroll av Raspberry Pi -fläkt med Python & Thingspeak

Kort överblick

Som standard är fläkten direkt ansluten till GPIO - detta innebär dess ständiga drift. Trots den relativt tysta driften av fläkten är dess kontinuerliga drift inte en effektiv användning av ett aktivt kylsystem. Samtidigt kan den konstanta driften av en fläkt bara vara irriterande. Om Raspberry Pi är avstängd fungerar fläkten fortfarande om strömmen är ansluten.

Denna artikel kommer att visa hur man med hjälp av enkla och inte komplicerade manipuleringar gör ett befintligt kylsystem till ett smart, som bara slås på när processorn verkligen behöver det. Fläkten skulle bara slås på när det används mycket, vilket minskar fläktens strömförbrukning och brus. Förlänger även fläktens livslängd genom att hålla den avstängd när den inte behövs.

Vad du kommer att lära dig

Hur man implementerar ett Python-skript för att styra en fläkt baserat på den aktuella temperaturen på Raspberry CPU med On-Off-kontroll med temperaturhysteres. Hur man transporterar data från din RaspberryPi till Things Speak Cloud.

Tillbehör

De komponenter du behöver för detta projekt är följande

  • Raspberry Pi 4 -dator modell B 4GB
  • NPN transistor S8050330ohms motstånd
  • Armor Aluminiummetallfodral med dubbla fläktar för Raspberry Pi
  • Startkablar
  • Bakbord

Steg 1: Bygg kretsen

Bygga kretsen
Bygga kretsen
Bygga kretsen
Bygga kretsen

Kretsen är ganska enkel. Strömmen till fläkten bryts med NPN -transistor. I denna konfiguration fungerar transistorn som en lågsidesbrytare. Motstånd krävs endast för att begränsa strömmen via GPIO. Raspberry Pi: s GPIO har en maximal strömeffekt på 16mA. Jag använde 330 ohm vilket ger oss en basström på ca (5-0,7)/330 = 13mA. Jag valde en NPN -transistor S8050, så att byta en 400mA belastning från båda fläktarna är inga problem.

Steg 2: Logga CPU -temperatur med ThingSpeak

Logga CPU -temperatur med ThingSpeak
Logga CPU -temperatur med ThingSpeak

ThingSpeak är en plattform för projekt baserade på Internet of Things -konceptet. Denna plattform låter dig bygga applikationer baserade på data som samlats in från sensorer. Huvuddragen i ThingSpeak inkluderar: datainsamling i realtid, databehandling och visualisering. ThingSpeak API låter dig inte bara skicka, lagra och komma åt data, utan ger också olika statistiska metoder för att bearbeta dem.

ThingSpeak kan integrera populära enheter och tjänster som:

  • Arduino
  • Hallon pii
  • oBridge / RealTime.io
  • Elektrisk imp
  • Mobil- och webbapplikationer
  • Sociala nätverk
  • Dataanalys i MATLAB

Innan vi börjar behöver du ett konto på ThingSpeak.

  1. Gå till följande länk och registrera dig för ThingSpeak.
  2. Logga in efter din kontoaktivering.
  3. Gå till Kanaler -> Mina kanaler
  4. Klicka på knappen Ny kanal.
  5. Ange namn, beskrivning och fält för data som du vill ladda upp
  6. Klicka på knappen Spara kanal för att spara alla dina inställningar.

Vi behöver en API -nyckel, som vi senare kommer att lägga till i pythonkoden för att ladda upp vår CPU -temperatur till Thingspeak -molnet.

Klicka på fliken API -nycklar för att få Skriv -API -nyckeln

När du har Skriv -API -nyckeln är vi nästan redo att ladda upp våra data.

Steg 3: Få CPU -temperaturen från en Raspberry Pi med Python

Skriptet är baserat på att hämta processortemperaturen, som sker varje sekund. Det kan hämtas från terminalen genom att köra kommandot vcgencmd med parameteren_mått_temp.

vcgencmd mått_temp

Subprocess.check_output () bibliotek användes för att utföra kommandot och sedan använda reguljärt uttryck för att extrahera det verkliga värdet från den returnerade strängen.

från delprocessimport check_output

från re import findalldef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d+\. / d+', temp) [0]) retur (temp) print (get_temp ())

När temperaturvärdet har hämtats måste data skickas till ThingSpeak -molnet. Använd din Skriv -API -nyckel för att ändra myApi -variabeln i Python -koden nedan.

från urllib import begäran

från re import findall från tid importera sleep från subprocessimport 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) försök: medan True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () sleep (1) utom KeyboardInterrupt: print ("Avsluta nedtryckt Ctrl+C")

Steg 4: Styr fläkten baserat på temperatur

Python -skriptet som visas nedan implementerar logik som slår på fläkten när temperaturen stiger över tempOn och stängs av endast när temperaturen sjunker under tröskeln. På så sätt slås fläkten inte på och av snabbt.

importera RPi. GPIO som GPIO

importera sys från re import findall från tid importera sömn från delprocessimport check_output def get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d+\. / d+ ', temp) [0]) retur (temp) försök: GPIO.setwarnings (False) tempOn = 50 tröskel = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, initial = 0) medan True: temp = get_temp () if temp> tempOn och inte pinState eller temp <tempOn - tröskel och pinState: pinState = inte pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) sleep (1) utom KeyboardInterrupt: print ("Avsluta nedtryckt Ctrl+C") utom: print ("Other Exception") print ("--- Start Exception Data:") traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") slutligen: print ("CleanUp") GPIO.cleanup () print ("Slut på program")

Steg 5: Slutlig Python -kod

Huvudpythonkoden finns på mitt GitHub -konto i följande länk. Kom ihåg att lägga din egen Write API -nyckel.

  1. Logga in på ditt Raspberry PI -kort
  2. Kör följande kommando på terminalen

python3 cpu.py

Steg 6: Övervaka data via Thingspeak Cloud

Övervakning av data via Thingspeak Cloud
Övervakning av data via Thingspeak Cloud

Efter ett tag, öppna din kanal på ThingSpeak och du bör se temperaturen laddas upp i Thingspeak-molnet i realtid.

Steg 7: Kör Python -skriptet vid start

För att göra detta, i slutet av filen /etc/rc.local:

sudo nano /etc/rc.local

Du måste placera skriptstartkommandot framför raden exit 0:

sudo python /home/pi/cpu.py &

Förekomsten av symbolen & i slutet av kommandot är obligatorisk, eftersom det är en flagga för att starta processen i bakgrunden. Efter omstarten körs skriptet automatiskt och fläkten slås på när de angivna villkoren är uppfyllda.