- Vereiste materialen
- Node.js installeren op Raspberry Pi
- Knipperende LED met Node.js
- Node.js LED Knippert script en uitleg
- Schakelschema voor het knipperen van een LED met Node.js
- Raspberry Pi
In eerdere Raspberry Pi-zelfstudies hebben we veel verschillende programmeertalen en software gebruikt om Raspberry Pi te besturen, waaronder Python, embedded C, Flask enz. Om de horizon van een krachtig Raspberry Pi-bord uit te breiden, zullen we vandaag een zeer populaire op JavaScript gebaseerde omgeving gebruiken (.js) om Raspberry Pi GPIO's zowel lokaal als wereldwijd te besturen door het in te stellen als webserver. Aanvankelijk werd Node.js ontwikkeld voor Google Chrome, maar later werd het open source door Google.
In deze tutorial zullen we een LED besturen, verbonden met Raspberry Pi, met behulp van twee methoden
- Eerst zullen we gewoon een JavaScript-code schrijven met Node.js om de LED te laten knipperen
- Bij de tweede methode maken we een HTML-pagina met twee knoppen om de LED in en uit te schakelen. Deze HTML-webpagina wordt gehost op Raspberry Pi en kan in elke webbrowser worden geopend. Dus hier zal Raspberry Pi optreden als webserver
Vereiste materialen
- Raspberry pi-bord met Raspbian erin geïnstalleerd
- LED
In deze tutorial gebruik ik External Monitor met een HDMI-kabel om verbinding te maken met Raspberry Pi. Als u geen monitor heeft, kunt u SSH-client (Putty) of VNC-server gebruiken om verbinding te maken met Raspberry pi met behulp van een laptop of computer. Als u problemen ondervindt, volg dan onze Gids voor Staren met Raspberry Pi.
Node.js installeren op Raspberry Pi
We zullen Node.js op ons bord installeren met behulp van de volgende opdrachten.
Stap 1: - Controleer eerst de armversie van uw Raspberry Pi-bord met dit commando.
uname -m
In mijn geval is versie 7.
Stap 2: - Download het installatieprogramma door deze link in de terminal te kopiëren. Vergeet niet de versie te wijzigen via de onderstaande link.
wget https://nodejs.org/dist/v4.6.1/node-v4.6.1-linux-armvl.tar.gz
Stap 3: - Pak de bestanden uit met de onderstaande opdracht
tar -xvf knooppunt-v4.6.1-linux-armvl.tar.gz
Stap 4: - Voer ten slotte deze opdrachten uit om de belangrijke bestanden ook aan lokale mappen toe te voegen.
cd node-v4.3.1-linux-armvl sudo cp -R * / usr / local /
Node.js is nu geïnstalleerd in je Raspberry Pi. Controleer de versie van het knooppunt voor bevestiging met deze opdracht.
knooppunt -versie
Voordat we een Node.js-server gaan maken, zullen we eerst zien hoe we een script kunnen schrijven om een LED te laten knipperen met node.js (npm onoff-pakket).
Knipperende LED met Node.js
Om de GPIO op de Raspberry Pi te besturen met Node.js, zullen we de onoff-module gebruiken.
We zullen npm- pakketbeheerder gebruiken om de onoff-module te installeren met behulp van het onderstaande commando
npm install onoff
Nu gaan we een script schrijven voor het knipperen van led. Open de nano- editor en geef de naam aan het bestand met de opdracht
nano blink_led.js
Als u een beginner bent in Node.js en zijn pakketten, kunt u de documentatie van npm raadplegen voor een beter begrip van het script.
Node.js LED Knippert script en uitleg
Declareer eerst de variabelen voor led, delay en GPIO. Ik gebruik Raspberry Pi GPIO 4 om de LED aan te sluiten.
var Gpio = vereisen ('onoff'). Gpio; var LED = nieuwe Gpio (4, 'uit'); var blinkInterval = setInterval (blinkLED, 500);
Nu gaan we een functie maken om het knipperen te starten.
functie blinkLED () {if (LED.readSync () === 0) {LED.writeSync (1); // zet output op 1, dwz zet led aan} else {LED.writeSync (0); // zet output op 0, dwz zet led uit }}
Maak op dezelfde manier een functie om het knipperen te stoppen
functie endBlink () {clearInterval (blinkInterval); LED.writeSync (0); LED.unexport (); // Unexport GPIO om bronnen vrij te maken} setTimeout (endBlink, 10000);
De volledige Node.js-code voor knipperende led wordt aan het einde van deze tutorial gegeven. Dus kopieer en plak de code in het bestand led_blink.js , dat we eerder hebben gemaakt met de nano- opdracht, sla het bestand op met Ctrl + x, druk vervolgens op Y en druk op enter.
Om het script uit te voeren, opent u de terminal en typt u de onderstaande opdracht:
knooppunt blink_led.js
U zult zien dat de LED 10 seconden knippert en daarna stopt met knipperen. Bekijk de volledige werking in de video aan het einde van deze tutorial.
Schakelschema voor het knipperen van een LED met Node.js
Raspberry Pi
Nu, kom bij het interessante deel, hier gaan we onze eigen webserver maken van waaruit we GPIO van Raspberry pi kunnen besturen met behulp van een webpagina.
Hiervoor moeten we eerst een HTML-pagina maken en een script schrijven om een back-end-taak uit te voeren, dwz om de RPi GPIO te besturen.
Stap 1: - Maak een map om alle bestanden op één plaats op te slaan.
mkdir nodejs_server
Stap 2: - Inside the nodejs_server map nog een map maken voor het opslaan van het HTML-bestand.
cd nodejs_server mkdir-weergaven
Stap 3: - Als u afbeeldingen aan uw html-pagina wilt toevoegen, moet u een andere map met de naam public in de hoofddirectory maken, dwz in de map nodejs_server . Maak een map met afbeeldingen in de openbare map en sla alle afbeeldingen op in deze map.
Stap 4: - Nu gaan we een HTML-pagina maken. Ga hiervoor naar de map views en open de nano- teksteditor met de bestandsnaam index.ejs
Er is niets deftigs in het script. Het is gewoon een HTML-bestand om aan en uit-knop te maken.
Kopieer en plak de onderstaande HTML-code in de nano- teksteditor en sla deze op.
Welkom bij Nodejs Server
Led-status: <% = status%>Stap 5: - Nu moeten we JavaScript-code schrijven. We gebruiken node express framework om te reageren op http-verzoeken die door de gebruiker worden uitgevoerd.
U kunt de link volgen voor meer informatie over Node Express.
Open terminal en een open nano teksteditor met index.js bestandsnaam in nodejs_server map, en kopieer en plak de onderstaande java script code en dit bestand.
var express = vereisen ('express'); var app = express (); var path = vereisen ('pad'); var gpio = vereisen ('rpi-gpio'); gpio.setup (7, gpio.DIR_OUT); app.set ('bekijk engine', 'ejs'); app.use (express.static (path.join (__ dirname, 'public'))); console.log (path.join (__ dirname, 'public')); app.get ('/', function (req, res) { res.render ('index', {status: "Press Button"}); }); app.post ('/ led / on', function (req, res) { gpio.write (7, true, function (err) { if (err) throw err; console.log ('Written True to pin'); console.log (path.join (__ dirname, 'public')); return res.render ('index',{status: "Led is aan"}); }); }); app.post ('/ led / off', function (req, res) { gpio.write (7, false, function (err) { if (err) throw err; console.log ('Written False to pin'); console.log (path.join (__ dirname, 'public')); return res.render ('index', {status: "Led is Off"}); }); }); app.listen (3000, function () { console.log ('Server gestart op poort: 3000!') })
Stap 6: - In de map nodejs_server moeten we de volgende opdracht uitvoeren om bibliotheken van node.js te installeren
npm installeren
Stap 7: - Nu is uw server klaar om te werken. Voer de volgende opdracht uit in de directory nodejs_server om de lokale server te starten
knooppunt index.js
u ziet een bericht in de terminal dat uw server is gestart op de gedefinieerde poort.
Stap 8: - Open nu uw browser en open de Raspberry Pi-URL met het poortnummer, dwz raspberrypi: 3000
Zorg ervoor dat uw Raspberry Pi en laptop waarin u de browser opent, met hetzelfde netwerk zijn verbonden.
U ziet de volgende pagina in de browser.
Druk nu op de LED Aan- knop om de LED aan te zetten en de LED Uit- knop om de LED uit te schakelen.