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, Juli
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 radi sve. Još bolje koristite RPi-Zero W!

Primjer upotrebe: Indikator 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 su potrebne 3 PWM linije, pa sam koristio softverski upravljanu PWM 'c' biblioteku (https://wiringpi.com/reference/software-pwm-library/), koja bi već trebala biti instalirana.

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

Korak 1: Šta će vam trebati

Šta će vam trebati
Šta će vam trebati
Šta će vam trebati
Šta će vam trebati
  • Pi-Zero micro-SD kartica, preporučuje se 8 GB. Sa Raspbian-Linuxom ili NOOBS-om
  • RGB LED (koristio sam ovaj:
  • 3 otpornika (vrijednost zasnovana na željenoj struji i/ili željenoj svjetlini, 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 sa više prostora:
  • difuzor (pogledajte primjere na slici)
  • Kablovi i adapteri po potrebi.

Opcionalno, 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 uglom (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 NOOBS postavkom, učinite sljedeće:

Priključite microSD karticu. Priključeno USB čvorište male snage sa Wifi ključem, tastaturom i mišem (Možete koristiti bežični miš i/ili tastaturu, u svakom slučaju, ali nije vjerovatno, 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, kao što se vidi na gornjoj vezi za postavljanje noobs.

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

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

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

pogledajte: make-raspberry-pi-use-monitor pune rezolucije 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 izbor raspi-config #1 'Proširi datotečni sustav'. Iz naredbene linije u prozoru terminala unesite 'sudo raspi-config' Pogledajte: dokumentacija/konfiguracija/raspi -config.md

Također sam promijenio ove postavke pod #5 'Opcije internacionalizacije'

  • Lokalizacija: sr_US. UTF-8 UTF-8
  • Vremenska zona: Amerika … Los_Angeles
  • Raspored tastature: Generički računar sa 105 tastera (međunarodni)… Engleski (SAD)

Za mene je standard britanske tastature (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 povezati se na internet pomoću WiFi-USB ključa (koristio sam 2 različita). Jednostavno sam morao unijeti svoju lozinku 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 tač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 bezglavo postavljanje gdje biste koristili udaljeni prozor ssh terminala na svom osobnom računaru 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 sistema i softver koji sam razvio za projekat, radio sam istraživanje i razvoj na Raspberry Pi-2; jer ima četverojezgreni CPU što čini njegovo pretraživanje 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 servera na I/O poslužitelju) učinio sam sljedeće …

sudo apt-get update

sudo apt-get install nodejs npm

Dodavanje ovih nodeJS paketa (npm je Nodejs Package Manager)

npm install express

npm install socket.io

Reference:

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

www.npmjs.com/package/socket.io Socket. IO omogućava dvosmjernu komunikaciju zasnovanu na događajima u stvarnom vremenu

Korak 4: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Korištene vrijednosti otpornika su različite, jer se pad napona i efikasnost razlikuju za sva tri segmenta LED boja. Svi GPIO visoki izlazni nivoi bili 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 može lako nositi. Dobio sam maksimalnu izlaznu svjetlinu, direktno upravljajući LED diodom; što je sasvim dovoljno za moje potrebe. Za pogon većih struja, za mnogo svjetliji izlaz, tranzistori srednjeg pogona mogli bi se koristiti sa zajedničkom anodnom LED sa anodom spojenom na liniju od 5 V. PS: Kako moje različite razine bijele boje izlaze malo plavkaste, 27 umjesto 24 Ohma bio bi bolji izbor za mene.

Primijetite da sam koristio zaglavlje s muškim pinovima i spojeno na LED noge pomoću F-F kratkospojnika. Ovo je smanjilo ukupnu visinu. Zalemio sam otpornike u sredinu kratkospojnika. Korištenje pločica ili ploča bez lemljenja, uz upotrebu pravokutnog mikro-USB na USB adaptera za WiFi ključ, učinilo je konačni sklop prilično kompaktnim.

Za difuzor preporučujem kuglu za ping-pong (lako je izbušiti rupu dovoljno veliku da u nju ubacite LED od 5-8-10 mm). Ili odrežite vrh LED sijalice (one koja koristi plastični difuzor). Za ovo označite liniju sa oštrim oštračem, gdje želite rezati, i upotrijebite alat sličan Dremelu s tankim odsječenim nastavkom. Ako želite, možete upotrijebiti lijepu staklenu posudu ili čašu za piće. Kada se smjestite na jedan difuzor, zalijepite ga do vrha kućišta.

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

Korak 5: Softver projekta

Projektni softver
Projektni softver

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

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

NodeJS postavka na strani servera:

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'

Kompajlirajte/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 3 sljedeće:

  1. Preuzmite iz preglednika u GUIM-u vašeg Pi-Zero-a Premjestite datoteku na ~ 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. Koristite WinSCP da biste ga kopirali u ~ pi direktorij 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. Sviđa mi se 'echo 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. Kada izdate znak ^c (cntl-c) da zaustavite vozača, LED dioda može, ali i ne mora ostati uključena. Alternativno, interaktivno možete hraniti njegove vrijednosti. Pokušajte upisati, iz komandne linije, ove redove jednu za drugom i gledajte LED diodu.

./rgbDriver

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

Budite sigurni da dva od ovih procesa ne rade paralelno.

Da biste pokrenuli potpuni paket softverskih aplikacija, uključujući server Node.js, koristite ovu naredbu:

sudo čvor rgb_main.js

Zatim koristite cntl-c kada želite zaustaviti Node.js poslužitelj. 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 ga zaustavite. Ako vam ova naredba izgleda strano, pregledajte izlaz 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, koristite ip adresu uređaja (dobijenu 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 pojavljuje i gledajte kako RGB LED lampica slijedi.

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

Ova naredba će navesti sve povezane procese:

ps aux | grep rgb

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

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

Samostalna operacija

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

cd node_rgb

sudo čvor rgb_main.js &

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

Kada Pi-Zero radi ugrađen, bez tastature, miša ili monitora; grafičkom korisničkom interfejsu će trebati minimalno CPU vrijeme, jer neće doći do interakcije korisnika. 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. Međutim, to nije potrebno jer možete koristiti udaljeni SSH terminal (npr. PuTTY) za bilo kakvo potrebno održavanje.

Koristi se kao monitor događaja

Napravio sam web stranicu za praćenje dnevnih promjena u Dow Jones indeksu. 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š Pi-Zero indikator. 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 drugu komandnu liniju. Ako kasnije želite koristiti daljinski upravljač 'kill -9' rezultirajući proces pretraživača bogojavljenja.

spava 20

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

Indikator će zasvijetliti svijetlo sivom bojom s vrijednošću 0. Sa sve većim vrijednostima postaje sve zeleniji. Najsjajnija je čista zelena sa oko 250. Više vrijednosti, ali izazivaju u početku plitki bljesak, do najdubljeg bljeska na oko 500. Za negativnu vrijednost (dnevni padovi u Dowu) čini se slično, ali u crvenoj.

AŽURIRAJTE maj 2018

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

Korak 6: Daljinska kontrola web stranice

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 vidljivim na javnom internetu nije dio ove upute. Ako postavite javni IP za svoj uređaj, morat ćete koristite taj IP u naredbi open socket u JavaScript -u vaših stranica (npr. ~/node_rgb/public/index.html)

Planiram koristiti svoj Pi-Zero IOT uređaj kao indikator boje u stvarnom vremenu za dnevnu promjenu u Dow Jones indeksu. Napravio sam stranicu koja to radi, a koja prima json podatke s google.com/finance. Dalje sam stvorio nekoliko web stranica za demonstraciju širokog raspona upotrebe za ovaj mali IOT uređaj. Umjesto da svoj PiZero postavim na javni internet, ja hostirao stranice na mom postojećem javnom web serveru (trenutno @ 71.84.135.81 zvanom: https://raspi.ddns01.com/ kada moj besplatni server za dinamička imena domena radi), koji radi na originalnoj verziji B Raspberry-Pi.

U kodu na 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 rukovanje 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 kreiranu 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.

Na prvoj stranici možete postaviti uređaj u bilo koju boju. LED lampa i boja koju vidite na web stranici će se pratiti prilično dobro. Upotrijebljene vrijednosti otpornika mogu se prilagoditi (kao i monitor) kako bi se one zaista uskladile. Proveo sam malo ili nimalo vremena osiguravajući da se slažu. Ova stranica će ažurirati svoju boju kad god neko promijeni boju i server pošalje ažuriranu informativnu poruku.

Jedna stranica je jednostavan semafor sa dugmadima.

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

Zatim postoji stranica slična onoj koju ću koristiti za pretvaranje svog uređaja u Dow Jones indikator praćenja. Klizač i tipke nalaze se samo na DJI demo stranici u svrhu demonstracije. U izvoru za ovu stranicu postoji kôd koji sam razvio za ponovno bojenje slike inspirisane zelenim ekranom; s dovoljno komentara koji bi vam mogli biti od koristi.

Samo prva od ove 4 stranice (zajedno sa Pi-Zero baziranom index.html stranicom) sluša poruke o ažuriranju servera i osvježava ih u skladu s tim. Svi ostali samo šalju na server.

Preporučuje se: