Indholdsfortegnelse:

IoT Dual Temperature Data Server: 12 trin (med billeder)
IoT Dual Temperature Data Server: 12 trin (med billeder)

Video: IoT Dual Temperature Data Server: 12 trin (med billeder)

Video: IoT Dual Temperature Data Server: 12 trin (med billeder)
Video: I was wrong about this trick 😧 (true magic?) 2024, Juni
Anonim
IoT -datatjener med dobbelt temperatur
IoT -datatjener med dobbelt temperatur

Dette er mit første forsøg på at skrive en instruerbar, så vær venlig at gå let på mig! Hvis du synes, at dette ikke er så slemt, skal du stemme på mig i første gang forfatterkonkurrence.

Dette er mit Lock-Down projekt til fjernovervågning af 2 temperaturer i et drivhus, en på gulvniveau og en lige under taget. Selvom jeg havde brugt Raspberry Pi’s (RPi) før, involverede dette projekt flere elementer, jeg ikke havde brugt, og undervejs fandt jeg flere tutorials, der var forældede eller bare forkerte. Dette er min samling af viden om at lave en fungerende dobbelt fjernbetjent temperaturmonitor fra en Pi Zero & 2 DS18B20+ One Wire Digital Temperature Sensors, der blev erhvervet undervejs.

Ting jeg lærte om:

  • Gør data tilgængelige fra en enhed som en del af Internet of Things (IoT)
  • 1-Wire interface med 2 enheder
  • Dataplicitet
  • JSON -data
  • Opsætning af UFW firewall
  • Brug af Freeboard.io til at vise dataene
  • Konfiguration af RPi til at køre programmet automatisk

Der er enorme mængder data, der kan findes med en simpel søgning om alle disse emner, men det, der ikke er så klart, er, hvordan man kombinerer alle disse separate elementer.

Forbrugsvarer

  • Du skal bruge en Raspberry Pi (med en skærm, mus og tastatur til opsætning, men ikke når du kører det færdige projekt)
  • En fungerende internetforbindelse.
  • En PSU med et Micro USB -stik
  • 2 af DS18B20+ One Wire digitale temperatursensorer. Jeg fandt ud af, at Amazon var den billigste
  • 4K7 ohm modstand, eller jeg brugte 2 10K ohm modstande.
  • Lille brødbræt og et par han-/huntråde til test på bænken
  • Lille stykke stripboard til den sidste samling
  • Enkle værktøjer til lodning og afisolering.
  • Lille plastkasse til at huse det færdige design

Trin 1: Hardware

Hardware
Hardware
Hardware
Hardware

Jeg havde allerede en Raspberry Pi Zero W (med trådløs), men jeg er sikker på, at dette enkle projekt vil køre fint på alle RPI'er. Kassen med ulige elektroniske bits i mit værksted havde alt andet (brødbræt, ledning, PSU osv.), Og alt hvad jeg skulle købe var to 2 x DS18B20 sensorer fra Amazon. Disse er de normale DS18B20 -chips, der bare er bekvemt monteret i et vandtæt hus og 3 m kabel. Der er 3 ledninger fra kablet:

  • Rød - strøm - tilsluttes 3.3v pin 1
  • Sort - retur - tilslutning til jordstift 6
  • Gul - data - tilslut til GPIO4 pin 7

Sensorerne bruger 1-Wire-grænsefladen og var meget nemme at tilslutte og hente data fra. Der er flere sider på Internettet med oplysninger om tilslutning af 1 enhed, men meget lidt om tilslutning af 2 (eller flere).

Til test på bænken blev kredsløbet samlet ved hjælp af et brødbræt. De selvstudier, jeg fandt, angav at bruge en 4K7 -modstand til at skæve datalinjen, men jeg kunne ikke finde en og brugte derfor 2* 10K parallelt, og det fungerede fint. Der er masser af ressourcer på Internettet til at bruge et brødbræt til at samle RPi -kredsløb, og derfor vil jeg ikke gentage dem her.

Diagram oprettet ved hjælp af kredsløbsdiagram

Trin 2: Opsætning af Raspberry Pi OS -software

Opsætning af Raspberry Pi OS -software
Opsætning af Raspberry Pi OS -software
Opsætning af Raspberry Pi OS -software
Opsætning af Raspberry Pi OS -software
Opsætning af Raspberry Pi OS -software
Opsætning af Raspberry Pi OS -software

Da jeg havde brugt denne RPi før, besluttede jeg at starte med en ren installation af operativsystemet, jeg formaterede SD -kortet og installerede en ren version af NOOBS. Jeg installerede derefter den fulde desktopversion af Raspian (den øverste mulighed), da dette også ville installere PIP & GIT, som lite -versionen ikke gør. Selvom jeg ikke havde brug for den grafiske brugergrænseflade (GUI) til projektet, er det en nem måde at opsætte alle muligheder på, og med et 16 GB SD -kort var der ikke mangel på plads.

Jeg konfigurerede WI-FI-adgang og kørte derefter hele installationen, og derefter guiden med opdateringer og opgraderinger osv. Ved hjælp af GUI'en konfigurerede jeg RPI'en efter behov, bare fordi det er enklere at bruge GUI'en end Command Line Interface (CLI). Jeg gik til konfigurationsvinduet fra menuen og derefter:

  • På systemfanen ændrede jeg adgangskoden, indstillede til at starte til CLI og afmarkerede Automatisk login
  • På fanen Interfaces aktiverede jeg 1-wire
  • Klikte ok og genstartede

Hvis du til enhver tid skal tilbage til GUI'en, skal du bare skrive startx på CLI

startx

Trin 3: Opsætning af dataplicitet for at tillade fjernadgang

Opsæt Dataplicity for at tillade fjernadgang
Opsæt Dataplicity for at tillade fjernadgang
Opsæt Dataplicity for at tillade fjernadgang
Opsæt Dataplicity for at tillade fjernadgang
Opsæt Dataplicity for at tillade fjernadgang
Opsæt Dataplicity for at tillade fjernadgang

Jeg fandt en virkelig nyttig blogindgang på Dataplicity-webstedet på https://blog.dataplicity.com/how-to-build-a-raspb… og brugte et par dele af dette. Afsnit 3 i bloggen beskriver opsætning af Dataplicity til fjernadgang til RPi. Jeg har aldrig brugt Dataplicity før, men må sige, jeg anbefaler det grundigt som et meget simpelt fjernadgangsværktøj. Selvom skærmbillederne (i bloggen ovenfor) er lidt forældede, er princippet fint.

På din pc skal du gå til Dataplicity.com og oprette en konto (du kan bruge browseren i GUI, men ret langsomt på RPi Zero). Klik derefter på knappen "tilføj ny enhed", og en linje med kode vises i pop-up-vinduet. Gå derefter til CLI på RPi og indtast tekstlinjen. Hvis alt er i orden, vises Dataplicity -logoet, og installationsprogrammet kører.

Tilbage på din pc skulle den nye enhed nu vises på Dataplicity -webstedet. Klik på enheden, og du skal se en terminalskærm til din RPi.

Der er et par ting at bemærke her:

  • For at logge ind skal du skrive "su pi" (for superbrugeradgang), og du bliver bedt om adgangskoden (som angivet tidligere)
  • Du skal aktivere Wormhole (skal bruges senere)
  • Du skal bruge ormehullets adresse til visning af dataene senere (højreklik for at kopiere, når det er nødvendigt)

Du kan bruge denne fjernadgang til alle de følgende trin og er meget lettere til kopiering af data, programmer osv. End direkte på RPi'en.

Trin 4: Kontroller sensorerne

Du kan nu bruge Dataplicity fjernadgang til RPI for alle de næste afsnit.

Hvis alt nu er tilsluttet ok, skal du kunne se temperaturerne returneres fra DS18B20'erne. Jeg arbejdede igennem Pi Hut -vejledningen, men det meste af dette var ikke påkrævet. Hvis du vil have alle detaljerne, kan de findes her:

De vigtige bits er at gå til enhedsmappen og sikre, at der vises 2 forskellige sensorer.

cd/sys/bus/w1/enheder/

Dette skal vise 2 enheder, der starter med 28- og busmasteren. Mine viser:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Disse 2 ID -numre er vigtige og bliver nødvendige senere! Skift derefter til et af sensorkatalogerne:

cd 28-011453ebfdaa

(for eksempel) og derefter for at aflæse værdien fra sensoren

kat w1_slave

Der skal være 2 tekstlinjer vist:

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

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

JA viser, at sensoren læser korrekt, og 21187 viser temperaturen i Celsius på 21.187 (divider med 1000) Gentag dette for at kontrollere den anden sensor. Hvis begge læser ok, kan vi gå videre til at læse dataene med Python3.

Jeg kopierede og tilpassede følgende kode, som jeg fandt på Internettet, men jeg kan ikke huske, hvorfra. Hvis dette ligner din kode, så undskyld jeg, da der ikke var meningen med noget plagiat; lad mig det vide, og jeg vil anerkende dit arbejde.

Opret et bibliotek kaldet projekter, og skift til det bibliotek.

mkdir ~/projekter

cd ~/projekter

I dette bibliotek skal du bruge teksteditoren (nano) til at oprette og redigere en fil kaldet thermo-test.py

sudo nano thermo-test.py

Dette skulle have åbnet editoren, og da du bruger Dataplicity, kan du blot kopiere følgende kode herunder (thermo-test.py) og indsætte i editoren. Du bliver nødt til at ændre de 2 enhedsnavne (fra 28-…) til dem, der er angivet ovenfor. Når alt ser korrekt ud, skal du trykke på ctrl+X for at afslutte, Y for at gemme og vende tilbage for at bruge det eksisterende navn. Hvis du foretrækker at bruge GUI'en, gør Thonny det samme.

Sådan kører du testprogrammet:

sudo python3 thermo-test.py

Alt dette er godt, bør dette eksekvere filen ved hjælp af python 3 og udskrive 2 temperaturer på skærmen hvert 10. sekund. Du kan teste alt er ok ved at placere 1 sensor i isvand eller forsigtigt varme med en hårtørrer. Hvis alt ser ud til at være i orden, kan vi komme videre!

Trin 5: UFW Firewall

UFW Firewall
UFW Firewall

Da denne RPi ville være permanent forbundet til internettet, besluttede jeg, at en firewall ville være en god idé, og en enkel at bruge er Uncomplicated Firewall (ufw). Der er en meget enkel tutorial her

Jeg går ikke i dybden, da dette ikke er formålet med denne instruktør, men kort sagt:

Installer firewallen med:

sudo apt-get install ufw

Angiv standardreglerne:

sudo ufw standard tillader udgående

sudo ufw standard nægter indgående

Åbn port 80 for Dataplicity

sudo ufw tillader 80

Aktiver firewallen

sudo ufw aktiver

Kontroller status og kontroller, at alt kører

sudo ufw status

Trin 6: S slutter temperaturdataene som JSON

S slutter temperaturdata som JSON
S slutter temperaturdata som JSON

Tilbage til Tim Fernandos blog og afsnit 5.

Følg trinene som angivet (bortset fra at vi allerede har oprettet projektmappen), og alt skulle fungere fint. Ved hjælp af GIT vil du downloade Tims applikationsfiler, og PIP'en sørger for, at alle de nødvendige programmer er installeret på din RPi. Jeg fandt derefter ud af, at jeg skulle genstarte for at sikre, at pakkerne alle var konfigureret korrekt.

Kør derefter Tims program, og din RPi skal derefter levere JSON -data til den første sensor.

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

sudo gunicorn temperatur: app -b 0.0.0.0:80

Du kan fortsætte gennem bloggen til sektion 6, hvor du finder data til rådighed for 1 af sensorerne.

Du kan også bruge JSON Viewer til at se data https://codebeautify.org/jsonviewer Klik på knappen "indlæs URL" og indsæt den ormehulsadresse, der blev noteret tidligere. I venstre rude skal du se to poster, en for Celsius og en for Fahrenheit.

Trin 7: Send data fra begge sensorer

Send data fra begge sensorer
Send data fra begge sensorer

Baseret på koden i temperature.py og thermo-test.py, oprettede jeg 2temps.py Redigeret som før i biblioteket /projects /temperature-serve-pi, indsat i koden og gemt. Jeg løb derefter

sudo gunicorn 2temps: app -b 0.0.0.0:80

Nu da jeg kørte JSON Viewer igen, fik jeg værdier for temp1 & temp2

Succes:)

Trin 8: Automatisk start

Automatisk start
Automatisk start

Da strømmen til drivhuset af og til bliver slukket, ville jeg have, at RPi automatisk indlæste programmet og begyndte at bevise dataene. Den enkleste måde ser ud til at være at redigere rc.local -filen og tilføje den nødvendige kode i bunden lige over exit 0 -linjen.

cd osv

sudo nan rc.local

derefter tilføjelse

sove 10

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

  • & I slutningen fortæller computeren at køre scriptet i en sub -shell, så din computer ikke venter på, at funktionen slutter og fortsætter med boot
  • Søvn 10 [sekunder] sørger for, at alle de foregående operationer er gennemført, før tjenesten startes.

Afslut og gem som før. Genstart derefter og kør JSON Viewer igen for at kontrollere, at alt er fint.

Hvis du vil have mere information om programmer, der kører automatisk, er der en god vejledning her

Trin 9: Vis dataene på Freeboard.io (1)

Vis dataene på Freeboard.io (1)
Vis dataene på Freeboard.io (1)

Trinnene i Tims blog fungerer fint, opsummeret; opret en konto på www.freeboard.io og opret derefter et nyt fribord, jeg kaldte mine SHEDTEMPERATURES.

Tilføj først en datakilde, klik på TILFØJ øverst til højre, og vælg JSON som popup-pop-up, giv datakilden et NAVN, tilføj ormhulsadressen fra tidligere som URL og klik på NEJ for at PRØVE TINGPROXY. Temperaturerne ændrer sig kun meget langsomt, så OPFRISK HVER 15 SECONDS er fint. Klik på GEM.

Trin 10: Vis dataene på Freeboard.io (2)

Vis dataene på Freeboard.io (2)
Vis dataene på Freeboard.io (2)
Vis dataene på Freeboard.io (2)
Vis dataene på Freeboard.io (2)
Vis dataene på Freeboard.io (2)
Vis dataene på Freeboard.io (2)
Vis dataene på Freeboard.io (2)
Vis dataene på Freeboard.io (2)

Klik på TILFØJ PANE og derefter på + for at tilføje den første widget. Du kan vælge og spille med forskellige TYPER, men jeg fandt, at Gauge var fint. Giv en passende TITLE, UNITS (C), MINIMUM og MAXIMUM, der passer til din applikation. For DATASOURCE skal du klikke på +, og kilden, der er oprettet ovenfor, vises.

Rullemenuen skal nu vise de 2 JSON -datakilder (temp2 & temp2), der er bygget tidligere. Vælg den relevante kilde, og klik på Gem.

Gentag dette for den anden måler, og vi er klar.

Dataene skal nu vises på de 2 målere, og hvis du stadig har PRi forbundet til en skærm, bør du se anmodningerne fra Freeboard.io, når de ankommer.

Trin 11: Byg projektet ind i en kasse

Byg projektet ind i en kasse
Byg projektet ind i en kasse
Byg projektet ind i en kasse
Byg projektet ind i en kasse
Byg projektet ind i en kasse
Byg projektet ind i en kasse
Byg projektet ind i en kasse
Byg projektet ind i en kasse

Indtil dette tidspunkt var RPi og de andre komponenter alle blevet samlet på bænken ved hjælp af et brødbræt. Et lille stykke stripboard blev derefter brugt til at udskifte brødbrættet, og ledningerne blev alle loddet på plads.

Der blev fundet en lyserød lille Lego -opbevaringsboks, der havde masser af plads, og hvor RPI'en ikke ville blive for varm. huller blev boret i siderne af kassen & 3 mm nylon monteringssøjler blev brugt til at holde RPi og stripboard på plads.

Der kræves kun 3 forbindelser fra GPIO, 3.3v, GND & data.

  • 3.3vdc pin 1
  • GND pin 6
  • Data (GPIO4) pin 7

Der blev også tilføjet huller i kassen til USB -strøm og kabler til temperatursensorerne. Når alt var monteret på plads, blev der tilsat en lille mængde silikontætningsmasse for at sikre, at edderkopper ikke syntes, det var et dejligt varmt sted at tilbringe vinteren!

Trin 12: Færdig

Færdig
Færdig
Færdig
Færdig

Boksen blev placeret i drivhuset og drevet fra en USB -oplader. De to sensorer blev placeret den ene nær toppen af drivhuset og den anden på en plantepotte for at kontrollere, hvor kolde frøplanterne fik om natten.

Dette er min første instruerbare, og jeg håber, at du synes, det er i orden. Hvis du finder fejl, så lad mig det vide, og jeg vil ændre, hvor det er nødvendigt. Det næste trin kan være at logge dataene hvert (sig) 60 sek., Men dette kommer senere.

Anbefalede: