Inhoudsopgave:
- Benodigdheden
- Stap 1: Het circuit bouwen
- Stap 2: log CPU-temperatuur met ThingSpeak
- Stap 3: De CPU-temperatuur verkrijgen van een Raspberry Pi met Python
- Stap 4: De ventilator regelen op basis van temperatuur
- Stap 5: Laatste Python-code
- Stap 6: Gegevens bewaken via Thingspeak Cloud
- Stap 7: Voer het Python-script uit bij het opstarten
Video: Slimme bediening van Raspberry Pi-ventilator met Python & Thingspeak - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Kort overzicht
Standaard is de ventilator rechtstreeks aangesloten op de GPIO - dit impliceert een constante werking. Ondanks de relatief stille werking van de ventilator, is de continue werking ervan geen effectief gebruik van een actief koelsysteem. Tegelijkertijd kan de constante werking van een ventilator gewoon vervelend zijn. Ook als de Raspberry Pi is uitgeschakeld, werkt de ventilator nog steeds als de stroom is aangesloten.
Dit artikel laat zien hoe je met eenvoudige en niet gecompliceerde manipulaties een bestaand koelsysteem in een slim systeem verandert, dat alleen wordt ingeschakeld als de processor het echt nodig heeft. De ventilator wordt alleen ingeschakeld bij intensief gebruik, waardoor het stroomverbruik en het geluid van de ventilator worden verminderd. Verlengt ook de levensduur van de ventilator door hem uit te zetten wanneer hij niet nodig is.
Wat je gaat leren
Hoe een Python-script te implementeren om een ventilator te besturen op basis van de huidige temperatuur van de Raspberry CPU met behulp van aan-uit-regeling met temperatuurhysterese. Hoe gegevens van uw RaspberryPi naar Things Speak Cloud te transporteren.
Benodigdheden
De componenten die u voor dit project nodig hebt, zijn als volgt:
- Raspberry Pi 4 Computermodel B 4GB
- NPN-transistor S8050330ohm-weerstand:
- Armor aluminium metalen behuizing met dubbele ventilatoren voor Raspberry Pi
- Startkabels
- Breadboard
Stap 1: Het circuit bouwen
De schakeling is vrij eenvoudig. De stroom naar de ventilator wordt afgesneden met behulp van een NPN-transistor. In deze configuratie fungeert de transistor als een low-side schakelaar. Weerstand is alleen nodig om de stroom via GPIO te begrenzen. De GPIO van de Raspberry Pi heeft een maximale stroomuitgang van 16mA. Ik gebruikte 330 ohm, wat ons een basisstroom geeft van ongeveer (5-0,7)/330 = 13 mA. Ik heb gekozen voor een NPN-transistor S8050, dus het schakelen van een 400mA-belasting van beide ventilatoren is geen probleem.
Stap 2: log CPU-temperatuur met ThingSpeak
ThingSpeak is een platform voor projecten gebaseerd op het Internet of Things-concept. Met dit platform kun je applicaties bouwen op basis van data verzameld van sensoren. De belangrijkste kenmerken van ThingSpeak zijn: realtime gegevensverzameling, gegevensverwerking en visualisatie. ThingSpeak API stelt u niet alleen in staat om gegevens te verzenden, op te slaan en te openen, maar biedt ook verschillende statistische methoden om ze te verwerken.
ThingSpeak kan populaire apparaten en services integreren, zoals:
- Arduino
- Frambozenpi
- oBridge / RealTime.io
- elektrische imp
- Mobiele en webapplicaties
- Sociale netwerken
- Gegevensanalyse in MATLAB
Voordat we beginnen, heb je een account nodig bij ThingSpeak.
- Ga naar de volgende link en meld je aan bij ThingSpeak.
- Meld u aan na uw accountactivering.
- Ga naar Kanalen -> Mijn Kanalen
- Klik op de knop Nieuw kanaal.
- Voer de naam, beschrijving en velden in van de gegevens die u wilt uploaden
- Klik op de knop Kanaal opslaan om al uw instellingen op te slaan.
We hebben een API-sleutel nodig, die we later aan de python-code zullen toevoegen om onze CPU-temperatuur naar de Thingspeak-cloud te uploaden.
Klik op het tabblad API-sleutels om de API-sleutel schrijven te krijgen
Zodra u de Write API Key heeft, zijn we bijna klaar om onze gegevens te uploaden.
Stap 3: De CPU-temperatuur verkrijgen van een Raspberry Pi met Python
Het script is gebaseerd op het ophalen van de processortemperatuur, die elke seconde plaatsvindt. Het kan worden verkregen vanaf de terminal door de opdracht vcgencmd uit te voeren met de parameter measure_temp.
vcgencmd measure_temp
De bibliotheek Subprocess.check_output() werd gebruikt om de opdracht uit te voeren en vervolgens de reguliere expressie te gebruiken om de werkelijke waarde uit de geretourneerde tekenreeks te extraheren.
van subproces import check_output
van opnieuw importeren findalldef get_temp(): temp = check_output(["vcgencmd", "measure_temp"]).decode() temp = float(findall('\d+\.\d+', temp)[0]) return(temp) print(get_temp())
Nadat de temperatuurwaarde is opgehaald, moeten gegevens naar de ThingSpeak-cloud worden verzonden. Gebruik uw Write API Key om de myApi-variabele in de onderstaande Python-code te wijzigen.
van urllib-importverzoek
van opnieuw importeren findall van tijd importeren slaap van subproces importeren 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) try: while True: temp = get_temp() conn = request.urlopen(baseURL + '&field1=%s' % (temp)) print(str(temp)) conn.close() sleep(1) behalve KeyboardInterrupt: print ("Afsluiten ingedrukt Ctrl+C")
Stap 4: De ventilator regelen op basis van temperatuur
Het onderstaande Python-script implementeert logica die de ventilator inschakelt wanneer de temperatuur boven de tempOn stijgt en alleen uitgaat wanneer de temperatuur onder de drempel daalt. Zo gaat de ventilator niet snel aan en uit.
importeer RPi. GPIO als GPIO
import sys van re import findall van tijd import sleep van 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 drempel = 10 controlPin = 14 pinState = False GPIO.setmode(GPIO. BCM) GPIO.setup(controlPin, GPIO. OUT, initial=0) while True: temp = get_temp() if temp > tempOn en niet pinState of temp < tempOn - drempel en pinState: pinState = niet pinState GPIO.output(controlPin, pinState) print(str(temp) + " " + str(pinState)) sleep(1) behalve KeyboardInterrupt: print("Exit ingedrukt op Ctrl+C") behalve: print("Other Exception") print("--- Start Exception Data:") traceback.print_exc(limit=2, file=sys.stdout) print("--- End Exception Data:") tenslotte: print("CleanUp") GPIO.cleanup() print("Einde van programma")
Stap 5: Laatste Python-code
De belangrijkste python-code is te vinden op mijn GitHub-account via de volgende link. Vergeet niet om uw eigen Write API Key in te voeren.
- Log in op uw Raspberry PI-bord
- Voer de volgende opdracht uit op terminal:
python3 cpu.py
Stap 6: Gegevens bewaken via Thingspeak Cloud
Open na een tijdje je kanaal op ThingSpeak en je zou de temperatuur in realtime naar de Thingspeak-cloud moeten zien uploaden.
Stap 7: Voer het Python-script uit bij het opstarten
Om dit te doen, aan het einde van het bestand /etc/rc.local:
sudo nano /etc/rc.local
U moet het scriptstartcommando voor de regel exit 0 plaatsen:
sudo python /home/pi/cpu.py &
De aanwezigheid van het &-symbool aan het einde van de opdracht is verplicht, omdat het een vlag is om het proces op de achtergrond te starten. Na het opnieuw opstarten wordt het script automatisch uitgevoerd en wordt de ventilator ingeschakeld wanneer aan de opgegeven voorwaarden wordt voldaan.
Aanbevolen:
Slimme bureaulamp - Slimme verlichting met Arduino - Neopixels-werkruimte: 10 stappen (met afbeeldingen)
Slimme bureaulamp | Slimme verlichting met Arduino | Neopixels-werkruimte: tegenwoordig brengen we veel tijd thuis door, studeren en werken virtueel, dus waarom zouden we onze werkruimte niet groter maken met een aangepast en slim verlichtingssysteem op Arduino en Ws2812b-leds. Hier laat ik u zien hoe u uw Smart LED bureaulamp die
ESP8266 RGB LED STRIP WIFI-bediening - NODEMCU Als een IR-afstandsbediening voor ledstrip, bestuurd via wifi - RGB LED STRIP Smartphone-bediening: 4 stappen
ESP8266 RGB LED STRIP WIFI-bediening | NODEMCU Als een IR-afstandsbediening voor ledstrip, bestuurd via wifi | RGB LED STRIP Smartphone-bediening: Hallo allemaal, in deze tutorial zullen we leren hoe we nodemcu of esp8266 kunnen gebruiken als een IR-afstandsbediening om een RGB LED-strip te bedienen en Nodemcu zal worden bestuurd door smartphone via wifi. Dus in principe kun je de RGB LED STRIP bedienen met je smartphone
Eenvoudige bediening van My Car AC: 3 stappen
Eenvoudige bediening van My Car AC.: Ter voorbereiding van mijn auto-pc-automatiseringsproject moest ik de OEM-controller vervangen door een aan-uitschakelaar. Uiteindelijk schakelde de pc automatisch voor mij, maar voor nu moest ik de bedrading voor de AC-compressor isoleren en condenseren
RasbberryPi-auto met FPV-camera. Bediening via webbrowser: 31 stappen (met afbeeldingen)
RasbberryPi-auto met FPV-camera. Bediening via webbrowser: we zullen een 4wd-auto bouwen - de besturing zal vergelijkbaar zijn als in een tank - om de ene kant van de wielen te draaien, zal deze met een andere snelheid draaien dan de andere. Bij de auto wordt een camera op een speciale houder geplaatst waar we de camerapositie kunnen veranderen. De robot wordt
Digitale bediening van uw luidsprekers: 5 stappen
Digitale bediening van uw luidsprekers: als de geluidskaart van uw desktop-pc is aangesloten op een externe versterker en u het beu bent om deze los te koppelen en aan of uit te zetten, zult u dol zijn op deze instructable