Obsah:

Server údajov o duálnej teplote IoT: 12 krokov (s obrázkami)
Server údajov o duálnej teplote IoT: 12 krokov (s obrázkami)

Video: Server údajov o duálnej teplote IoT: 12 krokov (s obrázkami)

Video: Server údajov o duálnej teplote IoT: 12 krokov (s obrázkami)
Video: Zigbee датчик освещенности, температуры и влажности с экраном на электронных чернилах Moes 2024, Jún
Anonim
Server údajov o duálnej teplote IoT
Server údajov o duálnej teplote IoT

Toto je môj prvý pokus o napísanie inštrukcie, a preto mi prosím dajte pokoj! Ak si myslíte, že to nie je zlé, dajte mi prosím hlas v Prvej autorskej súťaži.

Toto je môj projekt Lock-Down na diaľkové monitorovanie 2 teplôt v skleníku, jednej na úrovni podlahy a jednej tesne pod strechou. Napriek tomu, že som predtým používal Raspberry Pi (RPi), tento projekt zahŕňal niekoľko prvkov, ktoré som nepoužil, a počas cesty som našiel niekoľko návodov, ktoré boli zastarané alebo nesprávne. Toto je moja zbierka znalostí, aby som vyrobil funkčný duálny diaľkový monitor teploty z digitálnych snímačov teploty Pi Zero & 2 DS18B20+ One Wire, ktoré sme získali počas cesty.

Veci, o ktorých som sa dozvedel:

  • Sprístupnenie údajov zo zariadenia v rámci internetu vecí (IoT)
  • 1-Wire rozhranie s 2 zariadeniami
  • Dataplicity
  • Údaje JSON
  • Nastavenie brány firewall UFW
  • Na zobrazenie údajov sa používa Freeboard.io
  • Konfigurácia RPi na automatické spustenie programu

Existuje veľké množstvo údajov, ktoré je možné nájsť pomocou jednoduchého vyhľadávania na všetky tieto témy, ale to, čo nie je také jasné, je spôsob, ako skombinovať všetky tieto samostatné prvky.

Zásoby

  • Budete potrebovať Raspberry Pi (s monitorom, myšou a klávesnicou na nastavenie, ale nie pri spustení dokončeného projektu)
  • Fungujúce internetové pripojenie.
  • Napájací zdroj s konektorom Micro USB
  • 2 z DS18B20+ jednodrátových digitálnych snímačov teploty. Zistil som, že Amazon je najlacnejší
  • Rezistor 4K7 ohm alebo som použil 2 odpory 10K ohm.
  • Malé nepájivé pole a niekoľko mužských/ženských drôtov na testovanie na lavičke
  • Malý kus pásovej dosky na konečnú montáž
  • Jednoduché nástroje na spájkovanie a odizolovanie drôtu.
  • Malý plastový box na uloženie hotového dizajnu

Krok 1: Hardvér

Hardvér
Hardvér
Hardvér
Hardvér

Už som mal Raspberry Pi Zero W (s bezdrôtovým pripojením), ale som si istý, že tento jednoduchý projekt bude fungovať dobre na akomkoľvek RPI. Krabica nepárnych elektronických bitov v mojej dielni mala všetko ostatné (nepájivú dosku, drôt, PSU atď.), A tak som si musel kúpiť iba dva snímače 2 x DS18B20 od Amazonu. Jedná sa o bežné čipy DS18B20, ktoré sú pohodlne namontované vo vodotesnom kryte a 3 m kábli. Z kábla sú 3 vodiče:

  • Červená - napájanie - pripojte ku kolíku 3,3 V 1
  • Čierny - návrat - pripojte k uzemňovaciemu kolíku 6
  • Žltá - údaje - pripojenie k pinu GPIO4 7

Senzory používajú rozhranie 1-Wire a bolo veľmi jednoduché ich pripojiť a získať z nich údaje. Na webe je niekoľko stránok s podrobnosťami o pripojení 1 zariadenia, ale iba málo o pripojení 2 (alebo viacerých).

Na testovanie na lavičke bol obvod zostavený pomocou nepájivej dosky. Návody, ktoré som našiel, uvádzali, že na rezistenciu voči dátovej linke je použitý odpor 4K7, ale nenašiel som ho, a tak sa používa 2* 10 K paralelne a funguje to dobre. Na webe je veľa zdrojov na použitie nepájivého poľa na zostavenie obvodov RPi, a preto ich tu nebudem opakovať.

Diagram vytvorený pomocou schémy zapojenia

Krok 2: Nastavenie softvéru Raspberry Pi OS

Nastavenie softvéru Raspberry Pi OS
Nastavenie softvéru Raspberry Pi OS
Nastavenie softvéru Raspberry Pi OS
Nastavenie softvéru Raspberry Pi OS
Nastavenie softvéru Raspberry Pi OS
Nastavenie softvéru Raspberry Pi OS

Keďže som toto RPi používal predtým, rozhodol som sa začať s čistou inštaláciou OS, naformátoval som kartu SD a nainštaloval čistú verziu NOOBS. Potom som nainštaloval plnú desktopovú verziu Raspian (najvyššia možnosť), pretože by sa tým nainštaloval aj PIP & GIT, čo verzia lite nie. Aj keď som pre projekt nepotreboval grafické užívateľské rozhranie (GUI), je to ľahký spôsob, ako nastaviť všetky možnosti, a vďaka 16 GB SD karte nebol nedostatok miesta.

Nastavil som prístup WI-FI, potom spustil úplnú inštaláciu a potom sprievodcu s aktualizáciami a aktualizáciami atď. Pomocou GUI nastavím RPI podľa potreby len preto, že používanie GUI je jednoduchšie ako rozhranie príkazového riadka (CLI). V ponuke som prešiel do konfiguračného okna a potom:

  • Na karte systém som zmenil heslo, nastavil bootovanie na CLI a nezaškrtol Automatické prihlásenie
  • Na karte rozhrania som povolil 1-vodičový
  • Kliknite na tlačidlo OK a reštartujte počítač

Ak sa potrebujete kedykoľvek vrátiť k grafickému rozhraniu, zadajte príkaz startx v rozhraní CLI

startx

Krok 3: Nastavte údaje tak, aby umožňovali vzdialený prístup

Nastavte dátovú jednoduchosť a povoľte vzdialený prístup
Nastavte dátovú jednoduchosť a povoľte vzdialený prístup
Nastavte dátovú jednoduchosť a povoľte vzdialený prístup
Nastavte dátovú jednoduchosť a povoľte vzdialený prístup
Nastavte dátovú jednoduchosť a povoľte vzdialený prístup
Nastavte dátovú jednoduchosť a povoľte vzdialený prístup

Našiel som skutočne užitočný záznam v blogu na stránke Dataplicity na https://blog.dataplicity.com/how-to-build-a-raspb… a použil som niekoľko jeho častí. Časť 3 blogu popisuje nastavenie Dataplicity pre vzdialený prístup k RPi. Nikdy predtým som Dataplicity nepoužíval, ale musím povedať, že ho dôrazne odporúčam ako veľmi jednoduchý nástroj na vzdialený prístup. Napriek tomu, že snímky obrazovky (v blogu vyššie) sú trochu zastarané, princíp je v poriadku.

Na počítači prejdite na stránku Dataplicity.com a vytvorte si účet (prehliadač by ste mohli používať v grafickom rozhraní), ale na počítači RPi Zero by ste ho mali spomaliť). Potom kliknite na tlačidlo „pridať nové zariadenie“a v kontextovom okne sa zobrazí riadok kódu. Potom choďte na CLI na RPi a zadajte riadok textu. Ak je všetko v poriadku, zobrazí sa logo Dataplicity a spustí sa inštalačný program.

