- Wat is Node.js?
- Componenten vereist
- Schakelschema
- Node.js Framework instellen
- Johnny-Five Library installeren
- Knipperende LED met Arduino en Node.js
- LED-helderheid regelen met behulp van Arduino en Node.js Webserver
We hebben talloze voorbeelden gezien van het knipperen van een LED met verschillende microcontrollers en verschillende programmeertalen. Vandaag zullen we een zeer populair JavaScript-framework Node.js gebruiken om de LED te besturen die is aangesloten op Arduino Uno. We zullen ook Node.js gebruiken om de helderheid van LED's te regelen vanaf een webpagina met Arduino. Door enkele aanpassingen en met behulp van ESP8266 kan dit worden omgezet in een IoT-project waarbij de LED vanaf elke locatie kan worden bediend.
Wat is Node.js?
De Node.js is een veelgebruikt op JavaScript gebaseerd framework dat is gebouwd op de JavaScript V8-engine van Google Chrome en wordt toegepast bij het ontwikkelen van I / O-intensieve webapplicaties zoals applicaties met één pagina, sites voor videostreaming enz.
We hebben eerder een informatieve tutorial gedaan over Aan de slag met Node.js en Raspberry Pi om een LED te besturen. In deze tutorial volgen we de vergelijkbare aanpak, dwz de LED wordt bestuurd met behulp van twee methoden, zoals:
- Eenvoudige LED knippert door een JavaScript-code te schrijven in het Node.js-framework.
- LED-helderheidsregeling met behulp van Node.js-framework en een webinterface vanuit elke browser: de Arduino UNO werkt als een webserver en HTML-webpagina wordt gehost op een pc of laptop.
Componenten vereist
Hardware:
- Arduino UNO-bord
- LED
- Weerstand
Software:
- Arduino IDE: Voor het uploaden van sketch naar Arduino UNO Board.
- Firmata: Het is een protocol voor communicatie met verschillende microcontrollers van software op een computer, smartphone, enz. De Firmata-firmware kan worden geladen in elk microcontrollerbord (zoals Arduino, Teensy) en kan met elke laptop, pc of smartphone praten. Firmata Library wordt geleverd met Arduino IDE, dus downloaden van waar dan ook is niet nodig. We hebben een tutorial gedaan over het besturen van Arduino met Raspberry Pi met behulp van pyFirmata.
- Johnny-Five: Johnny-Five is het op JavaScript gebaseerde robotica- en IoT-platform dat wordt gebruikt om codes in JavaScript te schrijven en wordt gebruikt om een brug te slaan tussen de Arduino-borden en de computer. Johnny-Five is getest met een verscheidenheid aan Arduino-compatibele boards zoals Arduino UNO, NANO, Promini, etc. In deze tutorial moet de Johnny-Five-bibliotheek worden gedownload om alle functies te kunnen gebruiken. De installatiehandleiding wordt later in deze tutorial uitgelegd.
Schakelschema
Het schakelschema is erg basic, we hoeven alleen een LED met Arduino te verbinden.Node.js Framework instellen
Voordat u met het coderen en ontwikkelen begint, moet de Node.js worden gedownload en ingesteld. Volg de eenvoudige stappen om de Node.js-omgeving te downloaden.
Stap 1: - Download het.exe-bestand van Node.js van de officiële website.
Stap 2: - Start het.exe-bestand en volg de instructies in het installatieprogramma.
Stap 3: - Start uw computer opnieuw op zoals aanbevolen in het Node.js-document en ook om alle functies van Node.js te gebruiken
Stap 4: - Om te controleren of het knooppunt is geïnstalleerd, opent u de opdrachtprompt en typt u Node –v
Stap 5: - De versie van Node.js wordt weergegeven om aan te geven dat Node.js is geïnstalleerd.
Johnny-Five Library installeren
Maak nu, na het downloaden van Node.js, een nieuwe map aan met de naam "LED_Control" in Documenten om alle projectbestanden op één plaats te bewaren. Elk projectbestand wordt bewaard in de map " LED_Control ". Download nu de Johnny-Five Library in de map " LED_Control ". Volg onderstaande stappen om te downloaden:
Stap 1: - Open de opdrachtprompt
Stap 2: - Ga naar de map " LED_Control " door de opdracht ' cd ' te volgen.
Stap 3: - Voer het commando ' npm install johnny-five' uit
Stap 4: - Hiermee worden alle afhankelijkheden van Johnny-Five geïnstalleerd.
Stap 5: - Installeer ook de nodige bibliotheken die in deze tutorial worden gebruikt om de helderheid van de LED te regelen. Er worden hier drie bibliotheken gebruikt:
- express: HTTP-server wrapper
- socket.i o: WebSockets-bibliotheek
- serialpor t: wrapper voor seriële poort
Stap 5: - Voer de onderstaande opdrachten een voor een uit om deze drie bibliotheken te installeren.
npm install express npm install socket.io npm install seriële poort
Zoals eerder verteld is het project opgedeeld in twee delen:
- Ten eerste, Arduino Knipperende LED met Node.js
- Ten tweede, het regelen van de helderheid van de led via de webinterface met behulp van Arduino en Node.js.
Knipperende LED met Arduino en Node.js
Om LED te laten knipperen, moet de Arduino zijn ingesteld om te communiceren met de computer.
Arduino UNO instellen voor knipperende LED:
Om Arduino UNO het commando van Laptop naar Control LED te laten accepteren, moet de Firmata-firmware in de Arduino UNO worden geladen. Volg deze eenvoudige stappen om de Firmata-firmware te laden:
- Sluit de Arduino UNO aan met een USB-kabel
- Open Arduino IDE en selecteer Arduino UNO-bord (als u een ander bord gebruikt, selecteert u het betreffende bord) uit Tools.
- Selecteer de respectieve COM-poort van de aangesloten Arduino UNO
- Zoek nu de Firmata-schets via Menu -> Bestand -> Voorbeelden -> Firmata -> StandardFirmata.
- Upload de "StandardFirmata" -schets door naar Bestand -> Uploaden te gaan.
Hierdoor wordt de Firmata Sketch in Arduino UNO geladen en nu is de Arduino UNO klaar om elke opdracht van de computer te accepteren.
Node.js-programma schrijven voor knipperende LED:
Om een Node.js-programma te schrijven, opent u een teksteditor (Kladblok, Notepad ++, enz.) En plakt u de 'blink_led'- code die aan het einde van deze tutorial is bijgevoegd en slaat u deze op met de extensie '.js ', dwz (blink_led.js) in de eerder aangemaakte map "LED_Control". We zullen belangrijke stappen bespreken in het codebestand blink_led.js.
Definieer in eerste instantie de pin van de microcontroller waar led is aangesloten. In dit voorbeeld is de LED verbonden met Pin 5 van Arduino UNO. De 'var' in Node.js staat voor variabele declaratie.
var led_pin = 5;
De johnny-five module moet worden meegeleverd en het bord moet worden geselecteerd. De modules in Node.js zijn bibliotheken. De functie ' vereisen () ' zal toegang krijgen tot de module.
var johnny_five = vereisen ("johnny-five"); var arduino_board = nieuwe johnny_five.Board ();
De instructie console.log is vergelijkbaar met de instructie print en er wordt een bericht afgedrukt. En de LED-pin is ingesteld op de uitvoermodus en de gedefinieerde vertraging wordt gegeven om de led te knipperen.
console.log ("LED is begonnen te knipperen!"); var led = nieuwe johnny_five.Led (led_pin); led.blink (100);
Volg de onderstaande stappen om het programma uit te voeren:
- Open de opdrachtprompt
- Lokaliseer de map "LED_Control" door de opdracht 'cd' te volgen
- Voer de opdracht 'Node led_blink.js' uit. Als het succesvol is uitgevoerd, wordt "LED is begonnen met knipperen!" zoals weergegeven in de afbeelding hieronder .
- De led begint te knipperen in de Arduino UNO Pin 5.
- En hiermee is het eerste deel van onze tutorial voltooid, dwz Knipperende LED met Node.js
LED-helderheid regelen met behulp van Arduino en Node.js Webserver
Vergelijkbaar met het knipperen van een LED met Node.js, zal deze sectie ook een aantal onderdelen bevatten, namelijk het opzetten van Arduino UNO, het opzetten van een webinterface en het schrijven van een Node.js-programma.
Arduino UNO instellen om de helderheid van de LED te regelen:
Om de Arduino UNO in te stellen, upload je simpelweg de sketch " arduino_control.ino " naar het Arduino UNO-bord en klaar is Kees . Hiermee wordt het Arduino-bord opgezet. U kunt hier de volledige code met HTML-bestanden downloaden. De code " arduino_control.ino" heeft de volgende belangrijke stappen.
Aanvankelijk is de baudrate vastgesteld op 9600.
Serial.begin (9600);
De seriële poort zoekt altijd naar inkomende bytes en de byte wordt naar pin 5 geschreven, wat een PWM-pin is.
while (! Serial.available ()); analogWrite (5, Serial.read ());
Dat is het. Hierdoor wordt de Arduino zo ingesteld dat de byte aan de PWM- pin wordt vergrendeld en de helderheid van de LED wordt gewijzigd.
Webinterface instellen:
Om de helderheid van led te regelen met behulp van een webinterface, wordt een klein stukje HTML-code geschreven om een interface in de browser te hebben. Volg de onderstaande eenvoudige stappen om de interface te hebben:
- Maak een nieuwe map met de naam "public" in de eerder gemaakte map "LED_Control".
- Download nu de bestanden "index.html" en "style.css" en verplaats beide bestanden naar de map "public" die u in de eerste stap hierboven hebt gemaakt. Bestanden kunnen hier worden gedownload.
Hiermee wordt een schuifregelaar op de webpagina gemaakt om de helderheid van LED's te regelen met Node.js en Arduino.
Het besturen van een LED vanaf een webpagina is interessant om te leren en het kan worden gedaan met een andere microcontroller door een webserver te maken en de webpagina op een webserver te hosten. Bekijk hier alle webserver gerelateerde projecten.
Node.js-programma schrijven om de helderheid van de LED te regelen:
De volgende stap is het schrijven van de sketch "helderheid_control.js" met Node.js en het uitvoeren van de code. De uitvoering van de code zal een beetje lijken op het knipperen van een LED met Node.js.
Om een Node.js-programma te schrijven, opent u een teksteditor (Kladblok, Notepad ++, enz.) En plakt u de 'helderheid_control'- code die aan het einde van deze tutorial is bijgevoegd en slaat u deze op met de extensie '.js ', dwz (helderheid_control.js) in de eerder aangemaakte map "LED_Control". U kunt de code hier ook downloaden.
Vergelijkbaar met het Blink Led Node.js-programma, zal deze sectie ook modules (bibliotheek) gebruiken. Voeg de 'express', 'http' en 'seriële poort' module toe.
var express = vereisen ('express'); app = express (); server = vereisen ('http'). createServer (app); io = vereisen ('socket.io'). listen (server); var SerialPort = vereisen ("serialport") //. SerialPort
Stel nu de COM-poort en baudrate in. Merk op dat het in Windows altijd COM is met extensie van nummer (COM6, COM4, COM24 etc.), dus stel hieronder zoals vereist in na '/'. Stel ook buadrate in.
var serialPort = nieuwe SerialPort ("/ COM4", {baudRate: 9600});
Begin met luisteren naar de server op poort 8080.
server.listen (8080);
Stel de helderheid aanvankelijk in op 0. Vergrendel vervolgens de helderheidsgegevens naar IO met sockets-module, wat een websocket-module is. De gegevens worden ontvangen via de webinterface met behulp van het socketprotocol.
io.sockets.on ('verbinding', functie (socket) { socket.on ('led', function (data) { helderheid = data.value; var buf = nieuwe buffer (1); buf.writeUInt8 (helderheid, 0); serialPort.write (buf);
Zend nu de LED-helderheidswaarde uit die van socket naar LED-pin is gekomen.
io.sockets.emit ('led', {waarde: helderheid}); }); socket.emit ('led', {waarde: helderheid}); });
Om nu te debuggen, voegt u aan het einde een afdrukinstructie toe. Console.log is een afdrukinstructie in Node.js.
console.log ("Webserver gestart, ga naar 'http: // localhost: 8080' in uw browser.");
Voer nu het programma uit door de onderstaande stappen te volgen:
- Open de opdrachtprompt
- Lokaliseer de map "LED_Control" door de opdracht 'cd' te volgen
- Voer de opdracht 'Knooppunt helderheid_control.js' uit. Als het met succes is uitgevoerd, wordt "Web Server Started ga naar" http: // localhost: 8080 "in uw browser weergegeven." net onder het commando .
- Ga nu naar je browser en typ "localhost: 8080" in de url.
- Verplaats de schuifregelaar van 0-255 waarden om de helderheid te wijzigen.
De volledige code en werkvideo van beide secties is hieronder bijgevoegd. Ook als u enige twijfel of suggestie heeft, kunt u ons bereiken via het onderstaande forum of commentaar. Alle codebestanden kunnen hier ook worden gedownload.