Веб-сервер на Node.js и Raspberry Pi: управление светодиодом


Ранее на нашем сайте мы уже рассматривали различные варианты управления светодиодом с помощью платы Raspberry Pi: непосредственно при помощи программы на Python, через Bluetooth, по радиоканалу, из приложения Telegram. Чтобы расширить горизонты применения платы Raspberry Pi в данной статье, мы рассмотрим управление светодиодом с помощью веб-сервера на Node.js, представляющую собой весьма популярную платформу для программирования на JavaScript. При этом светодиодом можно будет управлять как локально (со своего рабочего места), так и глобально (из сети интернет). Первоначально платформа Node.js была разработана для браузера Google Chrome, но позже компания Google сделала ее продуктом с открытым исходным кодом. Более подробно про данную платформу вы можете прочитать в статье про использование Node.js в плате Arduino.

Внешний вид веб-сервера на Node.js и Raspberry Pi для управления светодиодом

В данной статье мы будем управлять светодиодом, подключенным к плате Raspberry Pi, двумя способами:

  1. Сначала мы просто напишем код JavaScript используя Node.js чтобы мигать светодиодом.
  2. Затем мы создадим HTML страницу с размещенными на ней двумя кнопками: для включения и выключения светодиода. Эта веб-страница будет располагаться (хоститься) на Raspberry Pi и может быть открыта в любом веб-браузере. Таким образом, плата Raspberry Pi будет работать в качестве веб-сервера.

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress) с установленной операционной системой.
  2. Светодиод (купить на AliExpress).

Установка Node.js на Raspberry Pi

Для установки платформы Node.js на плату Raspberry Pi выполните следующую последовательность шагов.

Шаг 1. Проверьте arm версию вашей платы Raspberry Pi с помощью команды:

На момент написания данной статьи ее авторами (конец 2018 г.) у них номер версии был 7.

Шаг 2. Скачайте установщик Node.js с помощью следующей команды. Не забудьте изменить номер версии в представленной ссылке на скачивание.

Шаг 3. Извлеките файлы скачанного установщика с помощью команды:

Шаг 4. Выполните следующие команды чтобы добавить некоторые важные файлы в локальный каталог.

Теперь Node.js установлена на вашу плату Raspberry Pi. Проверить номер ее версии можно с помощью команды:

Перед тем, как разворачивать веб-сервер Node.js, мы сначала рассмотрим как написать скрипт для мигания светодиодом с помощью Node.js.

Мигание светодиодом с помощью Node.js

Чтобы управлять контактами ввода/вывода (GPIO) платы Raspberry Pi с помощью Node.js мы используем onoff module (модуль включения/выключения).

Мы используем менеджер пакетов npm для установки onoff модуля:

После этого мы напишем скрипт для мигания светодиодом. Откройте редактор nano и задайте имя для файла с помощью команды:

Если вы начинающий в Node.js и его пакетах, вы можете изучить документацию по npm для лучшего понимания рассматриваемого в данной статье скрипта.

Объяснение скрипта на Node.js для мигания светодиодом

Полный код скрипта приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом объявим переменные для светодиода, задержки (интервала между миганиями) и GPIO. Для подключения светодиода мы использовали контакт GPIO 4.

После этого запрограммируем функцию для мигания светодиодом.

Также запрограммируем функцию для остановки мигания светодиода.

Скопируйте и вставьте код скрипта, приведенный в конце статьи, в созданный нами файл led_blink.js, сохраните его используя Ctrl+x, затем нажмите Y и затем enter.

Чтобы запустить скрипт на выполнение, откройте окно терминала и выполните следующую команду:

Запуск на выполнение скрипта для мигания светодиодом

В результате выполнения этой команды вы увидите как светодиод будет мигать в течение 10 секунд, после чего он перестанет мигать. Более подробно все эти процессы вы можете посмотреть на видео, приведенном в конце статьи.

Схема для мигания светодиодом с помощью Node.js

Схема для мигания светодиодом с помощью платформы Node.js и платы Raspberry Pi представлена на следующем рисунке.

Схема для мигания светодиодом с помощью платформы Node.js и платы Raspberry Pi

Внешний вид собранной схемы на макетной плате:

Внешний вид собранной конструкции проекта

Веб-сервер на Raspberry Pi с использованием Node.js

В этой части проекта мы сделаем свой собственный веб-сервер, с помощью которого можно будет управлять контактами ввода/вывода (GPIO) платы Raspberry Pi с использованием веб-страницы.

Для этого нам необходимо сделать HTML страницу и написать скрипт, который будет выполнять задачу для конечного пользователя (back-end task), то есть управлять контактами GPIO платы Raspberry Pi. Для этого выполните следующую последовательность шагов.

Шаг 1. Создадим каталог чтобы хранить все файлы проекта в одном месте.

Шаг 2. Внутри каталога nodejs_server создадим еще один каталог, в котором мы будем хранить HTML файл.

Шаг 3. Если вы хотите добавить изображения на свою html страницу, то вам необходимо создать еще один каталог для хранения изображений внутри каталога nodejs_server.

Шаг 4. Теперь приступим к созданию HTML страницы. Для этого перейдем в наш основной каталог, откроем текстовый редактор nano и создадим файл index.ejs. В скрипте, который мы хотим написать, нет ничего сверхъестественного – он будет просто создавать кнопки On (включение) и Off (выключение).

Скопируйте следующий фрагмент HTML кода в текстовый редактор nano и сохраните изменения в файле.

Шаг 5. Теперь мы приступим к написанию кода JavaScript. Мы будем использовать node express framework чтобы отвечать на http запросы, формируемые пользователем.

Откройте окно терминала и текстовый редактор nano, в редакторе nano создайте файл index.js в каталоге nodejs_server, затем скопируйте в этот файл нижеприведенный фрагмент кода java script и сохраните изменения в файле.

Шаг 6. Внутри каталога nodejs_server необходимо выполнить следующую команду чтобы установить библиотеки платформы node.js.

Шаг 7. Теперь ваш сервер готов к работе. Чтобы запустить в работу наш локальный сервер выполните следующую команду внутри каталога nodejs_server:

После выполнения этой команды вы увидите сообщение в терминале о том, что ваш сервер начал работу на определенном порту.

Старт работы сервера

Шаг 8. Откройте ваш браузер и откройте URL Raspberry Pi с номером порта, то есть необходимо открыть адрес raspberrypi:3000.

Убедитесь в том, что ваша плата Raspberry Pi и ваш компьютер, на котором вы открываете браузер, находятся в одной и той же сети.

Если все идет так, как надо, вы должны увидеть следующую страницу в браузере:

На этой странице вы можете нажимать кнопку LED On чтобы включать светодиод и кнопку LED Off чтобы выключать светодиод.

Исходные коды программ

Код программы для мигания светодиодом с помощью Node.js

Код программы для управления светодиодом с помощью Node.js веб-сервера

Видео, демонстрирующее работу проекта

Источник статьи

(Проголосуй первым!)
Загрузка...
860 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *