Përmbajtje:

IoT Serveri i të dhënave me temperaturë të dyfishtë: 12 hapa (me fotografi)
IoT Serveri i të dhënave me temperaturë të dyfishtë: 12 hapa (me fotografi)

Video: IoT Serveri i të dhënave me temperaturë të dyfishtë: 12 hapa (me fotografi)

Video: IoT Serveri i të dhënave me temperaturë të dyfishtë: 12 hapa (me fotografi)
Video: Si të ndihmosh partneren të arrijë orgazmën 2024, Qershor
Anonim
IoT Serveri i të dhënave me temperaturë të dyfishtë
IoT Serveri i të dhënave me temperaturë të dyfishtë

Kjo është përpjekja ime e parë për të shkruar një Udhëzues dhe kështu ju lutem më lehtësoni! Nëse mendoni se kjo nuk është shumë e keqe, atëherë ju lutemi votoni për mua në Konkursin e Autorit të Herës së Parë.

Ky është projekti im Lock-Down për të monitoruar nga distanca 2 temperatura në një serë, një në nivelin e dyshemesë dhe një nën çati. Megjithëse kisha përdorur Raspberry Pi (RPi) më parë, ky projekt përfshinte disa elementë që nuk i kisha përdorur dhe gjatë rrugës, gjeta disa mësime që ishin të vjetruara ose thjesht të gabuara. Ky është koleksioni im i njohurive për të bërë një monitor të dyfishtë të temperaturës në distancë nga një Sensorë Pi Zero & 2 DS18B20+ One Wire Digital Temperatura që u mor gjatë rrugës.

Gjërat që mësova për:

  • Vënia në dispozicion e të dhënave nga një pajisje si pjesë e Internetit të Gjërave (IoT)
  • Ndërfaqe 1-tela me 2 pajisje
  • Dallueshmëria e të dhënave
  • Të dhënat JSON
  • Vendosja e murit mbrojtës UFW
  • Përdorimi i Freeboard.io për të shfaqur të dhënat
  • Konfigurimi i RPi për të autorunuar programin

Ka sasi të mëdha të të dhënave që mund të gjenden me një kërkim të thjeshtë në të gjitha këto tema, por ajo që nuk është aq e qartë është se si të kombinohen të gjitha këto elemente të ndara.

Furnizimet

  • Ju do të keni nevojë për një Raspberry Pi (me një monitor, miun dhe tastierën për konfigurimin, por jo kur ekzekutoni projektin e përfunduar)
  • Një lidhje interneti që funksionon.
  • Një PSU me një lidhës Micro USB
  • 2 nga sensorët e temperaturës dixhitale DS18B20+ One Wire. Kam gjetur se Amazon ishte më e lira
  • Rezistencë 4K7 ohm ose kam përdorur 2 rezistorë 10K ohm.
  • Dërrasë e vogël buke dhe disa tela meshkuj/femra për testim në stol
  • Pjesë e vogël e dërrasës për montimin përfundimtar
  • Mjete të thjeshta për bashkim dhe heqje telash.
  • Kuti e vogël plastike për të vendosur dizajnin e përfunduar

Hapi 1: Pajisje kompjuterike

Hardware
Hardware
Hardware
Hardware

Unë tashmë kisha një Raspberry Pi Zero W (me valë), por jam i sigurt se ky projekt i thjeshtë do të funksionojë mirë në cilindo RPI. Kutia e copave të çuditshme elektronike në punëtorinë time kishte gjithçka tjetër (bukë, tel, PSU etj) dhe kështu gjithçka që më duhej të blija ishte dy sensorë 2 x DS18B20 nga Amazon. Këto janë patate të skuqura normale DS18B20 të montuara në mënyrë të përshtatshme në një strehim të papërshkueshëm nga uji dhe kabllo 3m. Ka 3 tela nga kabllo:

  • E kuqe - fuqia - lidheni me pinin 3.3v 1
  • E zezë - kthim - lidheni me kunjin e tokës 6
  • E verdha - të dhëna - lidheni me pin GPIO4 7

Sensorët përdorin ndërfaqen 1-Wire dhe ishin shumë të lehtë për t'u lidhur dhe për të marrë të dhëna. Ka disa faqe në Web me detaje për lidhjen e 1 pajisje, por shumë pak për lidhjen e 2 (ose më shumë).

Për testimin në stol, qarku u mblodh duke përdorur një dërrasë buke. Udhëzimet që gjeta deklaruan se përdorin një rezistencë 4K7 për të anashkaluar linjën e të dhënave, por nuk mund të gjeja një të tillë dhe të përdorur në mënyrë paralele 2* 10K dhe funksionoi mirë. Ka shumë burime në Web për të përdorur një dërrasë për të mbledhur qarqet RPi dhe kështu që unë nuk do t'i përsëris këtu.

Diagrami i krijuar duke përdorur Diagramin e Qarkut

Hapi 2: Konfigurimi i softuerit Raspberry Pi OS

Konfigurimi i softuerit të Raspberry Pi OS
Konfigurimi i softuerit të Raspberry Pi OS
Konfigurimi i softuerit të Raspberry Pi OS
Konfigurimi i softuerit të Raspberry Pi OS
Konfigurimi i softuerit të Raspberry Pi OS
Konfigurimi i softuerit të Raspberry Pi OS

Ndërsa e kisha përdorur këtë RPi më parë, vendosa të filloj me një instalim të pastër të OS, riformatova kartën SD dhe instalova një version të pastër të NOOBS. Unë pastaj instalova versionin e plotë të desktopit të Raspian (opsioni i lartë) pasi kjo gjithashtu do të instalonte PIP & GIT që versioni lite nuk e bën. Edhe pse nuk kisha nevojë për Ndërfaqen Grafike të Përdoruesit (GUI) për projektin, është një mënyrë e thjeshtë për të konfiguruar të gjitha opsionet dhe me një kartë SD 16gb nuk kishte mungesë hapësire.

Vendosa qasjen WI-FI, pastaj ekzekutova instalimin e plotë dhe pastaj magjistarin me përditësime dhe azhurnime, etj. Duke përdorur GUI, unë konfigurova RPI sipas nevojës vetëm sepse përdorimi i GUI është më i thjeshtë se Ndërfaqja e Linjës së Komandës (CLI). Shkova në dritaren e konfigurimit nga menyja dhe pastaj:

  • Në skedën e sistemit, ndryshova fjalëkalimin, e vendosa në boot në CLI dhe e pakontrolluar Auto Login
  • Në skedën e ndërfaqeve, aktivizova 1-tela
  • Klikuar në rregull dhe rifilluar

Nëse keni nevojë të ktheheni në GUI në çdo kohë, thjesht shkruani startx në CLI

startx

Hapi 3: Konfiguroni bazën e të dhënave për të lejuar hyrjen në distancë

Konfiguro Dataplicity për të lejuar qasjen në distancë
Konfiguro Dataplicity për të lejuar qasjen në distancë
Konfiguro Dataplicity për të lejuar qasjen në distancë
Konfiguro Dataplicity për të lejuar qasjen në distancë
Konfiguro Dataplicity për të lejuar qasjen në distancë
Konfiguro Dataplicity për të lejuar qasjen në distancë

Gjeta një hyrje vërtet të dobishme në blog në faqen Dataplicity në https://blog.dataplicity.com/how-to-build-a-raspb… dhe përdor disa pjesë të kësaj. Seksioni 3 i blogut përshkruan vendosjen e Dataplicity për qasje në distancë në RPi. Unë kurrë nuk kam përdorur Dataplicity më parë, por duhet të them, e rekomandoj plotësisht si një mjet shumë i thjeshtë i qasjes në distancë. Edhe pse pamjet e ekranit (në blogun e mësipërm) janë pak të vjetruara, parimi është i mirë.

Në kompjuterin tuaj, shkoni te Dataplicity.com dhe krijoni një llogari (mund të përdorni shfletuesin në GUI, por më ngadalë në RPi Zero). Pastaj klikoni në butonin "shtoni pajisje të re" dhe një linjë kodi shfaqet në dritaren që shfaqet. Pastaj shkoni te CLI në RPi dhe shkruani rreshtin e tekstit. Nëse gjithçka është në rregull, logoja e Dataplicity do të shfaqet dhe programi i instalimit do të funksionojë.

Kthehu në kompjuterin tuaj, pajisja e re tani duhet të shfaqet në faqen e internetit të Dataplicity. Klikoni pajisjen dhe duhet të shihni një ekran terminal për RPi -në tuaj.

Ka disa gjëra që duhen shënuar këtu:

  • Për t'u regjistruar, shkruani "su pi" (për qasje te superpërdoruesi) dhe do t'ju kërkohet fjalëkalimi (siç është vendosur më herët)
  • Ju duhet të aktivizoni vrimën e krimbave (për t'u përdorur më vonë)
  • Ju do të keni nevojë për adresën Wormhole për shfaqjen e të dhënave më vonë (kliko me të djathtën për të kopjuar kur është e nevojshme)

Ju mund ta përdorni këtë qasje në distancë për të gjitha hapat e mëposhtëm dhe është shumë më e lehtë për kopjimin e të dhënave, programeve, sesa drejtpërdrejt në RPi.

Hapi 4: Kontrolloni sensorët

Tani mund të përdorni Dataplicity qasje në distancë në RPI për të gjitha pjesët e ardhshme.

Nëse gjithçka është e lidhur mirë, duhet të jeni në gjendje të shihni temperaturat që kthehen nga DS18B20. Unë punova përmes mësimit Pi Hut, por shumica e kësaj nuk kërkohej. Nëse doni detajet e plota ato mund të gjenden këtu:

Pjesët më të rëndësishme janë të shkoni në drejtorinë e pajisjeve dhe sigurohuni që të shfaqen 2 sensorë të ndryshëm.

cd/sys/bus/w1/pajisje/

Kjo duhet të tregojë 2 pajisje që fillojnë me 28- dhe master bus. Shfaqjet e mia:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Këta 2 numra ID janë të rëndësishëm dhe do të nevojiten më vonë! Pastaj ndryshoni në një nga drejtoritë e sensorëve:

cd 28-011453ebfdaa

(për shembull) dhe pastaj për të lexuar vlerën nga sensori

mace w1_sllave

Duhet të ketë 2 rreshta teksti të treguar:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d PO

53 01 4b 46 7f ff 0c 10 2d t = 21187

PO tregon se sensori po lexon saktë dhe 21187 tregon temperaturën në Celsius prej 21.187 (pjesëtoni me 1000) Përsëriteni këtë për të kontrolluar sensorin e dytë. Nëse të dy lexojnë ok atëherë mund të kalojmë në leximin e të dhënave me Python3.

Kam kopjuar dhe përshtatur kodin e mëposhtëm që gjeta në Web, por nuk mbaj mend se nga. Nëse kjo duket si kodi juaj, atëherë kërkoj falje pasi nuk ishte menduar për plagjiaturë; ju lutem më tregoni dhe unë do ta njoh punën tuaj.

Krijoni një drejtori të quajtur projekte dhe ndryshoni në atë drejtori.

mkdir ~/projekte

cd ~/projekte

Në këtë drejtori, përdorni redaktuesin e tekstit (nano) për të krijuar dhe modifikuar një skedar të quajtur thermo-test.py

sudo nano termo-test.py

Kjo duhet të ketë hapur redaktorin dhe ndërsa përdorni Dataplicity, thjesht mund të kopjoni kodin e mëposhtëm më poshtë (thermo-test.py) dhe ngjiteni në redaktues. Ju do të duhet të ndryshoni 2 emrat e pajisjeve (duke filluar nga 28-…) me ato të shënuara më lart. Kur gjithçka duket e saktë, shtypni ctrl+X për të përfunduar, Y për të ruajtur dhe kthyer për të përdorur emrin ekzistues. Nëse preferoni të përdorni GUI atëherë Thonny do të bëjë të njëjtën gjë.

Për të drejtuar programin e testimit:

sudo python3 termo-test.py

Gjithçka është mirë, kjo duhet të ekzekutojë skedarin duke përdorur python 3 dhe të printojë në ekran temperaturat 2 çdo 10 sekonda. Mund të provoni se gjithçka është në rregull duke vendosur 1 sensor në ujë të ftohtë ose duke ngrohur butësisht me tharëse flokësh. Nëse gjithçka duket në rregull, atëherë mund të vazhdojmë!

Hapi 5: UFW Firewall

UFW Firewall
UFW Firewall

Meqenëse ky RPi do të lidhej përgjithmonë me internetin, vendosa që një Firewall do të ishte një ide e mirë dhe një e thjeshtë për t'u përdorur është Firewall i pakomplikuar (ufw). Ekziston një mësim shumë i thjeshtë këtu

Nuk po hyj në thellësi të madhe pasi ky nuk është qëllimi i këtij Udhëzuesi, por me pak fjalë:

Instaloni murin e zjarrit me:

sudo apt-get install ufw

Vendosni rregullat e paracaktuara:

sudo ufw default lejoni daljen

sudo ufw default refuzoj hyrjen

Hapni portën 80 për Dataplicity

sudo ufw lejoni 80

Aktivizo murin e zjarrit

sudo ufw aktivizo

Kontrolloni statusin dhe sigurohuni që gjithçka po funksionon

sudo ufw status

Hapi 6: S duke i dhënë fund të dhënave të temperaturës si JSON

S duke i dhënë fund të dhënave të temperaturës Si JSON
S duke i dhënë fund të dhënave të temperaturës Si JSON

Kthehuni në blogun dhe seksionin 5 të Tim Fernando.

Ndiqni hapat siç u tha (përveçse ne kemi krijuar tashmë drejtorinë e projekteve) dhe të gjithë duhet të funksionojnë mirë. Duke përdorur GIT do të shkarkoni skedarët e aplikacionit të Tim dhe PIP do të sigurohet që të gjitha programet e kërkuara të jenë instaluar në RPi tuaj. Atëherë zbulova se më duhej të rindizja për t'u siguruar që paketat ishin të gjitha të konfiguruara në mënyrë korrekte.

Pastaj ekzekutoni programin e Tim dhe RPi juaj duhet të sigurojë të dhëna JSON për sensorin e parë.

cd home/pi/projects/temperature-serve-pi

Temperatura sudo gunicorn: aplikacioni -b 0.0.0.0:80

Mund të vazhdoni përmes blogut në seksionin 6 ku do të gjeni se po jepen të dhëna për 1 nga sensorët.

Ju gjithashtu mund të përdorni JSON Viewer për të parë të dhënat https://codebeautify.org/jsonviewer Klikoni butonin "ngarkoni URL" dhe ngjiteni në adresën e Wormhole të shënuar më parë. Në panelin e majtë, duhet të shihni dy shënime, një për Celsius dhe një për Fahrenheit.

Hapi 7: Dërgoni të dhëna nga të dy sensorët

Dërgoni të dhëna nga të dy sensorët
Dërgoni të dhëna nga të dy sensorët

Bazuar në kodin në temperature.py dhe thermo-test.py, krijova 2temps.py Redaktuar si më parë në drejtorinë /projects /temperature-serve-pi, ngjitur në kod dhe ruajtur. Pastaj vrapova

sudo gunicorn 2temps: app -b 0.0.0.0:80

Tani kur ri-drejtova JSON Viewer mora vlera për temp1 & temp2

Sukses:)

Hapi 8: Fillimi automatik

Fillim Automatik
Fillim Automatik

Ndërsa energjia në serë fiket herë pas here, doja që RPi të ngarkonte automatikisht programin dhe të fillonte të provonte të dhënat. Mënyra më e thjeshtë duket se është të redaktoni skedarin rc.local dhe të shtoni kodin e kërkuar në fund, mbi vijën 0 të daljes.

cd etj

sudo nan rc.lokal

pastaj shtesa

fle 10

cd home/pi/projects/temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • & Në fund i thotë kompjuterit të ekzekutojë skriptin në një nën -guaskë në mënyrë që kompjuteri juaj të mos presë që funksioni të përfundojë dhe të vazhdojë me nisjen
  • Fjetja 10 [sekonda] sigurohet që të gjitha operacionet e mëparshme të kenë përfunduar para fillimit të shërbimit.

Dilni dhe ruani si më parë. Pastaj rindizni dhe rifilloni JSON Viewer për të kontrolluar se gjithçka është në rregull.

Nëse doni më shumë informacion mbi programet e drejtimit automatik, ka një tutorial të mrekullueshëm këtu

Hapi 9: Shfaqni të dhënat në Freeboard.io (1)

Shfaq të dhënat në Freeboard.io (1)
Shfaq të dhënat në Freeboard.io (1)

Hapat në blogun e Tim funksionojnë mirë, në mënyrë të përmbledhur; krijoni një llogari në www.freeboard.io dhe më pas krijoni një Freeboard të ri, të cilin e kam quajtur SHEDTEMPERATURES.

Së pari, shtoni një burim të të dhënave, klikoni ADD në të djathtën e sipërme dhe nga dritarja që shfaqet zgjidhni JSON si lloj, jepni burimin e të dhënave një EMRI, shtoni adresën e krimbit të hershëm si URL dhe klikoni JO për TRY THINGPROXY. Temperaturat ndryshojnë vetëm shumë ngadalë dhe kështu Freskoni çdo 15 sekonda është mirë. Kliko Ruaj.

Hapi 10: Shfaqni të dhënat në Freeboard.io (2)

Shfaq të dhënat në Freeboard.io (2)
Shfaq të dhënat në Freeboard.io (2)
Shfaq të dhënat në Freeboard.io (2)
Shfaq të dhënat në Freeboard.io (2)
Shfaq të dhënat në Freeboard.io (2)
Shfaq të dhënat në Freeboard.io (2)
Shfaq të dhënat në Freeboard.io (2)
Shfaq të dhënat në Freeboard.io (2)

Klikoni ADD PANE dhe pastaj + për të shtuar widget -in e parë. Ju mund të zgjidhni dhe luani me lloje të ndryshme, por unë zbulova se Gauge ishte mirë. Jepni një TITULL, NJITSI (C), MINIMUM dhe MAXIMUM të përshtatshëm që i përshtaten aplikimit tuaj. Për DATASOURCE, klikoni + dhe burimi i krijuar më sipër do të shfaqet.

Hapja zbritëse tani duhet të tregojë 2 burimet e të dhënave JSON (temp2 & temp2) të ndërtuara më herët. Zgjidhni burimin e duhur dhe klikoni ruaj.

Përsëriteni këtë për matësin e dytë dhe jemi gati.

Të dhënat tani duhet të shfaqen në 2 matësit dhe nëse akoma e keni PRi të lidhur me një monitor, duhet të shihni kërkesat nga Freeboard.io kur ato mbërrijnë.

Hapi 11: Ndërtoni projektin në një kuti

Ndërtoni projektin në një kuti
Ndërtoni projektin në një kuti
Ndërtoni projektin në një kuti
Ndërtoni projektin në një kuti
Ndërtoni projektin në një kuti
Ndërtoni projektin në një kuti
Ndërtoni projektin në një kuti
Ndërtoni projektin në një kuti

Deri në këtë pikë, RPi dhe përbërësit e tjerë ishin mbledhur të gjithë në stol duke përdorur një dërrasë buke. Një pjesë e vogël e dërrasës së shiritit u përdor më pas për të zëvendësuar dërrasën e bukës dhe plumbat të gjithë u ngjitën në vend.

U gjet një kuti e vogël ruajtëse e Lego e vogël rozë që kishte shumë hapësirë dhe ku RPI nuk do të nxehej shumë. vrimat u shpuan në anët e kutisë dhe shtyllat e montimit prej najloni 3 mm u përdorën për të mbajtur RPi dhe stripboard në vend.

Ka vetëm 3 lidhje të kërkuara nga GPIO, 3.3v, GND & të dhëna.

  • 3.3vdc pin 1
  • Kodi GND 6
  • Të dhënat (GPIO4) pin 7

Vrima u shtuan gjithashtu në kutinë për energjinë USB dhe kabllot në sensorët e temperaturës. Sapo gjithçka u vendos në vend, një sasi e vogël ngjitëse silikoni u shtua për të siguruar që merimangat të mos mendonin se ishte një vend i bukur i ngrohtë për të kaluar dimrin!

Hapi 12: Përfundoi

E perfunduar
E perfunduar
E perfunduar
E perfunduar

Kutia u vendos në serrë dhe u mundësua nga një karikues USB. Dy sensorët u vendosën njëri pranë majës së serrës dhe tjetri në një tenxhere me bimë për të kontrolluar se sa të ftohtë ishin fidanët gjatë natës.

Ky është udhëzuesi im i parë dhe shpresoj që ju të mendoni se është në rregull. Nëse gjeni ndonjë gabim, ju lutem më tregoni dhe unë do të ndryshoj aty ku kërkohet. Hapi tjetër mund të jetë regjistrimi i të dhënave çdo (të themi) 60 sekonda, por kjo do të vijë më vonë.

Recommended: