- Необходими материали
- Инсталиране на Node.js на Raspberry Pi
- Мига светодиод с помощта на Node.js
- Node.js LED мигащ скрипт и обяснение
- Схема за мигане на светодиод с помощта на Node.js
- Raspberry Pi
В предишните уроци за Raspberry Pi използвахме много различни езици за програмиране и софтуер за управление на Raspberry Pi, включително Python, вграден C, Flask и др. За да разширим хоризонта на мощната платка Raspberry Pi, днес ще използваме много популярна среда, базирана на JavaScript (Node.js) за управление на Raspberry Pi GPIO както локално, така и глобално, като го настроите като уеб сървър. Първоначално Node.js е разработен за Google Chrome, но по-късно е с отворен код от Google.
В този урок ще контролираме светодиод, свързан към Raspberry Pi, използвайки два метода
- Първо ще напишем код на JavaScript с помощта на Node.js, за да премигнем светодиода
- Във втория метод ще създадем HTML страница с два бутона за включване и изключване на светодиода. Тази уеб страница в HTML ще бъде хоствана на Raspberry Pi и може да бъде отворена във всеки уеб браузър. Така че Raspberry Pi ще действа като уеб сървър
Необходими материали
- Raspberry pi дъска с инсталиран Raspbian в нея
- LED
В този урок използвам външен монитор с помощта на HDMI кабел за свързване с Raspberry Pi. Ако нямате монитор, можете да използвате SSH клиент (Putty) или VNC сървър, за да се свържете с Raspberry pi с помощта на лаптоп или компютър. Ако откриете някакви затруднения, следвайте нашето Ръководство за разглеждане на Raspberry Pi.
Инсталиране на Node.js на Raspberry Pi
Ще инсталираме Node.js в нашата дъска, като използваме следните команди.
Стъпка 1: - Първо проверете за версията на ръката на вашия малинов пи борд с помощта на тази команда.
uname -m
В моя случай версията е 7.
Стъпка 2: - Изтеглете инсталатора, като копирате тази връзка в терминала. Не забравяйте да промените версията в линка, даден по-долу.
wget https://nodejs.org/dist/v4.6.1/node-v4.6.1-linux-armvl.tar.gz
Стъпка 3: - Извлечете файловете, като използвате командата по-долу
tar -xvf възел-v4.6.1-linux-armvl.tar.gz
Стъпка 4: - И накрая, изпълнете тези команди, за да добавите и важните файлове към локалните директории.
cd node-v4.3.1-linux-armvl sudo cp -R * / usr / local /
Node.js е инсталиран сега във вашия Raspberry Pi. Проверете версията на възела за потвърждение с помощта на тази команда.
възел –версия
Преди да направим Node.js сървър, първо ще видим как да напишем скрипт за мигане на светодиод с помощта на node.js (npm onoff пакет).
Мига светодиод с помощта на Node.js
За да контролираме GPIO на Raspberry Pi с помощта на Node.js, ще използваме модул onoff.
Ще използваме npm диспечер на пакети, за да инсталираме модул onoff, като използваме командата по-долу
npm инсталирайте onoff
Сега ще напишем скрипт за мигане на led. Отворете nano редактора и дайте името на файла с помощта на командата
nano blink_led.js
Ако сте начинаещ в Node.js и неговите пакети, можете да вземете документацията на npm за по-добро разбиране на скрипта.
Node.js LED мигащ скрипт и обяснение
Първо декларирайте променливите за led, delay и GPIO. Използвам Raspberry Pi GPIO 4 за свързване на светодиода.
var Gpio = require ('onoff'). Gpio; var LED = нов Gpio (4, 'out'); var blinkInterval = setInterval (blinkLED, 500);
Сега ще направим функция за стартиране на мигането.
функция blinkLED () {if (LED.readSync () === 0) {LED.writeSync (1); // задаване на изхода на 1, т.е. включване на led} else {LED.writeSync (0); // задайте изхода на 0, т.е. изключете led }}
По същия начин направете функция за спиране на мигането
функция endBlink () {clearInterval (blinkInterval); LED.writeSync (0); LED.unexport (); // Деекспортирайте GPIO за безплатни ресурси} setTimeout (endBlink, 10000);
Пълният код на Node.js за мигащ светодиод е даден в края на този урок. Затова копирайте и поставете кода във файла led_blink.js , който сме създали преди това с помощта на nano команда, запишете файла с помощта на Ctrl + x, след това натиснете Y и натиснете enter.
За да стартирате скрипта, отворете терминала и въведете командата по-долу:
възел blink_led.js
Ще видите, че светодиодът ще мига за 10 секунди и след това спира да мига. Проверете пълната работа във видеото, дадено в края на този урок.
Схема за мигане на светодиод с помощта на Node.js
Raspberry Pi
Сега стигнете до интересната част, тук ще направим собствен уеб сървър, от който можем да контролираме GPIO на Raspberry pi, използвайки уеб страница.
За целта първо трябва да направим HTML страница и да напишем скрипт за изпълнение на фонова задача, т.е. за контрол на RPi GPIO.
Стъпка 1: - Направете директория, за да съхранявате всички файлове на едно място.
mkdir nodejs_server
Стъпка 2: - В папката nodejs_server направете още една папка за запазване на HTML файла.
cd nodejs_server mkdir изгледи
Стъпка 3: - Ако искате да добавите изображения към вашата HTML страница, тогава трябва да направите друга папка с име публична в основната директория, т.е. в папката nodejs_server . В публичната папка направете папка с изображения и съхранявайте всички изображения в тази папка.
Стъпка 4: - Сега ще направим HTML страница. За целта отидете в директорията за изгледи и отворете нано текстов редактор с име на файл index.ejs
В сценария няма нищо изискано. Това е само HTML файл, за да направите бутон за включване и изключване.
Копирайте, поставете долния HTML код в нано текстов редактор и го запазете.
Добре дошли в Nodejs Server
Светодиоден статус: <% = status%>Стъпка 5: - Сега трябва да напишем JavaScript код. Използваме node express framework, за да отговорим на http заявки, изпълнени от потребителя.
Можете да следвате връзката, за да научите повече за Node Express.
Отворете терминала и отворете нано текстов редактор с име на файл index.js в папката nodejs_server , след това копирайте и поставете долния код на Java скрипт и този файл.
var express = require ('express'); var app = express (); var path = require ('path'); var gpio = изисква ('rpi-gpio'); gpio.setup (7, gpio.DIR_OUT); app.set ('view engine', 'ejs'); app.use (express.static (path.join (__ dirname, 'public'))); console.log (path.join (__ dirname, 'public')); app.get ('/', функция (req, res) { res.render ('index', {status: "Press Button"}); }); app.post ('/ led / on', function (req, res) { gpio.write (7, true, function (err) { if (err) хвърля грешка; console.log ('Written True to pin'); console.log (path.join (__ dirname, 'public')); върнете res.render ('index',{статус: "Led е включен"}); }); }); app.post ('/ led / off', function (req, res) { gpio.write (7, false, function (err) { if (err) хвърля грешка; console.log ('Написано невярно за фиксиране'); console.log (path.join (__ dirname, 'public')); return res.render ('index', {status: "Led is Off"}); }); }); app.listen (3000, функция () { console.log ('Сървърът е стартиран на порт: 3000!' }})
Стъпка 6: - В директорията nodejs_server трябва да изпълним следната команда, за да инсталираме библиотеки на node.js
npm инсталиране
Стъпка 7: - Сега вашият сървър е готов за работа. За да стартирате локалния сървър, изпълнете следната команда в директорията nodejs_server
node index.js
ще видите съобщение в терминала, че вашият сървър е стартиран на определения порт.
Стъпка 8: - Сега отворете браузъра си и отворете URL адреса на Raspberry Pi с номер на порт, т.е. raspberrypi: 3000
Уверете се, че вашият Raspberry Pi и лаптопът, в който отваряте браузъра, са свързани с една и съща мрежа.
Ще видите следната страница в браузъра.
Сега, натиснете LED On бутон, за да включите LED и LED Off бутон, за да изключите светодиод.