Kazalo:
- Korak: Kaj boste potrebovali
- Korak: Nastavitev Pi-Zero in priprava na razvoj
- 3. korak: Razvojno okolje in orodja
- 4. korak: Strojna oprema
- 5. korak: Programska oprema projekta
- 6. korak: Oddaljeni nadzor spletnih strani
Video: Indikator dogodkov / barvna svetilka RPi-Zero IoT: 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
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
- 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
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
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
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:
- Prenesite iz brskalnika v GUIM-u Pi-Zero. Premaknite datoteko na ~ pi/
-
V terminalskem oknu, povezanem z vami Pi-Zero: cd ~ piwget
mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz
- 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
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:
Odštevalni čas prihajajočih dogodkov: 5 korakov
Časovnik za odštevanje prihajajočih dogodkov: Pregled: ura odštevanja dogodkov je podobna komercialnim izdelkom, z nekaj preobrati: a) berljivo po celotnem zaslonu sobe. B) prilagodljiva slika dogodka.c) Ko se odšteva ciljni čas dogodka, se preostali dnevi spremenijo barva - zelena - > rumena
Barvna stenska ura: 7 korakov (s slikami)
Barvna stenska ura: Tokrat vam predstavljam barvno stensko analogno uro za otroško oblikovanje z LED trakovi. Osnove ure so uporaba treh LED trakov in različnih barv za prikaz časa: V okroglem LED traku je zelena barva nekoč so prikazovali ure,
Mumijasta svetilka - pametna svetilka z nadzorom WiFi: 5 korakov (s slikami)
Mumijasta svetilka - pametna svetilka z WiFi -krmiljenjem: Pred približno 230 tisoč leti se je človek naučil obvladovati ogenj, kar vodi do velike spremembe v njegovem življenjskem slogu, saj je ponoči začel delati tudi z uporabo svetlobe ognja. Lahko rečemo, da je to začetek notranje razsvetljave. Zdaj sem
Svetilka za projektor dogodkov: 5 korakov (s slikami)
Svetilka za projektor dogodkov: Vsi imajo radi praznike! Včasih pa vaš dom morda nima dovolj prazničnih posnetkov. Je pa to enostavno popravljivo vprašanje. Če osvetlite ta stroj za povečanje prazničnega duha, lahko kateri koli zabavi, praznovanju ali prireditvi dodate nekaj prazničnih posnetkov
7 Barvna laserska optika: 10 korakov (s slikami)
7 Barvna laserska optika: Opozorilo, preden začnemo, bi moral ta projekt narediti malo težav izkušenim laserskim moderjem, če še nikoli niste izdelali svojega laserja, predlagam, da začnete z nečim bolj osnovnim. barva, inc