Tartalomjegyzék:

IoT Dual Temperature Data Server: 12 lépés (képekkel)
IoT Dual Temperature Data Server: 12 lépés (képekkel)

Videó: IoT Dual Temperature Data Server: 12 lépés (képekkel)

Videó: IoT Dual Temperature Data Server: 12 lépés (képekkel)
Videó: Subnet Mask - Explained 2024, Június
Anonim
IoT kettős hőmérsékletű adatszerver
IoT kettős hőmérsékletű adatszerver

Ez az első kísérletem az Instructable írására, és kérem, nyugodtan velem! Ha úgy gondolja, hogy ez nem túl rossz, akkor kérem, szavazzon rám az Első Szerzői Versenyen.

Ez az én Lock-Down projektem, amely távolról figyeli az üvegházban 2 hőmérsékletet, egyet a padló szintjén, egyet pedig a tető alatt. Bár korábban már használtam a Raspberry Pi -t (RPi), ez a projekt több olyan elemet tartalmazott, amelyeket még nem használtam, és útközben több olyan oktatóanyagot találtam, amelyek elavultak vagy éppen rosszak. Ez az én ismereteim gyűjteménye egy működő kettős távoli hőmérséklet -monitor elkészítéséhez az út során megszerzett Pi Zero & 2 DS18B20+ egyvezetékes digitális hőmérséklet -érzékelőkből.

Amit megtudtam:

  • Adatok elérhetővé tétele egy eszközről a tárgyak internete (IoT) részeként
  • 1 vezetékes interfész 2 eszközzel
  • Dataplicity
  • JSON adatok
  • Az UFW tűzfal beállítása
  • A Freeboard.io használata az adatok megjelenítésére
  • Az RPi konfigurálása a program automatikus futtatásához

Hatalmas mennyiségű adat található meg egyszerű kereséssel mindezen témákban, de az nem annyira egyértelmű, hogy hogyan lehet ezeket a különálló elemeket kombinálni.

Kellékek

  • Szükséged lesz egy Raspberry Pi -re (monitorral, egérrel és billentyűzettel a beállításhoz, de nem a kész projekt futtatásakor)
  • Működő internetkapcsolat.
  • PSU Micro USB csatlakozóval
  • A DS18B20+ egyvezetékes digitális hőmérséklet -érzékelők közül 2. Azt találtam, hogy az Amazon volt a legolcsóbb
  • 4K7 ohmos ellenállás, vagy 2 db 10K ohmos ellenállást használtam.
  • Kis kenyérsütő lemez és néhány férfi/női vezeték a padon való teszteléshez
  • Kis darab szalagpapír a végső összeszereléshez
  • Egyszerű eszközök forrasztáshoz és huzalcsupaszításhoz.
  • Kis műanyag doboz a kész design elhelyezésére

1. lépés: Hardver

Hardver
Hardver
Hardver
Hardver

Volt már Raspberry Pi Zero W (vezeték nélküli), de biztos vagyok benne, hogy ez az egyszerű projekt minden RPI -n jól fog működni. A műhelyemben található páratlan elektronikus bitek dobozában minden más megtalálható volt (kenyérlap, vezeték, tápegység stb.), Így csak két 2 x DS18B20 érzékelőt kellett vásárolnom az Amazon -tól. Ezek a normál DS18B20 chipek, amelyeket kényelmesen vízálló házba és 3 méteres kábelbe szereltek. A kábelből 3 vezeték van:

  • Piros - tápellátás - csatlakoztassa a 3.3V -os tüskéhez 1
  • Fekete - visszatérő - csatlakoztassa a földelőcsaphoz 6
  • Sárga - adatok - csatlakozzon a GPIO4 7. tűhöz

Az érzékelők az 1 vezetékes interfészt használják, és nagyon könnyen csatlakoztathatók voltak és adatokat szerezhettek be. Az interneten több oldal található, amelyek 1 eszköz csatlakoztatásának részleteit tartalmazzák, de nagyon keveset a 2 (vagy több) csatlakoztatásáról.

A padon végzett teszteléshez az áramkört kenyérsütő deszkával állították össze. Az általam megtalált oktatóanyagok azt állították, hogy 4K7 ellenállást használnak az adatvonal torzítására, de nem találtam egyet, és ezzel párhuzamosan használt 2* 10K -t, és jól működött. Rengeteg erőforrás található a weben a kenyértábla használatához RPi áramkörök összeállításához, ezért itt nem ismétlem meg őket.

A diagram az áramkör diagram segítségével készült

2. lépés: Raspberry Pi OS szoftver telepítése

Raspberry Pi OS szoftver telepítése
Raspberry Pi OS szoftver telepítése
Raspberry Pi OS szoftver telepítése
Raspberry Pi OS szoftver telepítése
Raspberry Pi OS szoftver telepítése
Raspberry Pi OS szoftver telepítése

Mivel korábban ezt az RPi -t használtam, úgy döntöttem, hogy az operációs rendszer tiszta telepítésével kezdem, újraformáztam az SD -kártyát, és telepítettem a NOOBS tiszta verzióját. Ezután feltelepítettem a Raspian teljes asztali verzióját (a legfelső opció), mivel ez telepítené a PIP & GIT -t is, amelyet a Lite verzió nem. Annak ellenére, hogy a projekthez nem volt szükségem a grafikus felhasználói felületre (GUI), ez egy egyszerű módja az összes lehetőség beállításának, és egy 16 GB -os SD -kártyával nem volt helyhiány.

Beállítottam a WI-FI hozzáférést, majd futtattam a teljes telepítést, majd a varázslót frissítésekkel és frissítésekkel stb. A GUI használatával szükség szerint beállítom az RPI-t, csak mert a GUI használata egyszerűbb, mint a parancssori felület (CLI). A menüből a konfigurációs ablakba mentem, majd:

  • A rendszer lapon megváltoztattam a jelszót, beállítottam, hogy CLI -re induljon, és nem jelöltem be az Automatikus bejelentkezést
  • Az interfész lapon engedélyeztem az 1 vezetékes csatlakozást
  • Kattintson az OK gombra és indítsa újra

Ha bármikor vissza kell térnie a grafikus felülethez, írja be a startx parancsot a CLI -be

startx

3. lépés: A Dataplicity beállítása a távoli hozzáférés engedélyezéséhez

A Dataplicity beállítása lehetővé teszi a távoli hozzáférést
A Dataplicity beállítása lehetővé teszi a távoli hozzáférést
A Dataplicity beállítása lehetővé teszi a távoli hozzáférést
A Dataplicity beállítása lehetővé teszi a távoli hozzáférést
A Dataplicity beállítása lehetővé teszi a távoli hozzáférést
A Dataplicity beállítása lehetővé teszi a távoli hozzáférést

Egy igazán hasznos blogbejegyzést találtam a Dataplicity oldalon a https://blog.dataplicity.com/how-to-build-a-raspb… címen, és ennek néhány részét használtam fel. A blog 3. szakasza leírja a Dataplicity beállítását az RPi távoli eléréséhez. Még soha nem használtam a Dataplicityt, de meg kell mondanom, alaposan ajánlom, mint egy nagyon egyszerű távoli elérési eszközt. Bár a képernyőképek (a fenti blogban) kissé elavultak, az elv rendben van.

Számítógépén nyissa meg a Dataplicity.com webhelyet, és hozzon létre egy fiókot (használhatja a böngészőt a grafikus felületen, de lassú az RPi Zero esetén). Ezután kattintson az „új eszköz hozzáadása” gombra, és az előugró ablakban megjelenik egy kódsor. Ezután lépjen a CLI -re az RPi -n, és írja be a szöveg sorát. Ha minden rendben van, megjelenik a Dataplicity logó, és a telepítőprogram fut.

A számítógépen most az új eszköznek meg kell jelennie a Dataplicity webhelyen. Kattintson az eszközre, és látnia kell az RPi terminál képernyőjét.

Itt néhány dolgot meg kell jegyezni:

  • A bejelentkezéshez írja be a "su pi" parancsot (a superuser hozzáféréshez), és a rendszer kéri a jelszót (a korábban beállított módon)
  • Engedélyeznie kell a féreglyukat (későbbi használatra)
  • Szüksége lesz a féreglyukcímre az adatok későbbi megjelenítéséhez (kattintson a jobb gombbal a másoláshoz, ha szükséges)

Ezt a távoli hozzáférést a következő lépésekhez használhatja, és sokkal könnyebb adatokat, programokat stb. Másolni, mint közvetlenül az RPi -n.

4. lépés: Ellenőrizze az érzékelőket

Mostantól a Dataplicity távolról is hozzáférhet az RPI -hez az összes következő szakaszhoz.

Ha most minden rendben van, akkor látnia kell a DS18B20 -ból visszatérő hőmérsékletet. A Pi Hut bemutatóján keresztül dolgoztam, de ennek nagy része nem volt kötelező. Ha szeretné a részleteket, itt megtalálhatja:

A legfontosabb bitek az eszközök könyvtárába való belépés és a 2 különböző érzékelő megjelenítése.

cd/sys/bus/w1/devices/

Ennek két eszközt kell megjelenítenie, amelyek 28-tól kezdődnek, és a buszmestert. Az enyém mutatja:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Ez a 2 azonosító szám fontos, és szükség lesz rájuk később! Ezután váltson az egyik érzékelőkönyvtárra:

cd 28-011453ebfdaa

(például), majd olvassa ki az értéket az érzékelőből

macska w1_szolga

2 sornyi szöveget kell megjeleníteni:

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

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

A YES azt mutatja, hogy az érzékelő helyesen olvas, a 21187 pedig 21,187 Celsius -fokos hőmérsékletet (osztva 1000 -el) Ismételje meg ezt a második érzékelő ellenőrzéséhez. Ha mindkettő rendben van, akkor folytathatjuk az adatok Python3 -mal történő olvasását.

Másoltam és adaptáltam a következő kódot, amelyet a weben találtam, de nem emlékszem, honnan. Ha ez úgy néz ki, mint a kódja, akkor elnézést kérek, mivel nem plagizáltak; kérlek jelezd és elismerem a munkádat.

Hozzon létre egy projektek nevű könyvtárat, és váltson arra a könyvtárra.

mkdir ~/projektek

cd ~/projektek

Ebben a könyvtárban használja a szövegszerkesztőt (nano) a thermo-test.py nevű fájl létrehozásához és szerkesztéséhez

sudo nano thermo-test.py

Ennek meg kellett volna nyitnia a szerkesztőt, és a Dataplicity használata során egyszerűen másolja ki az alábbi kódot (thermo-test.py), és illessze be a szerkesztőbe. Meg kell változtatnia a két eszköznevet (28–… kezdve) a fentiekre. Ha minden megfelelőnek tűnik, nyomja meg a ctrl+X billentyűt a befejezéshez, az Y gombot a mentéshez és a visszatéréshez a meglévő név használatához. Ha inkább a grafikus felületet szeretné használni, akkor Thonny is ezt fogja tenni.

A tesztprogram futtatásához:

sudo python3 thermo-test.py

Ha minden rendben van, akkor futtassa a fájlt a python 3 használatával, és 10 másodpercenként nyomtassa ki a képernyőre a 2 hőmérsékletet. Megvizsgálhatja, hogy minden rendben van -e, ha 1 érzékelőt jeges vízbe tesz, vagy óvatosan hajszárítóval melegíti. Ha minden rendben van, akkor léphetünk tovább!

5. lépés: UFW tűzfal

UFW tűzfal
UFW tűzfal

Mivel ez az RPi állandóan kapcsolódni fog az internethez, úgy döntöttem, hogy egy tűzfal jó ötlet, és egyszerűen használható az egyszerű (nem egyszerű) tűzfal (ufw). Van egy nagyon egyszerű oktatóanyag itt:

Nem megyek mélyre, mert nem ez a célja ennek az utasításnak, de röviden:

Telepítse a tűzfalat az alábbiakkal:

sudo apt-get install ufw

Állítsa be az alapértelmezett szabályokat:

sudo ufw alapértelmezés szerint engedélyezi a kimenő üzeneteket

sudo ufw alapértelmezett megtagadja a bejövőt

Nyissa meg a 80 -as portot a Dataplicity számára

sudo ufw engedélyezi a 80 -at

Engedélyezze a tűzfalat

sudo ufw enable

Ellenőrizze az állapotot, és győződjön meg arról, hogy minden fut

sudo ufw állapot

6. lépés: S fejezze be a hőmérsékleti adatokat JSON néven

S a hőmérséklet adatok befejezése JSON néven
S a hőmérséklet adatok befejezése JSON néven

Vissza Tim Fernando blogjához és az 5. részhez.

Kövesse a leírt lépéseket (kivéve, ha már létrehoztuk a projektek könyvtárát), és mindennek jól kell működnie. A GIT használatával letölti Tim alkalmazásfájljait, és a PIP gondoskodik arról, hogy az összes szükséges program telepítve legyen az RPi -re. Aztán rájöttem, hogy újra kell indítanom, hogy megbizonyosodjak arról, hogy a csomagok megfelelően vannak beállítva.

Ezután futtassa Tim programját, és az RPi -nek JSON -adatokat kell szolgáltatnia az első érzékelőhöz.

cd home/pi/projektek/hőmérséklet-szerviz-pi

sudo gunicorn hőmérséklet: kb -b 0.0.0.0:80

Folytathatja a blogon a 6. részt, ahol az egyik érzékelő adatait szolgáltatja.

A JSON Viewer segítségével megtekintheti az adatokat is. Https://codebeautify.org/jsonviewer Kattintson az „URL betöltése” gombra, és illessze be a féreglyuk címét. A bal oldali ablaktáblán két bejegyzést kell látnia, az egyik Celsius -fokot és a Fahrenheit -értéket.

7. lépés: Adatok küldése mindkét érzékelőből

Adatok küldése mindkét érzékelőből
Adatok küldése mindkét érzékelőből

A Tempera..py és a thermo-test.py fájlban található kód alapján létrehoztam a 2temps.py Edited-t a /projektek /Temperature-serve-pi könyvtárban, beillesztettem a kódba és elmentettem. Aztán futottam

sudo gunicorn 2temps: app -b 0.0.0.0:80

Most, amikor újra futtattam a JSON Viewer programot, a temp1 és temp2 értékeket kaptam

Siker:)

8. lépés: Automatikus indítás

Automatikus indítás
Automatikus indítás

Mivel az üvegház áramellátása időnként leáll, azt akartam, hogy az RPi automatikusan betöltse a programot, és elkezdje bizonyítani az adatokat. A legegyszerűbb módja az rc.local fájl szerkesztése és a szükséges kód hozzáadása az alján, közvetlenül a exit 0 sor fölött.

cd stb

sudo nan rc.local

majd add-in

aludni 10

cd home/pi/projektek/Temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • A & végén azt mondja a számítógépnek, hogy futtassa a szkriptet egy alhéjban, hogy a számítógép ne várja meg, amíg a funkció leáll, és folytatja a rendszerindítást
  • A Sleep 10 [másodperc] biztosítja, hogy a szolgáltatás megkezdése előtt minden korábbi művelet befejeződött.

Lépjen ki és mentse, mint korábban. Ezután indítsa újra és futtassa újra a JSON Viewer alkalmazást, hogy ellenőrizze, minden rendben van-e.

Ha további információra van szüksége az automatikusan futó programokról, itt talál egy nagyszerű oktatóanyagot

9. lépés: Az adatok megjelenítése a Freeboard.io webhelyen (1)

Az adatok megjelenítése a Freeboard.io webhelyen (1)
Az adatok megjelenítése a Freeboard.io webhelyen (1)

Tim blogjának lépései jól működnek, összefoglalva; hozzon létre egy fiókot a www.freeboard.io webhelyen, majd hozzon létre egy új Freeboard -ot, az enyém SHEDTEMPERATURES.

Először adjon hozzá egy adatforrást, kattintson a Hozzáadás gombra a jobb felső sarokban, és az előugró ablakban válassza ki a JSON típust, adjon meg egy nevet az adatforrásnak, adja hozzá a korábbi féreglyukcímet URL-ként, és kattintson a NEM gombra a TRY THINGPROXY elemhez. A hőmérséklet csak nagyon lassan változik, így 15 másodpercenként MINDENKÉppen frissíteni kell. Kattintson a MENTÉS gombra.

10. lépés: Az adatok megjelenítése a Freeboard.io -n (2)

Az adatok megjelenítése a Freeboard.io webhelyen (2)
Az adatok megjelenítése a Freeboard.io webhelyen (2)
Az adatok megjelenítése a Freeboard.io webhelyen (2)
Az adatok megjelenítése a Freeboard.io webhelyen (2)
Az adatok megjelenítése a Freeboard.io webhelyen (2)
Az adatok megjelenítése a Freeboard.io webhelyen (2)
Az adatok megjelenítése a Freeboard.io webhelyen (2)
Az adatok megjelenítése a Freeboard.io webhelyen (2)

Kattintson az ADD PANE, majd a + gombra az első modul hozzáadásához. Választhatsz és játszhatsz különböző TYPE -kkal, de azt találtam, hogy a Gauge rendben volt. Adja meg az alkalmazásának megfelelő CÍMET, EGYSÉGEKET (C), MINIMUMAT és MAXIMUMOT. Az DATASOURCE esetében kattintson a + gombra, és megjelenik a fent létrehozott forrás.

A legördülő menüben most a 2 JSON adatforrást (temp2 és temp2) kell megjeleníteni. Válassza ki a megfelelő forrást, majd kattintson a Mentés gombra.

Ismételje meg ezt a második mérővel, és készen állunk.

Az adatokat most meg kell jeleníteni a 2 mérőn, és ha a PRi továbbra is monitorhoz van csatlakoztatva, akkor látnia kell a Freeboard.io kéréseit, amint megérkeznek.

11. lépés: Építse a projektet egy dobozba

Építse a projektet egy dobozba
Építse a projektet egy dobozba
Építse a projektet egy dobozba
Építse a projektet egy dobozba
Építse a projektet egy dobozba
Építse a projektet egy dobozba
Építse a projektet egy dobozba
Építse a projektet egy dobozba

Eddig a pontig az RPi -t és a többi alkatrészt a padon szerelték össze kenyérsütő deszkával. Ezután egy kis darab szalaglemezt használtak a kenyértábla és a vezetékek helyére forrasztására.

Egy élénk rózsaszín kis Lego tároló dobozt találtak, amelyben sok hely volt, és ahol az RPI nem melegszik fel túlságosan. lyukakat fúrtak a doboz oldalába, és 3 mm -es nejlon rögzítőoszlopokat használtak az RPi és a szalaglemez helyén tartására.

A GPIO -tól mindössze 3 kapcsolat szükséges, 3.3v, GND és adat.

  • 3.3Vdc pin 1
  • GND csap 6
  • Adatok (GPIO4) 7. tű

A dobozba lyukakat is hozzáadtak az USB tápellátáshoz és a hőmérsékletszenzorok kábeleihez. Miután minden a helyére került, kis mennyiségű szilikon tömítőanyagot adtak hozzá annak biztosítására, hogy a pókok ne gondolják, hogy ez egy kellemes meleg hely a télre!

12. lépés: Kész

Befejezett
Befejezett
Befejezett
Befejezett

A dobozt az üvegházba helyezték, és USB töltőről táplálták. A két érzékelőt az egyik az üvegház teteje közelében, a másikat egy növénycserepre helyezték, hogy ellenőrizzék, mennyire hideg a palánták éjjel.

Ez az első Instructable, és remélem, úgy gondolja, hogy rendben van. Ha hibát talál, kérem jelezze, és szükség esetén módosítom. A következő lépés lehet az adatok naplózása (mondjuk) 60 másodpercenként, de ez később lesz.

Ajánlott: