Obsah:

Data server duální teploty IoT: 12 kroků (s obrázky)
Data server duální teploty IoT: 12 kroků (s obrázky)

Video: Data server duální teploty IoT: 12 kroků (s obrázky)

Video: Data server duální teploty IoT: 12 kroků (s obrázky)
Video: Arduino návody | ESP WiFi webserver | ESP32 | ESP8266 2024, Červen
Anonim
Data server duální teploty IoT
Data server duální teploty IoT

Toto je můj první pokus o napsání Instructable, a tak mě prosím uvolněte! Pokud si myslíte, že to není tak špatné, hlasujte prosím pro mě v soutěži First Time Author Contest.

Toto je můj projekt Lock-Down na dálkové monitorování 2 teplot ve skleníku, jedné na úrovni podlahy a jedné těsně pod střechou. Ačkoli jsem dříve používal Raspberry Pi (RPi), tento projekt zahrnoval několik prvků, které jsem nepoužil, a po cestě jsem našel několik návodů, které byly zastaralé nebo prostě špatné. Toto je moje sbírka znalostí k vytvoření funkčního duálního dálkového monitoru teploty z digitálních teplotních senzorů Pi Zero & 2 DS18B20+ One Wire, které byly získány na cestě.

Věci, o kterých jsem se dozvěděl:

  • Zpřístupnění dat ze zařízení v rámci internetu věcí (IoT)
  • 1-Wire rozhraní se 2 zařízeními
  • Dataplicity
  • Data JSON
  • Nastavení brány firewall UFW
  • Zobrazení dat pomocí Freeboard.io
  • Konfigurace RPi pro automatické spuštění programu

Existuje velké množství dat, která lze nalézt pomocí jednoduchého vyhledávání na všechna tato témata, ale co není tak jasné, je, jak všechny tyto oddělené prvky kombinovat.

Zásoby

  • Budete potřebovat Raspberry Pi (s monitorem, myší a klávesnicí pro nastavení, ale ne při spuštění hotového projektu)
  • Fungující připojení k internetu.
  • Napájecí zdroj s konektorem Micro USB
  • 2 z DS18B20+ One Wire digitálních teplotních senzorů. Zjistil jsem, že Amazon je nejlevnější
  • Rezistor 4K7 ohm nebo jsem použil 2 odpory 10K ohmů.
  • Malé prkénko a několik vodičů pro testování na lavičce
  • Malý kousek lišty pro finální montáž
  • Jednoduché nástroje pro pájení a odizolování drátu.
  • Malý plastový box k uložení hotového designu

Krok 1: Hardware

Hardware
Hardware
Hardware
Hardware

Už jsem měl Raspberry Pi Zero W (s bezdrátovým), ale jsem si jistý, že tento jednoduchý projekt bude fungovat dobře na kterémkoli RPI. Krabice lichých elektronických bitů v mé dílně měla všechno ostatní (prkénko, drát, napájecí zdroj atd.), A tak jsem si musel koupit jen dva senzory 2 x DS18B20 od Amazonu. Jedná se o běžné čipy DS18B20, které jsou pohodlně namontovány ve vodotěsném pouzdře a 3m kabelu. Z kabelu jsou 3 vodiče:

  • Červená - napájení - připojte ke kolíku 3,3 V 1
  • Černá - návrat - připojení k uzemňovacímu kolíku 6
  • Žlutá - data - připojení ke kolíku GPIO4 7

Senzory používají rozhraní 1-Wire a bylo velmi snadné je připojit a získat z nich data. Na webu je několik stránek s podrobnostmi o připojení 1 zařízení, ale velmi málo o připojení 2 (nebo více).

Pro testování na lavičce byl obvod sestaven pomocí prkénka. Návody, které jsem našel, uváděly použití rezistoru 4K7 k ovlivnění datové linky, ale nemohl jsem najít jeden a tak jsem použil 2* 10K paralelně a fungovalo to dobře. Na webu je spousta zdrojů pro použití prkénka k sestavování obvodů RPi, a proto je zde nebudu opakovat.

Diagram vytvořený pomocí schématu zapojení

Krok 2: Nastavení softwaru Raspberry Pi OS

Nastavení softwaru Raspberry Pi OS
Nastavení softwaru Raspberry Pi OS
Nastavení softwaru Raspberry Pi OS
Nastavení softwaru Raspberry Pi OS
Nastavení softwaru Raspberry Pi OS
Nastavení softwaru Raspberry Pi OS

Protože jsem toto RPi používal již dříve, rozhodl jsem se začít s čistou instalací OS, přeformátoval jsem SD kartu a nainstaloval čistou verzi NOOBS. Poté jsem nainstaloval plnou verzi Raspian pro stolní počítače (nejlepší možnost), protože by to také nainstalovalo PIP & GIT, což verze lite ne. I když jsem pro projekt nepotřeboval grafické uživatelské rozhraní (GUI), je to snadný způsob, jak nastavit všechny možnosti, a díky 16 GB SD kartě nebyl nedostatek místa.

Nastavil jsem přístup WI-FI, poté spustil úplnou instalaci a poté průvodce aktualizacemi a upgrady atd. Pomocí GUI nastavím RPI podle potřeby jen proto, že používání GUI je jednodušší než rozhraní příkazového řádku (CLI). Šel jsem do konfiguračního okna z nabídky a pak:

  • Na záložce systém jsem změnil heslo, nastavil bootování na CLI a nezaškrtl Automatické přihlášení
  • Na kartě rozhraní jsem povolil 1vodičový
  • Klikl na ok a restartoval

Pokud se potřebujete kdykoli vrátit k GUI, stačí zadat příkaz startx v rozhraní CLI

startx

Krok 3: Nastavte datovou jednoduchost pro povolení vzdáleného přístupu

Nastavte Dataplicity pro povolení vzdáleného přístupu
Nastavte Dataplicity pro povolení vzdáleného přístupu
Nastavte Dataplicity pro povolení vzdáleného přístupu
Nastavte Dataplicity pro povolení vzdáleného přístupu
Nastavte Dataplicity pro povolení vzdáleného přístupu
Nastavte Dataplicity pro povolení vzdáleného přístupu

Našel jsem opravdu užitečný záznam blogu na webu Dataplicity na https://blog.dataplicity.com/how-to-build-a-raspb… a použil jsem několik jeho částí. Část 3 blogu popisuje nastavení Dataplicity pro vzdálený přístup k RPi. Nikdy předtím jsem Dataplicity nepoužíval, ale musím říci, že jej velmi doporučuji jako velmi jednoduchý nástroj pro vzdálený přístup. Přestože jsou screenshoty (na blogu výše) trochu zastaralé, princip je v pořádku.

Na počítači přejděte na Dataplicity.com a vytvořte si účet (můžete použít prohlížeč v GUI, ale na RPi Zero spíše pomalý). Poté klikněte na tlačítko „přidat nové zařízení“a ve vyskakovacím okně se zobrazí řádek kódu. Poté přejděte na CLI na RPi a zadejte řádek textu. Pokud je vše v pořádku, zobrazí se logo Dataplicity a spustí se instalační program.

Zpět na vašem počítači, nové zařízení by se nyní mělo objevit na webu Dataplicity. Klikněte na zařízení a měla by se vám zobrazit obrazovka terminálu pro váš RPi.

Zde je třeba poznamenat několik věcí:

  • Chcete -li se přihlásit, zadejte „su pi“(pro přístup superuživatele) a budete vyzváni k zadání hesla (jak bylo nastaveno dříve)
  • Musíte povolit Červí díru (bude použito později)
  • K pozdějšímu zobrazení dat budete potřebovat adresu Červí díry (v případě potřeby zkopírujte pravým tlačítkem)

Tento vzdálený přístup můžete použít pro všechny následující kroky a je mnohem jednodušší pro kopírování dat, programů atd. Než přímo na RPi.

Krok 4: Zkontrolujte senzory

Nyní můžete použít Dataplicity vzdáleně přístup k RPI pro všechny další sekce.

Pokud je nyní vše v pořádku, měli byste vidět teploty, které se vracejí z DS18B20. Pracoval jsem prostřednictvím tutoriálu Pi Hut, ale většina z toho nebyla vyžadována. Pokud chcete úplné informace, najdete je zde:

Důležité je přejít do adresáře zařízení a ujistit se, že jsou zobrazeny 2 různé senzory.

cd/sys/bus/w1/zařízení/

To by mělo ukázat 2 zařízení začínající na 28 a sběrnicový master. Důl ukazuje:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Tato 2 ID čísla jsou důležitá a budou potřeba později! Poté přejděte do jednoho z adresářů senzorů:

cd 28-011453ebfdaa

(například) a poté načíst hodnotu ze snímače

kočka w1_slave

Měly by být zobrazeny 2 řádky textu:

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

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

ANO ukazuje, že snímač čte správně, a 21187 ukazuje teplotu ve stupních Celsia 21,187 (děleno 1 000) Opakujte toto pro kontrolu druhého snímače. Pokud jsou obě v pořádku, můžeme přejít ke čtení dat pomocí Pythonu3.

Zkopíroval jsem a upravil následující kód, který jsem našel na webu, ale nemohu si vzpomenout odkud. Pokud to vypadá jako váš kód, omlouvám se, protože nebylo zamýšleno žádné plagiátorství; dejte mi prosím vědět a já vaši práci potvrdím.

Vytvořte adresář s názvem projects a přejděte do tohoto adresáře.

mkdir ~/projekty

cd ~/projekty

V tomto adresáři použijte textový editor (nano) k vytvoření a úpravě souboru s názvem thermo-test.py

sudo nano thermo-test.py

Tím se měl otevřít editor a protože používáte Dataplicity, můžete jednoduše zkopírovat následující kód níže (thermo-test.py) a vložit do editoru. Budete muset změnit 2 názvy zařízení (od 28 do…) na výše uvedená. Když vše vypadá správně, stiskněte ctrl+X pro dokončení, Y pro uložení a návrat k použití stávajícího jména. Pokud dáváte přednost používání GUI, Thonny udělá to samé.

Spuštění testovacího programu:

sudo python3 thermo-test.py

Všechno je v pořádku, mělo by to spustit soubor pomocí pythonu 3 a vytisknout na obrazovku 2 teploty každých 10 sekund. Můžete vyzkoušet, zda je vše v pořádku, umístěním 1 senzoru do ledové vody nebo jemným zahřátím fénem. Pokud je vše v pořádku, můžeme pokračovat!

Krok 5: Firewall UFW

UFW Firewall
UFW Firewall

Vzhledem k tomu, že tento RPi bude trvale připojen k internetu, rozhodl jsem se, že by byl dobrý firewall a jeho jednoduchým použitím je nekomplikovaný firewall (ufw). Zde je velmi jednoduchý návod

Nejdu do velké hloubky, protože toto není účelem tohoto Instructable, ale ve zkratce:

Nainstalujte bránu firewall pomocí:

sudo apt-get install ufw

Nastavit výchozí pravidla:

sudo ufw default povolit odchozí

sudo ufw výchozí odepřít příchozí

Otevřený port 80 pro Dataplicity

sudo ufw povolit 80

Povolte bránu firewall

sudo ufw povolit

Zkontrolujte stav a ujistěte se, že vše běží

stav sudo ufw

Krok 6: S ukončení teplotních dat jako JSON

S ukončení teplotních dat jako JSON
S ukončení teplotních dat jako JSON

Zpět na blog Tima Fernanda a sekci 5.

Postupujte podle uvedených pokynů (kromě toho, že jsme již vytvořili adresář projektů) a vše by mělo fungovat dobře. Pomocí GIT stáhnete Timovy aplikační soubory a PIP zajistí, že jsou do vašeho RPi nainstalovány všechny požadované programy. Poté jsem zjistil, že musím restartovat, abych se ujistil, že všechny balíčky byly správně nastaveny.

Poté spusťte program Tim a váš RPi by pak měl poskytovat data JSON pro první senzor.

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

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

Můžete pokračovat přes blog do sekce 6, kde najdete údaje poskytnuté pro 1 ze senzorů.

K zobrazení dat můžete také použít prohlížeč JSON Viewer https://codebeautify.org/jsonviewer Klikněte na tlačítko „načíst URL“a vložte adresu červí díry, která byla uvedena dříve. V levém podokně byste měli vidět dva záznamy, jeden pro stupně Celsia a jeden pro stupně Fahrenheita.

Krok 7: Odeslání dat z obou senzorů

Odesílejte data z obou senzorů
Odesílejte data z obou senzorů

Na základě kódu v temperature.py a thermo-test.py jsem vytvořil 2temps.py Upravené jako dříve v adresáři /projects /temperature-serve-pi, vložil do kódu a uložil. Pak jsem běžel

sudo gunicorn 2temps: app -b 0,0.0.0:80

Když jsem znovu spustil prohlížeč JSON, dostal jsem hodnoty pro temp1 a temp2

Úspěch:)

Krok 8: Automatické spuštění

Automatické spuštění
Automatické spuštění

Jelikož se napájení skleníku občas vypíná, chtěl jsem, aby RPi automaticky nahrál program a začal prokazovat data. Nejjednodušším způsobem se zdá být úprava souboru rc.local a přidání požadovaného kódu do spodní části těsně nad řádek exit 0.

cd atd

sudo nan rc.local

poté doplněk

spát 10

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

  • & Na konci řekne počítači, aby spustil skript v podsvícení, aby váš počítač nečekal na ukončení funkce a pokračoval v zavádění
  • Spánek 10 [sekund] zajistí, že všechny předchozí operace budou dokončeny před spuštěním služby.

Ukončete a uložte jako dříve. Poté restartujte a znovu spusťte prohlížeč JSON, abyste zkontrolovali, že je vše v pořádku.

Pokud chcete více informací o automaticky spuštěných programech, zde je skvělý návod

Krok 9: Zobrazte data na Freeboard.io (1)

Zobrazit data na Freeboard.io (1)
Zobrazit data na Freeboard.io (1)

Kroky v Timově blogu fungují v souhrnu dobře; vytvořte si účet na www.freeboard.io a poté vytvořte nový Freeboard, nazval jsem svůj SHEDTEMPERATURES.

Nejprve přidejte zdroj dat, vpravo nahoře klikněte na PŘIDAT a ve vyskakovacím okně vyberte jako typ JSON, pojmenujte zdroj dat JMÉNO, jako adresu URL přidejte adresu červí díry z dřívější doby a pro VYZKOUŠEJTE VĚCNOST klikněte na NE. Teploty se mění jen velmi pomalu a tak OBNOVIT KAŽDÝCH 15 SEKUND je v pořádku. Klikněte na ULOŽIT.

Krok 10: Zobrazte data na Freeboard.io (2)

Zobrazit data na Freeboard.io (2)
Zobrazit data na Freeboard.io (2)
Zobrazit data na Freeboard.io (2)
Zobrazit data na Freeboard.io (2)
Zobrazit data na Freeboard.io (2)
Zobrazit data na Freeboard.io (2)
Zobrazit data na Freeboard.io (2)
Zobrazit data na Freeboard.io (2)

První widget přidáte kliknutím na PŘIDAT PANEL a poté na +. Můžete si vybrat a hrát s různými TYPY, ale zjistil jsem, že Gauge je v pořádku. Zadejte vhodný TITLE, UNITS (C), MINIMUM a MAXIMUM, aby vyhovoval vaší aplikaci. U DATASOURCE klikněte na + a objeví se výše vytvořený zdroj.

Rozevírací seznam by měl nyní zobrazovat dříve vytvořené 2 zdroje dat JSON (temp2 a temp2). Vyberte příslušný zdroj a klikněte na Uložit.

Opakujte to pro druhý měřič a jsme připraveni.

Data by se nyní měla zobrazovat na 2 měřidlech a pokud máte stále PRi připojené k monitoru, měli byste vidět požadavky z Freeboard.io, jak přicházejí.

Krok 11: Sestavte projekt do krabice

Postavte projekt do krabice
Postavte projekt do krabice
Postavte projekt do krabice
Postavte projekt do krabice
Postavte projekt do krabice
Postavte projekt do krabice
Postavte projekt do krabice
Postavte projekt do krabice

Až do tohoto bodu byly RPi a ostatní komponenty sestaveny na lavičce pomocí prkénka. Malý kousek stripboardu byl poté použit k výměně prkénka a všechny vodiče byly připájeny na místo.

Byl nalezen jasně růžový malý úložný box Lego, který měl spoustu místa a kde by se RPI příliš nezahřívalo. do boků krabice byly vyvrtány otvory a 3 mm nylonové montážní sloupky byly použity k uchycení RPi a stripboardu na místo.

Z GPIO jsou vyžadována pouze 3 připojení, 3,3 V, GND a data.

  • Pin 3,3 Vdc 1
  • GND pin 6
  • Datový (GPIO4) pin 7

V krabici byly také přidány otvory pro napájení USB a kabely k teplotním senzorům. Jakmile bylo vše namontováno na místo, bylo přidáno malé množství silikonového tmelu, aby se zajistilo, že si pavouci nebudou myslet, že je to příjemné teplé místo k zimování!

Krok 12: Hotovo

Hotovo
Hotovo
Hotovo
Hotovo

Krabice byla umístěna do skleníku a napájena z USB nabíječky. Dva senzory byly umístěny jeden v horní části skleníku a druhý na květináč, aby se zjistilo, jak se sazenice v noci chladí.

Toto je můj první Instructable a doufám, že si myslíte, že je to v pořádku. Pokud najdete nějaké chyby, dejte mi prosím vědět a já je v případě potřeby opravím. Dalším krokem může být protokolování dat každých (řekněme) 60 sekund, ale to přijde později.

Doporučuje: