Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Hardware
- Trin 2: Opsætning af Raspberry Pi OS -software
- Trin 3: Opsætning af dataplicitet for at tillade fjernadgang
- Trin 4: Kontroller sensorerne
- Trin 5: UFW Firewall
- Trin 6: S slutter temperaturdataene som JSON
- Trin 7: Send data fra begge sensorer
- Trin 8: Automatisk start
- Trin 9: Vis dataene på Freeboard.io (1)
- Trin 10: Vis dataene på Freeboard.io (2)
- Trin 11: Byg projektet ind i en kasse
- Trin 12: Færdig
Video: IoT Dual Temperature Data Server: 12 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
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
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
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
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
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
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
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
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)
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)
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
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
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:
OreServer - en Raspberry Pi -dedikeret Minecraft -server med LED -afspillerindikator: 9 trin (med billeder)
OreServer - en Raspberry Pi -dedikeret Minecraft -server med LED -afspillerindikator: juli 2020 OPDATERING - Før du starter på dette projekt, skal du være opmærksom på, at der er foretaget en masse ændringer og opdateringer til de forskellige softwareværktøjer, jeg brugte til at oprette dette over to år siden. Som et resultat fungerer mange af trinene ikke længere som skrevet
Mødesystem ved at sende RFID -data til MySQL -server ved hjælp af Python med Arduino: 6 trin
Fremmødesystem ved at sende RFID-data til MySQL-server ved hjælp af Python With Arduino: I dette projekt har jeg interfacet RFID-RC522 med arduino, og derefter sender jeg data fra RFID til phpmyadmin-databasen. I modsætning til vores tidligere projekter bruger vi ikke ethernet -skjold i dette tilfælde, her læser vi bare de serielle data, der kommer fra
IoT Data Science PiNet til data i realtid Smart Screen, nemlig: 4 trin
IoT Data Science PiNet til real-time smartskærmdata Viz: Du kan nemt sammensætte et IoT-netværk af smarte displays til datavisualisering for at overbelaste din forskningsindsats inden for Data Science eller et hvilket som helst kvantitativt felt. Du kan kalde " push " af dine plots til kunderne lige inde fra din
Servér O'Beer med iPhone til den perfekte hældning: 7 trin (med billeder)
Servér O'Beer med iPhone til den perfekte skænkning: Da nytår nærmer sig med hastige skridt, ville jeg lave et projekt, der giver mulighed for den perfekte hældning og fjerner alt det fysiske arbejde. Ved at bruge Construx som den mekaniske platform, en servo, der driver handlingen, og ioBridge, der kontrollerer systemet, blev jeg
Overvågning af luftforurening - IoT-Data Viz-ML: 3 trin (med billeder)
Overvågning af luftforurening | IoT-Data Viz-ML: Så dette er dybest set en komplet IoT-applikation, der omfatter hardware-del samt software-del. I denne vejledning kan du se, hvordan IoT -enheden konfigureres, og hvordan den overvåges de forskellige typer forureningsgasser, der findes i luften