Obsah:

Indikátor udalosti RPi-Zero IoT / farebná lampa: 6 krokov (s obrázkami)
Indikátor udalosti RPi-Zero IoT / farebná lampa: 6 krokov (s obrázkami)

Video: Indikátor udalosti RPi-Zero IoT / farebná lampa: 6 krokov (s obrázkami)

Video: Indikátor udalosti RPi-Zero IoT / farebná lampa: 6 krokov (s obrázkami)
Video: 1. Q Light Controller + Začínáme s QLC +. Přístroje a funkce 2024, Júl
Anonim
Indikátor udalosti RPi-Zero IoT / farebná lampa
Indikátor udalosti RPi-Zero IoT / farebná lampa
Indikátor udalosti RPi-Zero IoT / farebná lampa
Indikátor udalosti RPi-Zero IoT / farebná lampa
Indikátor udalosti RPi-Zero IoT / farebná lampa
Indikátor udalosti RPi-Zero IoT / farebná lampa

Nie je potrebný žiadny ďalší mikro-ovládač ani prídavný modul HAT. RPi-Zero to všetko zvládne. Ešte lepšie je použiť RPi-Zero W!

Príklad použitia: Indikátor stavu webovej služby (napr. Sledovanie DowJonesIndex), indikátor stavu politických alebo športových udalostí, náladové svetlo, sledovanie senzora, pomenujte ho. Pozrite si video v kroku 6.

Raspberry-Pi má iba jednu hardvérovo podporovanú linku PWM. Tento projekt potrebuje 3 riadky PWM, preto som použil softvérovo poháňanú knižnicu PWM 'c' (https://wiringpi.com/reference/software-pwm-library/), ktorá by už mala byť nainštalovaná.

Spracovanie som rozdelil na 2 procesy. Jeden, riadený prerušením, prepínajúci riadiace linky na LED podľa potreby, získavajúci svoje pochodové príkazy zo svojho prúdu „stdin“. Druhým je server nodeJS riadený udalosťou využívajúci socket IO. Toto má zabrániť veciam, ako je blikanie svetla, a zároveň zaistiť odozvu. Kombinácia zvyčajne používa menej ako 5% CPU. V časoch nepretržitých aktualizácií farieb (prostredníctvom posúvačov a/alebo mnohých klientov) môže ľahko použiť viac ako 50% (obzvlášť keď používate aj prehliadač v grafickom rozhraní Pi-Zero). Všimnite si toho, že keď príde zmena, upozornenie na aktualizáciu bude odoslané všetkým klientom s otvoreným soketom.

Krok 1: Čo budete potrebovať

Čo budete potrebovať
Čo budete potrebovať
Čo budete potrebovať
Čo budete potrebovať
  • Karta Pi-Zero micro-SD, odporúča sa 8 GB. S Raspbian-Linux alebo NOOBS
  • RGB LED (použil som tento:
  • 3 odpory (hodnota na základe požadovaného prúdu a/alebo požadovaného jasu, 1/8 wattu)
  • WiFi, USB dongle (napr. https://www.ebay.com/itm/252018085448) alebo ešte lepšie použiť Raspberry Pi Z-W (so vstavaným WiFi)
  • prípad (napr. malý: https://www.ebay.com/itm/131583579374 s väčším priestorom:
  • difuzér (pozri príklady na obrázku)
  • Káble a adaptéry podľa potreby.

Voliteľne podľa toho, ako chcete komponenty pripojiť

  • hlavička (https://www.ebay.com/itm/14186077616)
  • prepojky (https://www.ebay.com/itm/262235387520)
  • pravouhlý adaptér micro-USB (modrý USB 2.0 OTG R)
  • mini USB rozbočovač, používa sa iba vo fáze nastavenia

Krok 2: Nastavenie Pi-Zero a príprava na vývoj

Vykonajte toto počiatočné nastavenie svojho PiZero, aby bolo pripravené na vývoj …

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

Pripojte kartu microSD. Pripojte nízkoenergetický rozbočovač USB s hardvérovým kľúčom, klávesnicou a myšou (Bezdrôtovú myš a/alebo klávesnicu môžete používať tak, ako to môže, ale nie je pravdepodobné, vyžadovať externé napájanie rozbočovača). Použil som adaptéry a rozbočovač, ktorý som už mal.

Teraz pripojte monitor a napájací adaptér microUSB a spustí sa. Pokračujte a dokončite pokyny k inštalácii Raspbian, Debian Linux, ako je vidieť na vyššie uvedenom odkaze noobs-setup.

Navyše som mal príliš nízke rozlíšenie. Preto som tieto riadky pridal do súboru /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

Režim hdmi_mode = 58 funguje pre môj monitor, váš monitor môže potrebovať niečo iné.

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

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

Po spustení Pi-Zero prejde do rozhrania GUI.

Aby som využil celú veľkosť svojej karty microSD, použil som raspi-config #1 „Rozbaliť súborový systém“. V príkazovom riadku v okne terminálu zadajte príkaz „sudo raspi-config“. Pozrite si dokumentáciu/konfiguráciu/raspi. -config.md

Tiež som zmenil tieto nastavenia v #5 „Možnosti internacionalizácie“

  • Lokalita: sk_SK. UTF-8 UTF-8
  • Časové pásmo: Amerika … Los_Angeles
  • Rozloženie klávesnice: Generic 105-key (Intl) PC… English (US)

Štandard klávesnice pre Veľkú Britániu (pre ktorý je Raspbian vopred nastavený) pre mňa robil väčšinu mojich úprav skutočnou fuškou.

Zmeňte tieto nastavenia podľa potreby a podľa potreby. Na navigáciu v „raspi-config“musíte použiť klávesy so šípkami a kláves na karte; a po výbere môže byť odpoveď veľmi pomalá.

Zistil som, že nie je problém pripojiť sa na internet pomocou donglu WiFi-USB (použil som 2 rôzne). Jednoducho som musel zadať svoje heslo prístupového kľúča WiFi pomocou rozbaľovacej ponuky v pravom hornom rohu GUI. Keď som to urobil, automaticky sa pripojí po každom reštarte/zapnutí.

Teraz som bol pripravený na všeobecný rozvoj.

Aby ste sa dostali do tohto bodu, môžete ísť mnohými cestami. Do tohto bodu som tu neuviedol veľké detaily, ale na webe je veľa spôsobov a konfigurácií popísaných podrobnejšie. Vrátane jedného pre bezhlavé nastavenie, kde by ste pomocou vzdialeného okna terminálu ssh na osobnom počítači vykonali kroky vývoja uvedené v tomto návode.

Krok 3: Vývojové prostredie a nástroje

Vývojové prostredie a nástroje
Vývojové prostredie a nástroje
Vývojové prostredie a nástroje
Vývojové prostredie a nástroje

Pokiaľ ide o nastavenie konfigurácie systému a softvér, ktorý som pre projekt vyvinul, vykonal som výskum a vývoj na Raspberry Pi-2; pretože má štvorjadrový procesor, vďaka čomu je prehliadanie a vývoj kódu s viacerými oknami oveľa rýchlejšie. Na realizáciu tohto projektu môžete samozrejme použiť akýkoľvek model Raspberry-Pi.

Aby som nastavil Node.js (podpora JavaScripting na strane servera I/O na strane servera), urobil som nasledujúce…

sudo apt-get aktualizácia

sudo apt-get install nodejs npm

Pridanie týchto balíkov nodeJS (npm je Nodejs Package Manager)

npm expresná inštalácia

npm nainštalovať socket.io

Referencie:

www.npmjs.com/package/express Rýchly, minimalistický webový rámec

www.npmjs.com/package/socket.io Socket. IO umožňuje obojsmernú komunikáciu založenú na udalostiach v reálnom čase

Krok 4: Hardvér

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

Použité hodnoty odporu sú rôzne, pretože pokles napätia a účinnosť sa líšia pre všetky tri segmenty farieb LED. Všetky výstupné úrovne GPIO High boli približne 3,2 voltov. Každý segment LED bol testovaný, aby sa zabezpečilo, že spotrebuje maximálne 20 ma maximálne a asi 40 mA (maximálne povolený celkový súčet <50 ma), čo PiZero ľahko zvládne. Dostal som taký maximálny výstupný jas, ako som mohol, priamo poháňajúci LED; čo je pre moje potreby dosť. Na pohon vyšších prúdov, pre oveľa jasnejší výstup, by mohli byť použité tranzistory s medzipohonom so spoločnou anódovou diódou LED s anódou pripojenou k 5v riadku. PS: Pretože moje rôzne úrovne bielej farby vychádzajú trochu namodralé, 27 namiesto 24 ohmov bola by to pre mňa lepšia voľba.

Všimnite si, že som použil hlavičku so samčími kolíkmi a spojenú s LED nohami prepojkami F-F. To držalo dole celkovú výšku. Rezistory som spájkoval do stredu prepojok. Keď sa nepoužila žiadna doska s plošnými spojmi ani doska bez spájkovania, spolu s použitím pravouhlého adaptéra micro-USB na USB pre dongle WiFi urobili konečnú zostavu pomerne kompaktnou.

Pre difuzér odporúčam pingpongovú loptičku (vyvŕtať otvor dostatočne veľký na to, aby ste doň vložili LED diódu 5-8-10 mm, je ľahké). Alebo odrežte hornú časť žiarovky LED (tej, ktorá používa plastový difúzor). Na tento účel označte čiaru s ostrým ostrím, na ktorej chcete strihať, a použite nástroj podobný nástroju Dremel s tenkým odrezaným nadstavcom. Ak chcete, môže byť použitá pekná malá sklenená nádoba alebo pohár na pitie. Akonáhle sa usadíte na jednom difuzéri, prilepte ho k hornej časti puzdra.

Na ukážky rád používam malú Li power banku umiestnenú vo vnútri puzdra. Táto jednotka sa zdá byť pôsobivejšia úplne bezdrôtová. V tejto konfigurácii bude mať samozrejme obmedzený prevádzkový čas. Na bežnú prevádzku jednoducho používam nástenný adaptér micro-USB.

Krok 5: Projektový softvér

Projektový softvér
Projektový softvér

Použil som dva programy, proces Node.js, ktorý hovorí s detským procesom prostredníctvom štandardného dátového toku. Je to tak, aby každý mohol robiť to, čo vie najlepšie, a fungovať ako nezávislé procesy svojim vlastným tempom.

Tu je to, čo som urobil: Ale nemusíte, pretože som poskytol súbor tar-gzip, ktorý obsahuje výsledný strom súborov.

Nastavenie na strane servera NodeJS:

CD ~

mkdir node_rgb cd node_rgb mkdir public

vložte „index.html“a „style.css“do adresára „~/node_rgb/public“Directoryput „rgbDriver.c“a „rgb_main.js“do adresára „~/node_rgb“

Skompilujte/vytvorte proces c 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Sťahovanie a rozširovanie ekvivalencie

Ak si chcete stiahnuť node_rgb.tgz (nižšie) do svojho Pi-Zero do svojho domovského adresára (~ pi), môžete vykonať jeden z troch nasledujúcich spôsobov:

  1. Prevezmite z prehliadača v GUI svojho Pi-Zero Presuňte súbor na ~ pi/
  2. V okne terminálu, ktoré je k vám pripojené Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Sťahujte z prehliadača na stolnom počítači. Skopírujte ho pomocou WinSCP do adresára ~ pi na Pi-Zero.

Po vykonaní č. 1 2 alebo 3 vyššie…

CD ~

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

Výsledný spustiteľný (zhora) „rgbDriver“je možné použiť nezávisle od procesu rozhrania Node.js.

Na overenie funkčnosti tohto ovládača a hardvéru vložte do ovládača sady troch hodnôt (0-255) oddelených medzerou. Páči sa mi to 'echo 255 0 0 |./rgbDriver 'pre červenú alebo' echo 0 255 0 |./rgbDriver 'pre zelenú. Všimnite si toho, že „./“hovorí operačnému systému, aby našiel náš program „rgbDriver“v aktuálnom adresári. Keď vydáte a ^c (cntl-c) na zastavenie vodiča, LED dióda môže alebo nemusí zostať rozsvietená. Alternatívne môžete interaktívne podávať jeho hodnoty. Skúste napísať na príkazovom riadku tieto riadky jeden za druhým a sledujte LED diódu.

./rgbDriver

0 255 0 100 0 100 255 255 0… atď… ^c

Uistite sa, že nemáte paralelne spustené 2 z týchto procesov.

Na spustenie úplnej sady softvérových aplikácií vrátane servera Node.js použite tento príkaz:

sudo uzol rgb_main.js

Potom použite cntl-c, ak chcete zastaviť server Node.js. Spustite ho pomocou

sudo uzol rgb_main.js &

aby to bežalo na pozadí, ale potom ho budete musieť zastaviť príkazom „sudo kill -9 pid“. Ak sa vám tento príkaz zdá cudzí, prečítajte si výstup týchto príkazov: „man kill“a „man sudo“.

Použite prehliadač na počítači, tablete alebo telefóne, ktorý je pripojený k miestnej sieti. Choďte na https:// raspberrypi: 8080/alebo ak to nefunguje, použite IP adresu zariadenia (získanú z cmd 'ifconfig') niečo ako 192.168.1.15 plus špecifikácia portu: 8080 alebo ak používate Pi-Zero GUI: localhost: 8080 bude fungovať.

Ovládajte posúvače RGB na stránke, ktorá sa zobrazí, a sledujte, ako nasleduje lampa RGB-LED.

Ďalšie užitočné príkazy Všimnite si toho, že ak skončíte s spustením viac ako jedného programu „rgbDriver“naraz, pravdepodobne sa stanete nepredvídateľným správaním. Ak sa pokúsite spustiť druhú kópiu súboru rgb_main.js, dôjde k chybe.

Tento príkaz vypíše všetky súvisiace procesy:

ps aux | grep rgb

Tento príkaz zabije všetky procesy nodeJS spolu s podradenými procesmi „rgbDriver“:

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

Samostatná prevádzka

Ak chcete, aby Pi-Zero spustil aplikáciu servera Node.js pri spustení … pomocou vášho obľúbeného editora (napr. Nano ~/.bash_profile), zadajte nasledujúce riadky a uložte do ~/.bash_profile

cd node_rgb

sudo uzol rgb_main.js &

Aby ste pri otváraní okna terminálu nedostali chybové hlásenia, použite podmienené kódovanie ako skript shell v súbore „start_rgb“

Keď je Pi-Zero spustený vstavaný, bez klávesnice, myši alebo monitora; grafické užívateľské rozhranie zaberie minimálny čas CPU, pretože nebude dochádzať k žiadnym interakciám s užívateľom. Automatické vypínanie GUI nevypínam, pretože Pi-Zero má v tomto prípade viac zdrojov, ako je potrebné; a mám rád, keď môžem kedykoľvek v budúcnosti pripojiť niekoľko káblov a používať ich. Nie je to však potrebné, pretože na vykonanie potrebnej údržby môžete použiť vzdialený terminál SSH (napr. PuTTY).

Použitie ako monitora udalostí

Vytvoril som webovú stránku na monitorovanie denných zmien v indexe Dow Jones. Jeho zdroj je možné použiť ako vodítko pre vašu vlastnú stránku, ktorá používa niektoré webové údaje a podľa toho riadi váš indikátor Pi-Zero. Táto stránka získava svoje údaje (json) z webovej služby Google. Existuje mnoho foriem webových služieb, takže budete musieť vyhľadať ten, ktorý chcete použiť na určenie kódu JavaScript, aby ste k nemu získali prístup.

Ak by ste chceli používať svoje zariadenie, rovnako ako ja, ako vyhradený, samostatný indikátor zmeny indexu Dow, pridajte tieto riadky na koniec súboru ~/.bash_profile alebo podľa potreby SSH a zadajte druhý príkazový riadok. Ak budete chcieť následne použiť diaľkové ovládanie „kill -9“, výsledný proces epiphany -browser.

spať 20

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

Indikátor bude svietiť svetlo sivou farbou pri hodnote 0. S vyššími hodnotami bude stále viac zelený. Je najjasnejšia čistá zelená asi pri 250. Vyššie, ale hodnoty spôsobujú najskôr plytký záblesk, až po najhlbší záblesk asi 500. Pri záporných hodnotách (denné poklesy v Dow) to robí podobne, ale v červenej farbe.

AKTUALIZÁCIA máj 2018

Vytvoril som novú webovú stránku (SolarStorm_devCon.html, priloženú ako súbor.txt, pretože súbor.html sa neodovzdáva), ktorý zhromažďuje informácie o GeoMagnetic storm (ktoré by mohli predpovedať ničivé CME, EMP) a používa ich na prezentáciu farby. mierka odrážajúca akýsi index Geo-Storm „DevCon“. udávajúca potenciál katastrofy spôsobenej elektromagnetickým impulzom (EMP) vyplývajúcim z vesmírneho počasia, pravdepodobne slnečných erupcií alebo koronálnej ejekcie hmoty (CME). Použite to, ako by ste použili „Dow_Jones_Index.html“.

Krok 6: Vzdialené ovládanie webovej stránky

Image
Image

V tomto mieste môžete ovládať svoju farebnú lampu IOT z ľubovoľného miesta v miestnej sieti. Ako zviditeľniť verejný internet nie je súčasťou tohto návodu. Ak pre svoje zariadenie nastavíte verejnú IP adresu, budete musieť využite túto IP v príkaze open socket v JavaScripte vašich stránok (napr. ~/node_rgb/public/index.html)

Plánujem použiť svoje zariadenie Pi-Zero IOT ako farebný indikátor v reálnom čase na zmenu dňa v Dow Jonesovom indexe. Vytvoril som stránku, ktorá to robí, ktorá získava údaje json z google.com/finance. Ďalej som vytvoril niekoľko webových stránok na demonštráciu širokého spektra použití tohto malého zariadenia IOT. Namiesto toho, aby som svoj PiZero umiestnil na verejný internet, hostil stránky na mojom existujúcom verejne prístupnom webovom serveri (v súčasnosti @ 71.84.135.81 aka: https://raspi.ddns01.com/ keď funguje môj bezplatný server dynamických názvov domén), ktorý beží na pôvodnej verzii B Raspberry-Pi.

V kóde na svojich vzdialených stránkach som otvoril soketové pripojenia na 192.168.1.41:8080. Opravil som IP svojho Pi-Zero na 192.168.1.41. Podobne postupujte podľa pokynov pri nastavovaní maliny-pi-s-wifi-a-a-static-ip pod nadpisom: Statická adresa IP. Ak teda nastavíte PiZero na 192.168.1.41 vo vašej miestnej sieti, tieto stránky otvorené z mojej webovej stránky budú komunikovať s vašim zariadením, pretože pripojenie sa vykonáva z klientskej strany.

Tu sú stránky, ktoré som použil na testovanie a ovládanie svojho osvetľovacieho zariadenia Pi-Zero IOT. Ak vyvoláte tieto stránky (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ alebo akékoľvek zo stránok zarámovaných na tejto stránke), spustí sa JavaScript na strane klienta. riadte svoje vytvorené svetlo IOT (vzhľadom na to, že je spustené na tejto adrese URL „192.168.1.41:8080“). Ak chcete, môžete skopírovať zdroj ktorejkoľvek z týchto stránok a upraviť podľa svojich predstáv.

Na prvej stránke môžete nastaviť zariadenie na akúkoľvek farbu. LED žiarovka a farba, ktorú vidíte na webovej stránke, budú sledovať pomerne dobre. Použité hodnoty odporov je možné vyladiť (rovnako ako monitor), aby boli vernejšie. Strávil som málo až žiadny čas zaisťovaním, aby sa zhodovali. Táto stránka aktualizuje svoju farbu vždy, keď niekto iný zmení farbu a server odošle aktualizovanú informačnú správu.

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

Existuje stránka navrhnutá na sledovanie športových súťaží (napr. Futbal, basketbal, baseball), volieb alebo dokonca upravená pre ukazovateľ štýlu získavania finančných prostriedkov alebo DEFCON. Skóre (alebo schválené volebné hlasy) bolo možné automaticky získať z webovej služby alebo zoškrabať na inej webovej stránke. Na moju stránku Contest_demo nemám automatický informačný kanál. Niekto so správnym know-how by mohol pridať výkonného vodiča na spustenie vysoko výkonných LED svetlometov a kúpanie miestnosti (alebo športového baru) farbou tímu, keď budú vpredu. Nanešťastie som príliš neskoro s týmto pokynom na tohtoročné super-večierkové večierky, ale včas na voľby 2016.

Potom je tu stránka podobná tej, z ktorej urobím zo svojho zariadenia indikátor sledovania Dow Jones. Posuvník a tlačidlá sú na ukážkovej stránke DJI iba na ukážkové účely. V zdroji tejto stránky je kód, ktorý som vyvinul na prefarbenie obrázka inšpirovaného zelenou obrazovkou; s dostatkom komentárov, že vám to môže byť tiež užitočné.

Iba prvá z týchto 4 stránok (spolu so stránkou index.html založenou na Pi-Zero) počúva správy o aktualizácii servera a podľa toho sa aktualizuje. Všetky ostatné iba odošlú na server.

Odporúča: