Sisällysluettelo:

RPi-Zero IoT -tapahtuman ilmaisin / värilamppu: 6 vaihetta (kuvilla)
RPi-Zero IoT -tapahtuman ilmaisin / värilamppu: 6 vaihetta (kuvilla)

Video: RPi-Zero IoT -tapahtuman ilmaisin / värilamppu: 6 vaihetta (kuvilla)

Video: RPi-Zero IoT -tapahtuman ilmaisin / värilamppu: 6 vaihetta (kuvilla)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Heinäkuu
Anonim
RPi-Zero IoT -tapahtuman ilmaisin / värilamppu
RPi-Zero IoT -tapahtuman ilmaisin / värilamppu
RPi-Zero IoT -tapahtuman ilmaisin / värilamppu
RPi-Zero IoT -tapahtuman ilmaisin / värilamppu
RPi-Zero IoT -tapahtuman ilmaisin / värilamppu
RPi-Zero IoT -tapahtuman ilmaisin / värilamppu

Ei ylimääräisiä mikro-ohjaimia ja HAT-lisämoduulia. RPi-Zero tekee kaiken. Käytä vielä RPi-Zero W: tä!

Esimerkkikäyttö: Verkkopalvelun tilan ilmaisin (esim. DowJonesIndex -seuranta), poliittisten tai urheilutapahtumien tilan ilmaisin, tunnelmavalo, jäljitä anturi. Katso video vaiheessa 6.

Raspberry-Pi: llä on vain yksi laitteistotuettu PWM-linja. Tämä projekti tarvitsee 3 PWM-linjaa, joten käytin ohjelmistopohjaista PWM 'c' -kirjastoa (https://wiringpi.com/reference/software-pwm-library/), joka pitäisi jo asentaa.

Jaoin käsittelyn kahteen prosessiin. Yksi, keskeytyskäyttöinen, ohjauslinjojen kytkeminen LED -valoon tarpeen mukaan ja sen marssimiskäskyt stdin -virraltaan. Toinen on tapahtumapohjainen nodeJS -palvelin, joka käyttää socket IO: ta. Tämä estää valon välkkymistä, mutta varmistaa samalla reagoivuuden. Yhdistelmä käyttää tyypillisesti alle 5% CPU: sta. Jatkuvien väripäivitysten aikana (liukusäätimien ja/tai monien asiakkaiden kautta) se voi helposti käyttää yli 50% (varsinkin kun käytetään myös Pi-Zero GUI -selainta). Huomaa, että kun muutos tulee, päivitysilmoitukset lähetetään kaikille avoimille pistorasia -asiakkaille.

Vaihe 1: Mitä tarvitset

Mitä tarvitset
Mitä tarvitset
Mitä tarvitset
Mitä tarvitset
  • Pi-Zero micro-SD-kortti, suositus 8 Gt. Raspbian-Linux tai NOOBS
  • RGB Led (käytin tätä:
  • 3 vastusta (arvo perustuu haluttuun virtaan ja/tai haluttuun kirkkauteen, 1/8 wattia)
  • Wi-Fi, USB-sovitin (esim.
  • kotelo (esim. pieni: https://www.ebay.com/itm/131583579374, jossa on enemmän tilaa:
  • diffuusori (katso esimerkkejä kuvassa)
  • Kaapelit ja adapterit tarpeen mukaan.

Vaihtoehtoisesti riippuen siitä, miten haluat liittää komponentit

  • otsikko (https://www.ebay.com/itm/14186077616)
  • puserot (https://www.ebay.com/itm/262235387520)
  • suorakulmainen mikro-USB-sovitin (sininen USB 2.0 OTG R)
  • mini -USB -keskitin, käytetään vain asennusvaiheessa

Vaihe 2: Pi-Zero-asennus ja valmistautuminen kehitykseen

Noudata tätä PiZero-laitteen alkuasetuksia, jotta se on valmis kehittämään…

Kun sinulla on microSD -kortti NOOBS -asetuksella, toimi seuraavasti:

Liitä pienikokoinen USB -keskitin, jossa on Wifi -dongle, näppäimistö ja hiiri (voit käyttää langatonta hiirtä ja/tai näppäimistöä, joka voi, mutta ei todennäköisesti, edellyttää ulkoista virtaa keskittimeen). Käytin sovittimia ja napaa, joka minulla oli jo.

Liitä nyt näyttö ja microUSB -virtalähde, niin se käynnistyy. Jatka ja viimeistele Raspbianin ja Debian Linuxin asennusohjeet yllä olevan noobs-setup-linkin mukaisesti.

Lisäksi minulla oli liian alhainen resoluutio. Joten lisäsin nämä rivit /boot/config.txt -tiedostoon

disable_overscan = 1

hdmi_ryhmä = 2 hdmi_tila = 58

Hdmi_mode = 58 toimii näytölläni, sinun voi tarvita jotain muuta.

katso: make-vadelma-pi-käytä täyden resoluution näyttöä ja

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

Käynnistyksen jälkeen Pi-Zero siirtyy graafiseen käyttöliittymään.

Hyödyntääkseni täysikokoista microSD-korttiani käytin raspi-config #1 'Expand Filesystem' -valintaa. Kirjoita komentoriville pääteikkunaan 'sudo raspi-config' Katso dokumentti/kokoonpano/raspi -config.md

Muutin myös nämä asetukset kohdassa #5 'Kansainvälistymisvaihtoehdot'

  • Kieli: en_US. UTF-8 UTF-8
  • Aikavyöhyke: Amerikka… Los_Angeles
  • Näppäimistöasettelu: Yleinen 105 näppäimen (kansainvälinen) tietokone… englanti (Yhdysvallat)

Minulle Ison-Britannian näppäimistöstandardi (johon Raspbian on valmiiksi asetettu) teki monista muokkauksistani todellisen urakan.

Muuta näitä asetuksia tarpeidesi mukaan. Huomaa, että sinun on käytettävä nuolinäppäimiä ja sarkainnäppäintä navigoidaksesi raspi-config-ohjelmassa. ja valinnan jälkeen vastaaminen voi olla hyvin hidasta.

Minusta ei ollut ongelma muodostaa Internet-yhteys WiFi-USB-sovittimella (käytin 2 erilaista). Minun täytyi vain syöttää WiFi-käyttöavaimen salasanani käyttämällä GUI: n oikeassa yläkulmassa olevaa alasvetovalikkoa. Kun tein tämän, se muodostaa automaattisesti yhteyden uudelleenkäynnistyksen/käynnistyksen jälkeen.

Nyt olin valmis yleiseen kehitykseen.

Päästäksesi tähän pisteeseen voit kulkea monia polkuja. Tähän asti en ole antanut tässä yksityiskohtaista tietoa, mutta verkossa on monia yksityiskohtaisemmin kuvattuja menetelmiä ja kokoonpanoja. Sisältää yhden päättömälle asennukselle, jossa käyttäisit henkilökohtaisen tietokoneen ssh -pääteikkunaa tässä oppaassa annettujen kehitysvaiheiden suorittamiseen.

Vaihe 3: Kehitysympäristö ja työkalut

Kehitysympäristö ja työkalut
Kehitysympäristö ja työkalut
Kehitysympäristö ja työkalut
Kehitysympäristö ja työkalut

Projektia varten kehittämiäni järjestelmän kokoonpanoasetuksia ja ohjelmistoja varten tein tutkimusta ja kehitystä Raspberry Pi-2: lla; sillä siinä on neliydinprosessori, joka tekee selaamisesta ja koodin kehittämisestä useita ikkunoita paljon nopeampaa. Voit tietysti käyttää mitä tahansa Raspberry-Pi-mallia tämän projektin toteuttamiseen.

Asentaakseni Node.js: n (tapahtumapohjainen I/O-palvelinpuolen JavaScript-tuki) tein seuraavan…

sudo apt-get päivitys

sudo apt-get install nodejs npm

Näiden nodeJS -pakettien lisääminen (npm on Nodejs Package Manager)

npm asentaa express

npm asenna socket.io

Viitteet:

www.npmjs.com/package/express Nopea, minimalistinen verkkokehys

www.npmjs.com/package/socket.io Socket. IO mahdollistaa reaaliaikaisen kaksisuuntaisen tapahtumapohjaisen viestinnän

Vaihe 4: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto

Käytetyt vastusarvot ovat kaikki erilaisia, koska jännitehäviö ja tehokkuus eroavat kaikissa kolmessa LED -värisegmentissä. GPIO High -lähtötasot olivat kaikki noin 3,2 volttia. Jokainen LED -segmentti testattiin sen varmistamiseksi, että se kuluttaa enintään 20 mA ja yhteensä noin 40 mA (<50 mA suurin sallittu kokonaismäärä), mitä PiZero pystyy helposti käsittelemään. Sain niin paljon kirkkautta kuin pystyin ohjaamaan LEDiä suoraan; joka riittää tarpeisiini. Suurempien virtojen ajamiseksi, paljon kirkkaamman lähdön saavuttamiseksi, välivaihtotransistoreita voitaisiin käyttää yhteisen anodivalon kanssa, jonka anodi on kytketty 5 V: n linjaan. olisi ollut parempi vaihtoehto minulle.

Huomaa, että käytin otsikkoa urosnapeilla ja liitin LED-jalkoihin F-F-hyppyjohtimilla. Tämä piti kokonaiskorkeuden alhaalla. Juotin vastukset puseroiden keskelle. Piirilevyn tai juottoman levyn käyttämättä jättäminen sekä suorakulmaisen mikro-USB-USB-sovittimen käyttö WiFi-sovittimelle teki lopullisesta kokoonpanosta melko kompaktin.

Hajotinta varten suosittelen pingispallopalloa (on helppo porata reikä, joka on tarpeeksi suuri 5-8-10 mm: n LED-valon asettamiseksi paikalleen). Tai leikkaa LED -lampun yläosa (joka käyttää muovista hajotinta). Merkitse tähän viiva, jossa on hieno terävä terä, johon haluat leikata, ja käytä Dremelin kaltaista työkalua, jossa on ohut katkaisulaite. Halutessasi voit käyttää mukavaa pientä leikattua lasipurkkia tai juomalasia. Kun olet asettunut yhteen hajottimeen, liimaa se kotelon yläosaan.

Esittelyissä haluan käyttää kotelon sisään sijoitettua pientä litiumpankkia. Tämä laite näyttää vaikuttavammalta täysin langattomasti. Tietenkin sillä on rajoitettu käyttöaika kyseisessä kokoonpanossa. Normaalikäyttöön käytän vain mikro-USB-seinäsovitinta.

Vaihe 5: Projektiohjelmisto

Projektin ohjelmisto
Projektin ohjelmisto

Käytin kahta ohjelmaa, Node.js -prosessia, joka puhuu lapsiprosessille sen stdin -tietovirran kautta, jotta he voivat kukin tehdä parhaansa ja toimivat itsenäisinä prosesseina omaan tahtiinsa.

Näin tein: Mutta sinun ei tarvitse, koska olen toimittanut tar-gzip-tiedoston, joka sisältää tuloksena olevan tiedostopuun.

NodeJS-palvelinpuolen asennus:

cd ~

mkdir node_rgb cd node_rgb mkdir public

laita "index.html" ja "style.css" hakemistoon "~/node_rgb/public" syötä "rgbDriver.c" ja "rgb_main.js" hakemistoon ~/node_rgb

Käännä/rakenna c -prosessi 'rgbDriver':

cd ~/node_rgb

cc -o rgbDriver rgbDriver.c -lwiringPi -lpthread

Vastaavuuden lataaminen ja laajentaminen

Jos haluat ladata node_rgb.tgz (alla) Pi-Zero-kotihakemistoosi (~ pi), voit tehdä jonkin seuraavista:

  1. Lataa Pi-Zeron GU: n selaimesta Siirrä tiedosto kohteeseen ~ pi/
  2. Pääteikkunassa, joka on yhteydessä sinuun Pi-Zero: cd ~ piwget

    mv FZBF9BDIL6VBHKF.tgz rgb_node.tgz

  3. Lataa se pöytätietokoneesi selaimesta ja kopioi se WinSCP: llä Pi-Zeron ~ pi-hakemistoon

Kun olet suorittanut #1 2 tai 3 yllä…

cd ~

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

Tuloksena olevaa suoritettavaa (ylhäältä) 'rgbDriver' voidaan käyttää Node.js -käyttöliittymäprosessista riippumatta.

Varmista, että tämä ohjain ja laitteisto toimivat, syöttämällä ohjaimelle kolmen arvon (0–255) sarjat välilyönnillä erotettuna. Kuten 'echo 255 0 0 |./rgbDriver 'punaiselle tai' echo 0255 0 |./rgbDriver 'vihreälle. Huomaa, että “./” kehottaa käyttöjärjestelmää löytämään ohjelmamme”rgbDriver” nykyisestä hakemistosta. Kun annat ^c (cntl-c) pysäyttääksesi ohjaimen, ledi voi jäädä palamaan. Vaihtoehtoisesti voit syöttää sen arvoja vuorovaikutteisesti. Kokeile kirjoittaa komentoriviltä nämä rivit peräkkäin ja katso LED -valoa.

./rgbAjuri

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

Varmista, että sinulla ei ole kahta näistä prosesseista rinnakkain.

Käynnistääksesi koko ohjelmistosovelluspaketin, mukaan lukien Node.js -palvelin, käytä tätä komentoa:

sudo -solmu rgb_main.js

Käytä sitten cntl-c, kun haluat pysäyttää Node.js-palvelimen

sudo -solmu rgb_main.js &

jotta se ajettaisiin taka -alalle, mutta sitten sinun on käytettävä 'sudo kill -9 pid' -komentoa sen pysäyttämiseen. Jos tämä komento näyttää sinulle vieraalta, tarkista näiden komentojen tulos: 'man kill' ja 'man sudo'.

Käytä selainta työpöydälläsi, tablet -laitteellasi tai puhelimellasi, joka on yhdistetty paikalliseen verkkoon. Siirry osoitteeseen https:// raspberrypi: 8080/tai jos se ei toimi, käytä laitteen ip-osoitetta (saatu cmd 'ifconfig'), esimerkiksi 192.168.1.15 ja porttimääritys: 8080 tai jos käytät Pi-Zero-laitetta GUI: localhost: 8080 toimii.

Käytä RGB-liukusäätimiä avautuvalla sivulla ja katso, kuinka RGB-LED-lamppu seuraa perässä.

Muita hyödyllisiä komentoja Huomaa, että jos päädyt käyttämään useampaa kuin yhtä rgbDriver -ajuria kerralla, saat todennäköisesti arvaamatonta käyttäytymistä. Jos yrität suorittaa toisen kopion rgb_main.js -tiedostosta, se poistuu virheestä.

Tämä komento luettelee kaikki asiaan liittyvät prosessit:

ps aux | grep rgb

Tämä komento tappaa kaikki nodeJS -prosessit yhdessä rgbDriver -aliprosessien kanssa:

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

Itsenäinen toiminta

Jos haluat, että Pi-Zero käynnistää Node.js-palvelinsovelluksen, kun se käynnistyy… käyttämällä suosikkieditoriasi (esim. Nano ~/.bash_profile), kirjoita seuraavat rivit ja tallenna tiedosto ~/.bash_profile

cd -solmu_rgb

sudo -solmu rgb_main.js &

Välttääksesi häiritseviä virheilmoituksia avattaessa pääteikkunaa, käytä ehdollista koodausta, kuten komentotiedostoa start_rgb -tiedostossa

Kun Pi-Zero toimii sulautettuna, ilman näppäimistöä, hiirtä tai näyttöä; graafinen käyttöliittymä vie minimaalisen suorittimen ajan, koska käyttäjän vuorovaikutusta ei tapahdu. En poista käytöstä automaattista graafista käyttöliittymää, koska Pi-Zerolla on tässä tapauksessa enemmän resursseja kuin tarvitaan; ja pidän siitä, että voin liittää muutaman kaapelin ja käyttää sitä milloin tahansa tulevaisuudessa. Tämä ei kuitenkaan ole välttämätöntä, koska voit käyttää tarvittavaa huoltoa SSH -etäpäätteen (esim. PuTTY) avulla.

Sen käyttäminen tapahtumamonitorina

Tein verkkosivun Dow Jones -indeksin päivittäisen muutoksen seuraamiseksi. Sen lähdettä voidaan käyttää ohjeena omalle sivullesi, joka käyttää joitain verkkotietoja ja ohjaa Pi-Zero-ilmaisinta vastaavasti. Tämä sivu saa (json) tiedot Googlen verkkopalvelusta. Verkkopalveluita on monia muotoja, joten sinun on tutkittava sitä, jota haluat käyttää JavaScript -koodin määrittämiseen sen käyttämiseksi.

Jos haluat käyttää laitettasi, kuten minäkin, erillisenä Dow-indeksin muutosilmaisimena, lisää nämä rivit ~/.bash_profile-tiedoston loppuun tai halutulla SSH: lla ja anna toinen komentorivi. Jos haluat myöhemmin käyttää kauko -ohjainta "tappaa -9", tuloksena oleva epiphany -selainprosessi.

nukkua 20

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

Merkkivalo palaa vaaleanharmaana, kun arvo on 0. Se muuttuu yhä vihreämmäksi korkeammilla arvoilla. Se on kirkkain puhdas vihreä noin 250 ° C: ssa. Korkeammat arvot aiheuttavat aluksi matalan välähdyksen ja syvimmän välähdyksen noin 500 ° C: ssa.

PÄIVITYS Toukokuu 2018

Olen luonut uuden verkkosivun (SolarStorm_devCon.html, liitteenä.txt -tiedostona, koska.html -tiedosto ei lataudu), joka kerää GeoMagnetic -myrskytietoja (jotka voivat ennustaa tuhoisan CME: n, EMP: n) ja käyttää sitä värin esittämiseen asteikko, joka heijastaa eräänlaista Geo-Stormin DevCon-indeksiä. osoittaa katastrofin mahdollisuuden avaruusolosuhteista, oletettavasti auringonpurkauksista tai koronaalisesta massanpoistosta (CME) johtuvan sähkömagneettisen pulssin (EMP) vuoksi. Käytä sitä kuten käyttäisit "Dow_Jones_Index.html".

Vaihe 6: Verkkosivujen etähallinta

Image
Image

Tässä vaiheessa voit ohjata IOT -värilamppua mistä tahansa paikallisverkostasi. Kuinka sen tekeminen näkyviin julkisella Internetillä ei ole osa tätä ohjeistusta. Jos määrität julkisen IP -osoitteen laitteellesi, sinun on käytä tätä IP -osoitetta sivusi JavaScriptin avoimen socket -komennossa (esim. ~/node_rgb/public/index.html)

Aion käyttää Pi-Zero IOT -laitettani reaaliaikaisena värin ilmaisimena päivän muutokselle Dow Jones -indeksissä. Olen luonut sivun, joka tekee tämän, joka saa json -tiedot osoitteesta google.com/finance ja lisäksi muutamia verkkosivuja, jotka osoittavat tämän pienen IOT -laitteen monenlaisia käyttötarkoituksia. isännöi nykyisen julkisen verkkopalvelimeni sivuja (tällä hetkellä @ 71.84.135.81 eli https://raspi.ddns01.com/ kun ilmainen dynaaminen verkkotunnuspalvelin toimii), joka toimii alkuperäisessä versiossa B Raspberry-Pi.

Etäsivujen koodissa avasin pistorasiayhteydet osoitteeseen 192.168.1.41:8080. Jos haluat tehdä samoin, noudata ohjeita, jotka on määritetty määrittämällä vadelma-pi-wifi-yhteydellä ja a-staattinen-ip otsikon: Staattinen IP-osoite alla., nämä verkkosivustoltani avatut sivut kommunikoivat laitteesi kanssa, koska yhteys tehdään asiakaspuolelta.

Tässä ovat sivut, joilla testasin ja käytin Pi-Zero IOT -laitelaitettani. Jos näytät nämä sivut (https://71.84.135.81/iot/rgbLamp/ eli https://raspi.ddns01.com/iot/rgbLamp/ tai jokin tällä sivulla kehystetty sivu), asiakaspuolen JavaScript näyttää ajaa luomaasi IOT -valoa (koska se toimii tällä URL -osoitteella”192.168.1.41:8080”) Jos haluat, voit kopioida minkä tahansa sivun lähteen ja muokata sitä mieleiseksesi.

Ensimmäisellä sivulla voit asettaa laitteellesi minkä tahansa värin. LED -lamppu ja verkkosivulla näkyvä väri seuraavat melko hyvin. Käytettyjä vastusarvoja voidaan säätää (samoin kuin näyttöä), jotta ne vastaavat toisiaan paremmin. Käytin vähän tai ei ollenkaan aikaa varmistaakseni, että ne sopivat yhteen. Tämä sivu päivittää värin aina, kun joku muu muuttaa väriä ja palvelin lähettää päivitetyn tietosanoman.

Yksi sivu on yksinkertainen painikkeilla ohjattu liikennevalo.

On sivu, joka on suunniteltu seuraamaan urheilukilpailuja (esim. Jalkapallo, koripallo, baseball), vaaleja tai jopa mukautettu rahankeräilijälle tai DEFCON -hälytystason ilmaisimelle. Pisteet (tai sitoutuneet vaaliäänet) voitaisiin saada automaattisesti verkkopalvelusta tai kaapata muilta verkkosivuilta. Minulla ei ole automaattista syötettä, joka ohjaa Contest_demo -sivua. Joku, jolla on oikea osaaminen, voisi lisätä tehonkuljettajan käyttämään suuritehoisia LED-tulovaloja ja uimaan huoneen (tai urheilubaarin) joukkueen värillä, kun he ovat edessä. Valitettavasti olen liian myöhässä tämän ohjeen kanssa tämän vuoden superkulho-puolueille, mutta ajoissa vuoden 2016 vaaleihin.

Sitten on sivu, joka on samanlainen kuin se, jota käytän laitteeni muuttamiseen Dow Jones -seurantaindikaattoriksi. Liukusäädin ja painikkeet ovat vain DJI -esittelysivulla esittelyä varten. Tämän sivun lähteessä on koodi, jonka olen kehittänyt värjäämään vihreän näytön inspiroiman kuvan; tarpeeksi kommentteja, joista saatat myös pitää hyötyä.

Vain ensimmäinen näistä neljästä sivusta (yhdessä Pi-Zero-pohjaisen index.html-sivun kanssa) kuuntelee palvelimen päivitysviestejä ja päivittyy sen mukaisesti. Kaikki muu lähetetään vain palvelimelle.

Suositeltava: