Рубрики
Проекты на Raspberry Pi

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

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

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

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

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

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

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Установка 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 представлена на следующем рисунке.

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

Веб-сервер на 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 веб-сервера

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

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

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

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