Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
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
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
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.
- Gå till följande länk och registrera dig för ThingSpeak.
- Logga in efter din kontoaktivering.
- Gå till Kanaler -> Mina kanaler
- Klicka på knappen Ny kanal.
- Ange namn, beskrivning och fält för data som du vill ladda upp
- 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.
- Logga in på ditt Raspberry PI -kort
- Kör följande kommando på terminalen
python3 cpu.py
Steg 6: Övervaka 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.