Odată cu apariția mișcării maker-Maker Faire, imprimante 3D, roboți DIY, droni și așa mai departe - popularitatea lui Arduino, un kit open-source, bazat pe microcontrolere, a transformat mulți ingineri software în hackeri hardware. Puteți conecta un computer Arduino la computer printr-un cablu USB, descărcați IDE-ul și boom-ul: sunteți gata să plecați.
Cu toate acestea, văd mulți ingineri web care se simt părăsiți, deoarece Sketch, limbajul bazat pe C, necesar pentru programarea unui placă Arduino, nu este ceva ce dezvoltatorii web se simt confortabil. Dar dacă puteți utiliza JavaScript, o limbă pe care o cunoașteți deja? Nu vrei să te joci cu unul?
În acest tutorial, vă vom arăta cum să începeți cu Arduino utilizând Node.js și voi trece prin prototiparea unei aplicații Internet de obiecte folosind API-urile JavaScript ale PubNub.
Acum, aș dori să vă prezint Johnny-Five, un cadru de programare JavaScript Robotics. Johnny-Five este o sursă deschisă și are comunități de dezvoltatori în creștere, deoarece am început să vedem zilele NodeBots conduse de comunitate în întreaga lume.
Deci, să începem cu Johnny-Five pentru a programa Arduino Uno!
Hardware și software de care aveți nevoie:
Mai întâi, conectați dispozitivul dvs. Arduino Uno la computer prin intermediul unui cablu USB. Între timp, descarcă IDE-ul Arduino și instalează-l pe computer. Veți avea nevoie de IDE numai pentru configurarea inițială.
La IDE Arduino, du-te la Instrumente> Port și asigurați-vă că placa dreaptă, Arduino Uno, este conectat la portul corect (tty.usbmodem ... pentru Mac, cu.usbmodem ... pentru Windows).
Johnny-Five comunică cu Arduino folosind protocolul Firmata, deci trebuie să instalați StandardFirmata:
Asigurați-vă că Node.js este instalat pe aparat. Creați un director adecvat cum ar fi js-salut
, și apoi CD
în director și instalați Johnny-five folosind NPM
manager de pachete.
$ npm instala johnny-cinci
Acum, să scriem Hello World cu Johnny-Five. Din moment ce aveți niște hardware strălucitor, veți crea lumea "Hello world" a hardware-ului, care este o lumină LED intermitentă!
LED-urile, scurte pentru diode emițătoare de lumină, sunt polarizate: partea pozitivă (+) se numește anod, iar partea negativă se numește catod. De obicei, fiecare LED are două picioare, iar piciorul mai lung este un știft de anod. Acest lucru este important când construiți un circuit.
Să folosim o convenție de culoare pentru a evita confuzia:
Firele dvs. nu trebuie să fie roșii și negre, dar folosiți două culori diferite, astfel încât să nu vă confundați. Cea mai bună practică este să folosiți roșu pentru a vă conecta la capătul pozitiv (în această practică, utilizați pinul 13) și blocați la masă (pinul GND).
Puteți afla mai multe despre panourile de bord, rezistențele și toate elementele de bază ale componentelor de la Adafruit!
Acum, veți lucra pe partea software-ului.
Creați un fișier, blink.js și inserați codul de mai jos:
var cinci = necesită ("johnny-five"); var bord = nou cinci (); board.on ('pregătit', funcție () var led = nou cinci.Led (13); // pin 13 led.blink (500); // 500ms interval);
Alerga:
$ sudo nod blink.js
LED-ul ar trebui să clipească la un interval de 500ms, altfel verificați atât circuitul, cât și codul.
Ați învățat elementele de bază, așa că hai să mergem mai departe și să învățăm cum să vă facem hardware-ul să vorbească cu Internetul și să vă prototipăm primul dispozitiv inteligent!
Există varietăți de becuri inteligente cu LED-uri, cum ar fi Philips HUE și LIFX. Ele vă permit să schimbați luminozitatea și culoarea de pe smartphone-urile și tabletele dvs..
Acum aveți de gând să prototip ceva similar care vă permite să controlați de la distanță de la un browser cu Arduino și un LED!
Un aspect important aici este transformarea hardware-ului într-un dispozitiv IoT (Internet of Things) conectându-l la Internet. Spre deosebire de Bluetooth, odată ce lucrurile sunt conectate pe Internet, puteți opera LED-ul de oriunde din lume. Pentru a facilita comunicarea cu o conexiune la soclu, vom folosi API-ul PubNub JavaScript!
Rețeaua de fluxuri de date PubNub (DSN) oferă infrastructură globală și vă permite să construiți și să scalați aplicații în timp real și dispozitive IoT cu ușurință. LED-ul inteligent pe care intenționați să îl creați funcționează după cum urmează:
De exemplu, atunci când un utilizator din San Francisco controlează un Arduino din Tokyo:
Operația se face în numai un sfert de secundă.
În acest tutorial, veți face un prototip. Cu toate acestea, dacă utilizați kitul SDK încorporat, puteți crea produse de consum reale, cum ar fi platforma de iluminare inteligentă Emberlight.
Un LED RGB este un LED cu trei intrări care găzduiește culorile roșu, verde și albastru într-un singur pachet. LED-urile RGB combină aceste culori pentru a produce milioane de nuanțe. Fiecare LED vine cu patru picioare - un picior pe culoare - și un catod comun (sau anod). În acest tutorial, veți folosi unul cu un catod comun.
Încercați să construiți circuitul după cum urmează. Spre deosebire de antrenamentul precedent "LED blink", veți folosi pini PWM (Pulse Width Modulation), care sunt notați cu "~" pe placa dvs. Arduino.
Diferența dintre acești ace este în principiu diferența dintre rezultatele analoge și digitale. De exemplu, când conectați un LED la un pin digital, primiți numai două stări: pornit sau oprit. Clipește LED-ul este pur și simplu comuta între cele două stări. Cu toate acestea, pentru a genera milioane de nuanțe utilizând un LED RGB, aveți nevoie de stări între cele două, deci trebuie să utilizați pini analogici PWM.
Conectați LED-ul RGB folosind fire și pană de pâine la pinii Arduino 6, 5 și 3 pentru roșu, verde și respectiv albastru. Pinul comun este conectat la GND.
În această diagramă am folosit rezistențe de 220Ω (pentru roșu) și 330Ω (pentru verde și albastru), deoarece lumina roșie devine prea intensă atunci când se utilizează aceeași rezistență cu verde și albastru. Vă puteți ajusta pe măsură ce lucrați. Dacă doriți să aflați mai multe despre rezistență și cum să calculați cu Legea lui Ohm, vă recomand să învățați de la Adafruit.
Acum, veți construi o interfață web pentru a controla LED-ul.
Utilizați elementul HTML5 pentru a atrage un utilizator să modifice valoarea fiecărui "R", "G" și "B". Fiecare culoare are valori de la 0 la 255 (min = "0" max = "255") și utilizează numai valori întregi prin setarea incrementului cu 1 (pas = "1").
Aceasta controlează intensitatea culorii roșii. Nu voi vorbi despre stilul cu CSS în acest tutorial, dar puteți vedea codul sursă pe GitHub la filiala gh-pages pentru a vedea cum am stilul componentelor vizuale UI.
Apoi vom învăța cum să folosim APN-ul PubNub JavaScript pentru a reflecta datele de culoare de la UI la Arduino.
Obțineți propriile chei API și apoi importați biblioteca JavaScript din CDN sau local.
Inițializați instanța:
var pubnub = PUBNUB (subscribe_key: 'you_subscribe_key', publish_key: 'your_publish_key');
Să trimitem date pentru a schimba culoarea LED-ului, deoarece evenimentul UI este declanșat.
Ascultați evenimentul de modificare al cursorului DOM și trimiteți toate modificările la PubNub cu publica
metodă.
var roșu = document.getElementById ('roșu'); red.addEventListener ('change', function () pubnub.publish (canal: 'smart-led', mesaj: culoare: 'rosu', luminozitate: + this.value);
Puteți folosi orice canal
numele în șir, dar nu uitați să utilizați același nume atunci când primiți datele mai târziu.
Apoi, veți folosi Node.js pentru a primi datele cu hardware!
Este foarte ușor să aprinde LED-urile RGB cu Johnny-Five. A instala johnny-cinci
cu NPM
, încercați acest cod de mai jos:
var cinci = necesită ("johnny-five"); var condus; () console.log ('ready'); // Inițializați LED-ul RGB led = noul cinci.Led.RGB (pins: // pin numere roșii: 6, verde: 5, albastru: 3); // test led.color (red: 255, albastru: 0, verde: 0); led.on (););
LED-ul este activat în roșu? Dacă nu, verificați codul și circuitul. Dacă nu funcționează încă, este posibil să folosiți un LED anod comun, în loc de catod. Încercați să eliminați ping-ul la GND și rewire la pin 5V.
Acum, a se vedea linia de sub comentariu, // Test
. Veți observa că metoda de culoare specifică culoarea. În acest caz, valoarea pentru roșu este 255, iar celelalte sunt 0, astfel încât LED-ul dvs. să fie pur și simplu roșu.
Cu Johnny-Five, puteți specifica valorile RGB în 0 până la 255, la fel ca proprietatea de culoare CSS. Încercați să modificați valorile și să experimentați culoarea LED-ului!
Apoi, veți modifica dinamic valoarea utilizând datele trimise din interfața browserului.
Pentru a primi datele, utilizați PubNub Abonati-va
metodă.
Instalare pubnub
utilizând NPM
:
$ npm instala publicnub
Inițializați instanța, la fel ca și codul din partea de browser:
var pubnub = necesită ('pubnub') .init (subscribe_key: 'your_subscribe_key', publish_key: 'your_publish_key');
Puteți citi datele accesând același canal la care trimiteți datele. Odată ce datele sunt recepționate, este apelată funcția de apel invers, pentru a putea reflecta valoarea LED-ului.
pubnub.subscribe (canal: 'smart-led', callback: funcția (m) if (led) r = (m.color === 'roșu') m.brightness: r; g = (roșu: r, albastru: b, verde): m.brightness: g; b = (m.color === albastru) g); console.log ("schimbare culoare la ..."); console.log (led.color ()); eroare: functie (err) console.log (err);
Obiectul returnat m
este un mesaj care vine din partea browserului. De exemplu, când valoarea albastră este de 150, obțineți culoare: "albastru", luminozitate: 150
, și atunci când sunt următoarele date culoare: "roșu", luminozitate: 150
, roșu = 150 adaugă la albastru = 150, pentru a face o culoare violet.
Pentru a vedea întregul cod sursă, consultați /node/index.js din sucursala principală GitHub.
Ta-da! Tocmai ați făcut prototipul primului LED inteligent IoT!
Puteți utiliza și alte microcontrolere precum Raspberry Pi cu Johnny-Five și PubNub, deci ar trebui să încercați să creați mai multe aplicații IoT!