- Необходимые материалы
- Установка Node.js на Raspberry Pi
- Мигание светодиода с использованием Node.js
- Сценарий светодиодного мигания Node.js и объяснение
- Принципиальная схема мигания светодиода с использованием Node.js
- Raspberry Pi
В предыдущих руководствах по Raspberry Pi мы использовали множество различных языков программирования и программного обеспечения для управления Raspberry Pi, включая Python, встроенный C, Flask и т. Д. Чтобы расширить кругозор мощной платы Raspberry Pi, сегодня мы будем использовать очень популярную среду на основе JavaScript (Node.js) для управления GPIO Raspberry Pi как локально, так и глобально, настроив его как веб-сервер. Первоначально Node.js разрабатывался для Google Chrome, но позже он был открыт в Google.
В этом уроке мы будем управлять светодиодом, подключенным к Raspberry Pi, двумя способами.
- Сначала мы просто напишем код JavaScript, используя Node.js, чтобы мигать светодиодом.
- Во втором методе мы создадим HTML-страницу с двумя кнопками для включения и выключения светодиода. Эта HTML-страница будет размещена на raspberry pi и может быть открыта в любом веб-браузере. Итак, здесь Raspberry Pi будет действовать как веб-сервер.
Необходимые материалы
- Плата Raspberry Pi с установленным в ней Raspbian
- СВЕТОДИОД
В этом уроке я использую внешний монитор с помощью кабеля HDMI для подключения к Raspberry Pi. Если у вас нет монитора, вы можете использовать SSH-клиент (Putty) или VNC-сервер для подключения к Raspberry pi с помощью ноутбука или компьютера. Если вы обнаружите какие-либо трудности, следуйте нашему Руководству по началу работы с Raspberry Pi.
Установка Node.js на Raspberry Pi
Мы установим Node.js на нашу доску, используя следующие команды.
Шаг 1: - Сначала проверьте версию руки вашей платы Raspberry Pi с помощью этой команды.
uname -m
В моем случае версия 7.
Шаг 2: - Загрузите установщик, скопировав эту ссылку в терминал. Не забудьте изменить версию по ссылке ниже.
wget https://nodejs.org/dist/v4.6.1/node-v4.6.1-linux-armvl.tar.gz
Шаг 3: - Извлеките файлы, используя команду ниже
tar -xvf node-v4.6.1-linux-armvl.tar.gz
Шаг 4: - Наконец, выполните эти команды, чтобы также добавить важные файлы в локальные каталоги.
cd node-v4.3.1-linux-armvl sudo cp -R * / usr / локальный /
Node.js теперь установлен на вашем Raspberry Pi. Проверьте версию узла для подтверждения с помощью этой команды.
узел –версия
Прежде чем приступить к созданию сервера Node.js, сначала мы увидим, как написать скрипт для мигания светодиода, используя node.js (пакет npm onoff).
Мигание светодиода с использованием Node.js
Для управления GPIO на Raspberry Pi с помощью Node.js мы будем использовать модуль onoff.
Мы будем использовать диспетчер пакетов npm для установки модуля onoff, используя команду ниже
npm install onoff
Теперь напишем скрипт мигания светодиода. Откройте редактор nano и дайте имя файлу с помощью команды
нано blink_led.js
Если вы новичок в Node.js и его пакетах, вы можете ознакомиться с документацией по npm для лучшего понимания скрипта.
Сценарий светодиодного мигания Node.js и объяснение
Сначала объявите переменные для светодиода, задержки и GPIO. Я использую Raspberry Pi GPIO 4 для подключения светодиода.
var Gpio = require ('onoff'). Gpio; var LED = new Gpio (4, 'out'); var blinkInterval = setInterval (blinkLED, 500);
Теперь мы создадим функцию для запуска мигания.
функция blinkLED () {если (LED.readSync () === 0) {LED.writeSync (1); // устанавливаем выход на 1, т.е. включаем светодиод} else {LED.writeSync (0); // устанавливаем выход на 0, т.е. выключаем светодиод }}
Точно так же сделайте функцию остановки мигания
функция 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-страницу, вы должны сделать другую папку с именем public внутри основного каталога, то есть в папке nodejs_server . В общей папке создайте папку изображений и сохраните все изображения в этой папке.
Шаг 4: - Теперь мы сделаем HTML-страницу. Для этого перейдите на просмотры каталог и открыть нано текстовый редактор с именем файл index.ejs
В сценарии нет ничего необычного. Это просто HTML-файл для включения и выключения кнопки.
Скопируйте и вставьте приведенный ниже HTML-код в текстовый редактор nano и сохраните его.
Добро пожаловать на сервер Nodejs
Светодиодный статус: <% = status%>Шаг 5: - Теперь нам нужно написать код JavaScript. Мы используем платформу node express для ответа на HTTP-запросы, выполняемые пользователем.
Вы можете перейти по ссылке, чтобы узнать больше о Node Express.
Откройте терминал и откройте текстовый редактор nano с именем файла index.js в папке nodejs_server , затем скопируйте и вставьте приведенный ниже код java-скрипта и этот файл.
var express = require ('экспресс'); вар приложение = экспресс (); var path = require ('путь'); var gpio = require ('rpi-gpio'); gpio.setup (7, gpio.DIR_OUT); app.set ('движок просмотра', 'ejs'); app.use (express.static (path.join (__ dirname, 'public'))); console.log (путь.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) throw err; console.log ('Written True to pin'); console.log (path.join (__ dirname, 'public')); return res.render ('index',{статус: "Светодиод горит"}); }); }); 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: "Светодиод выключен"}); }); }); app.listen (3000, function () { console.log ('Сервер запущен на порту: 3000!') })
Шаг 6: - Внутри каталога nodejs_server мы должны выполнить следующую команду для установки библиотек node.js
npm install
Шаг 7: - Теперь ваш сервер готов к работе. Для запуска локального сервера, выполните следующую команду внутри nodejs_server каталога
узел index.js
вы увидите сообщение в терминале о том, что ваш сервер запущен на определенном порту.
Шаг 8: - Теперь откройте свой браузер и откройте URL-адрес Raspberry Pi с номером порта, т.е. raspberrypi: 3000.
Убедитесь, что ваш raspberry pi и ноутбук, на котором вы открываете браузер, подключены к одной сети.
Вы увидите следующую страницу в браузере.
Теперь нажмите кнопку включения светодиода , чтобы включить светодиод, и кнопку выключения светодиода , чтобы выключить светодиод.