Inhoudsopgave:
- Benodigdheden
- Stap 1: Hardware
- Stap 2: Raspberry Pi OS-software instellen
- Stap 3: Stel datapliciteit in om toegang op afstand toe te staan
- Stap 4: Controleer de sensoren
- Stap 5: UFW Firewall
- Stap 6: De temperatuurgegevens verzenden als JSON
- Stap 7: Gegevens van beide sensoren verzenden
- Stap 8: Automatisch starten
- Stap 9: Geef de gegevens weer op Freeboard.io (1)
- Stap 10: Geef de gegevens weer op Freeboard.io (2)
- Stap 11: Bouw het project in een doos
- Stap 12: Klaar
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
Dit is mijn eerste poging om een Instructable te schrijven en dus doe het alsjeblieft rustig aan! Als je dit niet erg vindt, stem dan alsjeblieft op mij in de First Time Author Contest.
Dit is mijn Lock-Down-project om op afstand 2 temperaturen in een kas te bewaken, één op vloerniveau en één net onder het dak. Hoewel ik eerder Raspberry Pi's (RPi) had gebruikt, omvatte dit project verschillende elementen die ik niet had gebruikt en onderweg vond ik verschillende tutorials die verouderd of gewoon verkeerd waren. Dit is mijn verzameling kennis om een werkende dubbele externe temperatuurmonitor te maken van een Pi Zero & 2 DS18B20+ One Wire digitale temperatuursensoren die onderweg zijn verworven.
Dingen waar ik over heb geleerd:
- Data beschikbaar stellen vanaf een device als onderdeel van het Internet of Things (IoT)
- 1-draads interface met 2 apparaten
- Datapliciteit
- JSON-gegevens
- De UFW-firewall instellen
- Freeboard.io gebruiken om de gegevens weer te geven
- De RPi configureren om het programma automatisch uit te voeren
Er zijn enorme hoeveelheden data te vinden met een simpele zoekopdracht over al deze onderwerpen, maar wat niet zo duidelijk is, is hoe al deze afzonderlijke elementen te combineren.
Benodigdheden
- Je hebt een Raspberry Pi nodig (met een monitor, muis en toetsenbord voor het instellen, maar niet voor het uitvoeren van het voltooide project)
- Een werkende internetverbinding.
- Een PSU met een Micro USB-connector
- 2 van de DS18B20+ eendraads digitale temperatuursensoren. Ik ontdekte dat Amazon de goedkoopste was
- 4K7 ohm weerstand of ik gebruikte 2 10K ohm weerstanden.
- Klein breadboard en een paar mannelijke/vrouwelijke draden voor testen op de bank
- Klein stukje stripboard voor de eindmontage
- Eenvoudig gereedschap voor solderen en strippen van draden.
- Kleine plastic doos om het voltooide ontwerp te huisvesten
Stap 1: Hardware
Ik had al een Raspberry Pi Zero W (met draadloos) maar ik weet zeker dat dit eenvoudige project prima zal werken op een van de RPI's. De doos met vreemde elektronische bits in mijn werkplaats had al het andere (broodbord, draad, PSU enz.) En dus hoefde ik alleen maar twee 2 x DS18B20-sensoren van Amazon te kopen. Dit zijn de normale DS18B20-chips, gewoon handig gemonteerd in een waterdichte behuizing en 3 meter lange kabel. Er zijn 3 draden van de kabel:
- Rood – voeding – aansluiten op de 3.3v pin 1
- Zwart – retour – aansluiten op de grondpen 6
- Geel – data – aansluiten op de GPIO4 pin 7
De sensoren gebruiken de 1-Wire-interface en waren zeer eenvoudig aan te sluiten en gegevens te verkrijgen. Er zijn verschillende pagina's op het web met details voor het aansluiten van 1 apparaat, maar heel weinig voor het aansluiten van 2 (of meer).
Voor het testen op de bank werd het circuit samengesteld met behulp van een breadboard. De tutorials die ik vond, zeiden dat ze een 4K7-weerstand gebruikten om de datalijn te beïnvloeden, maar ik kon er geen vinden en gebruikte dus 2 * 10K parallel en het werkte prima. Er zijn tal van bronnen op het web om een breadboard te gebruiken om RPi-circuits samen te stellen en daarom zal ik ze hier niet herhalen.
Diagram gemaakt met behulp van Circuit Diagram
Stap 2: Raspberry Pi OS-software instellen
Omdat ik deze RPi eerder had gebruikt, besloot ik te beginnen met een schone installatie van het besturingssysteem, ik heb de SD-kaart opnieuw geformatteerd en een schone versie van NOOBS geïnstalleerd. Ik installeerde toen de volledige desktopversie van Raspian (de bovenste optie), omdat dit ook PIP & GIT zou installeren die de lite-versie niet doet. Hoewel ik de grafische gebruikersinterface (GUI) niet nodig had voor het project, is het een gemakkelijke manier om alle opties in te stellen en met een SD-kaart van 16 GB was er geen gebrek aan ruimte.
Ik heb wifi-toegang ingesteld en vervolgens de volledige installatie uitgevoerd en vervolgens de wizard met updates en upgrades enz. Met behulp van de GUI heb ik de RPI naar behoefte ingesteld, alleen omdat het gebruik van de GUI eenvoudiger is dan de Command Line Interface (CLI). Ik ging vanuit het menu naar het configuratievenster en toen:
- Op het systeemtabblad heb ik het wachtwoord gewijzigd, ingesteld om op te starten naar CLI en Automatisch inloggen uitgeschakeld
- Op het tabblad interfaces heb ik 1-draads ingeschakeld
- Op ok geklikt en opnieuw opgestart
Als u op enig moment terug moet naar de GUI, typt u gewoon startx in de CLI
startx
Stap 3: Stel datapliciteit in om toegang op afstand toe te staan
Ik vond een heel nuttig blogbericht op de Dataplicity-site op https://blog.dataplicity.com/how-to-build-a-raspb… en gebruikte een paar delen hiervan. Hoofdstuk 3 van de blog beschrijft het instellen van Dataplicity voor toegang op afstand tot de RPi. Ik heb Dataplicity nog nooit eerder gebruikt, maar moet zeggen dat ik het ten zeerste aanbeveel als een zeer eenvoudige tool voor externe toegang. Hoewel de screenshots (in de blog hierboven) een beetje verouderd zijn, is het principe prima.
Ga op uw pc naar Dataplicity.com en maak een account aan (u kunt de browser in de GUI gebruiken, maar eerder traag op de RPi Zero). Klik vervolgens op de knop "Nieuw apparaat toevoegen" en een regel code wordt weergegeven in het pop-upvenster. Ga vervolgens naar de CLI op de RPi en typ de tekstregel in. Als alles in orde is, wordt het Datplicity-logo weergegeven en wordt het installatieprogramma uitgevoerd.
Terug op uw pc zou het nieuwe apparaat nu op de Dataplicity-website moeten verschijnen. Klik op het apparaat en u zou een terminalscherm voor uw RPi moeten zien.
Er zijn een paar dingen om hier op te letten:
- Om in te loggen, typt u "su pi" (voor superuser-toegang) en u wordt gevraagd om het wachtwoord (zoals eerder ingesteld)
- U moet Wormhole inschakelen (later te gebruiken)
- U hebt het Wormhole-adres nodig om de gegevens later weer te geven (klik met de rechtermuisknop om te kopiëren indien nodig)
U kunt deze toegang op afstand gebruiken voor alle volgende stappen en is veel gemakkelijker voor het kopiëren van gegevens, programma's enz. dan rechtstreeks op de RPi.
Stap 4: Controleer de sensoren
U kunt nu Dataplicity externe toegang tot RPI gebruiken voor alle volgende secties.
Als alles nu goed is aangesloten, zou je de temperaturen moeten kunnen zien die worden geretourneerd door de DS18B20's. Ik heb de Pi Hut-tutorial doorlopen, maar het meeste hiervan was niet vereist. Als je de volledige details wilt, kun je ze hier vinden:
De belangrijke bits zijn om naar de apparatenmap te gaan en ervoor te zorgen dat 2 verschillende sensoren worden weergegeven.
cd /sys/bus/w1/devices/
Dit zou 2 apparaten moeten tonen die beginnen met 28- en de busmaster. De mijne toont:
28-011453ebfdaa 28-0114543d5daa w1_bus_master1
Deze 2 ID-nummers zijn belangrijk en zullen later nodig zijn! Ga dan naar een van de sensordirectories:
cd 28-011453ebfdaa
(bijvoorbeeld) en vervolgens om de waarde van de sensor af te lezen
kat w1_slave
Er moeten 2 regels tekst worden weergegeven:
53 01 4b 46 7f ff 0c 10 2d: crc=2d JA
53 01 4b 46 7f ff 0c 10 2d t=21187
De JA geeft aan dat de sensor correct leest en de 21187 toont de temperatuur in Celsius van 21,187 (delen door 1000). Herhaal dit om de tweede sensor te controleren. Als beide goed lezen, kunnen we doorgaan met het lezen van de gegevens met Python3.
Ik heb de volgende code gekopieerd en aangepast die ik op internet vond, maar ik weet niet meer waar vandaan. Als dit lijkt op jouw code, dan bied ik mijn excuses aan omdat het niet de bedoeling was om plagiaat te plegen; laat het me weten en ik zal je werk erkennen.
Maak een map met de naam projecten en ga naar die map.
mkdir ~/projecten
cd ~/projecten
Gebruik in deze map de teksteditor (nano) om een bestand met de naam thermo-test.py te maken en te bewerken
sudo nano thermo-test.py
Dit had de editor moeten openen en aangezien u Dataplicity gebruikt, kunt u eenvoudig de volgende code hieronder (thermo-test.py) kopiëren en in de editor plakken. U moet de 2 apparaatnamen (vanaf 28-…) wijzigen in degene die hierboven zijn vermeld. Als alles er goed uitziet, drukt u op ctrl+X om te voltooien, Y om op te slaan en terug om de bestaande naam te gebruiken. Als u liever de GUI gebruikt, zal Thonny hetzelfde doen.
Om het testprogramma uit te voeren:
sudo python3 thermo-test.py
Als het goed is, zou dit het bestand moeten uitvoeren met python 3 en elke 10 seconden de 2 temperaturen op het scherm moeten afdrukken. Je kunt testen of alles in orde is door 1 sensor in ijswater te leggen of zachtjes op te warmen met een föhn. Als alles goed lijkt, kunnen we verder!
Stap 5: UFW Firewall
Omdat deze RPi permanent verbonden zou zijn met internet, besloot ik dat een firewall een goed idee zou zijn en een eenvoudige om te gebruiken is de ongecompliceerde firewall (ufw). Er is een heel eenvoudige tutorial hier
Ik ga niet in de diepte, want dit is niet het doel van deze Instructable, maar in het kort:
Installeer de firewall met:
sudo apt-get install ufw
Stel de standaardregels in:
sudo ufw standaard uitgaand toestaan
sudo ufw standaard inkomende weigeren
Open poort 80 voor Dataplicity
sudo ufw 80. toestaan
Schakel de firewall in
sudo ufw inschakelen
Controleer de status en zorg ervoor dat alles draait
sudo ufw-status
Stap 6: De temperatuurgegevens verzenden als JSON
Terug naar de blog van Tim Fernando en sectie 5.
Volg de stappen zoals vermeld (behalve dat we de projectenmap al hebben gemaakt) en alles zou goed moeten werken. Met GIT download je de applicatiebestanden van Tim en de PIP zorgt ervoor dat alle vereiste programma's op je RPi worden geïnstalleerd. Ik ontdekte toen dat ik opnieuw moest opstarten om er zeker van te zijn dat alle pakketten correct waren ingesteld.
Voer vervolgens het programma van Tim uit en uw RPi zou dan JSON-gegevens voor de eerste sensor moeten leveren.
cd home/pi/projecten/ temperatuur-serve-pi
sudo gunicorn temperatuur: app -b 0.0.0.0:80
U kunt via de blog doorgaan naar sectie 6 waar u gegevens vindt voor 1 van de sensoren.
U kunt ook JSON Viewer gebruiken om de gegevens te bekijken https://codebeautify.org/jsonviewer Klik op de knop "URL laden" en plak het eerder vermelde Wormhole-adres. In het linkerdeelvenster ziet u twee vermeldingen, één voor Celsius en één voor Fahrenheit.
Stap 7: Gegevens van beide sensoren verzenden
Op basis van de code in Temperaturen.py en thermo-test.py heb ik 2temps.py gemaakt, zoals eerder bewerkt in de directory /projects/temperature-serve-pi, in de code geplakt en opgeslagen. Ik rende toen
sudo gunicorn 2temps:app -b 0.0.0.0:80
Toen ik JSON Viewer opnieuw uitvoerde, kreeg ik waarden voor temp1 & temp2
Succes:)
Stap 8: Automatisch starten
Omdat de stroom naar de kas af en toe wordt uitgeschakeld, wilde ik dat de RPi het programma automatisch laadde en de gegevens begon te bewijzen. De eenvoudigste manier lijkt te zijn om het rc.local-bestand te bewerken en de vereiste code onderaan toe te voegen, net boven de exit 0-regel.
cd enz
sudo nan rc.local
voeg dan toe
slaap 10
cd home/pi/projecten/temperature-serve-pi sudo gunicorn temp04:app -b 0.0.0.0:80 &
- De & aan het einde vertelt de computer om het script in een sub-shell uit te voeren, zodat uw computer niet wacht tot de functie eindigt en doorgaat met opstarten
- Slaap 10 [seconden] zorgt ervoor dat alle voorgaande bewerkingen zijn voltooid voordat de service wordt gestart.
Sluit af en sla op zoals eerder. Start vervolgens opnieuw op en voer JSON Viewer opnieuw uit om te controleren of alles in orde is.
Als je meer informatie wilt over automatisch draaiende programma's, vind je hier een geweldige tutorial
Stap 9: Geef de gegevens weer op Freeboard.io (1)
De stappen in de blog van Tim werken prima, samengevat; maak een account aan op www.freeboard.io en maak vervolgens een nieuw vrijboord aan, ik noemde de mijne SHEDTEMPERATURES.
Voeg eerst een gegevensbron toe, klik rechtsboven op TOEVOEGEN en selecteer JSON als het type in de pop-up, geef de gegevensbron een NAAM, voeg het wormgatadres van eerder toe als de URL en klik op NEE voor TRY THINGPROXY. Temperaturen veranderen maar heel langzaam en dus ELKE 15 SECONDEN VERFRISSEN is prima. Klik op OPSLAAN.
Stap 10: Geef de gegevens weer op Freeboard.io (2)
Klik op PANEEL TOEVOEGEN en vervolgens op + om de eerste widget toe te voegen. Je kunt verschillende TYPE's selecteren en ermee spelen, maar ik ontdekte dat Gauge prima was. Geef een geschikte TITEL, EENHEDEN (C), MINIMUM en MAXIMUM die bij uw toepassing passen. Voor de DATASOURCE, klik op de + en de hierboven aangemaakte bron zal verschijnen.
De vervolgkeuzelijst zou nu de 2 JSON-gegevensbronnen (temp2 & temp2) moeten tonen die eerder zijn gebouwd. Selecteer de juiste bron en klik op opslaan.
Herhaal dit voor de tweede meter en we zijn helemaal klaar.
De gegevens zouden nu op de 2 meters moeten worden weergegeven en als je de PRi nog steeds op een monitor hebt aangesloten, zou je de verzoeken van Freeboard.io moeten zien zodra ze binnenkomen.
Stap 11: Bouw het project in een doos
Tot nu toe waren de RPi en de andere componenten allemaal op de bank gemonteerd met behulp van een breadboard. Een klein stukje stripboard werd vervolgens gebruikt om het breadboard te vervangen en de draden werden allemaal op hun plaats gesoldeerd.
Er werd een felroze kleine Lego-opbergdoos gevonden die veel ruimte had en waar de RPI niet te warm zou worden. gaten werden in de zijkanten van de doos geboord en 3 mm nylon montagepilaren werden gebruikt om de RPi en het stripboard op hun plaats te houden.
Er zijn slechts 3 verbindingen nodig van de GPIO, 3.3v, GND & data.
- 3.3vdc-pin 1
- GND-pen 6
- Gegevens (GPIO4) pin 7
In de doos zijn ook gaten toegevoegd voor USB-voeding en kabels naar de temperatuursensoren. Nadat alles op zijn plaats was gemonteerd, werd er een kleine hoeveelheid siliconenkit toegevoegd om ervoor te zorgen dat spinnen het geen lekkere warme plek vonden om te overwinteren!
Stap 12: Klaar
De doos werd in de kas geplaatst en gevoed via een USB-oplader. De twee sensoren werden boven in de kas geplaatst en de andere op een plantenpot om te controleren hoe koud de zaailingen 's nachts werden.
Dit is mijn eerste Instructable en ik hoop dat je denkt dat het goed is. Als u fouten vindt, laat het me weten en ik zal het aanpassen waar nodig. De volgende stap zou kunnen zijn om de gegevens elke (zeg) 60 seconden te loggen, maar dit komt later.
Aanbevolen:
LM3886 Eindversterker, Dual of Bridge (verbeterd): 11 stappen (met afbeeldingen)
LM3886 Eindversterker, Dual of Bridge (verbeterd): Een compacte dual power (of bridge) versterker is eenvoudig te bouwen als je enige elektronica-ervaring hebt. Er zijn maar een paar onderdelen nodig. Het is natuurlijk nog makkelijker om een mono versterker te bouwen. De cruciale zaken zijn de stroomvoorziening en de koeling. Met de com
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
IoT Plant Monitoring System (met IBM IoT Platform): 11 stappen (met afbeeldingen)
IoT Plant Monitoring System (met IBM IoT Platform): Overzicht Het Plant Monitoring System (PMS) is een applicatie die is gebouwd met mensen die in de arbeidersklasse zitten met groene vingers in het achterhoofd. Tegenwoordig hebben werkende mensen het drukker dan ooit tevoren; het bevorderen van hun loopbaan en het beheren van hun financiën
MAAK JE EIGEN MINECRAFT-SERVER! Supermakkelijk, snel en gratis! (GEEN KLIK AAS): 11 stappen (met afbeeldingen)
MAAK JE EIGEN MINECRAFT-SERVER! Supermakkelijk, snel en gratis! (NO CLICK BAIT): Minecraft is een buitengewoon plezierig spel waarin je praktisch alles kunt doen wat je maar wilt! Maar spelen met vrienden op internet kan soms lastig zijn. Helaas zijn de meeste multiplayer-servers ofwel gevuld met trollen, niet de gameplay-ervaring
Luchtverontreiniging Monitoring - IoT-Data Viz-ML: 3 stappen (met afbeeldingen)
Luchtverontreiniging Monitoring | IoT-Data Viz-ML: Dit is dus eigenlijk een complete IoT-toepassing die zowel een hardware- als een softwaregedeelte bevat. In deze tutorial ziet u hoe u het IoT-apparaat instelt en hoe u het kunt gebruiken om de verschillende soorten vervuilingsgassen in de lucht te controleren