Turinys:

Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“: 7 žingsniai
Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“: 7 žingsniai

Video: Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“: 7 žingsniai

Video: Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“: 7 žingsniai
Video: RaspberryPi-Heat-Sink #raspberrypi #heatsink 2024, Liepa
Anonim
Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“
Išmanusis „Raspberry Pi“ventiliatoriaus valdymas naudojant „Python“ir „Thingspeak“

Trumpa apžvalga

Pagal numatytuosius nustatymus ventiliatorius yra tiesiogiai prijungtas prie GPIO - tai reiškia nuolatinį jo veikimą. Nepaisant santykinai tylaus ventiliatoriaus veikimo, nuolatinis jo veikimas nėra veiksmingas aktyvios aušinimo sistemos naudojimas. Tuo pačiu metu nuolatinis ventiliatoriaus veikimas gali tiesiog erzinti. Be to, jei „Raspberry Pi“yra išjungtas, ventiliatorius vis tiek veiks, jei maitinimas bus prijungtas.

Šis straipsnis parodys, kaip, naudojant paprastas ir nesudėtingas manipuliacijas, esamą aušinimo sistemą paversti išmaniąja, kuri bus įjungta tik tada, kai procesoriui to tikrai reikia. Ventiliatorius būtų įjungtas tik tada, kai yra intensyviai naudojamas, taip sumažinant ventiliatoriaus energijos sąnaudas ir triukšmą. Taip pat pailginkite ventiliatoriaus tarnavimo laiką, išjungdami jį, kai to nereikia.

Ko išmoksi

Kaip įdiegti „Python“scenarijų, kad būtų galima valdyti ventiliatorių pagal esamą „Raspberry“procesoriaus temperatūrą, naudojant įjungimo-išjungimo valdiklį su temperatūros histereze. Kaip perkelti duomenis iš „RaspberryPi“į „Things Speak Cloud“.

Prekės

Komponentai, kurių jums reikės šiam projektui, yra šie

  • „Raspberry Pi 4“kompiuterio modelis B 4 GB
  • NPN tranzistorius S8050330ohms rezistorius
  • „Armor“aliuminio metalinis dėklas su dviem ventiliatoriais „Raspberry Pi“
  • Trumpieji kabeliai
  • Bandomoji Lenta

1 žingsnis: sukurkite grandinę

Grandinės kūrimas
Grandinės kūrimas
Grandinės kūrimas
Grandinės kūrimas

Grandinė yra gana paprasta. Ventiliatoriaus maitinimas nutraukiamas naudojant NPN tranzistorių. Šioje konfigūracijoje tranzistorius veikia kaip žemos pusės jungiklis. Rezistorius reikalingas tik norint apriboti srovę per GPIO. „Raspberry Pi“GPIO maksimali srovės išvestis yra 16 mA. Aš naudojau 330 omų, todėl bazinė srovė yra maždaug (5-0,7)/330 = 13 mA. Aš pasirinkau NPN tranzistorių S8050, todėl perjungti 400 mA apkrovą iš abiejų ventiliatorių nėra problema.

2 veiksmas: registruokite procesoriaus temperatūrą naudodami „ThingSpeak“

Prisijunkite prie procesoriaus temperatūros naudodami „ThingSpeak“
Prisijunkite prie procesoriaus temperatūros naudodami „ThingSpeak“

„ThingSpeak“yra platforma projektams, paremtiems daiktų interneto koncepcija. Ši platforma leidžia kurti programas pagal duomenis, surinktus iš jutiklių. Pagrindinės „ThingSpeak“savybės: duomenų rinkimas realiuoju laiku, duomenų apdorojimas ir vizualizavimas. „ThingSpeak“API ne tik leidžia siųsti, saugoti ir pasiekti duomenis, bet ir pateikia įvairius statistinius jų apdorojimo metodus.

„ThingSpeak“gali integruoti tokius populiarius įrenginius ir paslaugas kaip:

  • Arduino
  • Aviečių pii
  • oBridge / RealTime.io
  • Elektros imp
  • Mobiliosios ir žiniatinklio programos
  • Socialiniai tinklai
  • Duomenų analizė MATLAB

Prieš pradėdami, jums reikia „ThingSpeak“paskyros.

  1. Eikite į šią nuorodą ir prisiregistruokite prie „ThingSpeak“.
  2. Po paskyros aktyvinimo prisijunkite.
  3. Eikite į Kanalai -> Mano kanalai
  4. Spustelėkite mygtuką Naujas kanalas.
  5. Įveskite norimų įkelti duomenų pavadinimą, aprašymą ir laukus
  6. Norėdami išsaugoti visus nustatymus, spustelėkite mygtuką Išsaugoti kanalą.

Mums reikia API rakto, kurį vėliau pridėsime prie python kodo, kad galėtume įkelti procesoriaus temperatūrą į „Thingspeak“debesį.

Spustelėkite skirtuką API raktai, kad gautumėte „Write API Key“

Kai turėsite „Write API Key“, mes beveik pasiruošę įkelti savo duomenis.

3 žingsnis: CPU temperatūros nustatymas iš „Raspberry Pi“naudojant „Python“

Scenarijus yra pagrįstas procesoriaus temperatūros nustatymu, kuris vyksta kiekvieną sekundę. Jį galima gauti iš terminalo vykdant komandą vcgencmd su parametru meet_temp.

vcgencmd matavimo_tempas

Subprocess.check_output () biblioteka buvo naudojama komandai vykdyti, o paskui naudojant įprastą išraišką išgaunamai iš grąžintos eilutės išgauti faktinę vertę.

iš subproceso importo check_output

Iš naujo importuoti) spausdinti (get_temp ())

Gaunant temperatūros vertę, duomenys turi būti siunčiami į „ThingSpeak“debesį. Naudokite „Write API“raktą, kad pakeistumėte „myApi“kintamąjį žemiau esančiame „Python“kode.

iš „urllib“importo užklausos

iš naujo importuoti findall iš laiko importuoti miego režimą iš papildomo proceso importuoti check_output myAPI = '################' baseURL = 'https://api.thingspeak.com/update?api_key=% s ' % myAPIdef get_temp (): temp = check_output (["vcgencmd", "meet_temp"]). dekoduoti () temp = float (findall (' / d+\. / d+', temp) [0]) return (temp) pabandykite: nors tiesa: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () miego režimas (1), išskyrus klaviatūrąInterrupt: print („Išeiti paspaudus Ctrl+C“)

4 žingsnis: Ventiliatoriaus valdymas pagal temperatūrą

Žemiau pateiktas „Python“scenarijus įgyvendina logiką, kuri įjungia ventiliatorių, kai temperatūra pakyla virš tempOn, ir išsijungia tik tada, kai temperatūra nukrenta žemiau slenksčio. Tokiu būdu ventiliatorius greitai neįsijungs ir neišsijungs.

importuoti RPi. GPIO kaip GPIO

importuoti sys iš naujo importuoti findall iš laiko importuoti miego režimą iš papildomo proceso importuoti check_output def get_temp (): temp = check_output (["vcgencmd", "meet_temp"]). dekoduoti () temp = float (findall ('\ d+\. / d+ ', temp) [0]) return (temp) try: GPIO.setwarnings (False) tempOn = 50 limit = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, inicialus = 0), nors tiesa: temp = get_temp (), jei temp> tempOn, o ne pinState arba temp <tempOn - slenkstis ir pinState: pinState = not pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) miego režimas (1), išskyrus KeyboardInterrupt: print („Išeiti paspaudus Ctrl+C“), išskyrus: print („Kita išimtis“) print („--- Pradėti išimties duomenis:“) traceback.print_exc (limit = 2, file = sys.stdout) print ("--- End Exception Data:") pagaliau: print ("CleanUp") GPIO.cleanup () print ("Programos pabaiga")

5 veiksmas: galutinis „Python“kodas

Pagrindinį „Python“kodą galite rasti mano „GitHub“paskyroje šioje nuorodoje. Nepamirškite įdėti savo „Write API“rakto.

  1. Prisijunkite prie savo Raspberry PI plokštės
  2. Terminale paleiskite šią komandą

python3 cpu.py

6 veiksmas: duomenų stebėjimas naudojant „Thingspeak Cloud“

Duomenų stebėjimas per „Thingspeak Cloud“
Duomenų stebėjimas per „Thingspeak Cloud“

Po kurio laiko atidarykite savo kanalą „ThingSpeak“ir turėtumėte pamatyti, kaip temperatūra įkeliama į „Thingspeak“debesį realiuoju laiku.

7 veiksmas: paleisdami paleiskite „Python“scenarijų

Norėdami tai padaryti, failo /etc/rc.local pabaigoje:

sudo nano /etc/rc.local

Turite įdėti scenarijaus pradžios komandą prieš eilutės išėjimą 0:

sudo python /home/pi/cpu.py &

& Simbolis komandos pabaigoje yra privalomas, nes tai yra vėliava pradėti procesą fone. Po perkrovimo scenarijus bus automatiškai paleistas, o ventiliatorius įsijungs, kai bus įvykdytos nurodytos sąlygos.

Rekomenduojamas: