Sadržaj:

RPi-Zero IoT indikator događaja / lampa u boji: 6 koraka (sa slikama)
RPi-Zero IoT indikator događaja / lampa u boji: 6 koraka (sa slikama)

Video: RPi-Zero IoT indikator događaja / lampa u boji: 6 koraka (sa slikama)

Video: RPi-Zero IoT indikator događaja / lampa u boji: 6 koraka (sa slikama)
Video: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Studeni
Anonim
RPi-Zero IoT indikator događaja / lampa u boji
RPi-Zero IoT indikator događaja / lampa u boji
RPi-Zero IoT indikator događaja / lampa u boji
RPi-Zero IoT indikator događaja / lampa u boji
RPi-Zero IoT indikator događaja / lampa u boji
RPi-Zero IoT indikator događaja / lampa u boji

Nema potrebe za dodatnim mikrokontrolerom i dodatnim modulom HAT. RPi-Zero čini sve. Bolje je koristiti RPi-Zero W!

Primjer upotrebe: Pokazatelj stanja web -usluge (npr. Praćenje DowJonesIndex -a), indikator statusa političkih ili sportskih događaja, svjetlo raspoloženja, praćenje senzora, i tako dalje. Pogledajte video u koraku 6.

Raspberry-Pi ima samo jednu hardverski podržanu PWM liniju. Za ovaj projekt potrebne su 3 PWM linije, pa sam koristio softverski upravljanu PWM 'c' knjižnicu (https://wiringpi.com/reference/software-pwm-library/), koja bi već trebala biti instalirana.

Obradu sam podijelio na 2 procesa. Jedan, pogonjen prekidom, po potrebi prebacujući upravljačke vodove na LED, dobivajući svoje marš naredbe iz svog 'stdin' toka. Drugi je poslužiteljski nodeJS poslužitelj koji koristi IO utičnice. Ovo služi za sprječavanje treperenja svjetla uz osiguravanje odziva. Kombinacija obično koristi manje od 5% CPU -a. U vrijeme kontinuiranog ažuriranja boja (putem klizača i/ili mnogih klijenata) može lako koristiti više od 50% (posebno ako koristite i preglednik u Pi-Zero GUI). Imajte na umu da kada dođe do promjene, obavijesti o ažuriranju izlaze svim klijentima otvorenih utičnica.

Korak 1: Što će vam trebati

Što će vam trebati
Što će vam trebati
Što će vam trebati
Što će vam trebati
  • Pi-Zero micro-SD kartica, preporučuje se 8 GB. S Raspbian-Linuxom ili NOOBS-om
  • RGB LED (koristio sam ovaj:
  • 3 otpornika (vrijednost na temelju željene struje i/ili željene svjetline, 1/8 vata)
  • WiFi, USB ključ (npr. https://www.ebay.com/itm/252018085448) ili još bolje koristite Raspberry Pi Z-W (s ugrađenim WiFi-jem)
  • kućište (npr. mali: https://www.ebay.com/itm/131583579374 s više prostora:
  • difuzor (pogledajte primjere na slici)
  • Kablovi i adapteri po potrebi.

Izborno, ovisno o tome kako želite spojiti komponente

  • zaglavlje (https://www.ebay.com/itm/14186077616)
  • skakači (https://www.ebay.com/itm/262235387520)
  • mikro-USB adapter pod pravim kutom (plavi USB 2.0 OTG R)
  • mini USB čvorište, koristi se samo u fazi postavljanja

Korak 2: Postavljanje Pi-Zero i priprema za razvoj

Slijedite ove početne postavke za svoj PiZero kako biste ga učinili spremnim za razvoj …

Nakon što imate microSD karticu s postavkom NOOBS, učinite sljedeće:

Priključite microSD karticu. Priključeno USB čvorište male snage s Wifi ključem, tipkovnicom i mišem (možete koristiti bežični miš i/ili tipkovnicu, u svakom slučaju može, ali nije vjerojatno, zahtijevati vanjsko napajanje čvorišta). Koristio sam adaptere i čvorište koje sam već imao.

Sada priključite monitor i adapter za napajanje microUSB i on će se pokrenuti. Nastavite i dovršite upute o postavljanju Raspbiana, Debian Linuxa, kako je prikazano na gornjoj vezi za postavljanje noobs.

Osim toga, imao sam prenisku rezoluciju. Pa sam dodao ove retke u /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

Hdmi_mode = 58 radi za moj monitor, vašem će možda trebati nešto drugo.

pogledajte: make-raspberry-pi-use-monitor u punoj rezoluciji i

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

Nakon pokretanja, Pi-Zero odlazi u GUI sučelje.

Da bih iskoristio punu veličinu svoje microSD kartice, upotrijebio sam odabir raspi-config #1 "Proširi datotečni sustav". Iz naredbenog retka u prozoru terminala unesite "sudo raspi-config" Pogledajte: dokumentacija/konfiguracija/raspi -config.md

Također sam promijenio ove postavke pod #5 "Mogućnosti internacionalizacije"

  • Lokalizacija: hr_US. UTF-8 UTF-8
  • Vremenska zona: Amerika … Los_Angeles
  • Raspored tipkovnice: općenito računalo sa 105 tipki (međunarodno) … engleski (SAD)

Za mene je standard britanske tipkovnice (za koji Raspbian dolazi unaprijed postavljen) većinu mojih uređivanja učinio pravim mukom.

Promijenite ove postavke prema potrebi, kako vama odgovara. Imajte na umu da morate koristiti tipke sa strelicama i tipku tab za navigaciju u 'raspi-config'; a nakon odabira može biti vrlo sporo reagirati.

Nije mi bio problem spojiti se na internet pomoću WiFi-USB ključa (koristio sam 2 različita). Jednostavno sam morao unijeti ključ zaporke za pristup WiFi-u pomoću padajućeg izbornika u gornjem desnom kutu grafičkog sučelja. Nakon što to učinim, automatski će se povezati nakon svakog ponovnog pokretanja/uključivanja.

Sada sam bio spreman za opći razvoj.

Da biste došli do ove točke, možete krenuti mnogim stazama. Do ovog trenutka ovdje nisam dao mnogo detalja, ali postoje mnoge metode i konfiguracije detaljnije opisane na webu. Uključujući i jedan za postavljanje bez glave gdje biste koristili udaljeni prozor ssh terminala na svom osobnom računalu da biste izvršili razvojne korake navedene u ovom uputstvu.

Korak 3: Razvojno okruženje i alati

Razvojno okruženje i alati
Razvojno okruženje i alati
Razvojno okruženje i alati
Razvojno okruženje i alati

Za postavljanje konfiguracije sustava i softver koji sam razvio za projekt, radio sam istraživanje i razvoj na Raspberry Pi-2; jer ima četverojezgreni CPU što čini njegovo pregledavanje i razvoj koda, s više prozora, mnogo bržim. Naravno, za realizaciju ovog projekta možete koristiti bilo koji model Raspberry-Pi.

Za postavljanje Node.js-a (podrška za JavaScripting na strani poslužitelja za U/I poslužitelje) učinio sam sljedeće …

sudo apt-get ažuriranje

sudo apt-get install nodejs npm

Dodavanje ovih nodeJS paketa (npm je Nodejs Package Manager)

npm install express

npm instalirajte socket.io

Reference:

www.npmjs.com/package/express Brzi, minimalistički web okvir

www.npmjs.com/package/socket.io Socket. IO omogućuje dvosmjernu komunikaciju u stvarnom vremenu na temelju događaja

Korak 4: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Korištene vrijednosti otpornika različite su jer se pad napona i učinkovitost razlikuju za sva tri segmenta LED boja. GPIO visoke izlazne razine bile su približno 3,2 volta. Svaki LED segment testiran je kako bi se osiguralo da troši manje od 20 mA maksimalno i oko 40 mA zajedno (<dopušteno maksimalno 50 mA max), s čime se PiZero lako nosi. Dobio sam što je više moguće izlazne svjetline, izravno pokrećući LED; što je dovoljno za moje potrebe. Za pogon većih struja, za mnogo svjetliji izlaz, mogli bi se koristiti tranzistori s međupogonom sa zajedničkom anodnom LED sa anodom spojenom na liniju 5V. PS: Kako moje različite razine bijele boje izlaze malo plavkasto, 27 umjesto 24 Ohma bio bi bolji izbor za mene.

Uočite da sam koristio zaglavlje s muškim iglama i spojeno na LED noge pomoću F-F kratkospojnika. To je smanjilo ukupnu visinu. Zalemio sam otpornike u sredinu skakača. Korištenje pločica ili ploča bez lemljenja, zajedno s korištenjem pravokutnog micro-USB na USB adaptera za WiFi dongle, učinilo je konačni sklop prilično kompaktnim.

Za difuzor preporučujem kuglu za stolni tenis (lako je izbušiti rupu dovoljno veliku da umetnete LED 5-8-10 mm unutra). Ili odrežite vrh LED žarulje (one koja koristi plastični difuzor). Za ovo označite liniju s oštrim oštračem gdje želite izrezati i upotrijebite alat sličan Dremelu s tankim nastavkom za rezanje. Ako želite, možete upotrijebiti lijepu staklenu posudu ili čašu za piće. Nakon što se smjestite na jedan difuzor, zalijepite ga do vrha kućišta.

Za demonstracije volim koristiti malu Li-power banku smještenu unutar kućišta. Ova jedinica izgleda impresivnije potpuno bežična. Naravno, u toj će konfiguraciji imati ograničeno vrijeme rada. Za normalan rad jednostavno koristim mikro-USB zidni adapter.

Korak 5: Projektni softver

Projektni softver
Projektni softver

Koristio sam dva programa, Node.js proces koji razgovara s podređenim procesom putem stdin toka podataka. To znači da svaki može raditi ono što najbolje radi i raditi kao neovisni procesi svojim tempom.

Evo što sam učinio: Ali ne morate, jer sam naveo datoteku tar-gzip koja sadrži rezultirajuće stablo datoteka.

NodeJS postavljanje na strani poslužitelja:

cd ~

mkdir node_rgb cd node_rgb mkdir javno

stavite 'index.html' i 'style.css' u direktorij '~/node_rgb/public' unesite 'rgbDriver.c' i 'rgb_main.js' u direktorij '~/node_rgb'

Kompilirajte/sastavite c proces 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Preuzimanje i proširivanje ekvivalencije

Da biste preuzeli node_rgb.tgz (ispod) na svoj Pi-Zero u svoj kućni direktorij (~ pi), možete učiniti jedno od tri sljedeća:

  1. Preuzmite iz preglednika u GUIM-u vašeg Pi-Zero-a Premjestite datoteku u ~ pi/
  2. U prozoru terminala koji je povezan s vama Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Preuzmite iz preglednika na svom stolnom računalu. Upotrijebite WinSCP da biste ga kopirali u direktorij ~ pi na Pi-Zero-u

Nakon izvođenja #1 2 ili 3 gore …

cd ~

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

Rezultirajuća izvršna datoteka (odozgo) 'rgbDriver' može se koristiti neovisno o procesu sučelja Node.js.

Da biste provjerili rade li ovaj upravljački program i hardver, upravljačkom programu unesite skupove od tri vrijednosti (od 0-255), odvojene razmakom. Kao 'odjek 255 0 0 |./rgbDriver 'za crveno ili' echo 0 255 0 |./rgbDriver 'za zeleno. Imajte na umu da “./” govori OS -u da pronađe naš program 'rgbDriver' u trenutnom direktoriju. Kad izdate znak ^c (cntl-c) za zaustavljanje vozača, LED dioda može, ali i ne mora ostati uključena. Alternativno, interaktivno možete hraniti njegove vrijednosti. Pokušajte upisati, iz naredbenog retka, ove retke jedan za drugim i promatrajte LED.

./rgbDriver

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

Budite sigurni da dva od ovih procesa ne rade paralelno.

Za pokretanje cijelog programskog paketa, uključujući poslužitelj Node.js, koristite ovu naredbu:

sudo čvor rgb_main.js

Zatim upotrijebite cntl-c kada želite zaustaviti poslužitelj Node.js. Pokrenite ga pomoću

sudo čvor rgb_main.js &

da biste ga pokrenuli u pozadini, ali tada ćete morati upotrijebiti naredbu 'sudo kill -9 pid' da biste ga zaustavili. Ako vam ova naredba izgleda strano, pregledajte ispis ovih naredbi: 'man kill' & 'man sudo'.

Koristite preglednik na radnoj površini, tabletu ili telefonu koji je povezan s vašom lokalnom mrežom. Idite na https:// raspberrypi: 8080/ili ako to ne uspije, upotrijebite ip adresu uređaja (dobivenu iz cmd 'ifconfig') nešto poput 192.168.1.15 plus specifikaciju porta: 8080 ili ako koristite Pi-Zero's GUI: localhost: 8080 će raditi.

Okrećite RGB klizače na stranici koja se pojavi i gledajte kako RGB-LED žarulja slijedi.

Ostale korisne naredbe Imajte na umu da ćete, ako završite s više od jednog 'rgbDriver' u isto vrijeme, vjerojatno dobiti nepredvidljivo ponašanje. Ako pokušate pokrenuti drugu kopiju rgb_main.js, pogreška će se dogoditi.

Ova naredba će navesti sve povezane procese:

ps aux | grep rgb

Ova naredba će ubiti sve procese nodeJS, zajedno s podređenim procesima 'rgbDriver':

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

Samostalna operacija

Da bi Pi-Zero pokrenuo poslužiteljsku aplikaciju Node.js kad se pokrene … pomoću vašeg omiljenog uređivača (npr. Nano ~/.bash_profile), upišite sljedeće redove i spremite u ~/.bash_profile

cd čvor_rgb

sudo čvor rgb_main.js &

Da ne biste dobili neugodne poruke o pogrešci prilikom otvaranja prozora terminala, koristite uvjetno kodiranje poput skripte ljuske u datoteci 'start_rgb'

Kad Pi-Zero radi ugrađen, bez tipkovnice, miša ili monitora; grafičko korisničko sučelje oduzet će minimalno vrijeme procesora jer neće doći do korisničke interakcije. Ne onemogućujem automatsko pokretanje grafičkog sučelja, jer Pi-Zero u ovom slučaju ima više resursa nego što je potrebno; i sviđa mi se što mogu spojiti nekoliko kabela i koristiti ih, u bilo koje vrijeme u budućnosti. No, to nije potrebno jer za daljnje održavanje možete koristiti udaljeni SSH terminal (npr. PuTTY).

Koristi se kao monitor događaja

Napravio sam web stranicu za praćenje dnevnih promjena u Dow Jones Indexu. Njegov izvor se može koristiti kao smjernica za vašu vlastitu stranicu koja koristi neke web podatke i u skladu s tim pokreće vaš indikator Pi-Zero. Ova stranica dobiva (json) podatke s Googleove web usluge. Postoji mnogo oblika web usluga, pa ćete morati istražiti onu koju želite koristiti za određivanje JavaScript koda za pristup.

Ako želite koristiti svoj uređaj, kao i ja, kao namjenski, samostalni, pokazatelj promjene indeksa Dow, dodajte ove retke na kraj datoteke ~/.bash_profile ili prema želji SSH u i izdajte drugi naredbeni redak. Ako kasnije želite koristiti daljinski upravljač 'kill -9' rezultirajući proces preglednika epifanije.

spavaj 20

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

Indikator će zasvijetliti svijetlo sivom bojom s vrijednošću 0. S većim vrijednostima postaje sve zeleniji. Najsvjetlije je čisto zeleno na oko 250. Više vrijednosti, ali ipak izazivaju isprva plitki bljesak, do najdubljeg bljeska na oko 500. Za negativnu vrijednost (dnevni padovi u Dowu) čini se slično, ali u crvenoj.

AŽURIRAJTE svibanj 2018

Napravio sam novu web stranicu (SolarStorm_devCon.html, priloženu kao.txt datoteku, jer se.html datoteka ne prenosi) koja prikuplja podatke o GeoMagnetnoj oluji (koji bi mogli predvidjeti razornu CME, EMP) i koristi ih za prikaz boje ljestvici koja odražava neku vrstu Geo-Storm 'DevCon' Indeksa. koji ukazuje na potencijal katastrofe zbog elektromagnetskog impulsa (EMP) koji je posljedica svemirskog vremena, vjerojatno solarnih raketa ili izbacivanja koronalne mase (CME). Koristite ga kao što biste koristili "Dow_Jones_Index.html".

Korak 6: Daljinsko upravljanje web stranicom

Image
Image

U ovom trenutku možete kontrolirati svoju IOT lampu u boji s bilo kojeg mjesta na vašoj lokalnoj mreži. Kako to učiniti vidljivom na javnom internetu nije dio ovog uputstva. Ako postavite javni IP za svoj uređaj, morat ćete upotrijebite taj IP u naredbi open socket u JavaScriptu vaših stranica (npr. ~/node_rgb/public/index.html)

Planiram koristiti svoj Pi-Zero IOT uređaj kao pokazatelj boja u stvarnom vremenu za dnevnu promjenu u Dow Jones Indexu. Napravio sam stranicu koja to čini, a koja prima json podatke s google.com/finance. Dalje sam stvorio nekoliko web stranica za demonstraciju širokog raspona uporabe za ovaj mali IOT uređaj. Umjesto da svoj PiZero postavim na javni internet, ja hostirao stranice na mom postojećem web poslužitelju s javnošću (trenutačno @ 71.84.135.81 poznatim i kao: https://raspi.ddns01.com/ kada radi moj besplatni poslužitelj za dinamička imena domena) koji radi na izvornoj verziji B Raspberry-Pi.

U kodu na svojim udaljenim stranicama otvorio sam utičničke veze na 192.168.1.41:8080, popravio sam IP-Pi-Zero na 192.168.1.41. Da biste učinili slično, slijedite upute pri postavljanju-raspberry-pi-with-wifi-i-a-static-ip pod naslovom: Statička IP adresa. Dakle, ako postavite svoj PiZero na 192.168.1.41 na lokalnoj mreži, ove stranice, otvorene s moje web stranice, komunicirat će s vašim uređajem jer se povezivanje vrši sa strane klijenta.

Evo stranica koje sam koristio za testiranje i rad sa svojim Pi-Zero IOT rasvjetnim uređajem. Ako otvorite ove stranice (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ ili bilo koju stranicu uokvirenu na toj stranici), JavaScript će na strani klijenta pokrenite svoju stvorenu IOT lampicu (s obzirom da radi na ovom url -u "192.168.1.41:8080") Ako želite, možete kopirati izvor bilo koje od tih stranica i izmijeniti je prema vašim željama.

S prvom stranicom možete postaviti uređaj u bilo koju boju. LED žarulja i boja koju vidite na web stranici će se pratiti prilično dobro. Korištene vrijednosti otpornika mogu se prilagoditi (kao i monitor) kako bi se doista uskladile. Potrošio sam malo ili nimalo vremena osiguravajući da se slažu. Ova stranica će ažurirati svoju boju kad god netko promijeni boju i poslužitelj pošalje ažuriranu informativnu poruku.

Jedna stranica je jednostavan semafor s gumbama.

Postoji stranica dizajnirana za praćenje sportskih natjecanja (npr. Nogometa, košarke, bejzbola), izbora ili čak prilagođena za prikupljanje sredstava ili pokazatelj stila upozorenja DEFCON -a. Bodovi (ili počinjeni izborni glasovi) mogli su se automatski dobiti s web usluge ili izbrisati s neke druge web stranice. Nemam automatski feed koji pokreće moju stranicu Contest_demo. Netko s pravim znanjem mogao bi dodati upravljački program za pokretanje LED svjetla velike snage i okupati sobu (ili sportski šank) bojom tima kad su ispred njih. Nažalost, zakasnio sam s ovim uputstvom za ovogodišnje zabave sa super zdjelom, ali na vrijeme za izbore 2016. godine.

Zatim postoji stranica slična onoj koju ću upotrijebiti za pretvaranje svog uređaja u Dow Jones indikator praćenja. Klizač i gumbi nalaze se samo na demonstracijskoj stranici DJI -ja u demonstracijske svrhe. U izvoru za ovu stranicu postoji kôd koji sam razvio za ponovno bojanje slike inspirirane zelenim ekranom; s dovoljno komentara da bi vam mogla biti i korisna.

Samo prva od ove 4 stranice (zajedno sa stranicom index.html zasnovanom na Pi-Zero) osluškuje poruke o ažuriranju poslužitelja i u skladu s tim se osvježava. Svi ostali samo šalju poslužitelju.

Preporučeni: