Slim beheer van die Raspberry Pi -waaier met behulp van Python en Thingspeak: 7 stappe
Slim beheer van die Raspberry Pi -waaier met behulp van Python en Thingspeak: 7 stappe
Anonim
Slim beheer van die Raspberry Pi -waaier met behulp van Python en Thingspeak
Slim beheer van die Raspberry Pi -waaier met behulp van Python en Thingspeak

Kort oorsig

Die waaier is standaard direk gekoppel aan die GPIO - dit impliseer sy konstante werking. Ondanks die relatiewe stil werking van die waaier, is die deurlopende werking daarvan nie 'n effektiewe gebruik van 'n aktiewe verkoelingstelsel nie. Terselfdertyd kan die konstante werking van 'n waaier net irriterend wees. As Raspberry Pi ook afgeskakel is, werk die waaier steeds as die krag gekoppel is.

Hierdie artikel sal wys hoe u, met behulp van eenvoudige en nie ingewikkelde manipulasies nie, 'n bestaande verkoelingstelsel in 'n slim stelsel verander, wat slegs aangeskakel kan word wanneer die verwerker dit regtig nodig het. Die waaier word slegs aangeskakel as daar baie gebruik is, wat die kragverbruik en geraas van die waaier verminder. Verleng ook die lewensduur van die waaier deur dit af te hou wanneer dit nie nodig is nie.

Wat jy sal leer

Hoe om 'n Python-script te implementeer om 'n waaier te beheer op grond van die huidige temperatuur van Frambo CPU met behulp van aan-af-beheer met temperatuurhisterese. Hoe om data van u RaspberryPi na Things Speak Cloud te vervoer.

Voorrade

Die komponente wat u benodig vir hierdie projek is soos volg

  • Raspberry Pi 4 Rekenaar Model B 4GB
  • NPN transistor S8050330ohms weerstand
  • Armour -aluminiummetaalkas met dubbele waaiers vir Framboos Pi
  • Springkabels
  • Broodbord

Stap 1: Bou die kring

Bou die kring
Bou die kring
Bou die kring
Bou die kring

Die kring is redelik eenvoudig. Die krag van die waaier word onderbreek met behulp van NPN -transistor. In hierdie opset werk die transistor as 'n lae-kant skakelaar. Weerstand is slegs nodig om die stroom deur GPIO te beperk. Die GPIO van die Raspberry Pi het 'n maksimum stroomuitset van 16mA. Ek het 330 ohm gebruik, wat ons 'n basisstroom van ongeveer (5-0,7)/330 = 13mA gee. Ek het 'n NPN -transistor S8050 gekies, so dit is geen probleem om 'n 400mA -las van beide waaiers oor te skakel nie.

Stap 2: Teken CPU -temperatuur aan met ThingSpeak

Teken CPU -temperatuur aan met ThingSpeak
Teken CPU -temperatuur aan met ThingSpeak

ThingSpeak is 'n platform vir projekte gebaseer op die Internet of Things -konsep. Met hierdie platform kan u toepassings bou op grond van data wat van sensors ingesamel is. Die belangrikste kenmerke van ThingSpeak sluit in: real-time data-insameling, dataverwerking en visualisering. Met ThingSpeak API kan u nie net data stuur, stoor en toegang verkry nie, maar bied dit ook verskillende statistiese metodes om dit te verwerk.

ThingSpeak kan gewilde toestelle en dienste integreer, soos:

  • Arduino
  • Framboos pii
  • oBridge / RealTime.io
  • Elektriese imp
  • Mobiele en webtoepassings
  • Sosiale netwerke
  • Data -analise in MATLAB

Voordat ons begin, benodig u 'n rekening by ThingSpeak.

  1. Gaan na die volgende skakel en meld u aan by ThingSpeak.
  2. Nadat u u rekening geaktiveer het, meld aan.
  3. Gaan na Kanale -> My kanale
  4. Klik op die knoppie Nuwe kanaal.
  5. Voer die naam, beskrywing en velde in van die data wat u wil oplaai
  6. Klik op Save Channel -knoppie om al u instellings te stoor.

Ons benodig 'n API -sleutel wat ons later by die python -kode sal voeg om ons SVE -temperatuur na die Thingspeak -wolk te laai.

Klik op die API -sleutels -oortjie om die Write API -sleutel te kry

As u eers die Write API -sleutel het, is ons amper gereed om ons data op te laai.

Stap 3: Kry die CPU -temperatuur van 'n Framboos Pi met behulp van Python

Die skrif is gebaseer op die herwinning van die verwerker se temperatuur, wat elke sekonde plaasvind. Dit kan vanaf die terminale verkry word deur die opdrag vcgencmd met die parameter meet_temp uit te voer.

vcgencmd maat_temp

Subprocess.check_output () biblioteek is gebruik om die opdrag uit te voer en dan met behulp van gewone uitdrukking die werklike waarde uit die teruggekeerde string te onttrek.

vanaf subproses invoer check_output

vanaf herinvoer findalldef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). dekodeer () temp = float (findall ('\ d+\. / d+', temp) [0]) terugkeer (temp) druk (get_temp ())

Nadat die temperatuurwaarde gehaal is, moet data na die ThingSpeak -wolk gestuur word. Gebruik u Write API -sleutel om die myApi -veranderlike in die onderstaande Python -kode te verander.

vanaf urllib invoer versoek

vanaf her invoer vind alle tye vanaf die subproses invoer check_output myAPI = '################' baseURL = 'https://api.thingspeak.com/update?api_key=% s ' % myAPIdef get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). dekodeer () temp = float (findall (' / d+\. / d+', temp) [0]) terugkeer (temp) probeer: terwyl True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () sleep (1) behalwe KeyboardInterrupt: druk ("Uitgang ingedruk Ctrl+C")

Stap 4: Die waaier beheer op grond van temperatuur

Die onderstaande python -skrip implementeer logika wat die waaier aanskakel wanneer die temperatuur bo die temperatuur styg en slegs af as die temperatuur onder die drempel daal. Op hierdie manier kan die waaier nie vinnig aan- en uitskakel nie.

voer RPi. GPIO in as GPIO

import sys from re import findall from time import sleep from subproces import check_output def get_temp (): temp = check_output (["vcgencmd", "measure_temp"]). decode () temp = float (findall ('\ d+\. / d+ ', temp) [0]) terugkeer (temp) probeer: GPIO.setwarnings (Onwaar) tempOn = 50 drempel = 10 controlPin = 14 pinState = Valse GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, initial = 0) while True: temp = get_temp () if temp> tempOn and not pinState or temp <tempOn - threshold and pinState: pinState = not pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) slaap (1) behalwe KeyboardInterrupt: druk ("Uitgang ingedruk Ctrl+C") behalwe: druk ("Ander uitsondering") druk ("--- Begin uitsonderingsdata:") traceback.print_exc (limiet = 2, file = sys.stdout) print ("--- End Exception Data:") uiteindelik: print ("CleanUp") GPIO.cleanup () print ("Einde van program")

Stap 5: Finale Python -kode

Die hoof python -kode kan op my GitHub -rekening gevind word in die volgende skakel. Onthou om u eie Write API -sleutel te plaas.

  1. Teken in op u Raspberry PI -bord
  2. Voer die volgende opdrag uit op terminale

python3 cpu.py

Stap 6: Monitor data via Thingspeak Cloud

Monitor data via Thingspeak Cloud
Monitor data via Thingspeak Cloud

Na 'n rukkie, maak u kanaal oop op ThingSpeak, en u sal die temperatuur in real-time in die Thingspeak-wolk sien oplaai.

Stap 7: Begin die Python Script by opstart

Om dit te doen, aan die einde van die /etc/rc.local lêer:

sudo nano /etc/rc.local

U moet die script start -opdrag voor die lynuitgang 0 plaas:

sudo python /home/pi/cpu.py &

Die teenwoordigheid van die & -simbool aan die einde van die opdrag is verpligtend, aangesien dit 'n vlag is om die proses op die agtergrond te begin.