Ostatnio byłem trochę zajęty... zabawą z Raspberry Pi :) Tak... myślę, że zmotywowało mnie to do głębszego zgłębiania nodejs/expressjs.
Na początku musiałem zainstalować system na karcie SD. Pobrałem Raspbian (tutaj) i zainstalowałem Jessie z Xwindows.(tutaj znajdziesz informacje jak to zainstalować) Nie było to zbyt stabilne, ponieważ za każdym razem gdy instalowałem node i VNC, system się zawieszał po prostym restarcie. Następnie musiałem go ponownie zainstalować drugi raz / trzeci raz / czwarty raz... Byłem sfrustrowany i zainstalowałem prostą wersję Raspbian - Lite. Ta wersja jest bardziej stabilna i od kiedy ją zainstalowałem, nie potrzebowałem żadnej reinstalacji systemu. I w końcu
System jest stabilny!
Co było dalej? Instalacja Node.js! Potrzebujesz połączyć się z raspberry przez SSH. Otwórz terminal i wpisz:
ssh pi@<IP_of_RaspberryPI>
Zostaniesz poproszony o hasło. Musisz wpisać (dopóki nie zmienisz hasła administratora):
raspberry
A teraz możesz rozpocząć instalację node.js
sudo apt-get install node
Następnie zainstaluj NPM:
sudo apt-get install npm
Krótka wersja instalacji to:
sudo apt-get install node npm
Ożywmy GPIO!
Stwórzmy projekt node:
npm init
Następnie będziesz potrzebował zainstalować bibliotekę onoff:
npm i onoff --save
Pomoże ci to włączać / wyłączać piny GPIO. Aby zobaczyć jak ponumerowane są PINy w RPi, sprawdźmy ten obrazek:
Jak widzisz, nie ma to logicznej kolejności :) Ożywmy to! Stwórzmy plik on.js
var GPIO = require('onoff').Gpio,
led = new GPIO(18, 'out'),
led.writeSync(1);
Teraz uruchom:
node on.js
Łatwo, gdy chcesz wyłączyć LED, wystarczy zmienić kod i w miejscu 1 wstawić 0 tak:
var GPIO = require('onoff').Gpio,
led = new GPIO(18, 'out'),
led.writeSync(0);
Automatyczny restart aplikacji Node.js
Jeśli pracujesz nad jednym plikiem w node.js i nie chcesz restartować aplikacji node za każdym razem gdy zmieniasz kod w pliku, po prostu zainstaluj supervisor:
npm i supervisor -g
Następnie możesz uruchomić aplikację z supervisorem:
supervisor app.js
Ok, więc co możesz zrobić dalej? Stwórzmy jakiś efekt świetlny. Utwórz nowy plik i dodaj ten kod:
var GPIO = require('onoff').Gpio,
led04 = new GPIO(4, 'out'),
led05 = new GPIO(5, 'out'),
led06 = new GPIO(6, 'out'),
led07 = new GPIO(7, 'out'),
led08 = new GPIO(8, 'out');
var leds = [led04, led05, led06, led07, led08],
counter = 0;
console.log(leds.length);
setInterval(function() {
leds.forEach(function(currentValue) {
currentValue.writeSync(0);
});
leds[counter].writeSync(1);
counter++;
if (counter >= (leds.length)) counter = 0;
console.log(counter);
}, 300);
Więc co teraz się dzieje? najpierw led04 zostanie włączony, potem 04 zostanie wyłączony a 05 włączony. Następny krok 05 wyłączony 06 włączony. Potem 06 wyłączony 07 włączony. Potem 07 wyłączony 08 włączony. Potem 04 włączony 08 wyłączony. Zaczynamy od kroku 01 :) Jak widać na wideo:
https://www.youtube.com/embed/ULER9V59pHY
Jak widzisz, to całkiem fajny efekt migania :) W następnej części postaram się podzielić informacjami jak dodać express do tego projektu i zacząć łączyć się z serwerem z urządzeń zewnętrznych.
Możesz zobaczyć pełny projekt na Github. https://github.com/pjsikora/pixpress





