Obsah:

Indikátor události RPi-Zero IoT / barevná lampa: 6 kroků (s obrázky)
Indikátor události RPi-Zero IoT / barevná lampa: 6 kroků (s obrázky)

Video: Indikátor události RPi-Zero IoT / barevná lampa: 6 kroků (s obrázky)

Video: Indikátor události RPi-Zero IoT / barevná lampa: 6 kroků (s obrázky)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Červenec
Anonim
Indikátor události RPi-Zero IoT / barevná lampa
Indikátor události RPi-Zero IoT / barevná lampa
Indikátor události RPi-Zero IoT / barevná lampa
Indikátor události RPi-Zero IoT / barevná lampa
Indikátor události RPi-Zero IoT / barevná lampa
Indikátor události RPi-Zero IoT / barevná lampa

Není vyžadován žádný další mikrořadič ani přídavný modul HAT. RPi-Zero to všechno zvládne. Ještě lépe použijte RPi-Zero W!

Ukázkové použití: Indikátor stavu webové služby (např. Sledování DowJonesIndex), indikátor stavu politických nebo sportovních událostí, náladové světlo, sledování senzoru, pojmenujte ho. Podívejte se na video v kroku 6.

Raspberry-Pi má pouze jednu hardwarově podporovanou řadu PWM. Tento projekt potřebuje 3 řádky PWM, takže jsem použil softwarově řízenou knihovnu PWM 'c' (https://wiringpi.com/reference/software-pwm-library/), která by již měla být nainstalována.

Rozdělil jsem zpracování na 2 procesy. Jeden, řízený přerušením, přepínající řídící linky na LED podle potřeby, získávající své pochodové příkazy ze svého proudu 'stdin'. Druhý je server nodeJS řízený událostmi využívající soket IO. To má zabránit věcem, jako je blikání světla, a zároveň zajistit odezvu. Tato kombinace obvykle využívá méně než 5% CPU. V dobách průběžných aktualizací barev (pomocí posuvníků a/nebo mnoha klientů) může snadno využívat více než 50% (zejména při použití prohlížeče v grafickém uživatelském rozhraní Pi-Zero). Všimněte si, že když přijde změna, oznámení o aktualizaci se odešlou všem otevřeným klientům soketů.

Krok 1: Co budete potřebovat

Co budete potřebovat
Co budete potřebovat
Co budete potřebovat
Co budete potřebovat
  • Micro SD karta Pi-Zero, doporučeno 8 GB. S Raspbian-Linux nebo NOOBS
  • RGB LED (použil jsem tento:
  • 3 odpory (hodnota na základě požadovaného proudu a/nebo požadovaného jasu, 1/8 W)
  • WiFi, USB dongle (např. https://www.ebay.com/itm/252018085448) nebo ještě lépe použít Raspberry Pi Z-W (s integrovaným WiFi)
  • pouzdro (např. malé: https://www.ebay.com/itm/131583579374 s větším prostorem:
  • difuzér (viz příklady na obrázku)
  • Kabely a adaptéry podle potřeby.

Volitelně podle toho, jak chcete komponenty připojit

  • záhlaví (https://www.ebay.com/itm/14186077616)
  • propojky (https://www.ebay.com/itm/262235387520)
  • pravoúhlý adaptér micro-USB (modrý USB 2.0 OTG R)
  • mini USB rozbočovač, používaný pouze během fáze instalace

Krok 2: Nastavení Pi-Zero a příprava na vývoj

Postupujte podle tohoto počátečního nastavení PiZero, aby bylo připraveno na vývoj…

Jakmile máte kartu microSD s nastavením NOOBS, postupujte takto:

Připojte kartu microSD. Připojte nízkoenergetický rozbočovač USB s hardwarovým klíčem, klávesnicí a myší (můžete použít bezdrátovou myš a/nebo klávesnici, v každém případě to může, ale není pravděpodobné, vyžadovat externí napájení rozbočovače). Použil jsem adaptéry a rozbočovač, který jsem již měl.

Nyní připojte monitor a napájecí adaptér microUSB a spustí se. Pokračujte a dokončete pokyny k nastavení Raspbian, Debian Linux, jak je vidět na výše uvedeném odkazu noobs-setup.

Navíc jsem měl příliš nízké rozlišení. Tyto řádky jsem tedy přidal do souboru /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

Režim hdmi_mode = 58 funguje pro můj monitor, váš může potřebovat něco jiného.

viz: make-raspberry-pi-use-full-resolution-monitor a

raspberrypi.org/documentation/configuration/config-txt.md

Po spuštění Pi-Zero přejde do rozhraní GUI.

Abych využil plnou velikost své karty microSD, použil jsem volbu raspi-config #1 „Rozbalit souborový systém“. V příkazovém řádku v okně terminálu zadejte „sudo raspi-config“Viz: dokumentace/konfigurace/raspi -config.md

Také jsem změnil tato nastavení v #5 „Možnosti internacionalizace“

  • Místní nastavení: en_US. UTF-8 UTF-8
  • Časové pásmo: Amerika … Los_Angeles
  • Rozložení klávesnice: Obecný počítač se 105 klávesami (Intl)… anglicky (USA)

Standard klávesnice pro Velkou Británii (pro kterou je Raspbian přednastaven) pro mě z velké části úprav znamenal opravdovou fušku.

Tato nastavení změňte podle potřeby a podle potřeby. K navigaci v 'raspi-config' musíte použít klávesy se šipkami a klávesu tab; a po výběru může být reakce velmi pomalá.

Zjistil jsem, že není problém se připojit k internetu pomocí WiFi-USB dongle (použil jsem 2 různé). Jednoduše jsem musel zadat své heslo pro přístupový klíč WiFi pomocí rozevíracího seznamu v pravém horním rohu GUI. Jakmile jsem to udělal, automaticky se připojí po každém restartu/zapnutí.

Nyní jsem byl připraven na obecný vývoj.

Abyste se dostali do tohoto bodu, můžete podniknout mnoho cest. Až do tohoto bodu jsem zde neuvedl velké detaily, ale na webu je mnoho metod a konfigurací popsaných podrobněji. Včetně jednoho pro bezhlavé nastavení, kde byste pomocí vzdáleného okna ssh terminálu na svém osobním počítači provedli vývojové kroky uvedené v tomto návodu.

Krok 3: Vývojové prostředí a nástroje

Vývojové prostředí a nástroje
Vývojové prostředí a nástroje
Vývojové prostředí a nástroje
Vývojové prostředí a nástroje

Pro nastavení konfigurace systému a software, který jsem pro projekt vyvinul, jsem provedl výzkum a vývoj na Raspberry Pi-2; protože má čtyřjádrový procesor, takže procházení a vývoj kódu s více okny je mnohem rychlejší. K realizaci tohoto projektu můžete samozřejmě použít jakýkoli model Raspberry-Pi.

K nastavení Node.js (podpora JavaScripting na straně serveru I/O na straně událostí) jsem provedl následující…

sudo apt-get update

sudo apt-get install nodejs npm

Přidání těchto balíčků nodeJS (npm je Nodejs Package Manager)

npm install express

npm install socket.io

Reference:

www.npmjs.com/package/express Rychlý, minimalistický webový framework

www.npmjs.com/package/socket.io Socket. IO umožňuje obousměrnou komunikaci založenou na událostech v reálném čase

Krok 4: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Použité hodnoty rezistorů jsou různé, protože pokles napětí a účinnost se liší pro všechny tři segmenty barev LED. Všechny výstupní úrovně GPIO High byly přibližně 3,2 voltů. Každý segment LED byl testován, aby bylo zajištěno, že spotřebovává méně než 20 ma maximum a přibližně 40 ma dohromady (povolený maximální součet <50 ma), což PiZero snadno zvládne. Dostal jsem tolik výstupního jasu, kolik jsem mohl, přímo pohánějící LED; což je pro mé potřeby dost. K pohonu vyšších proudů by pro mnohem jasnější výstup mohly být použity přechodové tranzistory se společnou anodovou LED s anodou připojenou k vedení 5 V. PS: Protože moje různé úrovně bílé vystupují trochu namodralě, 27 místo 24 ohmů byla by pro mě lepší volba.

Všimněte si, že jsem použil záhlaví s mužskými kolíky a připojil jsem se k nohám LED pomocí propojek F-F. Tím se snížila celková výška. Rezistory jsem připájel doprostřed propojek. Bez použití desky s plošnými spoji nebo desky bez pájení spolu s použitím pravoúhlého adaptéru micro-USB na USB pro WiFi dongle učinila konečná sestava poměrně kompaktní.

Pro difuzor doporučuji pingpongový míček (snadno vyvrtáte dostatečně velkou díru, do které můžete vložit LED diodu 5-8-10 mm). Nebo odřízněte horní část LED žárovky (která používá plastový difuzor). K tomu označte čáru s jemným bodovým ostřím, kde chcete řezat, a použijte nástroj podobný Dremelu s tenkým odříznutým nástavcem. Pokud chcete, můžete použít hezkou malou sklenici nebo sklenici na pití. Jakmile se usadíte na jednom difuzéru, přilepte jej k horní části pouzdra.

Pro ukázky rád používám malou Li powerbanku umístěnou uvnitř pouzdra. Tato jednotka se zdá působivější zcela bezdrátová. V této konfiguraci bude mít samozřejmě omezenou dobu provozu. Pro běžný provoz jednoduše používám nástěnný adaptér micro-USB.

Krok 5: Projektový software

Projektový software
Projektový software

Použil jsem dva programy, proces Node.js, který mluví s podřízeným procesem prostřednictvím jeho stdin datového proudu. To proto, aby každý mohl dělat to, co umí nejlépe, a fungovat jako nezávislé procesy svým vlastním tempem.

Zde je to, co jsem udělal: Ale nemusíte, protože jsem poskytl soubor tar-gzip, který obsahuje výsledný strom souborů.

Nastavení na straně serveru NodeJS:

cd ~

mkdir node_rgb cd node_rgb mkdir veřejné

vložte 'index.html' a 'style.css' do adresáře '~/node_rgb/public' adresář 'rgbDriver.c' a 'rgb_main.js' do adresáře '~/node_rgb'

Kompilace/sestavení procesu c 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Stahování a rozšiřování ekvivalence

Chcete-li stáhnout node_rgb.tgz (níže) do svého Pi-Zero do svého domovského adresáře (~ pi), můžete provést jeden ze tří následujících kroků:

  1. Stáhněte si z prohlížeče v GUI vašeho Pi-Zero Přesuňte soubor na ~ pi/
  2. V okně terminálu připojeném k vám Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Stahujte z prohlížeče na stolním počítači. Zkopírujte jej pomocí WinSCP do adresáře ~ pi na Pi-Zero

Po provedení č. 1 2 nebo 3 výše…

cd ~

tar -xzvf node_rgb.tgz strom node_rgb… node_rgb ├── veřejný │ ├── Dow_Jones_Index.html │ ├── index.html │ └─└ style.css ├── rgbDriver ├── rgbDriver.c ├── rgb_ js ├── start_rgb ├── kill_rgb └── track_dji

Výsledný spustitelný (shora) „rgbDriver“lze použít nezávisle na procesu rozhraní Node.js.

Chcete-li ověřit, že tento ovladač a hardware fungují, přiřaďte do ovladače sady tří hodnot (0-255) oddělených mezerou. Like 'echo 255 0 0 |./rgbDriver 'pro červenou nebo' echo 0 255 0 |./rgbDriver 'pro zelenou. Všimněte si, že „./“říká operačnímu systému, aby našel náš program „rgbDriver“v aktuálním adresáři. Když vydáte a ^c (cntl-c) k zastavení ovladače, LED může, ale nemusí zůstat rozsvícená. Alternativně můžete jeho hodnoty interaktivně krmit. Zkuste na příkazovém řádku psát tyto řádky za sebou a sledujte LED diodu.

./rgbDriver

0 255 0 100 0 100 255 255 0… atd… ^c

Ujistěte se, že nemáte paralelně spuštěny 2 z těchto procesů.

Chcete -li spustit celou sadu softwarových aplikací, včetně serveru Node.js, použijte tento příkaz:

sudo node rgb_main.js

Pokud chcete zastavit server Node.js, použijte cntl-c. Spusťte jej pomocí

sudo node rgb_main.js &

aby to běželo v pozadí, ale pak to budete muset zastavit příkazem 'sudo kill -9 pid'. Pokud se vám tento příkaz zdá cizí, zkontrolujte výstup těchto příkazů: 'man kill' & 'man sudo'.

Použijte prohlížeč na ploše, tabletu nebo telefonu, který je připojen k místní síti. Přejděte na https:// raspberrypi: 8080/nebo pokud to nefunguje, použijte IP adresu zařízení (získanou z cmd 'ifconfig') něco jako 192.168.1.15 plus specifikace portu: 8080 nebo pokud používáte Pi-Zero GUI: localhost: 8080 bude fungovat.

Ovládejte posuvníky RGB na stránce, která se objeví, a sledujte, jak LED dioda RGB pokračuje.

Další užitečné příkazy Všimněte si, že pokud skončíte s spuštěním více než jednoho „rgbDriver“najednou, pravděpodobně se stanete nepředvídatelným chováním. Pokud se pokusíte spustit druhou kopii souboru rgb_main.js, dojde k chybě.

Tento příkaz vypíše všechny související procesy:

ps aux | grep rgb

Tento příkaz zabije všechny procesy nodeJS spolu s podřízenými procesy „rgbDriver“:

sudo ps aux | uzel grep.*rgb | awk '{print "sudo kill -9" $ 2}' | sh

Samostatný provoz

Chcete-li, aby Pi-Zero spustil serverovou aplikaci Node.js při spuštění … pomocí vašeho oblíbeného editoru (např. Nano ~/.bash_profile), zadejte následující řádky a uložte do ~/.bash_profile

cd uzel_rgb

sudo node rgb_main.js &

Abyste při otevírání terminálového okna nezískali nepříjemné chybové zprávy, použijte podmíněné kódování jako skript shellu v souboru 'start_rgb'

Když běží Pi-Zero vestavěný, bez klávesnice, myši nebo monitoru; grafické uživatelské rozhraní zabere minimální čas CPU, protože nedojde k žádné interakci uživatele. Neaktivuji automatické spouštění GUI, protože Pi-Zero má v tomto případě více zdrojů, než je potřeba; a mám rád, když mohu kdykoli v budoucnu připojit několik kabelů a použít je. To však není nutné, protože k provedení jakékoli potřebné údržby můžete použít vzdálený terminál SSH (např. PuTTY).

Používá se jako monitor událostí

Vytvořil jsem webovou stránku pro sledování denní změny v indexu Dow Jones. Jeho zdroj lze použít jako vodítko pro vaši vlastní stránku, která používá některá webová data a podle toho řídí váš indikátor Pi-Zero. Tato stránka získává svá data (json) z webové služby Google. Existuje mnoho forem webových služeb, takže budete muset prozkoumat tu, kterou chcete použít k určení kódu JavaScript pro přístup.

Pokud byste chtěli používat své zařízení, stejně jako já, jako vyhrazený, samostatný indikátor změny indexu Dow, přidejte tyto řádky na konec souboru ~/.bash_profile nebo podle potřeby do SSH a zadejte druhý příkazový řádek. Pokud následně budete chtít použít dálkové ovládání „zabít -9“, výsledný proces prohlížeče epiphany.

spát 20

epiphany-browser --display =: 0,0 localhost: 8080/Dow_Jones_Index.html &

Indikátor bude při hodnotě 0 svítit světle šedě. S vyššími hodnotami bude stále více zelený. Je nejjasnější čistě zelená přibližně na 250. Vyšší, ale hodnoty způsobují zpočátku mělký záblesk, až do nejhlubšího záblesku kolem 500. U záporných hodnot (denní poklesy v Dow) to funguje podobně, ale v červeném.

AKTUALIZACE květen 2018

Vytvořil jsem novou webovou stránku (SolarStorm_devCon.html, připojenou jako soubor.txt, protože soubor.html se nenahrává), který shromažďuje informace o GeoMagnetic Storm (což by mohlo předpovídat zničující CME, EMP) a používá to k prezentaci barvy měřítko odrážející jakýsi index „DevCon“Geo-Storm. indikující potenciál katastrofy způsobené elektromagnetickým pulsem (EMP) vyplývajícím z kosmického počasí, pravděpodobně slunečních erupcí nebo koronální ejekce hmoty (CME). Použijte jej, jako byste použili „Dow_Jones_Index.html“.

Krok 6: Vzdálené ovládání webové stránky

Image
Image

V tomto okamžiku můžete svoji barevnou lampu IOT ovládat odkudkoli z vaší místní sítě. Jak zviditelnit veřejný internet není součástí tohoto návodu. Pokud pro své zařízení nastavíte veřejnou IP adresu, budete muset použijte tuto IP v příkazu open socket v JavaScriptu vašich stránek (např. ~/node_rgb/public/index.html)

Plánuji použít své zařízení Pi-Zero IOT jako barevný indikátor v reálném čase pro změnu dne v indexu Dow Jones. Vytvořil jsem stránku, která to dělá, která získává data json z google.com/finance. Dále jsem vytvořil několik webových stránek, které demonstrují širokou škálu použití tohoto malého zařízení IOT. Místo toho, abych dal svůj PiZero na veřejný internet, hostoval stránky na mém stávajícím veřejně přístupném webovém serveru (aktuálně @ 71.84.135.81 aka: https://raspi.ddns01.com/ když funguje můj bezplatný server Dynamic Domain Name Server), který běží na původní verzi B Raspberry-Pi.

V kódu na mých vzdálených stránkách jsem otevřel soketová připojení na 192.168.1.41:8080. Opravil jsem IP svého Pi-Zero na 192.168.1.41. Chcete-li postupovat podobně, postupujte podle pokynů v nastavení-malina-pi-s-wifi-a-a-static-ip pod nadpisem: Statická adresa IP. Pokud tedy nastavíte PiZero na 192.168.1.41 ve vaší místní síti, tyto stránky, otevřené z mých webových stránek, budou komunikovat s vaším zařízením, protože připojení se provádí ze strany klienta.

Zde jsou stránky, které jsem použil k testování a ovládání svého osvětlovacího zařízení Pi-Zero IOT. Pokud vyvoláte tyto stránky (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ nebo jakékoli stránky na této stránce zarámované), JavaScript na straně klienta se řídit vytvořené světlo IOT (vzhledem k tomu, že běží na této adrese URL „192.168.1.41:8080“) Pokud chcete, můžete zkopírovat zdroj kterékoli z těchto stránek a upravit podle svých představ.

Na první stránce můžete zařízení nastavit na jakoukoli barvu. LED lampa a barva, kterou vidíte na webové stránce, budou sledovat poměrně dobře. Použité hodnoty odporu lze upravit (stejně jako monitor), aby byly skutečně sladěny. Strávil jsem málo až žádný čas, abych zajistil, že se shodují. Tato stránka aktualizuje svou barvu, kdykoli někdo jiný změní barvu a server odešle aktualizovanou informační zprávu.

Jedna stránka je jednoduchý semafor ovládaný tlačítky.

Existuje stránka určená ke sledování sportovních soutěží (např. Fotbalu, basketbalu, baseballu), voleb nebo dokonce přizpůsobená pro ukazatel stylu získávání finančních prostředků nebo DEFCON. Skóre (nebo odevzdané volební hlasy) bylo možné automaticky získat z webové služby nebo seškrabat z jiné webové stránky. Na stránce Contest_demo nemám automatický kanál. Někdo se správným know-how by mohl přidat výkonného řidiče k provozu vysoce výkonných LED světlometů a vykoupat místnost (nebo sportovní bar) barvou týmu, když jsou vpředu. Bohužel jsem s tímto návodem pro letošní super-bowlingové strany příliš pozdě, ale včas pro volby 2016.

Pak je tu stránka podobná té, kterou použiji k tomu, abych ze svého zařízení udělal indikátor sledování Dow Jones. Posuvník a tlačítka jsou na ukázkové stránce DJI pouze pro demonstrační účely. Ve zdroji pro tuto stránku je kód, který jsem vyvinul k přebarvení obrázku inspirovaného zelenou obrazovkou; s dostatkem komentářů, že vám to může také připadat užitečné.

Pouze první z těchto 4 stránek (spolu se stránkou index.html založenou na Pi-Zero) poslouchá zprávy o aktualizaci serveru a podle toho se aktualizuje. Vše ostatní odešlete pouze na server.

Doporučuje: