Satura rādītājs:

Viedā Raspberry Pi ventilatora vadība, izmantojot Python un Thingspeak: 7 soļi
Viedā Raspberry Pi ventilatora vadība, izmantojot Python un Thingspeak: 7 soļi

Video: Viedā Raspberry Pi ventilatora vadība, izmantojot Python un Thingspeak: 7 soļi

Video: Viedā Raspberry Pi ventilatora vadība, izmantojot Python un Thingspeak: 7 soļi
Video: Programmēšanas vide jebkuram skolēnam - Scratch, ievads no IG 2024, Jūlijs
Anonim
Viedā Raspberry Pi ventilatora vadība, izmantojot Python un Thingspeak
Viedā Raspberry Pi ventilatora vadība, izmantojot Python un Thingspeak

Īss pārskats

Pēc noklusējuma ventilators ir tieši pievienots GPIO - tas nozīmē tā pastāvīgu darbību. Neskatoties uz relatīvi klusu ventilatora darbību, tā nepārtraukta darbība nav efektīva aktīvās dzesēšanas sistēmas izmantošana. Tajā pašā laikā pastāvīga ventilatora darbība var būt tikai kaitinoša. Turklāt, ja Raspberry Pi ir izslēgts, ventilators joprojām darbosies, ja barošana ir pievienota.

Šis raksts parādīs, kā, izmantojot vienkāršas un nesarežģītas manipulācijas, esošo dzesēšanas sistēmu pārvērst par gudru, kas tiks ieslēgta tikai tad, kad procesorim tā patiešām būs nepieciešama. Ventilators tiks ieslēgts tikai intensīvas lietošanas gadījumā, tādējādi samazinot ventilatora enerģijas patēriņu un troksni. Pagarina arī ventilatora kalpošanas laiku, izslēdzot to, kad tas nav nepieciešams.

Ko Tu iemācīsies

Kā ieviest Python skriptu, lai kontrolētu ventilatoru, pamatojoties uz Raspberry CPU pašreizējo temperatūru, izmantojot On-Off vadību ar temperatūras histerēzi. Kā pārsūtīt datus no sava RaspberryPi uz Things Speak Cloud.

Piegādes

Šim projektam nepieciešamās sastāvdaļas ir šādas

  • Raspberry Pi 4 datora modelis B 4GB
  • NPN tranzistora S8050330ohms rezistors
  • Armor alumīnija metāla korpuss ar diviem ventilatoriem priekš Raspberry Pi
  • Jumper kabeļi
  • Maizes dēlis

1. darbība: ķēdes izveide

Ķēdes veidošana
Ķēdes veidošana
Ķēdes veidošana
Ķēdes veidošana

Ķēde ir diezgan vienkārša. Ventilatora barošana tiek pārtraukta, izmantojot NPN tranzistoru. Šajā konfigurācijā tranzistors darbojas kā zemas puses slēdzis. Rezistors ir nepieciešams tikai, lai ierobežotu strāvu, izmantojot GPIO. Raspberry Pi GPIO maksimālā strāvas izeja ir 16 mA. Es izmantoju 330 omus, kas mums nodrošina bāzes strāvu aptuveni (5-0,7)/330 = 13mA. Es izvēlējos NPN tranzistoru S8050, tāpēc 400mA slodzes pārslēgšana no abiem ventilatoriem nav problēma.

2. darbība: reģistrējiet CPU temperatūru, izmantojot ThingSpeak

Reģistrējiet CPU temperatūru, izmantojot ThingSpeak
Reģistrējiet CPU temperatūru, izmantojot ThingSpeak

ThingSpeak ir platforma projektiem, kuru pamatā ir lietu interneta koncepcija. Šī platforma ļauj veidot lietojumprogrammas, pamatojoties uz datiem, kas savākti no sensoriem. ThingSpeak galvenās iezīmes ietver: datu vākšanu reāllaikā, datu apstrādi un vizualizāciju. ThingSpeak API ne tikai ļauj nosūtīt, uzglabāt un piekļūt datiem, bet arī nodrošina dažādas statistiskās metodes to apstrādei.

ThingSpeak var integrēt populāras ierīces un pakalpojumus, piemēram:

  • Arduino
  • Aveņu pii
  • oBridge / RealTime.io
  • Elektriskā imp
  • Mobilās un tīmekļa lietojumprogrammas
  • Sociālie tīkli
  • Datu analīze MATLAB

Pirms sākam, jums ir nepieciešams konts vietnē ThingSpeak.

  1. Dodieties uz šo saiti un reģistrējieties ThingSpeak.
  2. Pēc konta aktivizēšanas pierakstieties.
  3. Dodieties uz Kanāli -> Mani kanāli
  4. Noklikšķiniet uz pogas Jauns kanāls.
  5. Ievadiet augšupielādējamo datu nosaukumu, aprakstu un laukus
  6. Noklikšķiniet uz pogas Saglabāt kanālu, lai saglabātu visus iestatījumus.

Mums ir nepieciešama API atslēga, kuru vēlāk pievienosim python kodam, lai augšupielādētu CPU temperatūru Thingspeak mākonī.

Noklikšķiniet uz cilnes API atslēgas, lai iegūtu rakstīšanas API atslēgu

Kad esat ieguvis rakstīšanas API atslēgu, mēs esam gandrīz gatavi augšupielādēt savus datus.

3. darbība: iegūstiet CPU temperatūru no Raspberry Pi, izmantojot Python

Skripta pamatā ir procesora temperatūras iegūšana, kas notiek katru sekundi. To var iegūt no termināļa, palaižot komandu vcgencmd ar parametru meet_temp.

vcgencmd mēra_temps

Subprocess.check_output () bibliotēka tika izmantota, lai izpildītu komandu, un pēc tam, izmantojot regulāro izteiksmi, tika iegūta faktiskā vērtība no atgrieztās virknes.

no apakšprocesa importēšanas check_output

no atkārtotas importēšanas findalldef get_temp (): temp = check_output (["vcgencmd", "meet_temp"]). atšifrēt () temp = float (findall ('\ d+\. / d+', temp) [0]) return (temp) drukāt (get_temp ())

Pēc temperatūras vērtības iegūšanas dati jānosūta uz ThingSpeak mākoni. Izmantojiet savu rakstīšanas API atslēgu, lai mainītu mainīgo myApi zemāk esošajā Python kodā.

no urllib importēšanas pieprasījuma

no atkārtotas importēšanas atrast visu no laika importēšanas miega no apakšprocesa importēt check_output myAPI = '################' baseURL = 'https://api.thingspeak.com/update?api_key=% s ' % myAPIdef get_temp (): temp = check_output (["vcgencmd", "meet_temp"]). atšifrēt () temp = float (findall (' / d+\. / d+', temp) [0]) return (temp] mēģiniet: kamēr True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 = % s' % (temp)) print (str (temp)) conn.close () miega režīms (1), izņemot tastatūruInterrupt: print ("Iziet, nospiediet Ctrl+C")

4. solis: Ventilatora vadība, pamatojoties uz temperatūru

Tālāk parādītais Python skripts īsteno loģiku, kas ieslēdz ventilatoru, kad temperatūra paaugstinās virs tempOn, un izslēdzas tikai tad, kad temperatūra nokrītas zem sliekšņa. Tādā veidā ventilators ātri neieslēgsies un neizslēgsies.

importēt RPi. GPIO kā GPIO

importēt sistēmu no atkārtotas importēšanas atrast visu laiku importēt miega režīmu no apakšprocesa importēt check_output def get_temp (): temp = check_output (["vcgencmd", "intézkedés_temp"]). dekodēt () temp = float (findall ('\ d+\. / d+ ', temp) [0]) atgriezties (temp) mēģināt: GPIO.setwarnings (False) tempOn = 50 slieksnis = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin, GPIO. OUT, sākotnējais = 0), kamēr patiess: temp = get_temp (), ja temp> tempOn, nevis pinState vai temp <tempOn - slieksnis un pinState: pinState = nav pinState GPIO.output (controlPin, pinState) print (str (temp) + "" + str (pinState)) miega režīms (1), izņemot tastatūruInterrupt: print ("Exit press Ctrl+C") izņemot: print ("Other Exception") print ("--- Start Exception Data:") traceback.print_exc (limit = 2, fails = sys.stdout) print ("--- Beigu izņēmuma dati:") beidzot: print ("CleanUp") GPIO.cleanup () print ("Programmas beigas")

5. darbība: galīgais Python kods

Galveno python kodu var atrast manā GitHub kontā šajā saitē. Neaizmirstiet ievietot savu rakstīšanas API atslēgu.

  1. Piesakieties savā Raspberry PI panelī
  2. Terminālī palaidiet šādu komandu

python3 cpu.py

6. darbība. Datu uzraudzība, izmantojot Thingspeak Cloud

Datu uzraudzība, izmantojot Thingspeak Cloud
Datu uzraudzība, izmantojot Thingspeak Cloud

Pēc kāda laika atveriet savu kanālu vietnē ThingSpeak, un jums vajadzētu redzēt temperatūras augšupielādi Thingspeak mākonī reāllaikā.

7. darbība: palaidiet Python skriptu startēšanas laikā

Lai to izdarītu, /etc/rc.local faila beigās:

sudo nano /etc/rc.local

Jums ir jāievieto skripta sākuma komanda rindas izejas 0 priekšā:

sudo python /home/pi/cpu.py &

& Simbola klātbūtne komandas beigās ir obligāta, jo tas ir karogs, lai sāktu procesu fonā. Pēc atsāknēšanas skripts tiks automātiski palaists un ventilators ieslēgsies, kad būs izpildīti norādītie nosacījumi.

Ieteicams: