Përmbajtje:

Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra: 6 hapa (me fotografi)
Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra: 6 hapa (me fotografi)

Video: Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra: 6 hapa (me fotografi)

Video: Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra: 6 hapa (me fotografi)
Video: “Dua pilaf dhe pikë” vajza nis të qaj me Jonida Vokshin - E Diell 10/10/2021 2024, Korrik
Anonim
Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra
Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra
Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra
Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra
Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra
Treguesi i Ngjarjes RPi-Zero IoT / Llamba me ngjyra

Asnjë mikrokontrollues shtesë dhe asnjë modul shtesë HAT nuk kërkohet. RPi-Zero i bën të gjitha. Më mirë akoma përdorni një RPi-Zero W!

Shembull i përdorimit: Treguesi i gjendjes së Shërbimit të Uebit (p.sh. përcjellja e DowJonesIndex), Treguesi i statusit të ngjarjeve politike ose sportive, drita e humorit, gjurmoni një sensor, ju e emërtoni atë. Shikoni videon në hapin 6.

Raspberry-Pi ka vetëm një linjë PWM të mbështetur nga pajisjet kompjuterike. Ky projekt ka nevojë për 3 linja PWM, kështu që unë përdor një bibliotekë PWM 'c' të drejtuar nga softueri (https://wiringpi.com/reference/software-pwm-library/), e cila tashmë duhet të instalohet.

Unë e ndava përpunimin në 2 procese. Njëra, me ndërprerje, duke kaluar linjat e kontrollit në LED sipas nevojës, duke marrë urdhrat e saj të marshimit nga rryma e tij 'stdin'. Tjetri është një server nodeJS i drejtuar nga ngjarje që përdor prizën IO. Kjo është për të parandaluar gjëra të tilla si dridhja e dritës duke siguruar reagim. Kombinimi zakonisht përdor më pak se 5% të CPU. Gjatë kohëve të azhurnimeve të vazhdueshme të ngjyrave (përmes rrëshqitësve dhe/ose shumë klientëve) mund të përdoret lehtësisht mbi 50% (veçanërisht kur përdorni edhe shfletuesin në Pi-Zero GUI). Vini re se kur vjen një ndryshim, njoftimet e azhurnimit dalin për të gjithë klientët me prizë të hapur.

Hapi 1: Çfarë ju nevojitet

Ajo që do t'ju duhet
Ajo që do t'ju duhet
Ajo që do t'ju duhet
Ajo që do t'ju duhet
  • Kartë Pi-Zero micro-SD, rekomandohet 8 GB. Me Raspbian-Linux ose NOOBS
  • RGB Led (kam përdorur këtë:
  • 3 rezistencë (vlera e bazuar në rrymën e dëshiruar dhe/ose shkëlqimin e dëshiruar, 1/8 vat)
  • një dongle WiFi, USB (p.sh. https://www.ebay.com/itm/252018085448) ose edhe më mirë përdorni një Raspberry Pi Z-W (me WiFi të integruar)
  • një rast (p.sh. i vogël: https://www.ebay.com/itm/131583579374 me më shumë hapësirë:
  • një shpërndarës (shikoni shembujt në figurë)
  • Kabllo dhe adaptorë sipas nevojës.

Opsionale, në varësi të mënyrës se si dëshironi të lidhni përbërësit

  • kokë (https://www.ebay.com/itm/14186077616)
  • kërcyesit (https://www.ebay.com/itm/262235387520)
  • përshtatës mikro-USB me kënd të drejtë (Blu USB 2.0 OTG R)
  • mini shpërndarës USB, i përdorur vetëm gjatë fazës së konfigurimit

Hapi 2: Konfigurimi Pi-Zero dhe Përgatitja për Zhvillim

Ndiqni këtë konfigurim fillestar për PiZero tuaj, për ta bërë atë gati për zhvillim…

Pasi të keni një kartë microSD me konfigurimin NOOBS atëherë:

Lidheni kartën microSD. Bashkangjitur një USB Hub me fuqi të ulët me një dongle Wifi, tastierë dhe maus (Ju mund të përdorni miun dhe/ose tastierën pa tel, sido që të jetë, por jo të ngjarë, të kërkojë energji të jashtme në shpërndarës). Kam përdorur adaptorë dhe një qendër që kisha tashmë.

Tani bashkëngjitni një Monitor dhe një përshtatës të energjisë microUSB dhe do të fillojë. Vazhdoni dhe përfundoni udhëzimet për vendosjen e Raspbian, Debian Linux, siç shihet në lidhjen noobs-setup më lart.

Për më tepër, unë kisha një rezolutë shumë të ulët. Kështu që i shtova këto rreshta në /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

Hdmi_mode = 58 punon për monitorin tim, i juaji mund të ketë nevojë për diçka tjetër.

referojuni: bëni-mjedër-pi-përdorni-monitor me rezolucion të plotë dhe

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

Pas nisjes, Pi-Zero kalon në ndërfaqen GUI.

Për të përdorur madhësinë e plotë të kartës sime microSD, kam përdorur përzgjedhjen 'Expand Filesystem' raspi-config #1. Nga rreshti i komandës, në dritaren e terminalit, futni 'sudo raspi-config' Referojuni: dokumentacionit/konfigurimit/raspi -konfigurimi.md

Gjithashtu i ndryshova këto cilësime nën #5 "Opsionet e ndërkombëtarizimit"

  • Lokale: en_US. UTF-8 UTF-8
  • Zona kohore: Amerikë… Los_Angeles
  • Paraqitja e tastierës: Kompjuter i përgjithshëm 105-çelës (Intl)… Anglisht (SHBA)

Për mua standardi i tastierës i Britanisë së Madhe (për të cilin Raspbian vjen i paracaktuar) po i bënte shumicën e redaktimeve të mia një punë të vërtetë.

Ndryshoni këto cilësime sipas nevojës, në mënyrë të përshtatshme për ju. Vini re se duhet të përdorni çelësat e shigjetave dhe butonin e skedës për të lundruar në 'raspi-config'; dhe pas një përzgjedhjeje mund të jetë shumë i ngadalshëm për t'u përgjigjur.

Nuk e kisha problem të lidhesha në internet me një dongle WiFi-USB (kam përdorur 2 të ndryshme). Thjesht më duhej të fusja fjalëkalimin tim të hyrjes në WiFi duke përdorur një tërheqje në pjesën e sipërme të djathtë të GUI. Pasi e bëra këtë, do të lidhej automatikisht pas çdo rindezje/ndezjeje.

Tani isha gati për zhvillimin e përgjithshëm.

Për të arritur në këtë pikë ju mund të merrni shumë rrugë. Deri në këtë pikë, unë nuk kam dhënë detaje të mëdha këtu, por ka shumë metoda dhe konfigurime të përshkruara më hollësisht në internet. Përfshirë atë për një konfigurim pa kokë ku do të përdorni një dritare të terminalit ssh të largët në kompjuterin tuaj personal për të bërë hapat e zhvillimit që do të jepen në këtë udhëzues.

Hapi 3: Mjedisi dhe Mjetet e Zhvillimit

Mjedisi dhe Mjetet për Zhvillim
Mjedisi dhe Mjetet për Zhvillim
Mjedisi dhe Mjetet për Zhvillim
Mjedisi dhe Mjetet për Zhvillim

Për konfigurimin e konfigurimit të sistemit dhe softuerin që kam zhvilluar për projektin, bëra R&D në një Raspberry Pi-2; sepse ka një CPU katër bërthamë që e bën shfletimin dhe zhvillimin e kodit të tij, me dritare të shumta, shumë më të shpejtë. Ju, natyrisht, mund të përdorni çdo model Raspberry-Pi për të realizuar këtë projekt.

Për të konfiguruar Node.js (mbështetje JavaScripting nga serveri I/O i drejtuar nga ngjarjet) bëra sa më poshtë…

përditësim sudo apt-get

sudo apt-get install nodejs npm

Shtimi i këtyre paketave nodeJS (npm është Nodejs Package Manager)

npm instaloni express

npm instaloni socket.io

Referencat:

www.npmjs.com/package/express Kuadër i shpejtë, minimalist i uebit

www.npmjs.com/package/socket.io Socket. IO mundëson komunikim në kohë reale të bazuar në ngjarje

Hapi 4: Hardueri

Hardueri
Hardueri
Hardueri
Hardueri
Hardueri
Hardueri
Hardueri
Hardueri

Vlerat rezistente të përdorura janë të ndryshme, pasi rënia e tensionit dhe efikasiteti ndryshojnë për të tre segmentet e ngjyrave LED. Nivelet e larta të prodhimit GPIO ishin të gjitha afërsisht 3.2 volt. Çdo segment LED është testuar për të siguruar që konsumon më pak se 20ma maksimum dhe rreth 40ma të gjitha së bashku (<50ma max maksimumi i lejuar total), të cilin PiZero mund ta trajtojë me lehtësi. Unë mora sa më shumë shkëlqim daljeje, duke drejtuar drejtpërdrejt LED; e cila është e mjaftueshme për nevojat e mia. Për të drejtuar rryma më të larta, për një dalje shumë më të ndritshme, transistorët e ndërmjetëm të makinës mund të përdoren me një LED anodë të zakonshme me anodën e saj të lidhur me linjën 5v. PS: Ndërsa nivelet e mia të ndryshme të Bardhë po dalin pak të kaltërosh, 27 në vend të 24 Ohm do të ishte një zgjedhje më e mirë për mua.

Vini re se kam përdorur një kokë me kunja mashkullore dhe e lidhur me këmbët LED me kërcyes F-F. Kjo mbajti lartësinë e përgjithshme. I bashkova rezistencat në mes të kërcyesve. Përdorimi i asnjë bordi qark ose bordi pa saldim, së bashku me përdorimin e një përshtatësi mikro-USB në USB me kënd të drejtë për dongle WiFi, e bënë montimin përfundimtar mjaft kompakt.

Për një shpërndarës, unë rekomandoj një top ping-pongu (është e lehtë të shposh një vrimë aq të madhe sa të futësh LED tuaj 5-8-10 mm). Ose prerë pjesën e sipërme të një llambë LED (një që përdor një shpërndarës plastik). Për këtë shënoni një vijë, me një mprehtë të hollë, ku dëshironi të prerë, dhe përdorni një mjet si Dremel me një shtojcë të hollë të prerë. Nëse ju pëlqen, mund të përdorni një kavanoz qelqi të vogël të prerë ose gotë për pije. Pasi të keni vendosur në një shpërndarës, ngjiteni atë në krye të kutisë.

Për demonstrata më pëlqen të përdor një bankë të vogël Li të vendosur brenda kutisë. Kjo njësi duket më mbresëlënëse plotësisht pa tel. Sigurisht, do të ketë një kohë të kufizuar të funksionimit në atë konfigurim. Për të vazhduar funksionimin normal, unë thjesht përdor një përshtatës muri mikro-USB.

Hapi 5: Softueri i projektit

Softueri i Projektit
Softueri i Projektit

Kam përdorur dy programe, një proces Node.js duke folur me një fëmijë përmes procesit të të dhënave stdin. Kjo është kështu që secili mund të bëjë atë që bën më mirë dhe të veprojë si procese të pavarura me ritmin e vet.

Këtu është ajo që kam bërë: Por ju nuk keni pse, pasi unë kam siguruar një skedar tar-gzip i cili përmban pemën e skedarit që rezulton.

Konfigurimi i serverit NodeJS:

cd

mkdir node_rgb cd node_rgb mkdir publike

vendosni 'index.html' dhe 'style.css' në dosjen '~/node_rgb/public' 'rgbDriver.c' dhe 'rgb_main.js' në drejtorinë '~/node_rgb'

Përpiloni/ndërtoni procesin c 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Shkarkimi dhe zgjerimi i ekuivalencës

Për të shkarkuar node_rgb.tgz (më poshtë) në Pi-Zero në drejtorinë tuaj shtëpiake (~ pi) mund të bëni një nga 3 sa vijon:

  1. Shkarkoni nga shfletuesi në Pi-Zero's GUIM Zhvendosni skedarin në ~ pi/
  2. Në një dritare terminale të lidhur me ju Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Shkarkoni nga një shfletues në kompjuterin tuaj desktop. Përdorni WinSCP për ta kopjuar atë në drejtorinë ~ pi në Pi-Zero

Pas kryerjes së #1 2 ose 3 më lart…

cd

tar -xzvf node_rgb.tgz pemë node_rgb… node_rgb ├── publike │ ├── Dow_Jones_Index.html ├── ├── index.html └── └── style.css ├── rgbDriver ├── rgbDriver.c ├── rgb_main. js ├── start_rgb ├── kill_rgb └── track_dji

Ekzekutuesi që rezulton (nga lart) 'rgbDriver' mund të përdoret në mënyrë të pavarur nga procesi i ndërfaqes Node.js.

Për të verifikuar që ky drejtues dhe hardueri po funksionojnë, jepni shoferit grupe me tre vlera (nga 0-255), të ndara me një hapësirë. Ashtu si 'jehona 255 0 0 |./rgbDriver 'për të kuqe ose' jehonë 0 255 0 |./rgbDriver 'për të gjelbër. Vini re se "./" i thotë OS të gjejë programin tonë 'rgbDriver' në drejtorinë aktuale. Kur lëshoni një ^c (cntl-c) për të ndaluar drejtuesin drejtuesi mund ose nuk mund të qëndrojë ndezur. Përndryshe, ju mund të ushqeni në mënyrë interaktive vlerat e tij. Provoni të shkruani, nga rreshti i komandës, këto rreshta njëra pas tjetrës dhe shikoni LED.

./rgbDrejtuesi

0 255 0 100 0 100 255 255 0… etj… ^c

Sigurohuni që nuk keni 2 nga këto procese që funksionojnë paralelisht.

Për të nisur kompletin e plotë të aplikacionit të softuerit, përfshirë serverin Node.js përdorni këtë komandë:

sudo nyje rgb_main.js

Pastaj përdorni cntl-c kur doni të ndaloni serverin Node.js. Niseni atë me

sudo nyje rgb_main.js &

që të funksionojë në fushën e pasme, por atëherë do të duhet të përdorni një komandë 'sudo kill -9 pid' për ta ndaluar atë. Nëse kjo komandë ju duket e huaj, atëherë rishikoni daljen e këtyre komandave: 'njeri kill' dhe 'man sudo'.

Përdorni një shfletues, në desktopin tuaj, tabletin ose telefonin, i cili është i lidhur me rrjetin tuaj lokal. Shkoni te https:// raspberrypi: 8080/ose nëse kjo nuk funksionon përdorni adresën IP të pajisjes (marrë nga cmd 'ifconfig') diçka si 192.168.1.15 plus specifikimet e portit: 8080 ose nëse përdorni Pi-Zero's GUI: localhost: 8080 do të funksionojë.

Përdorni rrëshqitësit RGB, në faqen që shfaqet dhe shikoni se si ndizet llamba RGB-LED.

Komanda të tjera të dobishme Vini re se nëse përfundoni me më shumë se një 'rgbDriver' duke vrapuar në të njëjtën kohë, ka të ngjarë të keni sjellje të paparashikueshme. Nëse provoni dhe ekzekutoni një kopje të dytë të rgb_main.js do të gabojë.

Kjo komandë do të listojë të gjitha proceset e lidhura:

ps aux | grep rgb

Kjo komandë do të vrasë të gjitha proceset nodeJS, së bashku me proceset fëmijërore 'rgbDriver':

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

Operacion i vetëm

Për të nisur Pi-Zero aplikacionin e serverit Node.js kur fillon … duke përdorur redaktorin tuaj të preferuar (p.sh. nano ~/.bash_profile), shkruani rreshtat e mëposhtëm dhe ruani në ~/.bash_profile

cd nyja_rgb

sudo nyje rgb_main.js &

Për të mos marrë mesazhe gabimi të bezdisshëm kur hapni një dritare terminale përdorni kodimin e kushtëzuar si skriptin shell në skedarin 'start_rgb'

Kur Pi-Zero po funksionon i integruar, pa tastierë, mi ose monitor; Ndërfaqja Grafike e Përdoruesit do të marrë kohë minimale të CPU -së, pasi nuk do të ketë ndërveprim të përdoruesit. Unë nuk e çaktivizoj fillimin e GUI automatik, pasi Pi-Zero ka më shumë burime sesa nevojiten, në këtë rast; dhe më pëlqen të jem në gjendje të lidh disa kabllo dhe t'i përdor, në çdo kohë në të ardhmen. Megjithëse, kjo nuk është e nevojshme pasi mund të përdorni një terminal të largët SSH (p.sh. PuTTY) për të bërë çdo mirëmbajtje të nevojshme.

Përdorimi i tij si një monitor ngjarjesh

Kam krijuar një faqe në internet për monitorimin e ndryshimit ditor në Indeksin Dow Jones. Burimi i tij mund të përdoret si një udhëzues për faqen tuaj e cila përdor disa të dhëna në internet dhe drejton treguesin tuaj Pi-Zero në përputhje me rrethanat. Kjo faqe merr të dhënat e saj (json) nga një shërbim në internet i Google. Ka shumë forma të shërbimeve në internet, kështu që do t'ju duhet të hulumtoni atë që dëshironi të përdorni për të përcaktuar kodin JavaScript për të hyrë në të.

Nëse dëshironi të përdorni pajisjen tuaj, ashtu si edhe unë, si një tregues i ndryshuar i indeksit Dow Index, shtoni këto rreshta në fund të skedarit ~/.bash_profile, ose sipas dëshirës SSH dhe lëshoni rreshtin e dytë të komandës Me Nëse më pas dëshironi të përdorni telekomandën 'vrasni -9' që rezulton nga epifania -shfletuesi.

fle 20

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

Treguesi do të ndriçojë një gri të hapur duke pasur parasysh vlerën 0. Ai bëhet gjithnjë e më i gjelbër me vlera më të larta. Greenshtë e Gjelbër e pastër më e ndritshme me rreth 250. Vlerat më të larta por në fillim shkaktojnë një ndezje të cekët, deri në një ndezje më të thellë në rreth 500. Për vlerën negative (rëniet ditore në Dow) bën të ngjashme, por me të Kuqe.

P URDITSIM Maj 2018

Unë kam krijuar një faqe të re në internet (SolarStorm_devCon.html, bashkangjitur si një skedar.txt, për shkak të mos shkarkimit të skedarit.html) e cila mbledh informacionin e stuhisë GeoMagnetic (e cila mund të parathotë një CME shkatërruese, EMP) dhe e përdor atë për të paraqitur një ngjyrë shkallë që pasqyron një lloj Indeksi Geo-Storm 'DevCon'. duke treguar potencialin e një katastrofe për shkak të një impulsi elektromagnetik (EMP) që rezulton nga moti në hapësirë, me sa duket shpërthimet diellore ose një nxjerrje e masës Koronare (CME). Përdoreni atë si ju do të kishit përdorur "Dow_Jones_Index.html".

Hapi 6: Kontrolli në distancë i faqes në internet

Image
Image

Në këtë pikë ju mund të kontrolloni Llambën tuaj të ngjyrave IOT nga kudo në rrjetin tuaj lokal. Si ta bëni atë të dukshme në internet publik nuk është pjesë e këtij udhëzimi. Nëse vendosni një IP publike për pajisjen tuaj, atëherë do t'ju duhet përdorni atë IP në komandën e folesë së hapur në JavaScript të faqeve tuaja (p.sh. ~/node_rgb/public/index.html)

Unë jam duke planifikuar të përdor pajisjen time Pi-Zero IOT si një tregues ngjyrash në kohë reale për ndryshimin e ditës në Indeksin Dow Jones. Unë krijova një faqe që e bën këtë, e cila merr të dhëna json nga google.com/finance. Më tej krijova disa faqe në internet për të demonstruar gamën e gjerë të përdorimeve për këtë pajisje të vogël IOT. Në vend që ta vendos PiZero -në time në internetin publik, unë priti faqet në serverin tim ekzistues të uebit përballë publikut (aktualisht @ 71.84.135.81 aka: https://raspi.ddns01.com/ kur funksionon serveri im falas i Dynamic Domain Name), i cili po funksionon në një version origjinal B Raspberry-Pi Me

Në kodin në faqet e mia të largëta hapa lidhjet e foleve në 192.168.1.41:8080 Unë e kisha rregulluar IP-në e Pi-Zero-s time në 192.168.1.41. Për të bërë në mënyrë të ngjashme, ndiqni udhëzimet në konfigurimin-mjedër-pi-me-wifi-dhe-a-statik-ip nën titullin: Adresa IP statike. Pra, nëse e vendosni PiZero-në tuaj të jetë në 192.168.1.41 në rrjetin tuaj lokal, këto faqe, të hapura nga faqja ime e internetit, do të komunikojnë me pajisjen tuaj, pasi lidhja bëhet nga ana e klientit.

Këtu janë ato faqe që kam përdorur për të testuar dhe operuar pajisjen time të ndriçimit Pi-Zero IOT. Nëse i shfaqni këto faqe (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ ose ndonjë nga faqet e përshtatura në atë faqe) JavaScript nga ana e klientit do të drejtoni dritën tuaj të krijuar IOT (duke qenë se funksionon në këtë url "192.168.1.41:8080") Nëse ju pëlqen mund të kopjoni burimin e cilësdo prej atyre faqeve dhe të modifikoni sipas dëshirës tuaj.

Me faqen e parë ju mund ta vendosni pajisjen tuaj në çdo ngjyrë. Llamba LED dhe ngjyra që shihni në faqen e internetit do të ndjekin mjaft mirë. Vlerat rezistente të përdorura mund të ndryshohen (si dhe monitori) për t'i bërë ato më të vërteta. Kam shpenzuar pak ose aspak kohë për të siguruar që ato përputhen. Kjo faqe do të azhurnojë ngjyrën e saj sa herë që dikush tjetër ndryshon ngjyrën dhe serveri dërgon mesazhin e informacionit të përditësuar.

Një faqe është një semafor i thjeshtë i kontrolluar me butona.

Ekziston një faqe e krijuar për të ndjekur një garë sportive (p.sh. futboll, basketboll, bejsboll), një zgjedhje, apo edhe e përshtatur për një ngritës fondesh ose tregues të stilit të nivelit të alarmit DEFCON. Rezultatet (ose votat e kryera elektorale) mund të merren automatikisht nga një shërbim në internet ose të fshihen nga ndonjë faqe tjetër në internet. Unë nuk kam një burim automatik që drejton faqen time në Contest_demo. Dikush me njohuritë e duhura mund të shtojë një drejtues energjie për të ndezur dritat LED me fuqi të lartë dhe për të larë një dhomë (ose shirit sportiv) me ngjyrën e një ekipi kur ata janë përpara. Fatkeqësisht jam tepër vonë me këtë udhëzues për partitë e këtij viti në super-tas, por me kohë për zgjedhjet e 2016-ës.

Pastaj ka një faqe të ngjashme me atë që do të përdor për ta kthyer pajisjen time në një tregues gjurmimi Dow Jones. Rrëshqitësi dhe butonat janë vetëm në faqen demo të DJI për qëllime demonstrimi. Në burimin për këtë faqe ekziston kodi që kam zhvilluar për të ngjyrosur një imazh të frymëzuar nga ekrani jeshil; me komente të mjaftueshme që ju gjithashtu mund të gjeni të dobishme.

Vetëm e para nga këto 4 faqe (së bashku me faqen index.html të bazuar në Pi-Zero) dëgjon mesazhet e përditësimit të serverit dhe rifreskohet në përputhje me rrethanat. Të gjithë të tjerët i dërgojnë vetëm serverit.

Recommended: