Turinys:

„RPi-Zero IoT“įvykio indikatorius / spalvota lempa: 6 žingsniai (su nuotraukomis)
„RPi-Zero IoT“įvykio indikatorius / spalvota lempa: 6 žingsniai (su nuotraukomis)

Video: „RPi-Zero IoT“įvykio indikatorius / spalvota lempa: 6 žingsniai (su nuotraukomis)

Video: „RPi-Zero IoT“įvykio indikatorius / spalvota lempa: 6 žingsniai (su nuotraukomis)
Video: 5 УДИВИТЕЛЬНЫХ ЖИЗНЕННЫХ ХАКОВ # 2 2024, Liepa
Anonim
„RPi-Zero IoT“įvykio indikatorius / spalvota lempa
„RPi-Zero IoT“įvykio indikatorius / spalvota lempa
„RPi-Zero IoT“įvykio indikatorius / spalvota lempa
„RPi-Zero IoT“įvykio indikatorius / spalvota lempa
„RPi-Zero IoT“įvykio indikatorius / spalvota lempa
„RPi-Zero IoT“įvykio indikatorius / spalvota lempa

Nereikia jokio papildomo mikrovaldiklio ir HAT papildinio modulio. „RPi-Zero“daro viską. Dar geriau naudoti RPi-Zero W!

Pavyzdžio naudojimas: žiniatinklio paslaugos būsenos indikatorius (pvz., „DowJonesIndex“stebėjimas), politinių ar sporto įvykių būsenos indikatorius, nuotaikos šviesa, stebėkite jutiklį. Žiūrėkite vaizdo įrašą 6 veiksme.

„Raspberry-Pi“turi tik vieną aparatinės įrangos palaikomą PWM liniją. Šiam projektui reikia 3 PWM eilučių, todėl naudojau programine įranga pagrįstą PWM „c“biblioteką (https://wiringpi.com/reference/software-pwm-library/), kuri jau turėtų būti įdiegta.

Aš suskaidiau apdorojimą į 2 procesus. Vienas, pertraukiamasis, prireikus perjungdamas valdymo linijas į šviesos diodą, gaudamas žygius iš „stdin“srauto. Kitas yra įvykiais pagrįstas „nodeJS“serveris, naudojantį lizdą IO. Taip siekiama užkirsti kelią tokiems dalykams kaip šviesos mirgėjimas, tuo pačiu užtikrinant reagavimą. Šis derinys paprastai naudoja mažiau nei 5% procesoriaus. Nuolatinių spalvų atnaujinimų metu (per slankiklius ir (arba) daugelį klientų) ji gali lengvai panaudoti daugiau nei 50% (ypač kai taip pat naudojama naršyklė „Pi-Zero GUI“). Atminkite, kad kai įvyksta pakeitimas, pranešimai apie atnaujinimus siunčiami visiems atidarytiems lizdo klientams.

1 žingsnis: ko jums reikės

Ko jums reikės
Ko jums reikės
Ko jums reikės
Ko jums reikės
  • „Pi-Zero micro-SD“kortelė, rekomenduojama 8 GB. Su Raspbian-Linux arba NOOBS
  • „RGB Led“(aš naudoju šį:
  • 3 rezistoriai (vertė priklauso nuo pageidaujamos srovės ir (arba) pageidaujamo ryškumo, 1/8 vatai)
  • „WiFi“, USB raktą (pvz., https://www.ebay.com/itm/252018085448) arba dar geriau naudoti „Raspberry Pi Z-W“(su įmontuotu „WiFi“)
  • dėklas (pvz., mažas: https://www.ebay.com/itm/131583579374 su daugiau vietos:
  • difuzorius (žr. pavyzdžius paveikslėlyje)
  • Kabeliai ir adapteriai pagal poreikį.

Pasirinktinai, priklausomai nuo to, kaip norite prijungti komponentus

  • antraštė (https://www.ebay.com/itm/14186077616)
  • džemperiai (https://www.ebay.com/itm/262235387520)
  • tiesaus kampo mikro-USB adapteris („Blue USB 2.0 OTG R“)
  • mini USB šakotuvas, naudojamas tik sąrankos metu

2 žingsnis: „Pi-Zero“sąranka ir pasiruošimas plėtrai

Atlikite šią pradinę „PiZero“sąranką, kad ji būtų paruošta plėtrai …

Kai turėsite „microSD“kortelę su NOOBS sąranka, atlikite toliau nurodytus veiksmus.

Prijunkite „microSD“kortelę. Prijunkite mažos galios USB šakotuvą su „Wifi“rakteliu, klaviatūra ir pele (galite naudoti belaidę pelę ir (arba) klaviatūrą, bet kokiu atveju gali prireikti (bet mažai tikėtina) šakotuvo maitinimo šaltinio). Naudojau adapterius ir jau turimą stebulę.

Dabar prijunkite monitorių ir „microUSB“maitinimo adapterį ir jis bus paleistas. Tęskite ir baigite „Raspbian“, „Debian Linux“sąrankos nurodymus, kaip parodyta aukščiau esančioje nuorodoje „Noobs-setup“.

Be to, turėjau per mažą skiriamąją gebą. Taigi pridėjau šias eilutes prie /boot/config.txt

disable_overscan = 1

hdmi_group = 2 hdmi_mode = 58

„Hdmi_mode = 58“tinka mano monitoriui, jums gali prireikti ko nors kito.

žiūrėkite: „make-aviečių-pi-naudokite“visos skiriamosios gebos monitorių ir

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

Įkėlus „Pi-Zero“patenka į GUI sąsają.

Norėdami pasinaudoti visu savo „microSD“kortelės dydžiu, naudoju raspi-config #1 „Išplėsti failų sistemą“pasirinkimą. Iš komandinės eilutės terminalo lange įveskite „sudo raspi-config“Žr. -konfigūruoti.md

Taip pat pakeičiau šiuos nustatymus skiltyje Nr. 5 „Internacionalizacijos parinktys“

  • Lokalė: en_US. UTF-8 UTF-8
  • Laiko juosta: Amerika… Los_Angeles
  • Klaviatūros išdėstymas: bendras 105 klavišų (tarptautinis) kompiuteris … anglų (JAV)

Man Didžiosios Britanijos klaviatūros standartas (kuriam „Raspbian“yra iš anksto nustatytas) daugelį mano redagavimų pavertė tikru darbu.

Jei reikia, pakeiskite šiuos nustatymus, kaip jums tinka. Atminkite, kad norėdami naršyti „raspi-config“turite naudoti rodyklių klavišus ir tabuliavimo klavišą; ir po atrankos atsakymas gali būti labai lėtas.

Man pasirodė, kad nėra problemų prisijungti prie interneto naudojant „WiFi-USB“raktą (naudojau 2 skirtingus). Aš tiesiog turėjau įvesti savo „WiFi“prieigos rakto slaptažodį, naudodami išskleidžiamąjį meniu viršutinėje dešinėje GUI pusėje. Kai tai padarysiu, jis automatiškai prisijungs po bet kokio perkrovimo/įjungimo.

Dabar buvau pasirengęs bendram vystymuisi.

Norėdami pasiekti šį tašką, galite pasirinkti daugybę kelių. Iki šiol čia nepateikiau daug detalių, tačiau internete yra daug išsamiau aprašytų metodų ir konfigūracijų. Įskaitant vieną, skirtą sąrankai be galvos, kur galėtumėte naudoti asmeninio kompiuterio nuotolinio ssh terminalo langą, kad atliktumėte šioje instrukcijoje nurodytus kūrimo veiksmus.

3 žingsnis: kūrimo aplinka ir įrankiai

Plėtros aplinka ir įrankiai
Plėtros aplinka ir įrankiai
Plėtros aplinka ir įrankiai
Plėtros aplinka ir įrankiai

Dėl sistemos konfigūracijos sąrankos ir programinės įrangos, kurią sukūriau šiam projektui, aš tyrinėjau ir kūriau „Raspberry Pi-2“; nes jis turi keturių branduolių procesorių, todėl naršymas ir kodo kūrimas su keliais langais yra daug greitesnis. Šiam projektui įgyvendinti, žinoma, galite naudoti bet kurį „Raspberry-Pi“modelį.

Norėdami nustatyti „Node.js“(įvykiu pagrįstas įvesties/išvesties serverio „JavaScript“palaikymas), aš padariau taip:

sudo apt-get atnaujinimas

sudo apt-get install nodejs npm

Pridedami šie „nodeJS“paketai („npm“yra „Nodejs“paketų tvarkyklė)

npm įdiegti greitą

npm įdiegti lizdą.io

Nuorodos:

www.npmjs.com/package/express Greita, minimalistinė žiniatinklio sistema

www.npmjs.com/package/socket.io „Socket. IO“įgalina realaus laiko dvikryptį įvykių ryšį

4 žingsnis: Aparatūra

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

Visos naudojamos rezistoriaus vertės yra skirtingos, nes įtampos kritimas ir efektyvumas skiriasi visuose trijuose LED spalvų segmentuose. Visi GPIO aukšto išėjimo lygiai buvo maždaug 3,2 voltai. Kiekvienas LED segmentas buvo išbandytas, kad būtų užtikrinta, jog jis sunaudoja ne daugiau kaip 20ma ir ne daugiau kaip 40m kartu (<50ma maksimali leidžiama suma), kurią „PiZero“gali lengvai valdyti. Aš gavau tiek išvesties ryškumo, kiek galėjau, tiesiogiai vairuodamas šviesos diodą; ko užtenka mano poreikiams. Norint valdyti didesnes sroves, norint gauti daug ryškesnę išvestį, tarpiniai pavaros tranzistoriai gali būti naudojami su bendru anodo šviesos diodu, kurio anodas prijungtas prie 5v linijos. PS: Kadangi mano įvairūs balti lygiai išeina šiek tiek melsvai, 27, o ne 24 omai būtų buvęs geresnis pasirinkimas man.

Atkreipkite dėmesį, kad naudojau antraštę su kaiščiais ir prijungiau prie šviesos diodų kojelių su F-F trumpikliais. Tai išlaikė bendrą aukštį. Rezistorius lituodavau į džemperių vidurį. Nenaudojant plokštės ar plokštelės be lydmetalio, taip pat naudojant stačiakampį mikro-USB ir USB adapterį „WiFi“raktui, galutinis surinkimas tapo gana kompaktiškas.

Difuzoriui rekomenduoju stalo teniso kamuoliuką (nesunku išgręžti pakankamai didelę skylę, kad galėtumėte įkišti 5-8-10 mm šviesos diodą). Arba nupjaukite LED lemputės (tos, kurioje naudojamas plastikinis difuzorius) viršutinę dalį. Norėdami tai padaryti, pažymėkite liniją su smulkiu aštriu brūkšniu ir naudokite į „Dremel“panašų įrankį su plonu nupjovimo priedu. Jei norite, galite naudoti gražų mažą supjaustytą stiklinį indelį arba geriamąjį stiklinę. Apsigyvenę ant vieno difuzoriaus, priklijuokite jį prie korpuso viršaus.

Demonstracijoms man patinka naudoti nedidelį „Li“maitinimo bloką, esantį dėklo viduje. Šis įrenginys atrodo įspūdingesnis visiškai belaidžiu būdu. Žinoma, šios konfigūracijos veikimo laikas bus ribotas. Norėdami normaliai veikti, tiesiog naudoju sieninį „micro-USB“adapterį.

5 žingsnis: projektuokite programinę įrangą

Projekto programinė įranga
Projekto programinė įranga

Aš naudoju dvi programas - „Node.js“procesą, kalbantį su vaiko procesu per jo stdin duomenų srautą. Taip jie gali daryti tai, ką geriausiai išmano, ir veikti kaip nepriklausomi procesai savo tempu.

Štai ką aš padariau: Bet jūs neprivalote, nes aš pateikiau failą tar-gzip, kuriame yra gautas failų medis.

„NodeJS“serverio sąranka:

cd ~

mkdir node_rgb cd node_rgb mkdir public

įdėkite „index.html“ir „style.css“į katalogą „~/node_rgb/public“įveskite „rgbDriver.c“ir „rgb_main.js“į katalogą „~/node_rgb“

Kompiliuoti/kurti c procesą „rgbDriver“:

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Atsisiuntimas ir išplėtimas

Norėdami atsisiųsti node_rgb.tgz (žemiau) į „Pi-Zero“į savo namų katalogą (~ pi), galite atlikti vieną iš 3 veiksmų:

  1. Atsisiųskite iš „Pi-Zero“GUI naršyklės Perkelkite failą į ~ pi/
  2. Terminalo lange, prijungtame prie jūsų „Pi-Zero“: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Atsisiųskite iš savo stalinio kompiuterio naršyklės. Naudodami „WinSCP“nukopijuokite jį į „Pi-Zero“katalogą

Atlikę 1 2 ar 3 aukščiau…

cd ~

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

Gautas vykdomasis (iš viršaus) „rgbDriver“gali būti naudojamas nepriklausomai nuo „Node.js“sąsajos proceso.

Norėdami patikrinti, ar ši tvarkyklė ir aparatinė įranga veikia, įveskite tvarkyklę trijų verčių rinkinius (0–255), atskirtus tarpais. Kaip 'echo 255 0 0 |./rgbDriver “raudonai arba„ echo 0 255 0 |./rgbDriver 'žaliai. Atminkite, kad „./“nurodo OS rasti mūsų programą „rgbDriver“dabartiniame kataloge. Kai išjungiate ^c (cntl-c), kad sustabdytumėte tvarkyklę, šviesos diodas gali ir nedegti. Arba galite interaktyviai pateikti jo vertes. Pabandykite iš komandinės eilutės įvesti šias eilutes viena po kitos ir stebėkite šviesos diodą.

./rgbDriver

0 255 0 100 0 100 255 255 0 ir tt… ^c

Įsitikinkite, kad neturite dviejų šių procesų lygiagrečiai.

Norėdami paleisti visą programinės įrangos paketą, įskaitant „Node.js“serverį, naudokite šią komandą:

sudo mazgas rgb_main.js

Tada naudokite cntl-c, kai norite sustabdyti „Node.js“serverį. Paleiskite jį naudodami

sudo mazgas rgb_main.js &

kad jis būtų paleistas užpakalinėje žemėje, bet tada turėsite naudoti komandą „sudo kill -9 pid“, kad ją sustabdytumėte. Jei ši komanda jums atrodo svetima, peržiūrėkite šių komandų rezultatus: „man kill“ir „man sudo“.

Staliniame kompiuteryje, planšetiniame kompiuteryje ar telefone naudokite naršyklę, prijungtą prie vietinio tinklo. Eikite į https:// raspberrypi: 8080/arba jei tai neveikia, naudokite įrenginio IP adresą (gautą iš cmd 'ifconfig'), pvz., 192.168.1.15 ir prievado specifikaciją: 8080 arba jei naudojate „Pi-Zero“GUI: localhost: 8080 veiks.

Atidarytame puslapyje valdykite RGB slankiklius ir stebėkite RGB-LED lemputę.

Kitos naudingos komandos Atminkite, kad jei vienu metu paleisite daugiau nei vieną „rgbDriver“, greičiausiai elgsitės nenuspėjamai. Jei bandysite paleisti antrąją „rgb_main.js“kopiją, bus rodoma klaida.

Šioje komandoje bus išvardyti visi susiję procesai:

ps aux | grep rgb

Ši komanda sunaikins visus „nodeJS“procesus kartu su „rgbDriver“antriniais procesais:

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

Savarankiška operacija

Jei norite, kad „Pi-Zero“paleistų „Node.js“serverio programą, kai ji paleidžiama … naudojant mėgstamą redaktorių (pvz., Nano ~/.bash_profile), įveskite šias eilutes ir išsaugokite ~/.bash_profile

cd mazgas_rgb

sudo mazgas rgb_main.js &

Kad atidarius terminalo langą negautumėte nepatogių klaidų pranešimų, naudokite sąlyginį kodavimą, pvz., „Start_rgb“failo apvalkalo scenarijų

Kai „Pi-Zero“veikia įterptas, be klaviatūros, pelės ar monitoriaus; grafinė vartotojo sąsaja užtruks minimaliai procesoriaus laiko, nes nebus sąveikos su vartotoju. Neišjungiu automatinio GUI paleidimo, nes šiuo atveju „Pi-Zero“turi daugiau išteklių nei reikia; ir man patinka, kad galėsiu prijungti kelis kabelius ir juos naudoti bet kuriuo metu ateityje. Tačiau tai nėra būtina, nes jūs galite naudoti nuotolinį SSH terminalą (pvz., PuTTY), kad atliktumėte reikiamą priežiūrą.

Naudojant jį kaip įvykių monitorių

Sukūriau tinklalapį, skirtą stebėti kasdienius „Dow Jones“indekso pokyčius. Jo šaltinis gali būti naudojamas kaip gairė jūsų puslapiui, kuriame naudojami kai kurie žiniatinklio duomenys ir atitinkamai valdomas jūsų „Pi-Zero“indikatorius. Šis puslapis (json) duomenis gauna iš „Google“žiniatinklio paslaugos. Yra daug žiniatinklio paslaugų formų, todėl turėsite ištirti tą, kurią norite naudoti norėdami nustatyti „JavaScript“kodą, kad galėtumėte jį pasiekti.

Jei norite naudoti savo įrenginį, kaip ir aš, kaip atskiras „Dow“indekso keitimo indikatorius, pridėkite šias eilutes prie failo ~/.bash_profile pabaigos arba kaip pageidaujamą SSH ir išleiskite antrąją komandų eilutę. Jei vėliau norite naudoti nuotolinio valdymo pultą „nužudyti -9“, gautas epifanijos naršyklės procesas.

miegoti 20

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

Indikatorius užsidegs šviesiai pilka spalva, kai reikšmė yra 0. Jis tampa vis žalesnis, o didesnės vertės. Ryškiausia gryna žalia spalva yra apie 250. Didesnės, tačiau reikšmės iš pradžių sukelia negilų blyksnį, iki giliausio - apie 500. Neigiamos vertės atveju (dienos kritimas „Dow“) veikia panašiai, bet raudonai.

Atnaujinta 2018 m. Gegužės mėn

Sukūriau naują tinklalapį („SolarStorm_devCon.html“, pridėtas kaip.txt failas, nes.html failas neįkeliamas), kuriame surenkama „GeoMagnetic“audros informacija (kuri gali numatyti pražūtingą CME, EMP) ir kuri naudojama spalvai pateikti skalė, atspindinti savotišką „Geo-Storm“„DevCon“indeksą. nurodo nelaimės potencialą dėl elektromagnetinio impulso (EMP), atsirandančio dėl oro sąlygų, matyt, saulės spindulių ar koroninės masės išmetimo (CME). Naudokite jį taip, kaip būtumėte naudoję „Dow_Jones_Index.html“.

6 veiksmas: nuotolinis tinklalapio valdymas

Image
Image

Šiuo metu galite valdyti savo IOT spalvų lemputę iš bet kurios vietinio tinklo vietos. Kaip padaryti, kad ji būtų matoma viešajame internete, nėra šios instrukcijos dalis. Jei nustatysite savo įrenginiui viešą IP, turėsite naudokite tą IP „Open Socket“komandoje savo puslapių „JavaScript“(pvz., ~/node_rgb/public/index.html)

Aš planuoju naudoti savo „Pi-Zero IOT“įrenginį kaip realaus laiko spalvų rodiklį dienos pokyčiams „Dow Jones“indekse. Sukūriau puslapį, kuris tai daro, ir gauna „json“duomenis iš google.com/finance. Be to, sukūriau keletą tinklalapių, kad pademonstruotų platų šio mažo IOT įrenginio naudojimo spektrą. Užuot įdėjęs „PiZero“į viešą internetą, aš priglobė mano esamo viešojo žiniatinklio serverio puslapius (šiuo metu @ 71.84.135.81, dar žinomas kaip: https://raspi.ddns01.com/, kai veikia mano nemokamas dinaminio domeno vardų serveris), kuriame veikia originali versija „Raspberry-Pi“.

Nuotolinių puslapių kode atidariau lizdo jungtis prie 192.168.1.41:8080. „Pi-Zero“IP nustatiau į 192.168.1.41. Norėdami tai padaryti panašiai, vadovaukitės instrukcijomis, nustatytomis nustatant-aviečių-pi-su-wifi-ir-a-static-ip antraštėje: Statinis IP adresas. Taigi, jei nustatysite „PiZero“192.168.1.41 vietiniame tinkle, šie puslapiai, atidaryti iš mano svetainės, susisieks su jūsų įrenginiu, nes ryšys atliekamas iš kliento pusės.

Štai tie puslapiai, kuriuos naudoju išbandydamas ir valdydamas savo „Pi-Zero IOT“apšvietimo įrenginį. Jei iškelsite šiuos puslapius (https://71.84.135.81/iot/rgbLamp/, dar žinomas kaip https://raspi.ddns01.com/iot/rgbLamp/ arba bet kurį puslapį, įrėmintą tame puslapyje), kliento pusės „JavaScript“vairuokite sukurtą IOT lemputę (atsižvelgiant į tai, kad ji veikia šiuo adresu „192.168.1.41:8080“) Jei norite, galite nukopijuoti bet kurio iš tų puslapių šaltinį ir pakeisti pagal savo skonį.

Pirmame puslapyje galite nustatyti bet kokios spalvos įrenginį. LED lemputė ir spalva, kurią matote tinklalapyje, bus stebimos gana gerai. Naudojamas atsparumo vertes (taip pat ir monitorių) galima patikslinti, kad jos būtų tikrai labiau suderintos. Aš praleidau mažai laiko, kad užtikrintų, jog jie atitinka. Šis puslapis atnaujins spalvą, kai kas nors pakeis spalvą, o serveris išsiųs atnaujintą informacijos pranešimą.

Vienas puslapis yra paprastas mygtukais valdomas šviesoforas.

Yra puslapis, skirtas stebėti sporto varžybas (pvz., Futbolą, krepšinį, beisbolą), rinkimus ar netgi pritaikytas lėšų pritraukimo ar DEFCON įspėjimo lygio stiliaus indikatoriui. Taškus (arba balsavusių rinkėjų balsus) galima automatiškai gauti iš žiniatinklio tarnybos arba ištrinti iš kito tinklalapio. Neturiu automatinio sklaidos kanalo, nukreipiančio „Contest_demo“puslapį. Kas nors, turintis reikiamų žinių, galėtų pridėti galios vairuotoją, kad jis paleistų didelės galios LED prožektorius ir išsimaudytų kambaryje (ar sporto bare) su komandos spalva. Deja, aš pavėlavau su šiais pamokymais šių metų „super dubenėlio“partijoms, bet laiku iki 2016 m.

Tada yra puslapis, panašus į tą, kurį naudosiu savo įrenginį paversdamas „Dow Jones“stebėjimo indikatoriumi. Slankiklis ir mygtukai yra tik DJI demonstraciniame puslapyje demonstravimo tikslais. Šio puslapio šaltinyje yra kodas, kurį sukūriau norėdamas perdažyti žalio ekrano įkvėptą vaizdą; su pakankamai komentarų, kad jums taip pat gali būti naudinga.

Tik pirmasis iš šių 4 puslapių (kartu su „Pi-Zero“pagrįstu „index.html“puslapiu) klauso serverio naujinių pranešimų ir atitinkamai atnaujina. Visa kita siunčiama tik į serverį.

Rekomenduojamas: