- Предварительные условия
- Необходимые компоненты
- Установка Node-RED на Raspberry Pi
- Запуск Node-RED в Raspberry Pi
- Понимание интерфейса Node-RED
- Схемы
- Создание потока в Node-RED
- Добавление кнопки / переключателя в интерфейс Node-RED с Raspberry Pi
Вы когда-нибудь задумывались, есть ли способ создавать простые прототипы решений IoT, не тратя дни на написание кода, или создавать практические продвинутые проекты без программирования. Да, это возможно с помощью платформы Node-Red. Node-RED, разработанный IBM, представляет собой инструмент программирования с открытым исходным кодом для объединения аппаратных устройств, API и онлайн-сервисов новым и интересным способом. Он предоставляет редактор на основе браузера, который упрощает объединение « потоков», используя широкий диапазон узлов в палитре, которые можно развернуть в среде выполнения одним щелчком мыши.
Node-RED - это мощный инструмент для создания приложений Интернета вещей (IoT) с целью упрощения компонента программирования.
Он использует визуальное программирование, которое позволяет соединять блоки кода, известные как узлы, вместе для выполнения задачи. В сегодняшнем руководстве мы рассмотрим, как можно развертывать простые проекты на raspberry pi с помощью Node-RED. В учебном пособии по узлу Raspberry Pi красный будет;
- Установка Node-RED на Raspberry Pi.
- Введение в пользовательский интерфейс Node-RED
- Как настроить потоки Node-RED
- Как управлять контактами GPIO Raspberry Pi с помощью Node-RED
- Как использовать входы, выходы Node-RED и принятие решений типа if-else с помощью переключателей
Предварительные условия
Это руководство будет основано на ОС Raspbian stretch, и я предполагаю, что вы знакомы с настройкой Raspberry Pi с его помощью и знаете, как подключиться к Pi по SSH с помощью программного обеспечения терминала, такого как putty. Если у вас есть проблемы с чем-либо из этого, на этом веб-сайте есть множество руководств по Raspberry Pi, которые могут помочь.
Чтобы легко пройти обучение, я посоветую вам использовать монитор, подключенный к raspberry pi, или вы используете программное обеспечение VNC Viewer. Если у вас нет монитора и вы начинаете с Pi, вы можете прочитать эту настройку Headless Raspberry Pi, чтобы продолжить изучение этого руководства. Хотя Node-Red запускается из веб-браузера и может быть доступен на вашем ПК, к которому Pi подключен через IP-адрес Pi, я считаю, что использование VNC / монитора даст вам лучшее понимание вещей.
В качестве демонстрации, чтобы показать, как работает Node-Red, мы будем использовать Node-RED, чтобы запрограммировать Raspberry Pi для управления светодиодом, подключенным к его GPIO, а затем изменить программу, чтобы можно было управлять светодиодом с помощью тактильной кнопки, подключенной к Pi. GPIO.
Необходимые компоненты
Для создания этого проекта требуются следующие компоненты;
- Raspberry Pi 3 с предварительно загруженной SD-картой с предустановленной Raspbian Stretch
- Резистор 100 Ом (1)
- Светодиод (1)
- Макетная плата (1)
- Перемычки между мужчинами и женщинами
- Тактильная кнопка (1)
Установка Node-RED на Raspberry Pi
Хотя Node-Red предустановлен в ОС Raspbian Stretch, нам необходимо обновить его, прежде чем мы сможем пользоваться некоторыми из его последних функций. Обновление Node-Red будет
- Обновите существующего пользователя до LTS 8.x или 10.x Node.js и последней версии Node-RED
- Перенесите любые существующие глобально установленные узлы в пространство пользователя ~ /.node-red, чтобы ими можно было управлять через диспетчер палитры, он НЕ обновляет существующие узлы, установленные пользователем. Это должно быть сделано пользователем вручную (см. Ниже).
- При желании (пере) установите дополнительные узлы, которые предварительно установлены в полном образе Raspbian Pi.
Однако процесс обновления Node-Red аналогичен установке нового, поэтому в рамках этого руководства мы будем рассматривать его как новую установку, чтобы люди, использующие другие версии ОС, могли следовать.
Выполните следующие действия, чтобы установить / обновить Node-RED на Raspberry Pi.
Мы начинаем с обновления и обновления pi, чтобы убедиться, что все на нем актуально, и избежать проблем с совместимостью. Сделайте это, открыв терминал или через ssh, и запустите;
Sudo apt-get обновление
с последующим
sudo apt-get upgrade
После этого запустите на терминале приведенный ниже сценарий bash;
bash <(curl -sL
Скрипт Баш будет делать следующие вещи
- Спросите, хотите ли вы (пере) установить дополнительные узлы Pi
- Сохраните список всех глобально установленных узлов node-red-, найденных в / usr / lib / node_modules
- apt-get удалить существующий Node-Red
- удалите все двоичные файлы node-red из / usr / bin и / usr / local / bin
- Удалите все модули node-red из / usr / lib / node_modules и / usr / local / lib / node_modules
- Определить, был ли Node.js установлен из пакета Node.js или Debian
- Если не v8 или новее - удалите при необходимости и установите последнюю версию v8 или v10 LTS (без использования apt).
- Очистите кеш npm и.node-gyp, чтобы удалить все предыдущие версии кода.
- Установите последнюю версию Node-RED
- Переустановите под учетной записью пользователя все узлы, которые ранее были установлены глобально.
- При необходимости переустановите дополнительные узлы Pi.
- Перестроить все узлы - чтобы перекомпилировать любые двоичные файлы для соответствия последней версии Node.js
- Добавьте команды node-red-start, node-red-stop и node-red-log в / usr / bin
- Добавить ярлык и значок меню
- Добавить системный скрипт и установить пользователя
- Если на Pi добавить температуру процессора -> пример IoT
Приведенный выше сценарий bash запускает многие команды как sudo и удаляет существующие Node.js и основные каталоги Node-RED. Вы можете проверить содержимое скрипта на этой странице GitHub перед его запуском, чтобы убедиться, что он не повлияет на какой-либо проект, который у вас уже есть на Pi.
После завершения установки вы должны увидеть значок Node-Red под списком приложений для программирования в вашем меню.
Запуск Node-RED в Raspberry Pi
Node-Red можно запустить через раздел меню на рабочем столе вашего raspberry pi, через терминал или через ssh.
Чтобы запустить на рабочем столе Raspberry Pi, щелкните значок Raspberry, наведите указатель мыши на «Программирование» и нажмите «Node-RED» (Меню> Программирование> NodeRed), чтобы запустить его.
Его также можно запустить из ssh или терминала, запустив;
узел-красный-старт
Вы должны увидеть окно, подобное приведенному ниже, показывающее запуск красного узла на рабочем столе.
Как только вы это увидите, перейдите в меню-> Интернет и запустите веб-браузер Chrome. Хотя вашему Raspberry pi не нужен Интернет для запуска Node-Red, он использует браузер в качестве интерфейса.
Запустив Chrome, введите в адресной строке localhost: 1880 и нажмите клавишу ввода. 1880 - это порт на Raspberry Pi, на котором Node-Red настроен для связи. Это должно отобразить интерфейс Node-Red, как показано на изображении ниже.
Понимание интерфейса Node-RED
Интерфейс Node-Red состоит из панели потока, палитры узлов, консоли отладки и информационной консоли, как показано на изображении выше.
Панель потока - это то место, где узлы объединяются для создания программы, которая в Node-Red называется потоком, в то время как палитра узлов состоит из объектов, которые представляют оборудование, протоколы и программные функции, связанные с устройствами. Он включает в себя такие протоколы, как MQTT для IoT, а также режимы вывода и ввода GPIO для таких плат, как Raspberry Pi. Информация о консоли содержит информацию о выделенных / выбранных объектах в то время как консоль отладкиработает так же, как последовательный монитор Arduino, и может обеспечивать обратную связь во время выполнения потока. Кнопка развертывания используется для загрузки потока на целевое оборудование. Кнопка меню содержит различные типы загрузки, которые помогут вам максимально эффективно использовать свой проект. Когда Node-Red запущен и работает, мы можем приступить к созданию демонстрационного проекта.
Схемы
Как упоминалось во введении, наш демонстрационный проект на сегодня будет направлен на управление GPIO Raspberry Pi с помощью потока Node-RED. Чтобы показать изменение состояния GPIO, мы будем подключать светодиод к GPIO таким образом, чтобы при включении этого конкретного вывода GPIO загорался светодиод, и наоборот.
Подключите светодиод к Raspberry PI, как показано на схемах ниже.
Я также построил то же самое на своем оборудовании, используя макетную плату, светодиод, резистор и некоторые соединительные провода. После подключения мое оборудование выглядит примерно так.
Этот проект можно легко преобразовать в проект домашней автоматизации, просто заменив светодиод на реле и любое устройство переменного тока, узнайте, как это сделать, пройдя различные проекты домашней автоматизации.
Создание потока в Node-RED
Подключив светодиод, мы можем приступить к разработке потока. Программы в NodeRed называются потоками так же, как в среде IDE Arduino они называются эскизами. Потоки создаются с использованием комбинации узлов. Вы можете создать несколько потоков, которые могут выполняться одновременно, но в этом руководстве мы создадим один поток для включения / выключения светодиода.
Для начала прокрутите до нижней части палитры узлов, вы увидите секцию узлов raspberry pi ближе к концу с двумя узлами, помеченными как rpigpio. Эти узлы используются для связи с GPIO raspberry pi. Один из узлов предназначен для ввода, а другой - для вывода, отличающегося положением логотипа raspberry pi. Для входного узла логотип идет перед текстом, а для выходного узла логотип идет после текста, как показано на изображении ниже.
В этом руководстве мы будем использовать выходной узел, перетащите его в раздел потока интерфейса. Этот шаг аналогичен объявлению определенного вывода вашего Arduino в качестве вывода с помощью команды pinMode () . Дважды щелкните узел вывода, и откроется всплывающее окно, как показано ниже, чтобы вы могли редактировать свойства узла.
В разделе свойств вывода выберите GPIO17 (вывод 11). Затем установите для свойства типа значение « цифровой выход » и отметьте « Инициализировать состояние вывода?» Установите флажок, оставив опцию « начальный уровень вывода » на низком уровне (0). Дайте узлу любое имя и нажмите кнопку «Готово».
Имя узла должно автоматически измениться на то, которое вы ввели в настройках свойств. Например, я назвал его LED и, следовательно, имя узла также изменилось как LED, как показано ниже.
Чтобы включить / выключить светодиод, нам нужно использовать вход, что-то для управления действием. Хотя мы могли бы использовать кнопку, я хочу использовать ее, чтобы представить в Node-RED функцию, которая позволяет вставлять сообщения в потоки. Эта функция называется инъекционным узлом. Мы будем использовать два инжекционных узла. Один будет включать светодиод, а другой - выключить.
Перейдите к палитре узлов и перетащите узел ввода в поток. Это первый узел в палитре со стрелкой, узел ввода выделен на изображении ниже.
Дважды щелкните по нему, чтобы изменить его свойства. Измените тип данных на строку, щелкнув раскрывающийся список перед полезной нагрузкой и введите 1 в поле «Полезная нагрузка». Значение в поле полезной нагрузки - это то, что будет введено в поток при нажатии узла. Установите для имени узла значение «ON». Нажмите кнопку «Готово» для сохранения.
Повторите вышеуказанное для второго узла, установив значение полезной нагрузки на «0» и его имя как «выключено», как показано ниже.
Под функцией свойств раскрывающийся список повторов можно использовать для автоматизации инъекции, чтобы кнопки нажимались с интервалами. Это можно использовать для создания эффекта мигания. Соедините узлы вместе, как показано ниже, перетащив серую точку на одном из узлов на другой, чтобы создать поток.
Сделав это, мы завершили наш самый первый Node-Red Flow.
Следующий шаг - развернуть поток на Raspberry Pi. Нажмите красную кнопку развертывания. Вы должны увидеть «успешно развернутую» вспышку в верхней части экрана, как показано ниже.
Нажмите серую кнопку за узлами ввода, чтобы активировать каждый из узлов.
Нажав на узел ввода «on», вы должны увидеть, что успешно введено «включено», и загорится светодиод. Светодиод должен погаснуть при щелчке по «выключенному» узлу ввода.
Вот и все. Полную работу этой установки можно найти в видео, ссылка на который находится внизу этой страницы.
Добавление кнопки / переключателя в интерфейс Node-RED с Raspberry Pi
Чтобы объяснить, как подключить / добавить элемент ввода к вашему потоку, мы продолжим описанный выше поток, добавив кнопку для замены узлов ввода.
Подключите кнопку к Raspberry Pi так, чтобы одна ножка кнопки была подключена к земле, а другая была подключена к контакту 4 GPIO (контакт 11) raspbery Pi, как показано на схемах ниже.
После этого вернитесь к Node-Red и удалите два узла инъекции, которые мы использовали ранее, щелкнув узлы и нажав удалить на клавиатуре или дважды щелкнув узлы и нажав удалить во всплывающем окне. После этого прокрутите палитру узлов до раздела Raspberry Pi и выберите входной узел. Это тот, у которого слева перед именем узла находится значок малинового пи.
Перетащите узел в поток и дважды щелкните его, чтобы изменить свойства. Установите контакт на GPIO 4 (контакт 11) и установите выпадающий список перед резистором на подтягивание. Это «подтянет» GPIO 4 к ВЫСОКОМУ. После настройки свойств нажмите кнопку «Готово».
Чтобы позволить нам принимать логические решения при нажатии переключателя, а не просто замыкать GPIO4 на землю, мы будем использовать узел переключения. Найдите его на палитре узлов под разделом функций и перетащите в поток.
Узел переключения позволяет вам принимать решения аналогично операторам «if». Его можно настроить на разные выходы в зависимости от входного значения. В этом руководстве мы будем настраивать его с двумя выходными путями, так что, когда свойство msg.payload равно 1 (переключатель не нажат), он должен следовать по первому пути, а второй путь будет следовать, если любой другой вход на входе наблюдается отличное от 1 (переключатель нажат). Пути добавляются с помощью кнопки «+ добавить». Дважды щелкните узел и настройте, как описано выше. По завершении нажмите "Готово".
Как только вы нажмете кнопку «Готово», вы должны увидеть, как два пути отражаются во внешнем виде узла переключения, так как теперь он будет иметь два соединения на выходе.
Затем нам нужно ввести узел «изменение». Узел изменения будет использоваться для установки состояния светодиода на основе результата узла аргумента.
Мы будем использовать два узла изменения. Полезная нагрузка первого будет установлена на 0, как показано на изображении ниже, а полезная нагрузка второго будет установлена на единицу. Нажмите Готово после редактирования свойств для обоих.
Чтобы лучше объяснить, помните, мы использовали подтягивающий резистор? Таким образом, когда кнопка не была нажата, выход на этом контакте будет ВЫСОКИМ (1), что означает, что если мы пропустим его через узел переключения, светодиод будет «включен», так как это не должно быть так, мы будем используйте узел «изменение», чтобы установить его как НИЗКИЙ (0). Второй узел «изменения» используется для установки значения, так что при обнаружении чего-либо, кроме ВЫСОКОГО состояния контакта 4 GPIO, он должен включить светодиод, поскольку это будет означать, что была нажата кнопка. Соедините узлы изменения и остальные узлы вместе, как показано на изображении ниже.
После этого мы готовы развернуть проект. Пройдите через соединение, чтобы убедиться, что все в порядке, затем нажмите кнопку развертывания. Как обычно, в случае успеха вы должны увидеть всплывающее окно об успешном развертывании и теперь сможете управлять светодиодом с помощью переключателя.
Хотя Node-Red позволяет легко и быстро создавать прототипы вашей сборки, не беспокоясь о коде, на самом деле он может быть не лучшим вариантом, особенно для опытных разработчиков, которым нужна гибкость и контроль над программой. Тем не менее, это отличный инструмент, который позволяет создавать прототипы за считанные минуты.
До следующего раза!