Sisukord:

RPi-Zero IoT sündmuse indikaator / värviline lamp: 6 sammu (piltidega)
RPi-Zero IoT sündmuse indikaator / värviline lamp: 6 sammu (piltidega)

Video: RPi-Zero IoT sündmuse indikaator / värviline lamp: 6 sammu (piltidega)

Video: RPi-Zero IoT sündmuse indikaator / värviline lamp: 6 sammu (piltidega)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
RPi-Zero IoT sündmuse indikaator / värviline lamp
RPi-Zero IoT sündmuse indikaator / värviline lamp
RPi-Zero IoT sündmuse indikaator / värviline lamp
RPi-Zero IoT sündmuse indikaator / värviline lamp
RPi-Zero IoT sündmuse indikaator / värviline lamp
RPi-Zero IoT sündmuse indikaator / värviline lamp

Täiendavat mikrokontrollerit ja HAT-i lisamoodulit pole vaja. RPi-Zero teeb seda kõike. Veel parem kasutada RPi-Zero W!

Proovi kasutamine: veebiteenuse olekuindikaator (nt DowJonesIndexi jälgimine), poliitiliste või spordisündmuste olekuindikaator, meeleolutuli, jälgi andurit, nimetage seda. Vaadake videot sammus 6.

Raspberry-Pi-l on ainult üks riistvara toetatud PWM-liin. See projekt vajab 3 PWM-rida, nii et ma kasutasin tarkvaraga juhitavat PWM-i teeki (https://wiringpi.com/reference/software-pwm-library/), mis tuleks juba installida.

Jagasin töötlemise kaheks protsessiks. Üks, katkestusega juhitav, lülitades juhtjooned vajadusel LED -ile, saades marssimiskäsklused oma stdin -voost. Teine on sündmustepõhine nodeJS -server, mis kasutab pistikupesa IO. Selle eesmärk on vältida selliseid asju nagu kerge vilkumine, tagades samal ajal reageerimisvõime. See kombinatsioon kasutab tavaliselt vähem kui 5% protsessorist. Pidevate värvivärskenduste ajal (liugurite ja/või paljude klientide kaudu) saab seda hõlpsalt kasutada üle 50% (eriti kui kasutate ka Pi-Zero GUI brauserit). Pange tähele, et muudatuse saabumisel lähevad värskendusteated kõigile avatud pistikupesa klientidele.

Samm: mida vajate

Mida vajate
Mida vajate
Mida vajate
Mida vajate
  • Pi-Zero micro-SD-kaart, soovitatav 8 GB. Raspbian-Linuxi või NOOBS-iga
  • RGB Led (kasutasin seda:
  • 3 takistit (väärtus põhineb soovitud voolul ja/või soovitud heledusel, 1/8 vatti)
  • WiFi, USB-dongle (nt https://www.ebay.com/itm/252018085448) või veelgi parem kasutada Raspberry Pi Z-W (sisseehitatud WiFi-ga)
  • ümbris (nt väike: https://www.ebay.com/itm/131583579374 rohkem ruumi:
  • hajuti (vt näiteid pildil)
  • Kaablid ja adapterid vastavalt vajadusele.

Valikuliselt, sõltuvalt sellest, kuidas soovite komponente ühendada

  • päis (https://www.ebay.com/itm/14186077616)
  • džemprid (https://www.ebay.com/itm/262235387520)
  • täisnurga mikro-USB-adapter (Blue USB 2.0 OTG R)
  • mini -USB -jaotur, kasutatakse ainult seadistamisfaasis

2. samm: Pi-Zero seadistamine ja ettevalmistus arenguks

Järgige oma PiZero esialgset seadistust, et see oleks arendamiseks valmis …

Kui teil on NOOBS -i seadistusega microSD -kaart, tehke järgmist.

Ühendage microSD -kaart. Ühendage vähese energiatarbega USB -jaotur Wifi -dongli, klaviatuuri ja hiirega (võite kasutada juhtmevaba hiirt ja/või klaviatuuri, kuid igal juhul võib see nõuda jaoturi välist toite). Kasutasin adaptereid ja jaoturit, mis mul juba oli.

Nüüd ühendage monitor ja microUSB toiteadapter ning see käivitub. Jätkake ja viige lõpule Raspbiani ja Debiani Linuxi seadistamise juhised, nagu on näha ülaltoodud linkil noobs-setup.

Lisaks oli mul liiga madal eraldusvõime. Seega lisasin need read faili /boot/config.txt

disable_overscan = 1

hdmi_grupp = 2 hdmi_režiim = 58

Minu monitori jaoks töötab hdmi_mode = 58, teie oma võib vajada midagi muud.

vt: make-vaarikas-pi-use-täisresolutsiooniga monitor ja

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

Pärast käivitamist läheb Pi-Zero GUI liidesesse.

Oma microSD-kaardi täissuuruses kasutamiseks kasutasin valikut raspi-config #1 "Laienda failisüsteemi". Sisestage käsurealt terminaliaknasse "sudo raspi-config" -config.md

Samuti muutsin neid seadeid jaotises #5 "Rahvusvahelistumise valikud"

  • Locale: et_US. UTF-8 UTF-8
  • Ajavöönd: Ameerika… Los_Angeles
  • Klaviatuuri paigutus: üldine 105-klahviline (rahvusvaheline) arvuti… inglise (USA)

Minu jaoks muutis Suurbritannia klaviatuuristandard (mille jaoks Raspbian on eelseadistatud) suure osa minu toimetustest tõeliseks tööks.

Muutke neid seadeid vastavalt oma vajadustele. Pange tähele, et 'raspi-config' navigeerimiseks peate kasutama nooleklahve ja tabeldusklahvi; ja pärast valikut võib reageerimine olla väga aeglane.

Leidsin, et WiFi-USB-dongliga Interneti-ühenduse loomine ei ole probleem (kasutasin 2 erinevat). Ma lihtsalt pidin GUI paremas ülanurgas oleva rippmenüü abil sisestama oma WiFi juurdepääsu võtme parooli. Kui ma seda tegin, ühendatakse see automaatselt pärast taaskäivitamist/sisselülitamist.

Nüüd olin valmis üldiseks arenguks.

Selleni jõudmiseks võite minna mitmel viisil. Siiani pole ma siin väga üksikasjalikult kirjeldanud, kuid veebis on palju üksikasjalikumalt kirjeldatud meetodeid ja konfiguratsioone. Kaasa arvatud üks peata seadistamiseks, kus kasutaksite oma personaalarvutis ssh -terminali kaugakna, et teha selles juhendis toodud arendusetappe.

3. samm: arenduskeskkond ja tööriistad

Arenduskeskkond ja tööriistad
Arenduskeskkond ja tööriistad
Arenduskeskkond ja tööriistad
Arenduskeskkond ja tööriistad

Projekti jaoks välja töötatud süsteemikonfiguratsiooni seadistamise ja tarkvara jaoks tegin uurimistööd Raspberry Pi-2-l; sest sellel on neljatuumaline protsessor, mis muudab sirvimise ja koodide arendamise mitme aknaga palju kiiremaks. Selle projekti elluviimiseks võite muidugi kasutada mis tahes mudelit Raspberry-Pi.

Node.js seadistamiseks (sündmusepõhine I/O serveripoolne JavaScripti tugi) tegin järgmist …

sudo apt-get update

sudo apt-get install nodejs npm

Nende nodeJS pakettide lisamine (npm on Nodejs Package Manager)

npm installida express

npm installige pesa.io

Viited:

www.npmjs.com/package/express Kiire, minimalistlik veebiraamistik

www.npmjs.com/package/socket.io Socket. IO võimaldab reaalajas kahesuunalist sündmustepõhist suhtlust

Samm: riistvara

Riistvara
Riistvara
Riistvara
Riistvara
Riistvara
Riistvara
Riistvara
Riistvara

Kasutatavad takistusväärtused on kõik erinevad, kuna pingelangus ja efektiivsus on kõigi kolme LED -värvi segmendi puhul erinevad. GPIO kõrge väljundvõimsus oli umbes 3,2 volti. Iga LED -segmenti testiti, et veenduda, et see tarbib maksimaalselt alla 20mA ja kokku umbes 40m (maksimaalne lubatud kogusumma <50ma), millega PiZero saab hõlpsasti hakkama. Ma sain nii palju väljundi heledust kui suutsin, juhtides otse LED -i; mis on minu vajaduste jaoks piisav. Suuremate voolude juhtimiseks saaks palju heledama väljundi jaoks kasutada vaheajamiga transistore koos ühise anood -LED -iga, mille anood on ühendatud 5v -liiniga. PS: Kuna minu erinevad valged tasemed on pisut sinakad, 27 oomi asemel 27 oleks olnud minu jaoks parem valik.

Pange tähele, et ma kasutasin isaste tihvtidega päist ja ühendasin LED-jalgadega F-F džempritega. See hoidis üldkõrgust allapoole. Jootsin takistid džemprite keskele. Trükkplaadi või jootevaba plaadi puudumine koos täisnurga mikro-USB-USB-adapteri kasutamisega WiFi-dongli jaoks muutis lõppkomplekti üsna kompaktseks.

Hajuti jaoks soovitan pingpongi palli (lihtne on puurida piisavalt suur auk, et sisestada oma 5-8-10 mm LED). Või lõigake ära LED -lambipirni ülaosa (see, mis kasutab plastikust hajuti). Selleks märkige peene terava teraga joon, kuhu soovite lõigata, ja kasutage õhukese lõikega Dremeli laadset tööriista. Kui soovite, võite kasutada ilusat tükeldatud klaaspurki või joogiklaasi. Kui olete ühe hajuti peal asunud, liimige see korpuse ülaossa.

Demonstratsioonide jaoks meeldib mulle kasutada korpuse sisse paigutatud väikest Li-toitepanka. See seade tundub muljetavaldavam, täiesti traadita. Loomulikult on sellel konfiguratsioonil piiratud tööaeg. Normaalseks tööks kasutan lihtsalt mikro-USB seinaadapterit.

Samm: projekti tarkvara

Projekti tarkvara
Projekti tarkvara

Ma kasutasin kahte programmi, Node.js protsessi, mis rääkis stdin andmevoo kaudu lapseprotsessiga. See on nii, et nad saavad igaüks teha seda, mida nad kõige paremini oskavad, ja toimida iseseisva protsessina omas tempos.

Seda ma tegin: Aga sa ei pea, sest ma olen esitanud tar-gzip-faili, mis sisaldab saadud failipuu.

NodeJS serveripoolne seadistamine:

cd ~

mkdir node_rgb cd node_rgb mkdir public

sisestage kataloogidesse „~/node_rgb/public” kataloogis „index.html” ja „style.css” sisestage kataloogi „~/node_rgb” ja „rgb_main.js”

Kompileerige/ehitage c protsess 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Samaväärsuse allalaadimine ja laiendamine

Kui soovite alla laadida node_rgb.tgz (allpool) oma Pi-Zero oma kodukataloogi (~ pi), saate teha ühte järgmistest:

  1. Laadige alla oma Pi-Zero GUI brauserist Liigutage fail kausta ~ pi/
  2. Teiega ühendatud terminaliaknas Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Laadige alla oma lauaarvuti brauserist. Kopeerige see WinSCP abil Pi-Zero kataloogi ~ pi

Pärast eespool nr 1 2 või 3 sooritamist…

cd ~

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

Saadud käivitatavat (ülalt) rgbDriverit saab kasutada sõltumatult Node.js liidese protsessist.

Selle draiveri ja riistvara töötamise kontrollimiseks sisestage draiverile kolme väärtusega (0–255) komplektid, mis on eraldatud tühikuga. Nagu 'kaja 255 0 0 |./rgbDriver 'punase või' echo 0 255 0 | jaoks./rgbDriver 'roheliseks. Pange tähele, et „./” käsib operatsioonisüsteemil leida meie programm „rgbDriver” praegusest kataloogist. Kui väljastate draiveri peatamiseks nupu ^c (cntl-c), võib valgusdiood põlema jääda või mitte. Teise võimalusena saate selle väärtusi interaktiivselt toita. Proovige käsurealt need read üksteise järel tippida ja jälgige LED -i.

./rgbDriver

0 255 0 100 0 100 255 255 0… jne… ^c

Veenduge, et kaks neist protsessidest ei tööta paralleelselt.

Tarkvararakenduste täieliku komplekti, sealhulgas Node.js -serveri käivitamiseks kasutage seda käsku:

sudo sõlm rgb_main.js

Seejärel kasutage cntl-c, kui soovite Node.js-serveri peatada. Käivitage see

sudo sõlm rgb_main.js &

et see töötaks tagumises maas, kuid siis peate selle peatamiseks kasutama käsku 'sudo kill -9 pid'. Kui see käsk tundub teile võõras, vaadake üle nende käskude väljund: 'man kill' ja 'man sudo'.

Kasutage oma töölaual, tahvelarvutis või telefonis brauserit, mis on ühendatud kohaliku võrguga. Minge aadressile https:// raspberrypi: 8080/või kui see ei tööta, kasutage seadme IP-aadressi (saadud cmd 'ifconfig'), näiteks 192.168.1.15 pluss pordi spetsifikatsioon: 8080 või kui kasutate Pi-Zero GUI: localhost: 8080 töötab.

Kasutage avaneval lehel RGB liugureid ja jälgige, kuidas RGB-LED-lamp järgneb.

Muud kasulikud käsud Pange tähele, et kui korraga töötab rohkem kui üks „rgbDriver”, võib teil tekkida ettearvamatu käitumine. Kui proovite käivitada rgb_main.js teise eksemplari, ilmneb see veast.

See käsk loetleb kõik sellega seotud protsessid:

ps aux | grep rgb

See käsk tapab kõik nodeJS protsessid koos alamprotsessidega „rgbDriver”:

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

Iseseisev töö

Kui soovite, et Pi-Zero käivitaks Node.js serverirakenduse selle käivitamisel… kasutades teie lemmikredaktorit (nt nano ~/.bash_profile), tippige järgmised read ja salvestage faili ~/.bash_profile

cd node_rgb

sudo sõlm rgb_main.js &

Et terminali akna avamisel häirivaid veateateid ei saaks, kasutage tinglikku kodeerimist, nagu failis „start_rgb” olev shelliskript

Kui Pi-Zero töötab sisseehitatud, ilma klaviatuuri, hiire või kuvarita; graafiline kasutajaliides võtab protsessori jaoks minimaalse aja, kuna kasutajad ei suhtle. Ma ei keela GUI automaatset käivitamist, kuna Pi-Zero-l on antud juhul rohkem ressursse kui vaja; ja mulle meeldib, kui saan tulevikus ühendada mõne kaabli ja seda kasutada. See pole siiski vajalik, kuna saate vajaliku hoolduse tegemiseks kasutada kaug -SSH -terminali (nt PuTTY).

Kasutades seda sündmuste monitorina

Lõin veebilehe Dow Jonesi indeksi igapäevaste muutuste jälgimiseks. Selle allikat saab kasutada suunisena teie enda lehele, mis kasutab mõningaid veebiandmeid ja juhib vastavalt teie Pi-Zero indikaatorit. See leht saab (json) andmed Google'i veebiteenusest. Veebiteenuseid on palju vorme, seega peate uurima seda, mida soovite JavaScripti koodi määramiseks kasutada.

Kui soovite oma seadet kasutada, nagu minagi, eraldiseisva Dow-indeksi muutmise indikaatorina, lisage need read faili ~/.bash_profile lõppu või soovitud SSH-le ja andke välja teine käsurida. Kui soovite hiljem kasutada kaugjuhtimispulti "tappa -9", on tulemuseks kolmekuningase brauseri protsess.

magama 20

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

Indikaator süttib helehalli, kui väärtus on 0. Suuremate väärtuste korral muutub see üha rohelisemaks. See on kõige eredam puhas roheline, umbes 250. Kõrgemad, kuid väärtused põhjustavad esialgu madalat välklampi, kuni sügavaima välklampi umbes 500. Negatiivse väärtuse korral (igapäevased langused Dow'is) on see sarnane, kuid punane.

UPDATE mai 2018

Olen loonud uue veebilehe (SolarStorm_devCon.html, lisatud.txt -failina, kuna.html -faili ei laadita üles), mis kogub GeoMagnetic tormiteavet (mis võib ennustada laastavat CME -d, EMP -d) ja kasutab seda värvi esitamiseks skaala, mis peegeldab omamoodi Geo-Stormi DevConi indeksit. näitab katastroofipotentsiaali, mis on tingitud kosmoseilmast tulenevast elektromagnetilisest impulsist (EMP), eeldatavasti päikesepõletustest või koronaalsest massi väljutamisest (CME). Kasutage seda nii, nagu oleksite kasutanud "Dow_Jones_Index.html".

6. samm: veebilehe kaugjuhtimine

Image
Image

Sel hetkel saate oma IOT -värvilist lampi juhtida kõikjalt oma kohalikus võrgus. Selle avalikus internetis nähtavaks tegemine ei kuulu selle juhendi hulka. Kui seadistate oma seadmele avaliku IP -aadressi, peate kasutage seda IP -d oma lehtede JavaScripti käsus open socket (nt ~/node_rgb/public/index.html)

Kavatsen kasutada oma Pi-Zero IOT seadet reaalajas värvinäidikuna Dow Jonesi indeksi päevase muutuse jaoks. Lõin selle tegeva lehe, mis saab json -andmed saidilt google.com/finance. Lisaks lõin mõned veebilehed, et näidata selle väikese IOT -seadme laia kasutusvõimalust. Selle asemel, et oma PiZero avalikku Internetti panna, võõrustas lehti minu olemasoleval avalikul veebiserveril (praegu @ 71.84.135.81 aka: https://raspi.ddns01.com/ kui minu tasuta dünaamiline domeeninime server töötab), mis töötab algse versiooniga B Raspberry-Pi.

Kauglehtede koodis avasin pistikupesaühendused aadressile 192.168.1.41:8080. Olin oma Pi-Zero ip määranud 192.168.1.41. Samamoodi järgige juhiseid jaotises vaarika-pi-wifi-ga ja a-staatilise ip-i seadistamisel rubriigi: Staatiline IP-aadress all. Nii et kui seadistate oma PiZero oma kohalikus võrgus 192.168.1.41, need minu veebisaidilt avatud lehed suhtlevad teie seadmega, kuna ühendus luuakse kliendipoolt.

Siin on need lehed, mida kasutasin oma Pi-Zero IOT valgustusseadme testimiseks ja kasutamiseks. Kui avate need lehed (https://71.84.135.81/iot/rgbLamp/ aka https://raspi.ddns01.com/iot/rgbLamp/ või mõni sellel lehel raamitud leht), kuvatakse kliendipoolne JavaScript sõitke oma loodud IOT -tulega (kuna see töötab sellel URL -il “192.168.1.41:8080”) Kui soovite, võite kopeerida nende lehtede allika ja muuta oma maitse järgi.

Esimese lehe abil saate seadet valida mis tahes värviga. LED -lamp ja veebilehel nähtav värv jälgivad üsna hästi. Kasutatavaid takistusväärtusi saab (ja ka monitori) muuta, et need tõeliselt sobiksid. Veetsin vähe aega, et tagada nende sobivus. See leht värskendab oma värvi, kui keegi teine värvi muudab ja server saadab värskendatud infosõnumi välja.

Üks leht on lihtne nupuga juhitav valgusfoor.

Seal on leht, mis on loodud spordivõistluste (nt jalgpall, korvpall, pesapall), valimiste jälgimiseks või on kohandatud kogumiseks või DEFCONi hoiatustaseme stiiliindikaatoriks. Skoorid (või valimishääletused) võidakse automaatselt hankida veebiteenusest või mõne muu veebilehelt maha kraapida. Mul ei ole Contest_demo lehel automaatset voogu. Keegi, kellel on õige oskusteave, võiks lisada võimsusdraiveri, mis käivitaks suure võimsusega LED-tulutuled ja ujutaks ruumi (või spordibaari) meeskonna värviga. Kahjuks olen selle juhendiga selle aasta superkausi pidude jaoks liiga hilja, kuid 2016. aasta valimisteks õigel ajal.

Siis on leht, mis sarnaneb sellele, mida kasutan oma seadme muutmiseks Dow Jonesi jälgimise indikaatoriks. Liugur ja nupud on DJI demolehel ainult tutvustamiseks. Selle lehe allikas on kood, mille töötasin välja rohelisest ekraanist inspireeritud pildi uuesti värvimiseks; piisavalt kommentaare, mis võivad teile ka kasulikuks osutuda.

Ainult esimene neist neljast lehest (koos Pi-Zero-põhise indeksi.html lehega) kuulab serveri värskendusteateid ja värskendab neid vastavalt. Kõik ülejäänud saadetakse ainult serverisse.

Soovitan: