Innehållsförteckning:

IoT -datorserver med dubbla temperaturer: 12 steg (med bilder)
IoT -datorserver med dubbla temperaturer: 12 steg (med bilder)

Video: IoT -datorserver med dubbla temperaturer: 12 steg (med bilder)

Video: IoT -datorserver med dubbla temperaturer: 12 steg (med bilder)
Video: АСМР 💓 БЛИЗКИЙ ШЕПОТ 💑 Личные Вопросы | ASMR Questions 2024, Juni
Anonim
IoT datorserver med dubbla temperaturer
IoT datorserver med dubbla temperaturer

Detta är mitt första försök att skriva en instruktionsbok, så snälla var snäll mot mig! Om du tycker att detta inte är så illa, vänligen rösta på mig i Författartävlingen för första gången.

Detta är mitt Lock-Down-projekt för att fjärrövervaka 2 temperaturer i ett växthus, en på golvnivå och en strax under taket. Även om jag hade använt Raspberry Pi’s (RPi) tidigare, involverade detta projekt flera element som jag inte hade använt och på vägen hittade jag flera självstudier som var inaktuella eller bara fel. Detta är min kunskapssamling för att göra en fungerande dubbel fjärrtemperaturmätare från en Pi Zero & 2 DS18B20+ One Wire Digital Temperature Sensors som förvärvades längs vägen.

Saker jag lärde mig om:

  • Gör data tillgänglig från en enhet som en del av Internet of Things (IoT)
  • 1-tråds gränssnitt med 2 enheter
  • Dataplicitet
  • JSON -data
  • Konfigurera UFW -brandväggen
  • Använda Freeboard.io för att visa data
  • Konfigurera RPi för att automatiskt köra programmet

Det finns enorma mängder data som kan hittas med en enkel sökning om alla dessa ämnen, men det som inte är så tydligt är hur man kombinerar alla dessa separata element.

Tillbehör

  • Du behöver en Raspberry Pi (med en bildskärm, mus och tangentbord för att konfigurera men inte när du kör det färdiga projektet)
  • En fungerande internetuppkoppling.
  • En PSU med en Micro USB -kontakt
  • 2 av DS18B20+ One Wire Digital Temperature Sensors. Jag hittade att Amazon var den billigaste
  • 4K7 ohm motstånd eller jag använde 2 10K ohm motstånd.
  • Liten brödbräda och några han-/hontrådar för testning på bänken
  • Liten remsa för slutmontering
  • Enkla verktyg för lödning och trådavdragning.
  • Liten plastlåda för den färdiga designen

Steg 1: Hårdvara

Hårdvara
Hårdvara
Hårdvara
Hårdvara

Jag hade redan en Raspberry Pi Zero W (med trådlös) men jag är säker på att detta enkla projekt kommer att fungera bra på alla RPI: er. Lådan med udda elektroniska bitar i min verkstad hade allt annat (brödbräda, tråd, PSU etc) och så allt jag behövde köpa var två 2 x DS18B20 -sensorer från Amazon. Dessa är de vanliga DS18B20 -chipsen som enkelt monteras i ett vattentätt hölje och en 3 m kabel. Det finns tre ledningar från kabeln:

  • Röd - ström - anslut till 3.3v stift 1
  • Svart - retur - anslut till jordstift 6
  • Gul - data - anslut till GPIO4 -stift 7

Sensorerna använder 1-Wire-gränssnittet och var mycket enkla att ansluta och hämta data från. Det finns flera sidor på webben med information om anslutning av 1 enhet men väldigt lite om anslutning av 2 (eller fler).

För testning på bänken monterades kretsen med en brödbräda. Handledningarna jag hittade uppgav att använda ett 4K7 -motstånd för att förspänna datalinjen, men jag kunde inte hitta en och använde 2* 10K parallellt & det fungerade bra. Det finns gott om resurser på webben för att använda en brödbräda för att montera RPi -kretsar så jag kommer inte att upprepa dem här.

Diagram skapat med kretsdiagram

Steg 2: Programvara för Raspberry Pi OS

Installation av Raspberry Pi OS
Installation av Raspberry Pi OS
Installation av Raspberry Pi OS
Installation av Raspberry Pi OS
Installation av Raspberry Pi OS
Installation av Raspberry Pi OS

Eftersom jag hade använt denna RPi tidigare bestämde jag mig för att börja med en ren installation av operativsystemet, jag formaterade om SD -kortet och installerade en ren version av NOOBS. Jag installerade sedan hela skrivbordsversionen av Raspian (det översta alternativet) eftersom detta också skulle installera PIP & GIT som lite -versionen inte gör. Även om jag inte behövde det grafiska användargränssnittet (GUI) för projektet, är det ett enkelt sätt att konfigurera alla alternativ och med ett 16 GB SD -kort var det ingen brist på utrymme.

Jag ställde in WI-FI-åtkomst och körde sedan hela installationen och sedan guiden med uppdateringar och uppgraderingar etc. Med hjälp av GUI installerade jag RPI efter behov bara för att använda GUI är enklare än Command Line Interface (CLI). Jag gick till konfigurationsfönstret från menyn och sedan:

  • På systemfliken ändrade jag lösenordet, startade till CLI och avmarkerade automatisk inloggning
  • På fliken gränssnitt aktiverade jag 1-tråd
  • Klicka på ok och startade om

Om du behöver komma tillbaka till GUI när som helst skriver du bara startx på CLI

startx

Steg 3: Konfigurera dataplicitet för att tillåta fjärråtkomst

Konfigurera dataplicitet för att tillåta fjärråtkomst
Konfigurera dataplicitet för att tillåta fjärråtkomst
Konfigurera dataplicitet för att tillåta fjärråtkomst
Konfigurera dataplicitet för att tillåta fjärråtkomst
Konfigurera dataplicitet för att tillåta fjärråtkomst
Konfigurera dataplicitet för att tillåta fjärråtkomst

Jag hittade en riktigt användbar bloggpost på Dataplicity-webbplatsen på https://blog.dataplicity.com/how-to-build-a-raspb… och använde några delar av detta. Avsnitt 3 i bloggen beskriver installation av Dataplicity för fjärråtkomst till RPi. Jag har aldrig använt Dataplicity förut, men måste säga att jag verkligen rekommenderar det som ett mycket enkelt verktyg för fjärråtkomst. Även om skärmdumparna (i bloggen ovan) är lite inaktuella är principen bra.

Gå till Dataplicity.com på din dator och skapa ett konto (du kan använda webbläsaren i GUI, men ganska långsamt på RPi Zero). Klicka sedan på knappen "lägg till ny enhet" och en rad kod visas i popup-fönstret. Gå sedan till CLI på RPi och skriv in textraden. Om allt är okej kommer Dataplicity -logotypen att visas och installationsprogrammet körs.

Tillbaka på din dator ska den nya enheten nu visas på Dataplicity -webbplatsen. Klicka på enheten och du bör se en terminalskärm för din RPi.

Det finns några saker att notera här:

  • För att logga in skriver du "su pi" (för åtkomst för superanvändare) och du uppmanas att ange lösenordet (enligt tidigare inställningar)
  • Du måste aktivera Wormhole (för att användas senare)
  • Du behöver Wormhole-adressen för att visa data senare (högerklicka för att kopiera vid behov)

Du kan använda denna fjärråtkomst för alla följande steg och är mycket lättare för kopiering av data, program etc än direkt på RPi.

Steg 4: Kontrollera sensorerna

Du kan nu använda Dataplicity på distans åtkomst till RPI för alla nästa avsnitt.

Om allt är anslutet okej bör du kunna se temperaturerna som returneras från DS18B20. Jag arbetade igenom Pi Hut -handledningen men det mesta var inte nödvändigt. Om du vill ha fullständig information kan du hitta dem här:

De viktiga bitarna är att gå till enhetskatalogen och se till att två olika sensorer visas.

cd/sys/buss/w1/enheter/

Detta bör visa 2 enheter som börjar med 28- och bussmastern. Mina visar:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Dessa 2 ID -nummer är viktiga och kommer att behövas senare! Byt sedan till en av sensorkatalogerna:

cd 28-011453ebfdaa

(till exempel) och sedan för att läsa värdet från sensorn

katt w1_slave

Det ska finnas 2 textrader:

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

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

JA visar att sensorn läser korrekt och 21187 visar temperaturen i Celsius 21.187 (dividera med 1000) Upprepa detta för att kontrollera den andra sensorn. Om båda läser ok kan vi gå vidare till att läsa data med Python3.

Jag kopierade och anpassade följande kod som jag hittade på webben men jag kommer inte ihåg varifrån. Om det här ser ut som din kod, ber jag om ursäkt eftersom ingen plagiat var avsedd. vänligen meddela mig så erkänner jag ditt arbete.

Skapa en katalog som heter projekt och byt till den katalogen.

mkdir ~/projects

cd ~/projekt

I den här katalogen använder du textredigeraren (nano) för att skapa och redigera en fil som kallas thermo-test.py

sudo nano thermo-test.py

Detta borde ha öppnat redigeraren och när du använder Dataplicity kan du helt enkelt kopiera följande kod nedan (thermo-test.py) och klistra in i redigeraren. Du måste ändra de två enhetsnamnen (från och med 28-…) till de som anges ovan. När allt ser korrekt ut trycker du på ctrl+X för att avsluta, Y för att spara och återgå för att använda det befintliga namnet. Om du föredrar att använda GUI kommer Thonny att göra detsamma.

Så här kör du testprogrammet:

sudo python3 thermo-test.py

Allt detta bra, detta bör köra filen med python 3 och skriva ut till skärmen de 2 temperaturerna var 10: e sekund. Du kan testa att allt är ok genom att placera 1 sensor i isvatten eller försiktigt värma med en hårtork. Om allt verkar okej kan vi gå vidare!

Steg 5: UFW -brandvägg

UFW -brandvägg
UFW -brandvägg

Eftersom denna RPi skulle vara permanent ansluten till internet bestämde jag mig för att en brandvägg skulle vara en bra idé och en enkel att använda är okomplicerad brandvägg (ufw). Det finns en mycket enkel handledning här

Jag går inte in på djupet eftersom detta inte är syftet med denna instruerbara, men kort sagt:

Installera brandväggen med:

sudo apt-get install ufw

Ange standardreglerna:

sudo ufw standard tillåter utgående

sudo ufw default neka inkommande

Öppna port 80 för Dataplicity

sudo ufw tillåter 80

Aktivera brandväggen

sudo ufw aktivera

Kontrollera statusen och se till att allt är igång

sudo ufw -status

Steg 6: S avslutar temperaturdata som JSON

S avslutar temperaturdata som JSON
S avslutar temperaturdata som JSON

Tillbaka till Tim Fernandos blogg och avsnitt 5.

Följ stegen som anges (förutom att vi redan har skapat projektkatalogen) och allt ska fungera bra. Med GIT laddar du ner Tims applikationsfiler och PIP ser till att alla nödvändiga program är installerade på din RPi. Jag upptäckte då att jag behövde starta om för att se till att alla paket var korrekt inställda.

Kör sedan Tims program och din RPi bör då tillhandahålla JSON -data för den första sensorn.

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

sudo gunicorn temperatur: app -b 0.0.0.0:80

Du kan fortsätta genom bloggen till avsnitt 6 där du hittar data som tillhandahålls för en av sensorerna.

Du kan också använda JSON Viewer för att se data https://codebeautify.org/jsonviewer Klicka på knappen "ladda URL" och klistra in Wormhole -adressen som noterades tidigare. I den vänstra rutan bör du se två poster, en för Celsius och en för Fahrenheit.

Steg 7: Skicka data från båda sensorerna

Skicka data från båda sensorerna
Skicka data från båda sensorerna

Baserat på koden i temperature.py och thermo-test.py skapade jag 2temps.py Redigerad som tidigare i katalogen /projects /temperature-serve-pi, klistrades in i koden och sparades. Jag sprang sedan

sudo gunicorn 2temps: app -b 0.0.0.0:80

Nu när jag körde om JSON Viewer fick jag värden för temp1 & temp2

Framgång:)

Steg 8: Autostart

Autostart
Autostart

Eftersom strömmen till växthuset stängs av ibland, ville jag att RPi automatiskt skulle ladda programmet och börja bevisa data. Det enklaste sättet verkar vara att redigera rc.local -filen och lägga till den nödvändiga koden längst ner strax ovanför raden 0.

cd osv

sudo nan rc.local

sedan tillägg

sova 10

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

  • & I slutet säger till datorn att köra skriptet i ett subskal så att din dator inte väntar på att funktionen ska sluta och fortsätter med start
  • Sömn 10 [sekunder] ser till att alla tidigare operationer är slutförda innan tjänsten startas.

Avsluta och spara som tidigare. Starta sedan om och kör JSON Viewer igen för att kontrollera att allt är bra.

Om du vill ha mer information om automatiskt körda program finns det en bra handledning här

Steg 9: Visa data på Freeboard.io (1)

Visa data på Freeboard.io (1)
Visa data på Freeboard.io (1)

Stegen i Tims blogg fungerar bra, sammanfattningsvis; skapa ett konto på www.freeboard.io och skapa sedan en ny fribord, jag kallade min SHEDTEMPERATURES.

Lägg först till en datakälla, klicka på ADD längst upp till höger och välj JSON som popup-fönster som typ, ge datakällan ett NAMN, lägg till maskhålsadressen från tidigare som URL och klicka på NO för att PROVA THINGPROXY. Temperaturerna ändras bara väldigt långsamt och så uppdateras var 15: e sekund bra. Klicka på SPARA.

Steg 10: Visa data på Freeboard.io (2)

Visa data på Freeboard.io (2)
Visa data på Freeboard.io (2)
Visa data på Freeboard.io (2)
Visa data på Freeboard.io (2)
Visa data på Freeboard.io (2)
Visa data på Freeboard.io (2)
Visa data på Freeboard.io (2)
Visa data på Freeboard.io (2)

Klicka på ADD PANE och sedan på + för att lägga till den första widgeten. Du kan välja och spela med olika typer men jag tyckte att Gauge var helt okej. Ge en lämplig TITLE, UNITS (C), MINIMUM och MAXIMUM som passar din applikation. För DATASOURCE, klicka på + och källan som skapats ovan visas.

Rullgardinsmenyn ska nu visa de två JSON -datakällorna (temp2 & temp2) som byggts tidigare. Välj lämplig källa och klicka på Spara.

Upprepa detta för den andra mätaren och vi är klara.

Data ska nu visas på de två mätarna och om du fortfarande har PRi ansluten till en bildskärm bör du se förfrågningarna från Freeboard.io när de kommer.

Steg 11: Bygg projektet i en låda

Bygg projektet i en låda
Bygg projektet i en låda
Bygg projektet i en låda
Bygg projektet i en låda
Bygg projektet i en låda
Bygg projektet i en låda
Bygg projektet i en låda
Bygg projektet i en låda

Fram till denna tidpunkt hade alla RPi och de andra komponenterna monterats på bänken med en brödbräda. En liten bit av bandbräda användes sedan för att byta ut brödbrädet och alla ledningar löddes på plats.

En ljusrosa liten Lego -förvaringslåda hittades som hade gott om plats och där RPI: n inte skulle bli för varm. hål borrades in i lådans sidor och 3 mm nylonmonteringspelare användes för att hålla RPi och bandbräda på plats.

Det finns bara 3 anslutningar som krävs från GPIO, 3.3v, GND & data.

  • 3.3vdc stift 1
  • GND -stift 6
  • Data (GPIO4) stift 7

Hål har också lagts till i lådan för USB -ström och kablar till temperaturgivarna. När allt var monterat på plats tillsattes en liten mängd silikontätningsmedel för att säkerställa att spindlar inte tyckte att det var ett trevligt varmt ställe att tillbringa vintern!

Steg 12: Avslutad

Färdiga
Färdiga
Färdiga
Färdiga

Lådan placerades i växthuset och drivs från en USB -laddare. De två sensorerna placerades en nära toppen av växthuset och den andra på en växtkruka för att kontrollera hur kallt plantorna blev på natten.

Detta är min första instruerbara och jag hoppas att du tycker att det är okej. Om du hittar några fel vänligen meddela mig & jag kommer att ändra vid behov. Nästa steg kan vara att logga data var (säg) var 60: e sekund, men detta kommer senare.

Rekommenderad: