Inhoudsopgave:

Slimme bediening van Raspberry Pi-ventilator met Python & Thingspeak - Ajarnpa
Slimme bediening van Raspberry Pi-ventilator met Python & Thingspeak - Ajarnpa

Video: Slimme bediening van Raspberry Pi-ventilator met Python & Thingspeak - Ajarnpa

Video: Slimme bediening van Raspberry Pi-ventilator met Python & Thingspeak - Ajarnpa
Video: Zigbee реле с энергомониторингом для DIN рейки, интеграция в Home Assistant 2024, Juli-
Anonim
Slimme bediening van Raspberry Pi-ventilator met Python & Thingspeak
Slimme bediening van Raspberry Pi-ventilator met Python & Thingspeak

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

Het circuit bouwen
Het circuit bouwen
Het circuit bouwen
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

Log CPU-temperatuur met ThingSpeak
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.

  1. Ga naar de volgende link en meld je aan bij ThingSpeak.
  2. Meld u aan na uw accountactivering.
  3. Ga naar Kanalen -> Mijn Kanalen
  4. Klik op de knop Nieuw kanaal.
  5. Voer de naam, beschrijving en velden in van de gegevens die u wilt uploaden
  6. 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.

  1. Log in op uw Raspberry PI-bord
  2. Voer de volgende opdracht uit op terminal:

python3 cpu.py

Stap 6: Gegevens bewaken via Thingspeak Cloud

Gegevens bewaken via Thingspeak Cloud
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: