Satura rādītājs:

RPi-Zero IoT notikumu indikators / krāsu lampa: 6 soļi (ar attēliem)
RPi-Zero IoT notikumu indikators / krāsu lampa: 6 soļi (ar attēliem)

Video: RPi-Zero IoT notikumu indikators / krāsu lampa: 6 soļi (ar attēliem)

Video: RPi-Zero IoT notikumu indikators / krāsu lampa: 6 soļi (ar attēliem)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Novembris
Anonim
RPi-Zero IoT notikumu indikators / krāsu lampa
RPi-Zero IoT notikumu indikators / krāsu lampa
RPi-Zero IoT notikumu indikators / krāsu lampa
RPi-Zero IoT notikumu indikators / krāsu lampa
RPi-Zero IoT notikumu indikators / krāsu lampa
RPi-Zero IoT notikumu indikators / krāsu lampa

Nav nepieciešams papildu mikrokontrolleris un nav nepieciešams HAT papildmodulis. RPi-Zero to visu dara. Vēl labāk izmantojiet RPi-Zero W!

Parauga izmantošana: tīmekļa pakalpojuma stāvokļa indikators (piemēram, DowJonesIndex izsekošana), politisko vai sporta notikumu statusa indikators, garastāvokļa gaisma, izsekojiet sensoru, jūs to nosaucat. Skatiet videoklipu 6. darbībā.

Raspberry-Pi ir tikai viena aparatūras atbalstīta PWM līnija. Šim projektam ir nepieciešamas 3 PWM līnijas, tāpēc es izmantoju programmatūras vadītu PWM 'c' bibliotēku (https://wiringpi.com/reference/software-pwm-library/), kas jau būtu jāinstalē.

Es sadalīju apstrādi 2 procesos. Viens, ar pārtraukumu darbināms, pēc vajadzības pārslēdzot vadības līnijas uz gaismas diodi, saņemot gājiena rīkojumus no savas “stdin” plūsmas. Otrs ir notikumu virzīts nodeJS serveris, kas izmanto ligzdu IO. Tas ir paredzēts, lai novērstu tādas lietas kā gaismas mirgošana, vienlaikus nodrošinot atsaucību. Kombinācija parasti izmanto mazāk nekā 5% CPU. Nepārtrauktas krāsu atjaunināšanas laikā (izmantojot slīdņus un/vai daudzus klientus) tā var viegli izmantot vairāk nekā 50% (īpaši, ja izmantojat arī pārlūku Pi-Zero GUI). Ņemiet vērā: kad tiek veiktas izmaiņas, paziņojumi par atjauninājumiem tiek nosūtīti visiem atvērtajiem kontaktligzdas klientiem.

1. darbība. Kas jums būs nepieciešams

Kas jums būs nepieciešams
Kas jums būs nepieciešams
Kas jums būs nepieciešams
Kas jums būs nepieciešams
  • Ieteicama Pi-Zero micro-SD karte, 8 GB. Ar Raspbian-Linux vai NOOBS
  • RGB Led (es izmantoju šo:
  • 3 rezistori (vērtība balstās uz vēlamo strāvu un/vai vēlamo spilgtumu, 1/8 vati)
  • WiFi, USB dongle (piemēram, https://www.ebay.com/itm/252018085448) vai vēl labāk izmantojiet Raspberry Pi Z-W (ar iebūvētu WiFi)
  • futrālis (piemēram, mazs: https://www.ebay.com/itm/131583579374 ar vairāk vietas:
  • difuzors (skatiet piemērus attēlā)
  • Kabeļi un adapteri pēc nepieciešamības.

Pēc izvēles atkarībā no tā, kā vēlaties savienot komponentus

  • galvene (https://www.ebay.com/itm/14186077616)
  • džemperi (https://www.ebay.com/itm/262235387520)
  • taisna leņķa mikro-USB adapteris (Blue USB 2.0 OTG R)
  • mini USB centrmezgls, tiek izmantots tikai iestatīšanas posmā

2. solis: Pi-Zero iestatīšana un sagatavošanās attīstībai

Izpildiet šo PiZero sākotnējo iestatījumu, lai tas būtu gatavs attīstībai …

Kad jums ir microSD karte ar NOOBS iestatīšanu, veiciet tālāk norādītās darbības.

Pievienojiet microSD karti. Pievienots mazjaudas USB centrmezgls ar Wifi dongle, tastatūru un peli (Jūs varat izmantot bezvadu peli un/vai tastatūru jebkurā gadījumā, bet, iespējams, centrmezglam nepieciešama ārēja barošana). Es izmantoju adapterus un centrmezglu, kas man jau bija.

Tagad pievienojiet monitoru un microUSB strāvas adapteri, un tas tiks sāknēts. Turpiniet un pabeidziet Raspbian, Debian Linux iestatīšanas norādījumus, kā redzams iepriekš minētajā saitē noobs-setup.

Turklāt man bija pārāk zema izšķirtspēja. Tāpēc es pievienoju šīs rindas /boot/config.txt

disable_overscan = 1

hdmi_grupa = 2 hdmi_režīms = 58

Hdmi_mode = 58 darbojas manam monitoram, jums var būt nepieciešams kaut kas cits.

skatiet: make-aveņu-pi-use-pilnas izšķirtspējas monitoru un

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

Pēc palaišanas Pi-Zero nonāk GUI saskarnē.

Lai izmantotu visu microSD kartes izmēru, es izmantoju raspi-config #1 “Izvērst failu sistēmu”. Komandrindas termināļa logā ievadiet “sudo raspi-config” Skatīt: Documentation/Configuration -config.md

Arī es mainīju šos iestatījumus sadaļā #5 "Internacionalizācijas iespējas"

  • Lokalizācija: en_US. UTF-8 UTF-8
  • Laika josla: Amerika… Los_Angeles
  • Tastatūras izkārtojums: vispārējs 105 taustiņu (starptautiskais) dators… angļu (ASV)

Manuprāt, Lielbritānijas tastatūras standarts (kuram Raspbian ir iepriekš iestatīts) daudzus manus labojumus padarīja par īstu darbu.

Mainiet šos iestatījumus pēc vajadzības, atbilstoši sev. Ņemiet vērā, ka, lai pārvietotos raspi-config, ir jāizmanto bulttaustiņi un tabulēšanas taustiņš; un pēc atlases atbilde var būt ļoti lēna.

Es atklāju, ka nav problēmu izveidot savienojumu ar internetu, izmantojot WiFi-USB dongle (es izmantoju 2 dažādus). Man vienkārši bija jāievada sava WiFi piekļuves atslēgas parole, izmantojot nolaižamo izvēlni GUI augšējā labajā stūrī. Kad es to izdarīju, tas automātiski izveidos savienojumu pēc jebkuras pārstartēšanas/ieslēgšanas.

Tagad es biju gatavs vispārējai attīstībai.

Lai sasniegtu šo punktu, jūs varat iet pa daudziem ceļiem. Līdz šim es šeit neesmu sniedzis detalizētu informāciju, taču tīmeklī ir aprakstītas daudzas metodes un konfigurācijas. Ieskaitot vienu iestatīšanai bez galvas, kurā jūs izmantotu attālā ssh termināla logu personālajā datorā, lai veiktu šajā instrukcijā norādītās izstrādes darbības.

3. darbība. Izstrādes vide un rīki

Izstrādes vide un rīki
Izstrādes vide un rīki
Izstrādes vide un rīki
Izstrādes vide un rīki

Sistēmas konfigurācijas iestatīšanai un programmatūrai, ko izstrādāju šim projektam, es veicu pētniecību un izstrādi Raspberry Pi-2; jo tam ir četrkodolu centrālais process, kas pārlūkošanu un koda izstrādi ar vairākiem logiem padara daudz ātrāku. Lai realizētu šo projektu, jūs, protams, varat izmantot jebkuru Raspberry-Pi modeli.

Lai iestatītu Node.js (notikumu vadīts I/O servera puses JavaScript atbalsts), es rīkojos šādi …

sudo apt-get update

sudo apt-get install nodejs npm

Šo nodeJS pakotņu pievienošana (npm ir Nodejs pakotņu pārvaldnieks)

npm instalēt express

npm instalējiet socket.io

Atsauces:

www.npmjs.com/package/express Ātra, minimālistiska tīmekļa sistēma

www.npmjs.com/package/socket.io Socket. IO nodrošina reāllaika divvirzienu notikumu komunikāciju

4. solis: aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra

Izmantotās pretestības vērtības ir dažādas, jo sprieguma kritums un efektivitāte atšķiras visos trīs LED krāsu segmentos. Visi GPIO augstie izejas līmeņi bija aptuveni 3,2 volti. Katrs LED segments tika pārbaudīts, lai pārliecinātos, ka tas patērē ne vairāk kā 20m un kopā aptuveni 40m (maksimāli pieļaujamais maksimums 50m), ar ko PiZero var viegli tikt galā. Es ieguvu pēc iespējas lielāku izvades spilgtumu, tieši vadot LED; kas ir pietiekami manām vajadzībām. Lai vadītu lielākas strāvas, lai iegūtu daudz gaišāku izvadi, varētu izmantot starpposma piedziņas tranzistorus ar kopēju anoda gaismas diodi ar anodu, kas savienots ar 5v līniju. PS: Tā kā mani dažādi baltie līmeņi izceļas nedaudz zilgani, 27, nevis 24 omi būtu bijusi labāka izvēle man.

Ievērojiet, ka es izmantoju galveni ar vīriešu tapām un savienotu ar LED kājām ar F-F džemperiem. Tas saglabāja kopējo augstumu. Es lodēju pretestības džemperu vidū. Izmantojot bez shēmas plates vai bez lodēšanas plates, kā arī izmantojot taisnleņķa mikro-USB un USB adapteri WiFi donglei, gala montāža kļuva diezgan kompakta.

Difuzoram es iesaku galda tenisa bumbiņu (ir viegli izurbt caurumu, kas ir pietiekami liels, lai ievietotu 5-8-10 mm gaismas diodi). Vai nogrieziet LED spuldzes augšpusi (tādu, kurā tiek izmantots plastmasas izkliedētājs). Šim nolūkam atzīmējiet līniju ar smalku asu asumu, kur vēlaties griezt, un izmantojiet Dremel līdzīgu instrumentu ar plānu griezuma stiprinājumu. Ja vēlaties, varat izmantot jauku, nelielu stikla burku vai dzeramo glāzi. Kad esat apmeties pie viena difuzora, pielīmējiet to līdz korpusa augšai.

Demonstrācijām man patīk izmantot nelielu Li jaudas banku, kas ievietota korpusa iekšpusē. Šī ierīce šķiet iespaidīgāka, pilnīgi bezvadu. Protams, šajā konfigurācijā tam būs ierobežots darbības laiks. Lai turpinātu normālu darbību, es vienkārši izmantoju mikro-USB sienas adapteri.

5. solis: projekta programmatūra

Projekta programmatūra
Projekta programmatūra

Es izmantoju divas programmas - Node.js procesu, kas runā ar bērna procesu, izmantojot tā stdin datu plūsmu. Tas ir tāpēc, lai viņi katrs varētu darīt to, ko viņi prot vislabāk, un darbotos kā neatkarīgi procesi savā tempā.

Lūk, ko es darīju: Bet jums tas nav jādara, jo esmu nodrošinājis failu tar-gzip, kas satur iegūto failu koku.

NodeJS servera puses iestatīšana:

cd ~

mkdir node_rgb cd node_rgb mkdir public

ievietojiet direktoriju "index.html" un "style.css" direktorijā "~/node_rgb/public" ievadiet "rgbDriver.c" un "rgb_main.js" direktorijā "~/node_rgb"

Apkopojiet/izveidojiet c procesu 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lreadread

Lejupielādēt un paplašināt līdzvērtību

Lai lejupielādētu node_rgb.tgz (zemāk) savā Pi-Zero savā mājas direktorijā (~ pi), varat veikt vienu no 3 tālāk norādītajām darbībām.

  1. Lejupielādējiet no Pi-Zero GUIM pārlūka Pārvietojiet failu uz ~ pi/
  2. Termināļa logā, kas savienots ar jums Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Lejupielādējiet no sava galddatora pārlūkprogrammas. Izmantojiet WinSCP, lai to kopētu Pi-Zero direktorijā ~ pi

Pēc #1 2 vai 3 izpildīšanas iepriekš…

cd ~

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

Iegūto izpildāmo (no augšas) “rgbDriver” var izmantot neatkarīgi no Node.js saskarnes procesa.

Lai pārbaudītu, vai šis draiveris un aparatūra darbojas, draiverim padodiet trīs vērtību kopas (no 0 līdz 255), atdalot ar atstarpi. Tāpat kā 'echo 255 0 0 |./rgbDriver”sarkanai vai“echo 0 255 0 |./rgbDriver 'zaļai. Ņemiet vērā, ka “./” liek OS atrast mūsu programmu “rgbDriver” pašreizējā direktorijā. Izsniedzot ^c (cntl-c), lai apturētu draiveri, gaismas diode var palikt ieslēgta. Varat arī interaktīvi ievadīt tā vērtības. Mēģiniet ierakstīt komandrindā šīs rindas vienu pēc otras un skatīties gaismas diode.

./rgbDriver

0 255 0 100 0 100 255 255 0… utt… ^c

Pārliecinieties, ka divi no šiem procesiem nedarbojas paralēli.

Lai palaistu pilnu programmatūras lietojumprogrammu komplektu, ieskaitot Node.js serveri, izmantojiet šo komandu:

sudo mezgls rgb_main.js

Pēc tam izmantojiet cntl-c, ja vēlaties apturēt Node.js serveri. Palaidiet to ar

sudo mezgls rgb_main.js &

lai to palaistu aizmugurējā zemē, bet tad, lai to apturētu, jums būs jāizmanto komanda 'sudo kill -9 pid'. Ja šī komanda jums šķiet sveša, pārskatiet šo komandu izvadi: 'man kill' un 'man sudo'.

Darbvirsmā, planšetdatorā vai tālrunī izmantojiet pārlūkprogrammu, kas ir savienota ar vietējo tīklu. Dodieties uz vietni https:// raspberrypi: 8080/vai, ja tas nedarbojas, izmantojiet ierīces IP adresi (iegūta no cmd 'ifconfig'), piemēram, 192.168.1.15, kā arī porta specifikāciju: 8080 vai, ja izmantojat Pi-Zero GUI: localhost: 8080 darbosies.

Atvērtajā lapā izmantojiet RGB slīdņus un vērojiet, kā seko RGB-LED lampiņa.

Citas noderīgas komandas Ņemiet vērā: ja vienā reizē tiek palaists vairāk nekā viens rgbDriver, visticamāk, jūs saņemsiet neparedzamu uzvedību. Ja mēģināsit palaist otro rgb_main.js eksemplāru, tas parādīs kļūdu.

Šī komanda uzskaitīs visus saistītos procesus:

ps aux | grep rgb

Šī komanda nogalinās visus nodeJS procesus kopā ar “rgbDriver” pakārtotajiem procesiem:

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

Patstāvīga darbība

Lai Pi-Zero palaistu Node.js servera lietotni, kad tā tiek palaista … izmantojot iecienīto redaktoru (piemēram, nano ~/.bash_profile), ierakstiet šādas rindiņas un saglabājiet ~/.bash_profile

cd mezgls_rgb

sudo mezgls rgb_main.js &

Lai atverot termināļa logu nesaņemtu traucējošus kļūdu ziņojumus, izmantojiet nosacītu kodēšanu, piemēram, čaulas skriptu failā “start_rgb”

Kad Pi-Zero darbojas iegulta, bez tastatūras, peles vai monitora; grafiskā lietotāja saskarne prasīs minimālu procesora laiku, jo nebūs lietotāja mijiedarbības. Es neatslēdzu automātisko GUI palaišanu, jo šajā gadījumā Pi-Zero ir vairāk resursu nekā nepieciešams; un man patīk, ka varēšu savienot dažus kabeļus un izmantot to jebkurā laikā nākotnē. Tomēr tas nav nepieciešams, jo, lai veiktu nepieciešamo apkopi, varat izmantot attālo SSH termināli (piemēram, PuTTY).

Izmantojiet to kā notikumu monitoru

Es izveidoju tīmekļa lapu, lai uzraudzītu ikdienas izmaiņas Dow Jones indeksā. Tā avotu var izmantot kā vadlīnijas savai lapai, kurā tiek izmantoti daži tīmekļa dati un attiecīgi tiek vadīts jūsu Pi-Zero indikators. Šī lapa (json) datus iegūst no Google tīmekļa pakalpojuma. Ir daudz tīmekļa pakalpojumu veidu, tāpēc jums būs jāizpēta tas, kuru vēlaties izmantot, lai noteiktu JavaScript kodu, lai tam piekļūtu.

Ja vēlaties izmantot savu ierīci, tāpat kā es, kā atsevišķu, atsevišķu Dow indeksa izmaiņu indikatoru, pievienojiet šīs rindas faila ~/.bash_profile beigās vai kā vēlamo SSH un izdodiet otro komandrindu. Ja vēlāk vēlaties izmantot tālvadības pulti “nogalināt -9”, iegūtais epifānijas pārlūkprogrammas process.

gulēt 20

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

Indikators iedegsies gaiši pelēkā krāsā, ja vērtība ir 0. Ar augstākām vērtībām tas kļūst arvien zaļāks. Tā ir spilgtākā tīri zaļā krāsā pie aptuveni 250. Augstākas, bet vērtības vispirms izraisa seklu zibspuldzi, līdz dziļākajai zibspuldzei - aptuveni 500. Negatīvai vērtībai (dienas pilieni Dow) tā ir līdzīga, bet sarkanā krāsā.

UPDATE 2018. gada maijs

Esmu izveidojis jaunu tīmekļa lapu (SolarStorm_devCon.html, kas pievienota kā.txt fails, jo.html fails netiek augšupielādēts), kurā tiek apkopota informācija par GeoMagnetic vētru (kas varētu paredzēt postošu CME, EMP) un to izmanto, lai parādītu krāsu skala, kas atspoguļo sava veida Geo-Storm “DevCon” indeksu. norāda uz katastrofas iespējamību elektromagnētiskā impulsa (EMP) dēļ, ko izraisa laika apstākļi, iespējams, saules uzliesmojumi vai koronālā masas izmešana (CME). Izmantojiet to tāpat kā jūs būtu izmantojis “Dow_Jones_Index.html”.

6. darbība: Web lapas tālvadības kontrole

Image
Image

Šajā brīdī jūs varat kontrolēt savu IOT krāsu lampu no jebkuras vietas vietējā tīklā. Kā padarīt to redzamu visā publiskajā internetā, nav šī pamācības sastāvdaļa. Ja iestatāt savai ierīcei publisku IP, jums būs izmantojiet šo IP atvērtās ligzdas komandā savu lapu JavaScript (piemēram, ~/node_rgb/public/index.html)

Es plānoju izmantot savu Pi-Zero IOT ierīci kā reāllaika krāsu indikatoru dienas izmaiņām Dow Jones indeksā. Es izveidoju lapu, kas to dara, un iegūst json datus no google.com/finance. Tālāk es izveidoju dažas tīmekļa lapas, lai parādītu šīs mazās IOT ierīces plašo pielietojumu klāstu. Tā vietā, lai ievietotu savu PiZero publiskajā internetā, es mitināja lapas manā publiski pieejamā tīmekļa serverī (pašlaik @ 71.84.135.81 aka: https://raspi.ddns01.com/, kad darbojas mans bezmaksas dinamiskā domēna vārdu serveris), kas darbojas oriģinālajā versijā B Raspberry-Pi.

Kodā, kas atrodas manās attālajās lapās, es atvēru kontaktligzdas savienojumus uz 192.168.1.41:8080. Es biju fiksējis savu Pi-Zero ip uz 192.168.1.41. Lai rīkotos līdzīgi, izpildiet norādījumus par iestatīšanu-aveņu-pi-ar-wifi-un-a-static-ip zem virsraksta: Statiskā IP adrese. Tātad, ja vietējā tīklā iestatāt savu PiZero uz 192.168.1.41, šīs lapas, kas atvērtas no manas vietnes, sazināsies ar jūsu ierīci, jo savienojums tiek veikts no klienta puses.

Šeit ir lapas, kuras es izmantoju, lai pārbaudītu un darbinātu savu Pi-Zero IOT apgaismes ierīci. Ja atverat šīs lapas (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ vai kādu no šajā lapā ietvertajām lapām), klienta puses JavaScript vadīt savu izveidoto IOT indikatoru (ņemot vērā, ka tas darbojas ar šo vietrādi URL “192.168.1.41:8080”). Ja vēlaties, varat nokopēt jebkuras no šīm lapām avotu un mainīt to pēc saviem ieskatiem.

Ar pirmo lapu jūs varat iestatīt savai ierīcei jebkuru krāsu. LED lampa un tīmekļa lapā redzamā krāsa tiks izsekota diezgan labi. Izmantotās pretestības vērtības (kā arī monitora) var tikt mainītas, lai tās patiesāk atbilstu. Es pavadīju maz laika, lai nodrošinātu to atbilstību. Šī lapa atjauninās savu krāsu ikreiz, kad kāds cits maina krāsu un serveris izsūta atjaunināto informācijas ziņojumu.

Viena lapa ir vienkāršs pogas vadīts luksofors.

Ir lapa, kas paredzēta sporta sacensību (piemēram, futbola, basketbola, beisbola), vēlēšanu izsekošanai vai pat pielāgota līdzekļu piesaistītājam vai DEFCON brīdinājuma līmeņa stila indikatoram. Rezultātus (vai saistītās vēlēšanu balsis) varēja automātiski iegūt no tīmekļa pakalpojuma vai nokasīt no kādas citas tīmekļa lapas. Manā Contest_demo lapā nav automātiskas plūsmas. Kāds, kuram ir atbilstošas zināšanas, varētu pievienot jaudas draiveri, lai darbinātu lieljaudas LED plūdu gaismas un mazgātu telpu (vai sporta bāru) ar komandas krāsu, kad viņi ir priekšā. Diemžēl es esmu par vēlu ar šo pamācību šī gada superbļodas partijām, bet savlaicīgi līdz 2016. gada vēlēšanām.

Tad ir lapa, kas ir līdzīga tai, kuru izmantošu, lai pārvērstu savu ierīci par Dow Jones izsekošanas indikatoru. Slīdnis un pogas ir tikai DJI demonstrācijas lapā demonstrēšanas nolūkos. Šīs lapas avotā ir kods, kuru es izstrādāju, lai pārkrāsotu zaļā ekrāna iedvesmoto attēlu; ar pietiekami daudz komentāru, kas jums arī varētu šķist noderīgi.

Tikai pirmā no šīm 4 lapām (kopā ar Pi-Zero bāzes index.html lapu) klausās servera atjauninājumu ziņojumus un attiecīgi atsvaidzina. Viss pārējais tiek nosūtīts tikai uz serveri.

Ieteicams: