By Piotr Sikora

  • javascript

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

Categories

Recent Posts

About Me

Piotr Sikora - Process Automation | AI | n8n | Python | JavaScript

Piotr Sikora

Process Automation Specialist

I implement automation that saves time and money, streamlines operations, and increases the predictability of results. Specializing in process automation, AI implementation, and workflow optimization using n8n, Python, and JavaScript.

n8n Workflows

n8n workflow automation templates

Explore my workflow templates on n8n. Ready-to-use automations for blog management, data collection, and AI-powered content processing.

3Workflow Templates

• Auto-Categorize Blog Posts with AI

• Collect LinkedIn Profiles

• Export WordPress Posts for SEO

Podobne artykuły

Odkryj więcej powiązanych treści

Wykorzystaj moc automatycznie wykonywanych obiektów w JavaScript

Czasami będziesz potrzebował stworzyć automatycznie wykonywany obiekt (na przykład w przypadku zdarzeń load/document ready)

Czysty JavaScript: Przewodnik po metodach prywatnych i publicznych

Czy tworzyłeś własne klasy w czystym JavaScript?

Obraz do tabeli HTML. Przekształcanie obrazu w tabelę HTML.

Obraz do tabeli HTML. Przekształcanie obrazu w tabelę HTML.

Usłyszałem bardzo interesującą historię o ulepszeniach w dostarczaniu mailerów.