Med ökningen av tillverkarens rörelse-Maker Faire, 3D-skrivare, DIY-robotar, droner och så vidare-populariteten hos Arduino, en open-source mikrocontroller-baserad kit, har gjort många programvaruingenjörer till hårdvara hackare. Du kan ansluta en Arduino till din dator med en USB-kabel, ladda ner IDE och boom: du är redo att gå.
Men jag ser att många webbingenjörer känner sig borta eftersom Sketch, det C-baserade språket som krävs för att programmera ett Arduino-kort, är inte något webutvecklare känner sig bekväma med. Men vad händer om du kan använda JavaScript, ett språk du redan är bekant med? Vill du inte leka med en?
I den här handledningen visar jag dig hur du kommer igång med Arduino med Node.js, och jag går igenom prototypning av en Internet of Things-applikation med hjälp av PubNubs JavaScript APIs.
Nu vill jag presentera Johnny-Five, en JavaScript Robotics programmeringsram. Johnny-Five är öppen källkod och har växande utvecklingssamhällen, eftersom vi har börjat se community-driven NodeBots Days över hela världen.
Så låt oss börja med Johnny-Five för att programmera Arduino Uno!
Hårdvara och programvara du behöver:
Anslut först din Arduino Uno till din dator med en USB-kabel. Ladda ner Arduino IDE och installera den på din dator. Du behöver bara IDE för den ursprungliga inställningen.
På Arduino IDE, gå till Verktyg> Port och se till att du har rätt styrelse, Arduino Uno, är ansluten till rätt port (tty.usbmodem ... för Mac, cu.usbmodem ... för Windows).
Johnny-Five kommunicerar med Arduino med Firmata-protokollet, så du måste installera StandardFirmata:
Se till att Node.js är installerat på din maskin. Skapa en lämplig katalog som js-hej
, och då CD
i katalogen och installera Johnny-Five med hjälp av npm
paketchef.
$ npm installera johnny-fem
Nu, låt oss skriva Hello World med Johnny-Five. Eftersom du har lite glänsande hårdvara kommer du att skapa "Hej världen" av hårdvara, vilket är en blinkande LED-lampa!
LED, kort för ljusdioder, polariseras: den positiva (+) sidan kallas anoden, och den negativa sidan kallas katoden. Vanligtvis har varje LED två ben, och längre ben är en anodstift. Detta är viktigt när du bygger en krets.
Låt oss använda en färgkonvention för att undvika förvirring:
Dina kablar behöver inte vara röda och svarta, men använda två olika färger så att du inte förvirrar dig själv. Den bästa praxisen är att använda rött för att ansluta till den positiva änden (i denna övning, använd stift 13) och blockera till jord (GND-stift).
Du kan lära dig mer om breadboards, motstånd och alla grunderna i delarna på Adafruit!
Nu ska du jobba på programsidan.
Skapa en fil, blink.js och klistra in koden nedan:
var fem = kräver ('johnny-fem'); var styrelse = nytt fem. Bord (); board.on ("redo", funktion () var ledde = nya fem. Led (13); // pin 13 led.blink (500); // 500ms intervall);
Springa:
$ sudo nod blink.js
Lysdioden ska blinka med ett intervall på 500 ms, annars kontrolleras både kretskoden och koden.
Du har lärt dig grunderna, så låt oss gå vidare och lära dig hur du gör maskinvaran till Internet och prototyper din första smarta enhet!
Det finns sorter av smarta LED-lampor på marknaden, som Philips HUE och LIFX. De låter dig ändra ljusstyrka och färg från dina smartphones och tabletter.
Nu ska du prototypa något liknande som låter dig fjärrkontroll från en webbläsare med Arduino och en LED!
En viktig punkt här gör din hårdvara till en IoT-enhet (Internet of Things) genom att ansluta den till Internet. Till skillnad från Bluetooth, när saker är anslutna på Internet kan du använda din LED från var som helst i världen. För att göra det lätt att kommunicera med en uttag, använder vi PubNub JavaScript API!
PubNub Data Stream Network (DSN) tillhandahåller global infrastruktur, och låter dig enkelt bygga och skala realtidsprogram och IoT-enheter. Den smarta LED du ska skapa fungerar som följer:
Till exempel, när en användare i San Francisco kontrollerar en Arduino i Tokyo:
Operationen är klar på bara en fjärdedel av en sekund.
I den här handledningen ska du göra en prototyp. Men om du använder den inbyggda SDK-enheten, kan du faktiskt bygga riktiga konsumentprodukter, som Emberlights smarta ljusplattform.
En RGB-LED är en tre-i-ett-LED som rymmer röda, gröna och blå färger i en enda förpackning. RGB-lysdioder kombinerar dessa färger för att producera miljontals nyanser. Varje LED kommer med fyra ben - ett ben per färg - och en vanlig katod (eller anod). I denna handledning kommer du att använda en med en vanlig katod.
Försök bygga kretsen enligt följande. Till skillnad från i tidigare "LED blink" -övning, använder du PWM (Pulse Width Modulation) stiften, som betecknas med "~" på ditt Arduino board.
Skillnaden mellan dessa stiften är i grunden skillnaden mellan analoga och digitala resultat. Till exempel, när du ansluter en LED till en digital stift, får du bara två tillstånd: På eller av. Blinkande LED lyser bara de två tillstånden. Men för att generera miljontals nyanser med en RGB-LED behöver du mellan stater, så du måste använda analoga PWM-stiften.
Anslut RGB-ledningen med ledningar och brödbräda till Arduino-stift 6, 5 och 3 för rött, grönt och blått respektive. Den gemensamma stiftet är anslutet till GND.
I det här diagrammet använde jag 220Ω (för rött) och 330Ω (för gröna och blå) motstånd, eftersom rött ljus blir för intensivt när du använder samma motstånd med grönt och blått. Du kan justera när du jobbar. Om du vill lära dig mer om motstånd och hur man beräknar med Ohms lag rekommenderar jag att du lär mig från Adafruit.
Nu ska du bygga ett webgränssnitt för att styra LED-lampan.
Använd HTML5-elementet att rita en glider för att låta en användare ändra värdet för varje "R", "G" och "B". Varje färg har värdena från 0 till 255 (min = "0" max = "255") och använder endast heltalsvärden genom att ställa in ökningen med 1 (steg = "1").
Detta styr intensiteten i den röda färgen. Jag kommer inte prata om styling med CSS i denna handledning, men du kan se källkoden på GitHub på gh-sidoföretaget för att se hur jag utformar UI-visuella komponenter.
Därefter kommer vi lära oss hur du använder PubNub JavaScript API för att återspegla färgdata från UI till Arduino.
Hämta egna API-nycklar, och importera sedan JavaScript-biblioteket från CDN eller lokalt.
Initiera förekomsten:
var pubnub = PUBNUB (subscribe_key: 'you_subscribe_key', publish_key: 'your_publish_key');
Låt oss skicka data för att ändra LED-lampans färg, eftersom UI-händelsen är avfyrade.
Lyssna på förändringshändelsen för skjutreglaget DOM och skicka eventuella ändringar till PubNub med publicera
metod.
var röd = document.getElementById ('röd'); red.addEventListener ('change', function () pubnub.publish (kanal: 'smart-led', meddelande: färg: 'röd', ljusstyrka: + this.value);, false);
Du kan använda någon kanalisera
namn i strängen, men kom ihåg att använda samma namn när du mottar data senare.
Därefter kommer du att använda Node.js för att ta emot data med maskinvara!
Det är väldigt lätt att tända RGB-LED-lampor med Johnny-Five. Att installera johnny-five
med npm
, prova den här koden nedan:
var fem = kräver ('johnny-fem'); var led; 5.Board (). på ('redo', funktion () console.log ('redo'); // Initialisera RGB LED ledde = nya five.Led.RGB (pins: // pin nummer rött: 6, grön: 5, blå: 3; // test led.color (röd: 255, blå: 0, grön: 0); led.on (););
Är din LED släckt i rött? Om inte, kontrollera din kod och krets. Om det fortfarande inte fungerar kan du använda en vanlig anod LED, istället för katod. Prova att ta bort ping till GND och koppla till 5V pin.
Se nu linjen under kommentaren, // test
. Du kommer märka att färgmetoden anger färgen. I det här fallet är värdet för rött 255, och de andra är 0, så att din LED är i ren röd.
Med Johnny-Five kan du ange RGB-värdena i 0 till 255, precis som CSS-färgegenskapen. Försök ändra värdena och experimentera med din LEDs färg!
Därefter ändrar du värdet dynamiskt med data som skickas från webbläsarens användargränssnitt.
För att ta emot data, använd PubNub prenumerera
metod.
Installera pubnub
använder sig av npm
:
$ npm installera pubnub
Initiera förekomsten, precis som webbläsarsidan:
var pubnub = kräver ('pubnub'). init (subscribe_key: 'your_subscribe_key', publish_key: 'your_publish_key');
Du kan läsa data genom att komma åt samma kanal som du skickar data från. När data har tagits emot kallas återuppringningsfunktionen så att du kan återspegla värdet till LED.
pubnub.subscribe (kanal: 'smart-led', återuppringning: funktion (m) om (led) r = (m.color === 'röd')? m.brightness: r; g = (m. färg === 'grön')? m.brightness: g; b = (m.color === 'blå')? m.brightness: b; led.färg (röd: r, blå: b, grön: g); console.log ("färgbyte till ..."); console.log (led.color ()); fel: funktion (err) console.log (err););
Det returnerade objektet m
är ett meddelande som kommer från webbläsarsidan. Till exempel, när värdet av blått är 150 får du färg: 'blå', ljusstyrka: 150
, och då när nästa data är färg: 'röd', ljusstyrka: 150
, den röda = 150 lägger till den blåa = 150, för att göra en lila färg.
För att se hela källkoden, se /node/index.js på GitHubs huvudgren.
Ta-da! Du prototyper bara din första IoT smart LED!
Du kan använda andra mikrokontroller som Raspberry Pi med Johnny-Five och PubNub, så du borde försöka skapa fler IoT-appar!