Späť na vašom počítači, nové zariadenie by sa teraz malo objaviť na webe Dataplicity. Kliknite na zariadenie a mala by sa vám zobraziť obrazovka terminálu pre váš RPi.

Tu je potrebné poznamenať niekoľko vecí:

  • Ak sa chcete prihlásiť, zadajte „su pi“(pre prístup superužívateľov) a zobrazí sa výzva na zadanie hesla (ako bolo uvedené vyššie)
  • Musíte povoliť Červiu dieru (použiť neskôr)
  • Na neskoršie zobrazenie údajov budete potrebovať adresu Červej diery (v prípade potreby skopírujete pravým tlačidlom myši)

Tento vzdialený prístup môžete použiť na všetky nasledujúce kroky a je oveľa jednoduchšie kopírovať údaje, programy atď. Než priamo na RPi.

Krok 4: Skontrolujte senzory

Teraz môžete vo všetkých ďalších častiach používať vzdialený prístup k RPI od spoločnosti Dataplicity.

Ak je teraz všetko v poriadku, mali by ste vidieť teploty vrátené z DS18B20. Pracoval som prostredníctvom tutoriálu Pi Hut, ale väčšina z toho nebola potrebná. Ak chcete úplné informácie, nájdete ich tu:

Dôležité je prejsť do adresára zariadení a uistiť sa, že sú zobrazené 2 rôzne senzory.

cd/sys/bus/w1/zariadenia/

To by malo ukázať 2 zariadenia začínajúce na 28- a master zbernice. Moje ukazuje:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Tieto 2 identifikačné čísla sú dôležité a budú potrebné neskôr! Potom prejdite na jeden z adresárov senzorov:

cd 28-011453ebfdaa

(napríklad) a potom odčítajte hodnotu zo snímača

mačka w1_slave

Mali by byť zobrazené 2 riadky textu:

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

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

ÁNO ukazuje, že snímač správne číta a 21187 ukazuje teplotu v stupňoch Celzia 21,187 (delené 1 000) Zopakujte to a skontrolujte druhý snímač. Ak sú obe v poriadku, môžeme pristúpiť k čítaniu údajov pomocou Python3.

Skopíroval som a upravil nasledujúci kód, ktorý som našiel na webe, ale neviem si spomenúť odkiaľ. Ak to vyzerá ako váš kód, ospravedlňujem sa, pretože nebolo určené žiadne plagiátorstvo; dajte mi prosím vedieť a ja vašu prácu potvrdím.

Vytvorte adresár s názvom projects a prejdite do neho.

mkdir ~/projekty

cd ~/projekty

V tomto adresári pomocou textového editora (nano) vytvorte a upravte súbor s názvom thermo-test.py

sudo nano thermo-test.py

Tým sa mal otvoriť editor a pretože používate aplikáciu Dataplicity, stačí skopírovať nasledujúci kód nižšie (thermo-test.py) a vložiť ho do editora. Budete musieť zmeniť 2 názvy zariadení (od 28 do…) na tie, ktoré sú uvedené vyššie. Keď všetko vyzerá správne, dokončite stlačením ctrl+X, stlačením Y uložte a vráťte sa k použitiu existujúceho názvu. Ak dávate prednosť použitiu GUI, Thonny urobí to isté.

Spustenie testovacieho programu:

sudo python3 thermo-test.py

Ak je všetko v poriadku, malo by sa spustiť súbor pomocou pythonu 3 a vytlačiť na obrazovku 2 teploty každých 10 sekúnd. Všetko môžete otestovať vložením 1 senzora do ľadovej vody alebo jemným zahriatím sušičom vlasov. Ak je všetko v poriadku, môžeme pokračovať!

Krok 5: Firewall UFW

Firewall UFW
Firewall UFW

Keďže tento RPi bude trvale pripojený k internetu, rozhodol som sa, že bude dobrým riešením firewall a jeho používanie je jednoduché - nekomplikovaný firewall (ufw). Tu je veľmi jednoduchý návod

Nejdem do veľkej hĺbky, pretože toto nie je účelom tohto Pokynu, ale v skratke:

Nainštalujte bránu firewall pomocou:

sudo apt-get install ufw

Nastavte predvolené pravidlá:

sudo ufw predvolené povoliť odchádzajúce

sudo ufw predvolené odmietnuť prichádzajúce

Otvorte port 80 pre Dataplicity

sudo ufw povoliť 80

Povoľte bránu firewall

sudo ufw povoliť

Skontrolujte stav a uistite sa, že je všetko spustené

stav sudo ufw

Krok 6: S ukončenie teplotných údajov ako JSON

S ukončenie teplotných údajov ako JSON
S ukončenie teplotných údajov ako JSON

Späť na blog Tima Fernanda a časť 5.

Postupujte podľa uvedených pokynov (okrem toho, že sme už vytvorili adresár projektov) a všetko by malo fungovať dobre. Pomocou GIT stiahnete Timove aplikačné súbory a PIP zaistí, aby boli do vášho RPi nainštalované všetky požadované programy. Potom som zistil, že potrebujem reštartovať, aby som sa ubezpečil, že všetky balíky sú správne nastavené.

Potom spustite Timov program a vaše RPi by potom mali poskytovať údaje JSON pre prvý senzor.

cd domov/pi/projekty/teplota-obsluha-pi

teplota sudo gunicorn: app -b 0,0.0,0:80

Prostredníctvom blogu môžete pokračovať do sekcie 6, kde nájdete údaje o 1 zo senzorov.

Na zobrazenie údajov môžete použiť aj prehliadač JSON Viewer https://codebeautify.org/jsonviewer Kliknite na tlačidlo „načítať adresu URL“a prilepte na červenú dieru uvedenú vyššie. Na ľavom paneli by ste mali vidieť dva záznamy, jeden pre stupne Celzia a jeden pre stupne Fahrenheita.

Krok 7: Odoslanie údajov z oboch senzorov

Odosielať údaje z oboch senzorov
Odosielať údaje z oboch senzorov

Na základe kódu v temperature.py a thermo-test.py som vytvoril 2temps.py Upravené ako predtým v adresári /projects /temperature-serve-pi, vložené do kódu a uložené. Potom som bežal

sudo gunicorn 2 teploty: aplikácia -b 0,0.0,0:80

Keď som znova spustil prehliadač JSON, dostal som hodnoty pre temp1 a temp2

Úspech:)

Krok 8: Automatické spustenie

Automatický štart
Automatický štart

Pretože sa napájanie skleníka občas vypína, chcel som, aby RPi automaticky načítal program a začal dokazovať údaje. Zdá sa, že najjednoduchším spôsobom je upraviť súbor rc.local a pridať požadovaný kód v spodnej časti tesne nad riadok ukončenia 0.

cd atď

sudo nan rc.local

potom doplnok

spať 10

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

  • & Na konci povie počítaču, aby skript spustil v podskupine, aby váš počítač nečakal na ukončenie funkcie a pokračoval v zavádzaní
  • Režim spánku 10 [sekúnd] zaistí, že pred spustením služby budú dokončené všetky predchádzajúce operácie.

Ukončite a uložte ako predtým. Potom reštartujte a znova spustite prehliadač JSON, aby ste zistili, že je všetko v poriadku.

Ak chcete viac informácií o automaticky spustených programoch, nájdete tu skvelý návod

Krok 9: Zobrazte údaje na Freeboard.io (1)

Zobraziť údaje na Freeboard.io (1)
Zobraziť údaje na Freeboard.io (1)

Kroky v Timovom blogu, zhrnuté, fungujú dobre; vytvorte si účet na www.freeboard.io a potom vytvorte nový Freeboard, ktorý som nazval SHEDTEMPERATURES.

Najprv pridajte zdroj údajov, kliknite na položku PRIDAŤ vpravo hore a v rozbaľovacom zozname vyberte typ JSON, pomenujte zdroj údajov NÁZOV, ako adresu URL pridajte adresu červej diery z predchádzajúceho obdobia a kliknutím na položku VYSKÚŠAJTE VECI. Teploty sa menia len veľmi pomaly, a tak OBNOVAŤ KAŽDÝCH 15 SEKÚN je v poriadku. Kliknite na ULOŽIŤ.

Krok 10: Zobrazte údaje na Freeboard.io (2)

Zobraziť údaje na Freeboard.io (2)
Zobraziť údaje na Freeboard.io (2)
Zobraziť údaje na Freeboard.io (2)
Zobraziť údaje na Freeboard.io (2)
Zobraziť údaje na Freeboard.io (2)
Zobraziť údaje na Freeboard.io (2)
Zobraziť údaje na Freeboard.io (2)
Zobraziť údaje na Freeboard.io (2)

Prvú miniaplikáciu pridáte kliknutím na PRIDAŤ PANEL a potom na +. Môžete si vybrať a hrať s rôznymi TYPMI, ale zistil som, že Gauge je v poriadku. Zadajte vhodný TITUL, JEDNOTKY (C), MINIMUM a MAXIMUM, ktoré vyhovujú vašej aplikácii. Pri DATASOURCE kliknite na + a zobrazí sa zdroj vytvorený vyššie.

Rozbaľovacia ponuka by teraz mala zobrazovať 2 zdroje údajov JSON (temp2 a temp2) vybudované skôr. Vyberte príslušný zdroj a kliknite na tlačidlo Uložiť.

Opakujte to pre druhý rozchod a sme pripravení.

Údaje by sa teraz mali zobrazovať na 2 meradlách a ak máte stále PRi pripojené k monitoru, mali by ste vidieť požiadavky z Freeboard.io, ako prichádzajú.

Krok 11: Zostavte projekt do škatule

Postavte projekt do škatule
Postavte projekt do škatule
Postavte projekt do škatule
Postavte projekt do škatule
Postavte projekt do škatule
Postavte projekt do škatule
Postavte projekt do škatule
Postavte projekt do škatule

Až do tohto bodu boli RPi a ostatné komponenty zostavené na lavičke pomocou nepájivej dosky. Malý kus pásovej dosky sa potom použil na výmenu dosky a všetky vodiče boli spájkované na svoje miesto.

Našiel sa jasne ružový malý úložný box Lego, ktorý mal dostatok miesta a kde by sa RPI príliš neohriali. Do bokov škatule boli vyvŕtané otvory a na upevnenie RPi a pásovej dosky na miesto boli použité 3 mm nylonové montážne stĺpiky.

Z GPIO sú potrebné iba 3 pripojenia, 3,3 V, GND a dáta.

  • Pin 3,3 V DC 1
  • GND pin 6
  • Dátový (GPIO4) pin 7

V škatuli boli tiež pridané otvory pre napájanie USB a káble k teplotným senzorom. Akonáhle bolo všetko namontované na svoje miesto, bolo pridané malé množstvo silikónového tmelu, aby sa zaistilo, že pavúky si nemyslia, že je to pekné teplé miesto na zimovanie!

Krok 12: Hotovo

Hotovo
Hotovo
Hotovo
Hotovo

Krabica bola umiestnená do skleníka a napájaná z USB nabíjačky. Dva senzory boli umiestnené jeden v hornej časti skleníka a druhý na kvetináč, aby zistili, ako sa sadenice v noci ochladzujú.

Toto je môj prvý pokyn a dúfam, že si myslíte, že je v poriadku. Ak nájdete nejaké chyby, dajte mi vedieť a v prípade potreby ich opravím. Ďalším krokom môže byť zaznamenanie údajov každých (povedzme) 60 sekúnd, ale to príde neskôr.

Odporúča: