Satura rādītājs:

IoT divu temperatūru datu serveris: 12 soļi (ar attēliem)
IoT divu temperatūru datu serveris: 12 soļi (ar attēliem)

Video: IoT divu temperatūru datu serveris: 12 soļi (ar attēliem)

Video: IoT divu temperatūru datu serveris: 12 soļi (ar attēliem)
Video: How to Prepare a Chinese New Year Dinner (12 dishes included) 2024, Jūnijs
Anonim
IoT divu temperatūru datu serveris
IoT divu temperatūru datu serveris

Šis ir mans pirmais mēģinājums uzrakstīt pamācību, tāpēc, lūdzu, esiet mierīgi! Ja jūs domājat, ka tas nav pārāk slikti, lūdzu, balsojiet par mani Pirmreizējo autoru konkursā.

Šis ir mans Lock-Down projekts, lai attālināti uzraudzītu 2 temperatūras siltumnīcā, vienu grīdas līmenī un vienu zem jumta. Lai gan iepriekš biju izmantojis Raspberry Pi’s (RPi), šis projekts ietvēra vairākus elementus, kurus es nebiju izmantojis, un pa ceļam es atradu vairākas pamācības, kas bija novecojušas vai vienkārši nepareizas. Šī ir mana zināšanu kolekcija, lai no Pi Zero & 2 DS18B20+ viena stieples digitālajiem temperatūras sensoriem izgatavotu strādājošu divu tālvadības temperatūras monitoru.

Lietas, par kurām uzzināju:

  • Datu pieejamība no ierīces kā lietu interneta (IoT) daļa
  • 1 vadu interfeiss ar 2 ierīcēm
  • Dataplicity
  • JSON dati
  • UFW ugunsmūra iestatīšana
  • Freeboard.io izmantošana datu parādīšanai
  • RPi konfigurēšana programmas automātiskai palaišanai

Ir milzīgs datu apjoms, ko var atrast, vienkārši meklējot visas šīs tēmas, taču nav tik skaidrs, kā apvienot visus šos atsevišķos elementus.

Piegādes

  • Jums būs nepieciešams Raspberry Pi (ar monitoru, peli un tastatūru iestatīšanai, bet ne, palaižot gatavo projektu)
  • Darbīgs interneta savienojums.
  • PSU ar Micro USB savienotāju
  • 2 no DS18B20+ viena stieples digitālajiem temperatūras sensoriem. Es atklāju, ka Amazon bija lētākais
  • 4K7 omu rezistors vai es izmantoju 2 10K omu rezistorus.
  • Neliels maizes dēlis un daži vīriešu/sieviešu vadi testēšanai uz stenda
  • Neliels sloksnes plāksnes gabals galīgajai montāžai
  • Vienkārši instrumenti lodēšanai un stieples noņemšanai.
  • Neliela plastmasas kastīte gatavā dizaina izvietošanai

1. darbība. Aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra

Man jau bija Raspberry Pi Zero W (ar bezvadu), taču esmu pārliecināts, ka šis vienkāršais projekts darbosies labi jebkurā RPI. Nepāra elektronisko bitu kastē manā darbnīcā bija viss pārējais (maizes dēlis, vads, PSU utt.), Un tāpēc viss, kas man bija jāpērk, bija divi 2 x DS18B20 sensori no Amazon. Šīs ir parastās DS18B20 mikroshēmas, kas ir ērti uzstādītas ūdensnecaurlaidīgā korpusā un 3 m kabeli. No kabeļa ir 3 vadi:

  • Sarkans - barošana - pievienojiet 3.3V kontaktam 1
  • Melns - atgriešanās - pievienojiet zemējuma tapai 6
  • Dzeltens - dati - izveidojiet savienojumu ar GPIO4 7. tapu

Sensori izmanto 1 vadu saskarni, un tos bija ļoti viegli savienot un iegūt datus no tiem. Tīmeklī ir vairākas lapas ar informāciju par vienas ierīces pieslēgšanu, bet ļoti maz par 2 (vai vairāk) savienošanu.

Pārbaudei uz stenda ķēde tika salikta, izmantojot maizes dēli. Manis atrastās apmācības norādīja, ka datu līnijas novirzīšanai tiek izmantots 4K7 rezistors, bet es nevarēju atrast vienu un tik paralēli izmantotu 2* 10K, un tas darbojās lieliski. Tīmeklī ir daudz resursu, lai izmantotu maizes dēli RPi shēmu montāžai, un tāpēc es tos šeit neatkārtošu.

Diagramma izveidota, izmantojot shēmas shēmu

2. darbība: Raspberry Pi OS programmatūras iestatīšana

Raspberry Pi OS programmatūras iestatīšana
Raspberry Pi OS programmatūras iestatīšana
Raspberry Pi OS programmatūras iestatīšana
Raspberry Pi OS programmatūras iestatīšana
Raspberry Pi OS programmatūras iestatīšana
Raspberry Pi OS programmatūras iestatīšana

Tā kā iepriekš biju izmantojis šo RPi, nolēmu sākt ar tīru OS instalēšanu, pārformatēju SD karti un instalēju tīru NOOBS versiju. Pēc tam es instalēju pilnu Raspian darbvirsmas versiju (augšējā opcija), jo tas arī instalētu PIP & GIT, kas nav vienkāršākajā versijā. Lai gan projektam man nebija nepieciešama grafiskā lietotāja saskarne (GUI), tas ir vienkāršs veids, kā iestatīt visas iespējas, un ar 16 GB SD karti vietas netrūka.

Es iestatīju WI-FI piekļuvi, pēc tam palaidu pilnu instalēšanu un pēc tam vedni ar atjauninājumiem un jauninājumiem utt. Izmantojot GUI, es pēc vajadzības iestatīju RPI tikai tāpēc, ka GUI lietošana ir vienkāršāka nekā komandrindas saskarne (CLI). Es izvēlnē devos uz konfigurācijas logu un pēc tam:

  • Sistēmas cilnē es nomainīju paroli, iestatīju sāknēšanu uz CLI un neatzīmēju automātisko pieteikšanos
  • Cilnē Saskarnes es iespējoju 1 vadu
  • Noklikšķiniet uz Labi un atkārtoti palaidiet

Ja jums jebkurā laikā jāatgriežas GUI, vienkārši ierakstiet startx CLI

startx

3. darbība. Iestatiet Dataplicity, lai atļautu attālo piekļuvi

Iestatiet Dataplicity, lai atļautu attālo piekļuvi
Iestatiet Dataplicity, lai atļautu attālo piekļuvi
Iestatiet Dataplicity, lai atļautu attālo piekļuvi
Iestatiet Dataplicity, lai atļautu attālo piekļuvi
Iestatiet Dataplicity, lai atļautu attālo piekļuvi
Iestatiet Dataplicity, lai atļautu attālo piekļuvi

Es atradu patiešām noderīgu emuāra ierakstu vietnē Dataplicity vietnē https://blog.dataplicity.com/how-to-build-a-raspb… un izmantoju dažas šīs daļas. Emuāra 3. sadaļā ir aprakstīta Dataplicity iestatīšana attālinātai piekļuvei RPi. Es nekad iepriekš neesmu izmantojis Dataplicity, bet jāsaka, ka es to ļoti iesaku kā ļoti vienkāršu attālās piekļuves rīku. Lai gan ekrānuzņēmumi (emuārā iepriekš) ir nedaudz novecojuši, princips ir labs.

Datorā dodieties uz vietni Dataplicity.com un izveidojiet kontu (varat izmantot pārlūkprogrammu GUI, bet diezgan lēni, izmantojot RPi Zero). Pēc tam noklikšķiniet uz pogas “Pievienot jaunu ierīci”, un uznirstošajā logā tiek parādīta koda rinda. Pēc tam pārejiet uz CLI uz RPi un ierakstiet teksta rindu. Ja viss ir kārtībā, tiks parādīts Dataplicity logotips un tiks palaista instalēšanas programma.

Atkal datorā jaunajai ierīcei tagad vajadzētu parādīties vietnē Dataplicity. Noklikšķiniet uz ierīces, un jums vajadzētu redzēt RPi termināļa ekrānu.

Šeit jāņem vērā dažas lietas:

  • Lai pieteiktos, ierakstiet "su pi" (lai piekļūtu superlietotājam), un jums tiks prasīts ievadīt paroli (kā noteikts iepriekš)
  • Jums ir jāiespējo tārpu caurums (lai to izmantotu vēlāk)
  • Lai vēlāk parādītu datus, jums būs nepieciešama tārpa cauruma adrese (ar peles labo pogu noklikšķiniet, lai kopētu, ja nepieciešams)

Šo attālo piekļuvi varat izmantot visām tālāk norādītajām darbībām, un datu, programmu utt. Kopēšana ir daudz vienkāršāka nekā tieši RPi.

4. darbība: pārbaudiet sensorus

Tagad visām nākamajām sadaļām varat izmantot Dataplicity attālinātu piekļuvi RPI.

Ja viss ir savienots pareizi, jums vajadzētu redzēt temperatūru, kas tiek atgriezta no DS18B20. Es strādāju, izmantojot Pi Hut apmācību, taču lielākā daļa no tā nebija nepieciešama. Ja vēlaties iegūt pilnīgu informāciju, tos var atrast šeit:

Svarīgi ir doties uz ierīču direktoriju un pārliecināties, vai tiek parādīti 2 dažādi sensori.

cd/sys/bus/w1/devices/

Tam vajadzētu parādīt 2 ierīces, sākot ar 28, un kopnes galveno. Manējais rāda:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Šie 2 ID numuri ir svarīgi un būs nepieciešami vēlāk! Pēc tam pārejiet uz vienu no sensoru katalogiem:

cd 28-011453ebfdaa

(piemēram) un pēc tam nolasīt sensora vērtību

kaķis w1_slave

Jāparāda 2 teksta rindiņas:

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

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

JĀ rāda, ka sensors nolasa pareizi, un 21187 rāda temperatūru pēc Celsija 21,187 (daliet ar 1000) Atkārtojiet to, lai pārbaudītu otro sensoru. Ja abi lasa labi, mēs varam pāriet uz datu lasīšanu, izmantojot Python3.

Es nokopēju un pielāgoju šādu tīmeklī atrasto kodu, bet neatceros, no kurienes. Ja tas izskatās pēc jūsu koda, tad es atvainojos, jo nebija paredzēts plaģiāts; lūdzu, dariet man to zināmu, un es atzīšu jūsu darbu.

Izveidojiet direktoriju ar nosaukumu projekti un pārejiet uz šo direktoriju.

mkdir ~/projekti

cd ~/projekti

Šajā direktorijā izmantojiet teksta redaktoru (nano), lai izveidotu un rediģētu failu ar nosaukumu thermo-test.py

sudo nano thermo-test.py

Tam vajadzēja atvērt redaktoru, un, kad izmantojat Dataplicity, varat vienkārši nokopēt tālāk norādīto kodu (thermo-test.py) un ielīmēt redaktorā. Jums būs jāmaina 2 ierīču nosaukumi (sākot no 28 līdz…) uz iepriekš minētajiem. Kad viss izskatās pareizi, nospiediet ctrl+X, lai pabeigtu, Y, lai saglabātu un atgrieztos, lai izmantotu esošo nosaukumu. Ja vēlaties izmantot GUI, Thonny darīs to pašu.

Lai palaistu testa programmu:

sudo python3 termotests.py

Ja viss ir kārtībā, fails jāizpilda, izmantojot python 3, un ik pēc 10 sekundēm drukā uz ekrāna 2 temperatūras. Jūs varat pārbaudīt, vai viss ir kārtībā, ievietojot 1 sensoru ledus ūdenī vai viegli sasildot ar fēnu. Ja viss šķiet kārtībā, tad varam turpināt!

5. solis: UFW ugunsmūris

UFW ugunsmūris
UFW ugunsmūris

Tā kā šis RPi bija pastāvīgi savienots ar internetu, es nolēmu, ka ugunsmūris būtu laba ideja, un vienkāršs lietojums ir nekomplicēts ugunsmūris (ufw). Šeit ir ļoti vienkārša apmācība

Es neiedziļinos lielā dziļumā, jo tas nav šīs pamācības mērķis, bet īsumā:

Instalējiet ugunsmūri ar:

sudo apt-get install ufw

Iestatiet noklusējuma noteikumus:

sudo ufw noklusējuma atļaut izejošo

sudo ufw noklusējuma noliegt ienākošo

Atveriet portu 80 Dataplicity

sudo ufw atļaut 80

Iespējot ugunsmūri

sudo ufw iespējot

Pārbaudiet statusu un pārliecinieties, vai viss darbojas

sudo ufw statuss

6. solis: S beidz temperatūras datus kā JSON

S noslēdzot temperatūras datus kā JSON
S noslēdzot temperatūras datus kā JSON

Atpakaļ uz Tima Fernando emuāru un 5. sadaļu.

Izpildiet norādītās darbības (izņemot gadījumus, kad mēs jau esam izveidojuši projektu direktoriju), un visiem vajadzētu darboties labi. Izmantojot GIT, jūs lejupielādēsit Tima lietojumprogrammu failus, un PIP pārliecināsies, ka jūsu RPi ir instalētas visas nepieciešamās programmas. Pēc tam es atklāju, ka man ir jārestartē, lai pārliecinātos, ka visas paketes ir pareizi iestatītas.

Pēc tam palaidiet Tima programmu, un jūsu RPi jāsniedz JSON dati pirmajam sensoram.

cd mājas lapa/pi/projekti/temperatūra-serv-pi

sudo gunicorn temperatūra: lietotne -b 0.0.0.0:80

Jūs varat turpināt emuāru līdz 6. sadaļai, kur atradīsit datus par vienu no sensoriem.

Varat arī izmantot JSON Viewer, lai skatītu datus https://codebeautify.org/jsonviewer Noklikšķiniet uz pogas “ielādēt URL” un ielīmējiet iepriekš norādīto tārpa cauruma adresi. Kreisajā rūtī vajadzētu redzēt divus ierakstus, vienu pēc Celsija un otru pēc Fārenheita.

7. darbība: nosūtiet datus no abiem sensoriem

Sūtīt datus no abiem sensoriem
Sūtīt datus no abiem sensoriem

Pamatojoties uz kodu temperatūrā.py un thermo-test.py, es izveidoju 2temps.py Rediģēts tāpat kā iepriekš direktorijā /projekti /temperatūra-serve-pi, ielīmēts kodā un saglabāts. Tad es skrēju

sudo gunicorn 2temps: lietotne -b 0.0.0.0:80

Tagad, kad es atkārtoti palaidu JSON Viewer, es saņēmu vērtības temp1 un temp2

Veiksmi:)

8. darbība: automātiskā palaišana

Automātiskā palaišana
Automātiskā palaišana

Tā kā siltumnīcas barošana laiku pa laikam tiek izslēgta, es vēlējos, lai RPi automātiski ielādētu programmu un sāktu pierādīt datus. Vienkāršākais veids, šķiet, ir rediģēt rc.local failu un pievienot vajadzīgo kodu apakšā tieši virs izejas 0 rindas.

cd utt

sudo nan rc.local

tad pievienojumprogramma

gulēt 10

cd sākumlapa/pi/projekti/Temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • & Beigās liek datoram palaist skriptu apakščaulā, lai dators negaidītu, līdz funkcija beigsies, un turpinās ar sāknēšanu
  • Miega režīms 10 [sekundes] pirms pakalpojuma uzsākšanas nodrošina, ka visas iepriekšējās darbības ir pabeigtas.

Izejiet un saglabājiet kā iepriekš. Pēc tam restartējiet un atkārtoti palaidiet JSON Viewer, lai pārbaudītu, vai viss ir kārtībā.

Ja vēlaties iegūt vairāk informācijas par automātiski palaistām programmām, šeit ir lieliska apmācība

9. darbība: parādiet datus vietnē Freeboard.io (1)

Parādiet datus vietnē Freeboard.io (1)
Parādiet datus vietnē Freeboard.io (1)

Kopsavilkumā soļi Tima emuārā darbojas labi; izveidojiet kontu vietnē www.freeboard.io un pēc tam izveidojiet jaunu Freeboard, es nosaucu savu SHEDTEMPERATURES.

Vispirms pievienojiet datu avotu, augšējā labajā stūrī noklikšķiniet uz PIEVIENOT un uznirstošajā logā kā veidu izvēlieties JSON, piešķiriet datu avotam VĀRDU, pievienojiet tārpa cauruma adresi kā URL un noklikšķiniet uz NĒ, lai izmēģinātu THINGPROXY. Temperatūra mainās tikai ļoti lēni, un tāpēc ATJAUNOJIET KATRAS 15 SECONDS. Noklikšķiniet uz SAGLABĀT.

10. darbība: parādiet datus vietnē Freeboard.io (2)

Parādiet datus vietnē Freeboard.io (2)
Parādiet datus vietnē Freeboard.io (2)
Parādiet datus vietnē Freeboard.io (2)
Parādiet datus vietnē Freeboard.io (2)
Parādiet datus vietnē Freeboard.io (2)
Parādiet datus vietnē Freeboard.io (2)
Parādiet datus vietnē Freeboard.io (2)
Parādiet datus vietnē Freeboard.io (2)

Noklikšķiniet uz PIEVIENOT PANEU un pēc tam uz +, lai pievienotu pirmo logrīku. Jūs varat izvēlēties un spēlēt ar dažādiem TYPE, bet es atklāju, ka Gauge bija tikai labi. Norādiet savai lietojumprogrammai piemērotu NOSAUKUMU, VIENĪBAS (C), MINIMUM un MAXIMUM. Lai iegūtu datu bāzi, noklikšķiniet uz +, un tiks parādīts iepriekš izveidotais avots.

Tagad nolaižamajā izvēlnē jāparāda 2 iepriekš izveidotie JSON datu avoti (temp2 un temp2). Atlasiet atbilstošo avotu un noklikšķiniet uz Saglabāt.

Atkārtojiet to otrajam mērinstrumentam, un mēs esam gatavi.

Dati tagad jāparāda 2 mērierīcēs, un, ja jums joprojām ir pieslēgts PRi monitoram, jums vajadzētu redzēt Freeboard.io pieprasījumus, kad tie tiek saņemti.

11. solis: izveidojiet projektu kastē

Veidojiet projektu kastē
Veidojiet projektu kastē
Veidojiet projektu kastē
Veidojiet projektu kastē
Veidojiet projektu kastē
Veidojiet projektu kastē
Veidojiet projektu kastē
Veidojiet projektu kastē

Līdz šim RPi un pārējās sastāvdaļas bija samontētas uz stenda, izmantojot maizes dēli. Pēc tam maizes dēļa nomaiņai tika izmantots neliels sloksnes plāksnes gabals, un visi vadi tika pielodēti.

Tika atrasta spilgti rozā maza Lego uzglabāšanas kaste, kurā bija daudz vietas un kurā RPI nekļūtu pārāk karsts. kastes sānos tika urbti caurumi, un RPi un sloksnes turēšanai vietā tika izmantoti 3 mm neilona stiprinājuma pīlāri.

No GPIO ir nepieciešami tikai 3 savienojumi, 3.3v, GND un dati.

  • 3.3Vdc tapa 1
  • GND tapa 6
  • Datu (GPIO4) 7. tapa

Kastītē tika pievienoti arī USB barošanas avoti un kabeļi temperatūras sensoriem. Kad viss bija salikts savās vietās, tika pievienots neliels daudzums silikona hermētiķa, lai zirnekļi nedomātu, ka tā ir jauka, silta vieta, kur pārziemot!

12. solis: pabeigts

Pabeigts
Pabeigts
Pabeigts
Pabeigts

Kastīte tika ievietota siltumnīcā un tika darbināta no USB lādētāja. Abi sensori tika novietoti viens pie siltumnīcas augšpuses, bet otrs - uz augu poda, lai pārbaudītu, cik auksti stādi kļūst naktī.

Šī ir mana pirmā pamācība, un es ceru, ka jūs domājat, ka viss ir kārtībā. Ja atrodat kādas kļūdas, lūdzu, paziņojiet man, un es vajadzības gadījumā labošu. Nākamais solis varētu būt datu reģistrēšana ik pēc 60 sekundēm, bet tas notiks vēlāk.

Ieteicams: