Kazalo:

Indikator dogodkov / barvna svetilka RPi-Zero IoT: 6 korakov (s slikami)
Indikator dogodkov / barvna svetilka RPi-Zero IoT: 6 korakov (s slikami)

Video: Indikator dogodkov / barvna svetilka RPi-Zero IoT: 6 korakov (s slikami)

Video: Indikator dogodkov / barvna svetilka RPi-Zero IoT: 6 korakov (s slikami)
Video: Высокая плотность 2022 2024, Julij
Anonim
Indikator dogodkov RPi-Zero IoT / barvna svetilka
Indikator dogodkov RPi-Zero IoT / barvna svetilka
Indikator dogodkov RPi-Zero IoT / barvna svetilka
Indikator dogodkov RPi-Zero IoT / barvna svetilka
Indikator dogodkov RPi-Zero IoT / barvna svetilka
Indikator dogodkov RPi-Zero IoT / barvna svetilka

Brez dodatnega mikrokrmilnika in dodatnega modula HAT. RPi-Zero naredi vse. Še bolje, uporabite RPi-Zero W!

Vzorec uporabe: Indikator stanja spletnih storitev (npr. Sledenje DowJonesIndex), kazalnik stanja političnih ali športnih dogodkov, lučka razpoloženja, sledenje senzorju, poimenujte ga. Oglejte si video v 6. koraku.

Raspberry-Pi ima samo eno strojno podprto linijo PWM. Ta projekt potrebuje 3 vrstice PWM, zato sem uporabil knjižnico PWM 'c' (https://wiringpi.com/reference/software-pwm-library/), ki bi morala biti že nameščena.

Obdelavo sem razdelil na 2 procesa. En, prekinjen pogon, po potrebi preklapljanje krmilnih vodov na LED in pridobivanje ukazov za pohod iz svojega "stdin" toka. Drugi je strežnik nodeJS, ki ga vodi dogodek in uporablja vmesnik IO vtičnice. To je za preprečevanje utripanja svetlobe in hkrati odzivnost. Kombinacija običajno uporablja manj kot 5% procesorja. V času neprekinjenega posodabljanja barv (prek drsnikov in/ali številnih strank) lahko zlahka uporabi več kot 50% (še posebej, če uporabljate tudi brskalnik v grafičnem vmesniku Pi-Zero). Upoštevajte, da ko pride do spremembe, obvestila o posodobitvah pošljejo vsem odjemalcem odprtih vtičnic.

Korak: Kaj boste potrebovali

Kaj boste potrebovali
Kaj boste potrebovali
Kaj boste potrebovali
Kaj boste potrebovali
  • Mikro-SD kartica Pi-Zero, priporočeno 8 GB. Z Raspbian-Linux ali NOOBS
  • RGB Led (uporabil sem tega:
  • 3 upori (vrednost glede na želeni tok in/ali želeno svetlost, 1/8 vata)
  • WiFi, USB ključ (npr. https://www.ebay.com/itm/252018085448) ali še bolje uporabite Raspberry Pi Z-W (z vgrajenim WiFi)
  • kovček (npr. majhen: https://www.ebay.com/itm/131583579374 z več prostora:
  • difuzor (glej primere na sliki)
  • Kabli in adapterji po potrebi.

Izbirno, odvisno od tega, kako želite povezati komponente

  • glava (https://www.ebay.com/itm/14186077616)
  • skakalci (https://www.ebay.com/itm/262235387520)
  • pravokotni adapter mikro-USB (modri USB 2.0 OTG R)
  • mini zvezdišče USB, ki se uporablja samo v fazi nastavitve

Korak: Nastavitev Pi-Zero in priprava na razvoj

Sledite tem začetnim nastavitvam vašega PiZero, da bo pripravljen za razvoj …

Ko imate kartico microSD z nastavitvijo NOOBS, potem:

Priključite kartico microSD. Priključeno je zvezdišče USB z nizko porabo energije s ključem Wifi, tipkovnico in miško (Uporabite lahko brezžično miško in/ali tipkovnico, tako ali drugače lahko, vendar ne verjetno, zahteva zunanje napajanje zvezdišča). Uporabil sem adapterje in pesto, ki sem ga že imel.

Zdaj priključite monitor in napajalnik microUSB in zagnal se bo. Nadaljujte in dokončajte navodila za nastavitev Raspbian, Debian Linux, kot je prikazano na zgornji povezavi za nastavitev noobs.

Poleg tega sem imel prenizko ločljivost. Zato sem te vrstice dodal v /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

Hdmi_mode = 58 deluje za moj monitor, vaš bo morda potreboval kaj drugega.

glej: make-raspberry-pi-use-monitor s polno ločljivostjo in

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

Po zagonu gre Pi-Zero v vmesnik GUI.

Za uporabo celotne velikosti kartice microSD sem uporabil izbor raspi-config #1 "Razširi datotečni sistem". V ukazno vrstico v terminalskem oknu vnesite "sudo raspi-config" Glejte: dokumentacija/konfiguracija/raspi -config.md

Prav tako sem spremenil te nastavitve pod številko 5 "Možnosti internacionalizacije"

  • Področje uporabe: sl_US. UTF-8 UTF-8
  • Časovni pas: Amerika … Los_Angeles
  • Razporeditev tipkovnice: splošni osebni računalnik s 105 tipkami (mednarodni) … angleščina (ZDA)

Zame je britanski standard tipkovnice (za katerega je Raspbian vnaprej nastavljen) veliko mojih popravkov naredil za resno muko.

Po potrebi spremenite te nastavitve. Upoštevajte, da morate za krmarjenje po 'raspi-config' uporabiti puščične tipke in tipko tabulatorka; po izboru pa se lahko odzove zelo počasi.

Ugotovil sem, da se brez težav povežem z internetom s ključem WiFi-USB (uporabil sem 2 različna). Preprosto sem moral vnesti ključ-geslo za dostop do WiFi z uporabo spustnega menija v zgornjem desnem kotu grafičnega vmesnika. Ko sem to storil, se bo samodejno povezal po vsakem ponovnem zagonu/vklopu.

Zdaj sem bil pripravljen na splošni razvoj.

Če želite priti do te točke, lahko uberete številne poti. Do zdaj tukaj nisem opisal veliko podrobnosti, vendar je na spletu veliko podrobneje opisanih metod in konfiguracij. Vključno z eno za brezglavo nastavitev, kjer bi uporabili oddaljeno terminalsko okno ssh na svojem osebnem računalniku za izvedbo razvojnih korakov v tem navodilu.

3. korak: Razvojno okolje in orodja

Razvojno okolje in orodja
Razvojno okolje in orodja
Razvojno okolje in orodja
Razvojno okolje in orodja

Za nastavitev sistemske konfiguracije in programsko opremo, ki sem jo razvil za projekt, sem opravil raziskave in razvoj na Raspberry Pi-2; saj ima štirijedrni procesor, s katerim je brskanje in razvoj kode z več okni veliko hitrejše. Za uresničitev tega projekta lahko seveda uporabite kateri koli model Raspberry-Pi.

Za namestitev Node.js (podpora JavaScripting za strežniške V/I strežniške dogodke) sem naredil naslednje …

sudo apt-get posodobitev

sudo apt-get install nodejs npm

Dodajanje teh paketov nodeJS (npm je upravitelj paketov Nodejs)

npm install express

npm namestite socket.io

Reference:

www.npmjs.com/package/express Hiter, minimalističen spletni okvir

www.npmjs.com/package/socket.io Socket. IO omogoča dvosmerno komunikacijo na podlagi dogodkov v realnem času

4. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Uporabljene vrednosti uporov so različne, saj se padec napetosti in učinkovitost razlikujejo za vse tri segmente barv LED. Vse izhodne ravni GPIO so bile približno 3,2 volta. Vsak segment LED je bil preizkušen, da bi zagotovil, da porabi največ 20 mA največ in približno 40 mA skupaj (največ 50 max največje dovoljene vrednosti), kar PiZero zlahka obvlada. Dobil sem čim več izhodne svetlosti, ki je neposredno poganjala LED; kar je dovolj za moje potrebe. Za pogon višjih tokov bi lahko za veliko svetlejšo moč uporabili vmesne pogonske tranzistorje s skupno anodno LED z anodo, priključeno na linijo 5 V. PS: Ker moje različne ravni bele barve izhajajo nekoliko modrikasto, 27 namesto 24 Ohmov bi bila zame boljša izbira.

Upoštevajte, da sem uporabil glavo z moškimi zatiči in jo z nogami LED povezal s F-F mostički. To je znižalo celotno višino. Odpornike sem spajkal v sredino skakalcev. Brez uporabe vezja ali plošče brez spajkanja, skupaj z uporabo pravokotnega adapterja micro-USB na USB za ključek WiFi, je bila končna montaža precej kompaktna.

Za difuzor priporočam žogico za namizni tenis (enostavno je izvrtati luknjo, ki je dovolj velika, da v njej vstavite svojo 5-8-10 mm LED). Ali pa odrežite vrh LED žarnice (tiste, ki uporablja plastični difuzor). Za to označite črto z ostro ostrino, na kateri želite izrezati, in uporabite orodje, podobno Dremelu, s tanko odrezano nastavko. Če želite, lahko uporabite lep majhen stekleni kozarec ali kozarec za pitje. Ko se namestite na en difuzor, ga prilepite na vrh ohišja.

Za demonstracije rad uporabljam majhen Li-power bank, nameščen v ohišju. Ta enota se zdi bolj impresivna, popolnoma brezžična. Seveda bo imel v tej konfiguraciji omejen čas delovanja. Za normalno delovanje preprosto uporabljam stenski adapter micro-USB.

5. korak: Programska oprema projekta

Projektna programska oprema
Projektna programska oprema

Uporabil sem dva programa, proces Node.js, ki se z otrokovim procesom pogovarja prek podatkovnega toka stdin. To pomeni, da lahko vsak počne tisto, kar najbolje zna, in deluje kot neodvisen proces v svojem tempu.

To sem storil: Ni vam treba, saj sem zagotovil datoteko tar-gzip, ki vsebuje nastalo datotečno drevo.

NodeJS strežniška nastavitev:

cd ~

mkdir node_rgb cd node_rgb mkdir javno

"index.html" in "style.css" v imenik "~/node_rgb/public" vnesite "rgbDriver.c" in "rgb_main.js" v imenik "~/node_rgb"

Prevedite/zgradite postopek c 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Prenos in razširitev enakovrednosti

Če želite node_rgb.tgz (spodaj) prenesti v svoj Pi-Zero v domači imenik (~ pi), lahko naredite nekaj od naslednjega:

  1. Prenesite iz brskalnika v GUIM-u Pi-Zero. Premaknite datoteko na ~ pi/
  2. V terminalskem oknu, povezanem z vami Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Prenesite iz brskalnika na namiznem računalniku. Uporabite WinSCP za kopiranje v imenik ~ pi na Pi-Zero

Po izvedbi #1 2 ali 3 zgoraj …

cd ~

tar -xzvf node_rgb.tgz drevo node_rgb… node_rgb ├── javno │ ├── Dow_Jones_Index.html │ ├── index.html │ └── style.css ├── rgbDriver ├── rgbDriver.c ├─ js ├── start_rgb ├── kill_rgb └── track_dji

Nastalo izvedljivo datoteko (od zgoraj) 'rgbDriver' je mogoče uporabiti neodvisno od procesa vmesnika Node.js.

Če želite preveriti, ali ta gonilnik in strojna oprema delujeta, gonilniku vnesite niz treh vrednosti (od 0-255), ločenih s presledkom. Kot 'echo 255 0 0 |./rgbDriver 'za rdečo ali' echo 0 255 0 |./rgbDriver 'za zeleno. Upoštevajte, da “./” pove operacijskemu sistemu, da poišče naš program 'rgbDriver' v trenutnem imeniku. Ko izdate znak ^c (cntl-c), da ustavite voznika, lahko lučka ostane ali pa ne. Druga možnost je, da interaktivno nahranite njegove vrednosti. Poskusite tipkati te vrstice iz ukazne vrstice eno za drugo in opazujte LED.

./rgbDriver

0 255 0 100 0 100 255 255 0… itd… ^c

Prepričajte se, da 2 procesa nista potekala vzporedno.

Za zagon celotnega nabora programske opreme, vključno s strežnikom Node.js, uporabite ta ukaz:

sudo vozlišče rgb_main.js

Nato uporabite cntl-c, ko želite ustaviti strežnik Node.js. Zaženite ga z

sudo vozlišče rgb_main.js &

če želite, da se izvaja v ozadju, potem boste morali za ustavitev uporabiti ukaz 'sudo kill -9 pid'. Če se vam ta ukaz zdi tujec, preglejte izpis teh ukazov: 'man kill' & 'man sudo'.

Uporabite brskalnik na namizju, tabličnem računalniku ali telefonu, ki je povezan z vašim lokalnim omrežjem. Pojdite na https:// raspberrypi: 8080/ali če to ne deluje, uporabite naslov IP naprave (pridobljen iz cmd 'ifconfig'), na primer 192.168.1.15 skupaj s specifikacijo vrat: 8080 ali če uporabljate Pi-Zero's GUI: localhost: 8080 bo deloval.

Upravljajte drsnike RGB na strani, ki se prikaže, in opazujte, kako sledi svetilka RGB-LED.

Drugi koristni ukazi Upoštevajte, da če boste naenkrat zagnali več kot en 'rgbDriver', boste verjetno dobili nepredvidljivo vedenje. Če poskusite zagnati drugo kopijo rgb_main.js, bo prišlo do napake.

Ta ukaz bo navedel vse povezane procese:

ps aux | grep rgb

Ta ukaz bo ubil vse procese nodeJS skupaj s podrejenimi procesi 'rgbDriver':

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

Samostojno delovanje

Če želite, da Pi-Zero zažene strežniško aplikacijo Node.js, ko se zažene … z vašim priljubljenim urejevalnikom (npr. Nano ~/.bash_profile), vnesite naslednje vrstice in shranite v ~/.bash_profile

cd node_rgb

sudo vozlišče rgb_main.js &

Če želite odpreti sporočila o napakah pri odpiranju terminalskega okna, uporabite pogojno kodiranje, kot je skript lupine v datoteki 'start_rgb'

Ko Pi-Zero deluje vgrajeno, brez tipkovnice, miške ali monitorja; grafični uporabniški vmesnik bo vzel minimalen čas procesorja, saj ne bo prišlo do interakcije z uporabnikom. Samodejnega zagona grafičnega vmesnika ne onemogočim, saj ima Pi-Zero v tem primeru več sredstev, kot je potrebno; in všeč mi je, da lahko kadar koli v prihodnosti povežem nekaj kablov in jih uporabim. To pa ni potrebno, saj lahko za vzdrževanje uporabite oddaljeni terminal SSH (npr. PuTTY).

Uporablja se kot nadzornik dogodkov

Ustvaril sem spletno stran za spremljanje dnevnih sprememb indeksa Dow Jones. Njegov vir lahko uporabite kot vodilo za svojo stran, ki uporablja nekaj spletnih podatkov in temu ustrezno prilagodi vaš indikator Pi-Zero. Ta stran dobi (json) podatke iz Googlove spletne storitve. Obstaja veliko oblik spletnih storitev, zato boste morali raziskati tisto, ki jo želite uporabiti za določitev kode JavaScript za dostop do nje.

Če želite uporabljati svojo napravo, kot jaz, kot namenski, samostojni indikator spremembe indeksa Dow dodajte te vrstice na konec datoteke ~/.bash_profile ali po želji SSH v in izdajte drugo ukazno vrstico. Če želite pozneje uporabiti daljinski upravljalnik 'kill -9', ki izhaja iz postopka brskalnika Epifanije.

spanje 20

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

Indikator zasveti svetlo sivo z vrednostjo 0. Z večjimi vrednostmi postaja vse bolj zelen. Najsvetlejša je čista zelena pri približno 250. Višje, vendar še vedno vrednosti povzročajo najprej plitvo bliskavico, do najgloblje bliskavice pri približno 500. Pri negativni vrednosti (dnevni padci v Dow) deluje podobno, vendar v rdeči barvi.

AŽURIRAJ maja 2018

Ustvaril sem novo spletno stran (SolarStorm_devCon.html, priloženo kot datoteko.txt, ker se datoteka.html ne naloži), ki zbira podatke o geomagnetni nevihti (ki bi lahko napovedovala uničujoč CME, EMP) in to uporablja za prikaz barve lestvici, ki odraža nekakšen indeks Geo-Storm 'DevCon'. označuje potencial katastrofe zaradi elektromagnetnega impulza (EMP), ki je posledica vesoljskega vremena, predvidoma sončnih izbruhov ali izstrelitve koronalne mase (CME). Uporabite ga tako, kot bi uporabili "Dow_Jones_Index.html".

6. korak: Oddaljeni nadzor spletnih strani

Image
Image

Na tej točki lahko nadzirate svojo barvno svetilko IOT od koder koli v vašem lokalnem omrežju. Kako to narediti vidno po javnem internetu, ni del tega navodila. Če nastavite javni IP za svojo napravo, boste morali uporabite ta IP v ukazu open socket v JavaScript -ju vaših strani (npr. ~/node_rgb/public/index.html)

Napravo Pi-Zero IOT nameravam uporabiti kot barvni indikator v realnem času za dnevno spremembo indeksa Dow Jones. Ustvaril sem stran, ki to počne, ki dobiva podatke json z google.com/finance. Dalje sem ustvaril nekaj spletnih strani za prikaz širokega spektra uporabe te majhne naprave IOT. Namesto da bi svoj PiZero postavil na javni internet, sem gostil strani na svojem obstoječem javnem spletnem strežniku (trenutno @ 71.84.135.81 aka: https://raspi.ddns01.com/, ko deluje moj brezplačni strežnik dinamičnih domenskih imen), ki deluje na izvirni različici B Raspberry-Pi.

V kodi na mojih oddaljenih straneh sem odprl vtičnice na 192.168.1.41:8080 in popravil IP svojega Pi-Zero na 192.168.1.41. Če želite storiti podobno, sledite navodilom pri nastavitvi-raspberry-pi-with-wifi-in-a-static-ip pod naslovom: Statični naslov IP. Če torej nastavite svoj PiZero na 192.168.1.41 v vašem lokalnem omrežju, te strani, odprte z moje spletne strani, bodo komunicirale z vašo napravo, saj je povezava vzpostavljena s strani odjemalca.

Tu so tiste strani, ki sem jih uporabil za preizkušanje in delovanje svoje svetlobne naprave Pi-Zero IOT. Če prikažete te strani (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ ali katero koli stran, uokvirjeno na tej strani), bo JavaScript na strani odjemalca poganjajte ustvarjeno lučko IOT (glede na to, da deluje na tem naslovu »192.168.1.41:8080«) Če želite, lahko kopirate vir katere koli od teh strani in ga spremenite po svojem okusu.

Na prvi strani lahko napravo nastavite na katero koli barvo. LED svetilka in barva, ki jo vidite na spletni strani, se bosta precej dobro ujemali. Uporabljene vrednosti uporovnikov je mogoče spremeniti (pa tudi monitor), da se bodo bolj ujemale. Porabil sem le malo časa, da sem zagotovil njihovo ujemanje. Ta stran bo posodobila svojo barvo, kadar kdo spremeni barvo in strežnik pošlje posodobljeno informativno sporočilo.

Ena stran je preprost semafor, ki ga upravlja gumb.

Obstaja stran, namenjena spremljanju športnega tekmovanja (npr. Ocene (ali glasovanje volivcev) je bilo mogoče samodejno pridobiti iz spletne storitve ali odstraniti z druge spletne strani. Nimam samodejnega vira, ki poganja mojo stran Contest_demo. Nekdo s pravim znanjem in izkušnjami bi lahko dodal gonilnika, ki bi poganjal LED luči z visoko močjo in kopalno sobo (ali športni bar) z barvo ekipe, ko so pred nami. Na žalost sem prepozen s tem navodilom za letošnje zabave super-sklede, vendar pravočasno za volitve 2016.

Potem je tu stran, podobna tisti, ki jo bom uporabil za pretvorbo svoje naprave v kazalnik sledenja Dow Jones. Drsnik in gumbi so na demonstracijski strani DJI samo za predstavitvene namene. V viru te strani je koda, ki sem jo razvil za ponovno barvanje slike, navdihnjene z zelenim zaslonom; z dovolj komentarji, ki se vam bodo morda zdeli tudi koristni.

Samo prva od teh 4 strani (skupaj s stranjo index.html, ki temelji na Pi-Zero) posluša sporočila o posodobitvi strežnika in se ustrezno osveži. Vse ostalo pošljete samo na strežnik.

Priporočena: