Sisukord:

IoT kahetemperatuuriline andmeserver: 12 sammu (piltidega)
IoT kahetemperatuuriline andmeserver: 12 sammu (piltidega)

Video: IoT kahetemperatuuriline andmeserver: 12 sammu (piltidega)

Video: IoT kahetemperatuuriline andmeserver: 12 sammu (piltidega)
Video: Metaverser - First VR Project That Enables Users To Play&Earn From Different Awesome Games👾 2024, November
Anonim
IoT kahetemperatuuriline andmeserver
IoT kahetemperatuuriline andmeserver

See on minu esimene katse Instructable'i kirjutamiseks ja nii et palun minge rahulikult! Kui arvate, et see pole liiga halb, siis palun hääletage esmakordsel autorivõistlusel minu poolt.

See on minu lukustusprojekt, mille eesmärk on kaugjuhtida 2 temperatuuri kasvuhoones, üks põranda tasemel ja teine katuse all. Kuigi olin juba varem kasutanud Raspberry Pi’s (RPi), hõlmas see projekt mitmeid elemente, mida ma polnud kasutanud, ja leidsin teel mitmeid õpetusi, mis olid aegunud või lihtsalt valed. See on minu teadmiste kogum, kuidas valmistada teekonnal omandatud Pi Zero & 2 DS18B20+ ühejuhtmelistest digitaalsetest temperatuurianduritest töötav kahekordne kaugtemperatuurimonitor.

Asjad, millest sain teada:

  • Seadmest andmete kättesaadavaks tegemine asjade Interneti (IoT) osana
  • 1-juhtmeline liides 2 seadmega
  • Dataplicity
  • JSONi andmed
  • UFW tulemüüri seadistamine
  • Freeboard.io kasutamine andmete kuvamiseks
  • RPi seadistamine programmi automaatseks käivitamiseks

Kõigil neil teemadel on lihtsa otsingu abil võimalik leida tohutul hulgal andmeid, kuid pole nii selge, kuidas kõiki neid eraldi elemente kombineerida.

Tarvikud

  • Teil on vaja seadistamiseks Raspberry Pi (koos monitori, hiire ja klaviatuuriga, kuid mitte valmis projekti käivitamisel)
  • Toimiv internetiühendus.
  • Mikro -USB -pistikuga toiteallikas
  • 2 DS18B20+ ühe juhtmega digitaalsetest temperatuurianduritest. Leidsin, et Amazon oli odavaim
  • 4K7 oomi takisti või kasutasin 2 10K oomi takistit.
  • Väike leivaplaat ja mõned mees-/naistraadid pingil katsetamiseks
  • Väike tükk ribalauda lõplikuks kokkupanekuks
  • Lihtsad tööriistad jootmiseks ja traadi eemaldamiseks.
  • Väike plastkarp valmis kujunduse paigutamiseks

Samm: riistvara

Riistvara
Riistvara
Riistvara
Riistvara

Mul oli juba Raspberry Pi Zero W (traadita), kuid olen kindel, et see lihtne projekt töötab hästi kõigi RPI -de puhul. Minu töökoja veidrate elektrooniliste bittide karbis oli kõik muu (leivaplaat, traat, toiteplokk jne) ja seega pidin ostma ainult kaks 2 x DS18B20 andurit Amazonist. Need on tavalised DS18B20 kiibid, mis on lihtsalt mugavalt veekindlasse korpusesse ja 3 m kaablisse paigaldatud. Kaablist on 3 juhet:

  • Punane - toide - ühendage 3,3 V kontaktiga 1
  • Must - tagasitulek - ühendage maandusnõelaga 6
  • Kollane - andmed - ühendage GPIO4 kontaktiga 7

Andurid kasutavad 1-juhtmelist liidest ja neid oli väga lihtne ühendada ja andmeid hankida. Veebis on mitu lehte, mis sisaldavad üksikasju ühe seadme ühendamise kohta, kuid väga vähe 2 (või enama) ühendamise kohta.

Pingil katsetamiseks pandi vooluring kokku leivaplaadi abil. Minu leitud õpetustes öeldi, et kasutatakse andmeliini kallutamiseks 4K7 takisti, kuid ma ei suutnud leida üht ja nii paralleelselt kasutatud 2* 10K ja see töötas suurepäraselt. Veebis on palju ressursse leivaplaadi kasutamiseks RPi vooluahelate kokkupanemiseks ja seega ei hakka ma neid siin kordama.

Skeem, mis on loodud vooluahela abil

Samm 2: Raspberry Pi OS tarkvara häälestamine

Raspberry Pi OS tarkvara häälestus
Raspberry Pi OS tarkvara häälestus
Raspberry Pi OS tarkvara häälestus
Raspberry Pi OS tarkvara häälestus
Raspberry Pi OS tarkvara häälestus
Raspberry Pi OS tarkvara häälestus

Kuna olin seda RPi -d varem kasutanud, otsustasin alustada OS -i puhta installimisega, vormindasin SD -kaardi uuesti ja installisin NOOBS -i puhta versiooni. Seejärel installisin Raspiani töölaua täisversiooni (ülemine valik), kuna see installiks ka PIP & GIT, mida mitte. Kuigi ma ei vajanud projekti jaoks graafilist kasutajaliidest (GUI), on see lihtne viis kõigi valikute seadistamiseks ja 16 GB SD -kaardiga polnud ruumi puudust.

Seadistasin WI-FI juurdepääsu, seejärel käivitasin täieliku installimise ja seejärel viisardi koos värskenduste ja täiendustega jne. Kasutades graafilist kasutajaliidest, seadistan RPI vastavalt vajadusele lihtsalt seetõttu, et graafilise kasutajaliidese kasutamine on lihtsam kui käsurealiides (CLI). Läksin menüüst konfiguratsiooniaknasse ja seejärel:

  • Vahekaardil Süsteem muutsin parooli, seadistasin alglaadimise CLI -ks ja tühistasin automaatse sisselogimise
  • Vahekaardil liidesed lubasin 1-juhtmelise
  • Klõpsas OK ja taaskäivitas

Kui teil on vaja igal ajal GUI juurde naasta, tippige lihtsalt CLI -sse startx

startx

3. toiming: seadistage Dataplicity kaugjuurdepääsu lubamiseks

Seadistage Dataplicity kaugjuurdepääsu lubamiseks
Seadistage Dataplicity kaugjuurdepääsu lubamiseks
Seadistage Dataplicity kaugjuurdepääsu lubamiseks
Seadistage Dataplicity kaugjuurdepääsu lubamiseks
Seadistage Dataplicity kaugjuurdepääsu lubamiseks
Seadistage Dataplicity kaugjuurdepääsu lubamiseks

Leidsin Dataplicity saidilt https://blog.dataplicity.com/how-to-build-a-raspb… tõeliselt kasuliku blogikirje ja kasutasin selle mõningaid osi. Blogi 3. jaos kirjeldatakse Dataplicity seadistamist RPi kaugjuurdepääsuks. Ma pole kunagi varem Dataplicityt kasutanud, kuid pean ütlema, et soovitan seda põhjalikult kui väga lihtsat kaugjuurdepääsu tööriista. Kuigi ekraanipildid (ülaltoodud ajaveebis) on pisut aegunud, on põhimõte korras.

Minge oma arvutis saidile Dataplicity.com ja looge konto (võite kasutada GUI brauserit, kuid RPi Zero puhul pigem aeglaselt). Seejärel klõpsake nuppu „Lisa uus seade” ja hüpikaknas kuvatakse koodirida. Seejärel minge RPi CLI -le ja tippige tekstirida. Kui kõik on korras, kuvatakse Dataplicity logo ja installiprogramm käivitatakse.

Tagasi teie arvutis peaks uus seade nüüd ilmuma Dataplicity veebisaidil. Klõpsake seadet ja peaksite nägema oma RPi terminaliekraani.

Siin tuleb tähele panna mõnda asja.

  • Sisselogimiseks tippige "su pi" (superkasutajale juurdepääsuks) ja teilt küsitakse parooli (nagu varem määratud)
  • Peate lubama ussiaugu (hiljem kasutamiseks)
  • Andmete kuvamiseks vajate hiljem ussiaugu aadressi (vajadusel kopeerimiseks paremklõpsake)

Seda kaugjuurdepääsu saate kasutada kõigi järgmiste toimingute jaoks ning andmete, programmide jms kopeerimine on palju lihtsam kui otse RPi -l.

Samm: kontrollige andureid

Nüüd saate kõigi järgmiste sektsioonide jaoks Dataplicity RPI -le kaugjuurdepääsu kasutada.

Kui kõik on nüüd korralikult ühendatud, peaksite nägema DS18B20 -st tulevaid temperatuure. Töötasin läbi Pi Huti õpetuse, kuid enamikku sellest ei nõutud. Kui soovite kõiki üksikasju, leiate need siit:

Olulised bitid on minna seadmete kataloogi ja veenduda, et kuvatakse 2 erinevat andurit.

cd/sys/buss/w1/seadmed/

See peaks näitama kahte seadet, mis algavad 28- ja siinimagistrit. Minu oma näitab:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Need 2 ID -numbrit on olulised ja neid läheb hiljem vaja! Seejärel minge ühte andurite kataloogidest:

cd 28-011453ebfdaa

(näiteks) ja seejärel lugege andurilt väärtus

kass w1_orja

Tekstis peaks olema 2 rida:

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

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

JAH näitab, et andur loeb õigesti ja 21187 näitab temperatuuri Celsiuse järgi 21,187 (jagage 1000 -ga). Korrake seda teise anduri kontrollimiseks. Kui mõlemad loevad hästi, saame liikuda edasi andmete lugemiseks Python3 abil.

Kopeerisin ja kohandasin järgmise koodi, mille leidsin veebist, kuid ei mäleta, kust. Kui see näeb välja nagu teie kood, siis palun vabandust, kuna plagiaati polnud ette nähtud; palun andke mulle teada ja ma tunnustan teie tööd.

Looge kataloog nimega projektid ja minge sellesse kataloogi.

mkdir ~/projektid

cd ~/projektid

Selles kataloogis kasutage tekstiredaktorit (nano), et luua ja muuta faili nimega thermo-test.py

sudo nano termotest.py

See oleks pidanud redaktori avama ja kui kasutate Dataplicity, saate lihtsalt kopeerida järgmise koodi (thermo-test.py) ja kleepida redaktorisse. Peate muutma 2 seadme nime (alates 28–…) ülalnimetatuteks. Kui kõik tundub õige, vajutage lõpetamiseks klahvikombinatsiooni Ctrl+X, salvestamiseks Y ja naaske olemasoleva nime juurde. Kui eelistate kasutada graafilist kasutajaliidest, teeb Thonny sama.

Testprogrammi käivitamiseks toimige järgmiselt.

sudo python3 termotest.py

Kui kõik on hästi, peaks see faili käivitama python 3 abil ja printima ekraanile 2 temperatuuri iga 10 sekundi järel. Saate kontrollida, kas kõik on korras, pannes 1 anduri jäävette või soojendades õrnalt fööniga. Kui kõik tundub korras, siis saame edasi minna!

Samm: UFW tulemüür

UFW tulemüür
UFW tulemüür

Kuna see RPi pidi olema püsivalt Internetiga ühendatud, otsustasin, et tulemüür oleks hea mõte ja lihtne kasutada on lihtne tüssamüür (ufw). Siin on väga lihtne õpetus

Ma ei lähe väga sügavale, kuna see pole selle juhendi eesmärk, kuid lühidalt:

Installige tulemüür järgmiselt:

sudo apt-get install ufw

Määrake vaikereeglid:

sudo ufw vaikimisi lubage väljaminev

sudo ufw vaikimisi keela sissetulev

Dataplicity jaoks avage port 80

sudo ufw lubab 80

Lubage tulemüür

sudo ufw lubada

Kontrollige olekut ja veenduge, et kõik töötab

sudo ufw olek

Samm: lõpetage temperatuuriandmed nagu JSON

S lõpetab temperatuuriandmed nagu JSON
S lõpetab temperatuuriandmed nagu JSON

Tagasi Tim Fernando ajaveebi ja 5. jao juurde.

Järgige ülaltoodud samme (välja arvatud juhul, kui oleme juba projektide kataloogi loonud) ja kõik peaks hästi toimima. GIT -i kasutades laadite alla Timi rakenduse failid ja PIP tagab, et kõik vajalikud programmid on teie RPi -le installitud. Siis leidsin, et pean uuesti käivitama, et veenduda, kas kõik paketid on õigesti seadistatud.

Seejärel käivitage Timi programm ja teie RPi peaks seejärel andma esimese anduri jaoks JSON -andmed.

cd home/pi/projektid/temperatuur-serve-pi

sudo gunicorn temperatuur: rakendus -b 0.0.0.0:80

Võite jätkata ajaveebi kaudu jaotisse 6, kus leiate, et ühe anduri kohta esitatakse andmed.

Andmete vaatamiseks saate kasutada ka JSON Viewerit https://codebeautify.org/jsonviewer Klõpsake nuppu „Laadi URL” ja kleepige eelnevalt märgitud ussiaugu aadress. Vasakul paanil peaksite nägema kahte kirjet, üks Celsiuse ja teine Fahrenheiti kohta.

Samm: saatke andmed mõlemalt andurilt

Andmete saatmine mõlemalt andurilt
Andmete saatmine mõlemalt andurilt

Tuginedes koodidele temperatuurides.py ja termotest.py, lõin kataloogis /projektid /temperatuur-serve-pi redigeeritud 2temps.py Redigeeritud nagu varem, kleebitud koodi sisse ja salvestatud. Jooksin siis

sudo gunicorn 2temps: rakendus -b 0.0.0.0:80

Nüüd, kui käivitasin JSON Vieweri uuesti, sain väärtused temp1 ja temp2

Edu:)

8. samm: automaatne käivitamine

Automaatne käivitamine
Automaatne käivitamine

Kuna kasvuhoone toide lülitub aeg -ajalt välja, soovisin, et RPi laadiks programmi automaatselt ja hakkaks andmeid tõestama. Lihtsaim viis näib olevat faili rc.local redigeerimine ja vajaliku koodi lisamine otse väljapääsu 0 rea kohale.

cd jne

sudo nan rc.local

siis lisandmoodul

magama 10

cd home/pi/projektid/Temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • Lõpus & käsib arvutil käivitada skripti alamkestaga, nii et teie arvuti ei oota funktsiooni lõppemist ja jätkab käivitamist
  • Unerežiim 10 sekundit tagab, et enne teenuse alustamist on kõik eelnevad toimingud lõpule viidud.

Väljuge ja salvestage nagu varem. Seejärel taaskäivitage ja taaskäivitage JSON Viewer, et kontrollida, kas kõik on korras.

Kui soovite lisateavet automaatselt käivitatavate programmide kohta, on siin suurepärane õpetus

9. samm: andmete kuvamine saidil Freeboard.io (1)

Kuvage andmed saidil Freeboard.io (1)
Kuvage andmed saidil Freeboard.io (1)

Kokkuvõttes toimivad Timi ajaveebi sammud hästi; looge konto aadressil www.freeboard.io ja seejärel looge uus Freeboard, helistasin oma SHEDTEMPERATURES.

Esmalt lisage andmeallikas, klõpsake paremas ülanurgas LISA ja valige hüpikaknast tüübiks JSON, andke andmeallikale NIMI, lisage URL-iks ussiaugu aadress varasemast ja klõpsake nuppu EI, kui proovite proovida. Temperatuur muutub vaid väga aeglaselt ja seega VÄRSKENDA IGA 15 SEKUNDI korda. Klõpsake SALVESTA.

10. samm: andmete kuvamine saidil Freeboard.io (2)

Kuvage andmed saidil Freeboard.io (2)
Kuvage andmed saidil Freeboard.io (2)
Kuvage andmed saidil Freeboard.io (2)
Kuvage andmed saidil Freeboard.io (2)
Kuvage andmed saidil Freeboard.io (2)
Kuvage andmed saidil Freeboard.io (2)
Kuvage andmed saidil Freeboard.io (2)
Kuvage andmed saidil Freeboard.io (2)

Esimese vidina lisamiseks klõpsake nuppu LISA PAANE ja seejärel nuppu +. Saate valida ja mängida erinevate TÜÜPIDEGA, kuid leidsin, et gabariit oli lihtsalt korras. Andke oma rakendusele sobiv pealkiri, ÜHIKUD (C), MINIMUM ja MAXIMUM. DATASOURCE jaoks klõpsake nuppu + ja kuvatakse ülaltoodud allikas.

Rippmenüü peaks nüüd näitama 2 varem ehitatud JSON -andmeallikat (temp2 ja temp2). Valige sobiv allikas ja klõpsake nuppu Salvesta.

Korrake seda teise mõõturi jaoks ja oleme valmis.

Andmed tuleks nüüd kuvada kahel näidikul ja kui teil on PRi endiselt monitoriga ühendatud, peaksite Freeboard.io päringuid nägema nende saabumisel.

11. samm: ehitage projekt kasti

Ehitage projekt kasti
Ehitage projekt kasti
Ehitage projekt kasti
Ehitage projekt kasti
Ehitage projekt kasti
Ehitage projekt kasti
Ehitage projekt kasti
Ehitage projekt kasti

Kuni selle hetkeni olid RPi ja muud komponendid leivalaua abil pingile kokku pandud. Seejärel kasutati leivaplaadi asendamiseks väikest ribatükki ja kõik juhtmed paika.

Leiti heleroosa väike Lego hoiukarp, kus oli palju ruumi ja kus RPI liiga kuumaks ei läheks. karbi külgedele puuriti augud ja RPi ja ribalaua paigal hoidmiseks kasutati 3 mm nailonist kinnituspostasid.

GPIO -lt on vaja ainult 3 ühendust, 3.3v, GND ja andmed.

  • 3.3vdc pin 1
  • GND tihvt 6
  • Andmete (GPIO4) tihvt 7

USB -toite ja kaablite jaoks lisati augud ka temperatuurianduritele. Kui kõik oli paika pandud, lisati väike kogus silikoontihendit, et ämblikud ei arvaks, et see on mõnus soe koht talve veetmiseks!

12. samm: lõpetatud

Valmis
Valmis
Valmis
Valmis

Kast paigutati kasvuhoonesse ja toiteallikaks oli USB -laadija. Kaks andurit paigutati üks kasvuhoone ülaosa lähedale ja teine istutuspotile, et kontrollida, kui külmad seemikud öösel muutuvad.

See on minu esimene juhendatav ja loodan, et arvate, et see on korras. Kui leiate vigu, andke mulle sellest teada ja parandan vajadusel. Järgmine samm võib olla andmete logimine iga (ütleme) 60 sekundi järel, kuid see tuleb hiljem.

Soovitan: