Kazalo:

Pametno krmiljenje ventilatorja Raspberry Pi z uporabo Pythona in Thingspeak: 7 korakov
Pametno krmiljenje ventilatorja Raspberry Pi z uporabo Pythona in Thingspeak: 7 korakov

Video: Pametno krmiljenje ventilatorja Raspberry Pi z uporabo Pythona in Thingspeak: 7 korakov

Video: Pametno krmiljenje ventilatorja Raspberry Pi z uporabo Pythona in Thingspeak: 7 korakov
Video: CS50 2015 – первая неделя 2024, Julij
Anonim
Pametno krmiljenje ventilatorja Raspberry Pi z uporabo Pythona in Thingspeaka
Pametno krmiljenje ventilatorja Raspberry Pi z uporabo Pythona in Thingspeaka

Kratek pregled

Privzeto je ventilator neposredno povezan z GPIO - to pomeni njegovo stalno delovanje. Kljub relativno tihemu delovanju ventilatorja njegovo neprekinjeno delovanje ni učinkovita uporaba aktivnega hladilnega sistema. Hkrati je lahko stalno delovanje ventilatorja samo nadležno. Če je Raspberry Pi izklopljen, bo ventilator še vedno deloval, če je napajanje priključeno.

Ta članek bo pokazal, kako z enostavnimi in nezapletenimi manipulacijami obstoječi hladilni sistem spremeniti v pametnega, ki se bo vklopil le, ko ga procesor res potrebuje. Ventilator bi se vklopil le ob močni uporabi, kar bi zmanjšalo porabo energije ventilatorja in hrup. Prav tako podaljšuje življenjsko dobo ventilatorja, tako da ga izklopite, kadar ni potrebno.

Kaj se boste naučili

Kako implementirati skript Python za nadzor ventilatorja glede na trenutno temperaturo procesorja Raspberry z uporabo On-Off kontrole s temperaturno histerezo. Kako prenesti podatke iz vašega RaspberryPi v Things Speak Cloud.

Zaloge

Za ta projekt boste potrebovali naslednje komponente

  • Računalniški model Raspberry Pi 4 B 4 GB
  • NPN tranzistor S8050330ohms upor
  • Armor Aluminijasto kovinsko ohišje z dvojnimi ventilatorji za Raspberry Pi
  • Mostični kabli
  • Ogledna plošča

1. korak: Izdelava vezja

Gradnja vezja
Gradnja vezja
Gradnja vezja
Gradnja vezja

Vezje je precej preprosto. Napajanje ventilatorja se prekine s tranzistorjem NPN. V tej konfiguraciji tranzistor deluje kot stikalo na spodnji strani. Upor je potreben le za omejevanje toka prek GPIO. GPIO Raspberry Pi ima največji tok 16 mA. Uporabil sem 330 ohmov, kar nam daje osnovni tok približno (5-0,7)/330 = 13 mA. Izbral sem tranzistor NPN S8050, zato preklop 400mA obremenitve z obeh ventilatorjev ni problem.

Korak: Zabeležite temperaturo procesorja s ThingSpeakom

Zapis temperature CPU z ThingSpeak
Zapis temperature CPU z ThingSpeak

ThingSpeak je platforma za projekte, ki temeljijo na konceptu interneta stvari. Ta platforma vam omogoča izdelavo aplikacij na podlagi podatkov, zbranih s senzorjev. Glavne značilnosti ThingSpeaka vključujejo: zbiranje podatkov v realnem času, obdelavo in vizualizacijo podatkov. ThingSpeak API ne samo, da vam omogoča pošiljanje, shranjevanje in dostop do podatkov, temveč ponuja tudi različne statistične metode za njihovo obdelavo.

ThingSpeak lahko vključuje priljubljene naprave in storitve, kot so:

  • Arduino
  • Malina pii
  • oBridge / RealTime.io
  • Električni imp
  • Mobilne in spletne aplikacije
  • Socialna omrežja
  • Analiza podatkov v MATLAB -u

Preden začnemo, potrebujete račun pri ThingSpeak.

  1. Pojdite na naslednjo povezavo in se prijavite v ThingSpeak.
  2. Po aktivaciji računa se prijavite.
  3. Pojdite na Kanali -> Moji kanali
  4. Kliknite gumb Nov kanal.
  5. Vnesite ime, opis in polja podatkov, ki jih želite naložiti
  6. Če želite shraniti vse nastavitve, kliknite gumb Shrani kanal.

Potrebujemo ključ API, ki ga bomo kasneje dodali v kodo python, da prenesemo temperaturo procesorja v oblak Thingspeak.

Kliknite zavihek API Keys (Ključi API), da dobite Write API Key

Ko imate ključ API za pisanje, smo skoraj pripravljeni naložiti naše podatke.

3. korak: Dobivanje temperature CPE -ja z Raspberry Pi z uporabo Pythona

Skript temelji na pridobivanju temperature procesorja, ki se pojavi vsako sekundo. Do njega lahko pridete s terminalom tako, da zaženete ukaz vcgencmd s parametrom mere_temp.

vcgencmd ukrep_temp

Knjižnica Subprocess.check_output () je bila uporabljena za izvajanje ukaza in nato z regularnim izrazom za izvlečenje dejanske vrednosti iz vrnjenega niza.

iz uvoza podprocesa check_output

od ponovnega uvoza findalldef get_temp (): temp = check_output (["vcgencmd", "asure_temp "]). decode () temp = float (findall ('\ d+\. / d+', temp) [0]) return (temp) print (get_temp ())

Ko je vrednost temperature pridobljena, je treba podatke poslati v oblak ThingSpeak. S ključem API za pisanje spremenite spremenljivko myApi v spodnji kodi Python.

iz zahteve za uvoz urllib

from re import findall from time import sleep iz podprocesa import 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) poskusi: medtem ko True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () sleep (1) razen KeyboardInterrupt: print ("Izhod pritisnjen Ctrl+C")

4. korak: Upravljanje ventilatorja glede na temperaturo

Spodnji scenarij Python izvaja logiko, ki vklopi ventilator, ko temperatura naraste nad tempOn in izklopi le, ko temperatura pade pod prag. Tako se ventilator ne bo hitro vklopil in izklopil.

uvozite RPi. GPIO kot GPIO

uvoz sys iz ponovnega uvoza findall iz časa uvoz spanja iz podprocesa uvoz check_output def get_temp (): temp = check_output (["vcgencmd", "mere_temp"]). decode () temp = float (findall ('\ d+\. / d+ ', temp) [0]) return (temp) try: GPIO.setwarnings (False) tempOn = 50 prag = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, začetno = 0) medtem ko je True: temp = get_temp () if temp> tempOn in ne pinState ali temp <tempOn - prag in pinState: pinState = ne pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) sleep (1) razen KeyboardInterrupt: print ("Izhod pritisnjen Ctrl+C") razen: print ("Other Exception") print ("--- Start Exception Data:") traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") končno: print ("CleanUp") GPIO.cleanup () print ("End of program")

5. korak: Končna koda Python

Glavno kodo python najdete v mojem računu GitHub na naslednji povezavi. Ne pozabite vnesti lastnega ključa API za pisanje.

  1. Prijavite se na ploščo Raspberry PI
  2. Na terminalu zaženite naslednji ukaz

python3 cpu.py

Korak 6: Spremljanje podatkov prek oblaka Thingspeak

Spremljanje podatkov prek oblaka Thingspeak
Spremljanje podatkov prek oblaka Thingspeak

Čez nekaj časa odprite svoj kanal na ThingSpeaku in v realnem času bi morali videti temperaturo, ki se nalaga v oblak Thingspeak.

7. korak: Zaženite skript Python ob zagonu

Če želite to narediti, na koncu datoteke /etc/rc.local:

sudo nano /etc/rc.local

Ukaz za zagon skripta morate postaviti pred izhod vrstice 0:

sudo python /home/pi/cpu.py &

Prisotnost simbola & na koncu ukaza je obvezna, saj je zastava za začetek procesa v ozadju. Po ponovnem zagonu se bo skript samodejno zagnal in ventilator se bo vklopil, ko bodo izpolnjeni določeni pogoji.

Priporočena: