- Передумови
- Необхідні компоненти
- Встановлення Node-RED на Raspberry Pi
- Запуск Node-RED в Raspberry Pi
- Розуміння інтерфейсу Node-RED
- Схеми
- Створення потоку в Node-RED
- Додавання кнопки / перемикача в інтерфейс Node-RED з Raspberry Pi
Ніколи не замислювалися, чи є спосіб створити прості прототипи рішень IoT, не витрачаючи дні на написання кодів або будувати практичні вдосконалені проекти без кодування. Так, це можливо завдяки платформі Node-Red. Розроблений IBM, Node-RED - це інструмент програмування з відкритим кодом для нового та цікавого з'єднання апаратних пристроїв, API та онлайн-сервісів. Він забезпечує редактор на основі браузера, який спрощує з'єднання " потоків", використовуючи широкий діапазон вузлів на палітрі, які можна розгорнути до часу виконання одним клацанням миші.
Node-RED - це потужний інструмент для створення додатків Інтернету речей (IoT) з метою спрощення компонента програмування.
Він використовує візуальне програмування, яке дозволяє зв’язувати блоки коду, відомі як вузли, для виконання завдання. У сьогоднішньому підручнику ми розглянемо, як можна розгорнути прості проекти на Raspberry Pi за допомогою Node-RED. Підручник з малиновим пі-червоним вузлом розгляне;
- Встановлення Node-RED на Raspberry Pi.
- Вступ до інтерфейсу користувача Node-RED
- Як налаштувати потоки Node-RED
- Як керувати шпильками Raspberry Pi GPIO за допомогою Node-RED
- Як використовувати Node-RED-входи, виходи та якщо-небудь подібне до прийняття рішень за допомогою перемикачів
Передумови
Цей підручник базуватиметься на розтяжній ОС Raspbian, і я припускаю, що ви знайомі з налаштуванням Raspberry Pi з ним, і ви знаєте, як SSH в Pi за допомогою термінального програмного забезпечення, такого як шпаклівка. Якщо у вас є проблеми з цим, на цьому веб-сайті є безліч підручників з Raspberry Pi, які можуть вам допомогти.
Щоб легко заповнити підручник, я порадитиму вам використовувати монітор, підключений до Raspberry Pi, або використовувати програмне забезпечення VNC Viewer. Якщо у вас немає монітора, і ви починаєте все з Pi, ви можете прочитати цю настройку безголовника 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 will
- Оновіть існуючого користувача до LTS 8.x або 10.x Node.js та останнього Node-RED
- Мігруйте будь-які існуючі глобально встановлені вузли в простір користувачів ~ /.node-red, щоб ними можна було керувати за допомогою менеджера палітр; він НЕ оновлює жодного встановленого користувачем існуючого вузла. Це повинен робити користувач вручну (див. Нижче).
- За бажанням (повторно) встановіть додаткові вузли, попередньо встановлені на повний образ Raspbian Pi.
Однак процес оновлення Node-Red схожий на встановлення нового, тому для цього підручника ми просто розглядатимемо його як нову інсталяцію, щоб люди, які використовують інші версії ОС, могли слідувати.
Виконайте кроки нижче, щоб встановити / оновити Node-RED на вашому Raspberry Pi.
Ми починаємо з оновлення та оновлення pi, щоб переконатися, що все на ньому оновлено, та уникнути проблем сумісності. Зробіть це, відкривши термінал або через ssh, і запустіть;
Sudo apt-get update
слідом за ним
sudo apt-get upgrade
Після цього запустіть скрипт bash нижче на терміналі;
bash <(curl -sL
Скрипт Баш робитиме наступні речі
- Запитайте, чи хочете ви (повторно) встановити зайві вузли Pi
- Збережіть список будь-яких глобально встановлених вузлів-червоних вузлів, знайдених у / usr / lib / node_modules
- apt-get видалити існуючий Node-Red
- видалити будь-які вузлові червоні двійкові файли з / usr / bin та / usr / local / bin
- Видаліть усі вузлові червоні модулі з / usr / lib / node_modules та / usr / local / lib / node_modules
- Визначте, чи було встановлено Node.js із пакета Node.js або Debian
- Якщо це не версія 8 або новіша - видаліть за необхідністю та встановіть останню версію 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, він використовує браузер як свій інтерфейс.
З запущеним хромом введіть localhost: 1880 в адресному рядку, а потім клавішу Enter. 1880 - це порт на малиновому пі, на якому Node-Red встановлений для зв'язку. Це повинно відображати інтерфейс Node-Red, як показано на малюнку нижче.
Розуміння інтерфейсу Node-RED
Інтерфейс Node-Red складається з панелі потоку, палітри вузлів, консолі налагодження та інформаційної консолі, як зазначено на зображенні вище.
Панель потоку - це місце, де вузли об’єднуються для створення програми, яка по-червоному Node називається потоком, тоді як палітра Node складається з об’єктів, що представляють апаратне забезпечення, протоколи та програмні функції, пов’язані з пристроями. Він включає в себе протоколи, такі як MQTT для IoT, і режими виводу та введення GPIO для плат, таких як Raspberry Pi. Інформація про консолі містить інформацію про виділені / обраних об'єктах в той час як консоль налагодженняпрацює так само, як монітор Arduino Serial, і може забезпечувати зворотний зв'язок під час потоку. Кнопка розгортання використовується для завантаження потоку на цільове обладнання. Кнопка меню містить різні типи завантаження, які допоможуть вам отримати найкращі результати від вашого проекту. Запустивши Node-Red, ми можемо продовжувати створювати демонстраційний проект.
Схеми
Як зазначалося під час вступу, наш демонстраційний проект на сьогодні буде керувати GPIO Raspberry Pi за допомогою потоку Node-RED. Щоб показати зміни в стані GPIO, ми підключимо світлодіод до GPIO таким чином, що коли цей конкретний штифт GPIO увімкнеться, світлодіод загориться і навпаки.
Підключіть світлодіод до Raspberry PI, як показано на схемах нижче.
Я також будую те саме на своєму обладнанні, використовуючи макет, світлодіод, резистор та деякі сполучні дроти. Моє апаратне налаштування виглядає приблизно так після встановлення з’єднань.
Цей проект можна легко перетворити на проект домашньої автоматизації, просто замінивши світлодіод на реле та будь-який прилад змінного струму, дізнайтеся, як це зробити, проходячи різні проекти автоматизації будинку.
Створення потоку в Node-RED
Коли світлодіод підключений, ми можемо продовжувати розвивати потік. Програми в NodeRed називаються потоками так само, як IDE Arduino називає їх ескізами. Потоки створюються за допомогою комбінації вузлів. Ви можете створити кілька потоків, які можуть працювати всі одночасно, але для цього підручника ми створимо єдиний потік, щоб увімкнути / вимкнути світлодіод.
Для початку прокрутіть униз палітри Вузли, ви побачите розділ малини pi вузлів до кінця з двома вузлами, позначеними rpigpio. Ці вузли використовуються для зв'язку з GPIO Raspberry Pi. Один з вузлів призначений для введення, а другий - для виводу, диференційованого за позицією логотипу малинового пі. Для вузла введення логотип стоїть перед текстом, тоді як для вузла виводу логотип поставляється після тексту, як показано на зображенні нижче.
Для цього підручника ми будемо використовувати вихідний вузол, перетягніть його в секцію потоку інтерфейсу. Цей крок подібний до оголошення певного виводу вашого Arduino як вихідного за допомогою команди pinMode () . Двічі клацніть на виході вузол, і відкриється спливаюче вікно, як показано нижче, щоб дозволити вам редагувати властивості вузла.
У розділі властивостей pin виберіть GPIO17 (pin 11). Потім встановіть для властивості type значення « цифровий вихід » і поставте галочку « Ініціалізувати стан контактів?» прапорець, залишаючи параметр « початковий рівень штифта » низьким (0). Дайте вузлу будь-яке ім’я, яке вам подобається, і натисніть кнопку готово.
Ім'я вузла повинно автоматично змінюватися на те, яке ви ввели під налаштуваннями властивостей. Наприклад, я назвав його світлодіодом, і, отже, ім'я вузла також змінено як світлодіод, як показано нижче.
Щоб увімкнути / вимкнути світлодіод, нам потрібно використати вхід, щось для стимулювання дії. Хоча ми могли б використовувати кнопку, я хочу використовувати це, щоб представити функцію в Node-RED, яка дозволяє вводити повідомлення в потоки. Ця особливість називається інжекційним вузлом. Ми будемо використовувати два ін’єкційні вузли. Один з них повинен буде увімкнути світлодіод, а інший - вимкнути його.
Перейдіть до палітри вузлів і перетягніть вузол ін’єкції до потоку. Це перший вузол на палітрі зі стрілкою, вузол введення виділено на зображенні нижче.
Двічі клацніть на ньому, щоб змінити його властивості. Змініть тип даних на рядок, натиснувши випадаючий список перед корисним навантаженням і введіть 1 у поле Корисне навантаження. Значення у вікні корисного навантаження - це те, що буде вводитися в потік при натисканні на вузол. Встановіть ім'я вузла в положення «УВІМК.» Натисніть кнопку «Готово», щоб зберегти.
Повторіть вищезазначене для другого вузла, встановивши значення корисного навантаження на «0» та його назву як «вимкнено», як показано нижче.
За функцією властивостей, випадаюче меню, що повторюється, може бути використано для автоматизації впорскування, щоб кнопки натискалися з інтервалом. Це може бути використано для створення ефекту блимання. З’єднайте вузли разом, як показано нижче, перетягнувши сіру крапку на одному з вузлів на інший, щоб створити потік.
Закінчивши це, ми завершили наш перший вузол Червоного потоку.
Наступним кроком є розгортання потоку на малиновому пі. Клацніть на червону кнопку розгортання. У верхній частині екрана ви побачите спалах "успішно розгорнуто", як показано нижче.
Клацніть сіру кнопку позаду ін'єкційних вузлів, щоб активувати кожен з них.
Натиснувши на інжекторний вузол “on”, ви побачите, як на дисплеї відображається успішно інжектоване “on”, а світлодіод загоряється. Світлодіод повинен згаснути, коли клацне вузол ін’єкції “off”.
Це воно. Повну роботу цієї установки можна знайти у відео, на яке посилається внизу цієї сторінки.
Додавання кнопки / перемикача в інтерфейс Node-RED з Raspberry Pi
Щоб пояснити, як підключити / додати вхідний елемент до вашого потоку, ми будемо продовжувати вищезазначений потік, додаючи кнопку для заміни вузлів введення.
Підключіть кнопку до малинового пі, таким чином, що одна ніжка кнопки підключена до землі, а інша - до штифта GPIO 4 (штифт 11) малинового пі, як показано на схемі нижче.
Закінчивши це, поверніться до Node-Red і видаліть два інжекційні вузли, які ми використовували раніше, натиснувши вузли та натиснувши delete на клавіатурі або двічі клацнувши вузли та натиснувши delete у спливаючому вікні. Закінчивши, прокрутіть вниз палітру вузлів до розділу raspberry pi та виберіть вхідний вузол. Це та, що має піктограму малинового пі зліва, перед назвою вузла.
Перетягніть вузол у потік і двічі клацніть на ньому, щоб редагувати властивості. Встановіть штифт на GPIO 4 (штифт 11) і встановіть випадаюче меню перед резистором. Це "підтягне" GPIO 4 до HIGH. Натисніть на кнопку готово після встановлення властивостей.
Щоб ми могли приймати логічні рішення при натисканні на перемикач, а не просто замикаючи GPIO4 на землю, ми будемо використовувати вузол перемикача. Шукайте його на палітрі вузлів у розділі функцій і перетягуйте до потоку.
Вузол комутатора дозволяє приймати рішення подібним чином до операторів "якщо". Він може бути налаштований на різні виходи в залежності від вхідного значення. У цьому підручнику ми налаштуємо його з двома вихідними шляхами, таким чином, що коли властивість msg.payload дорівнює 1 (перемикач не натискається), він повинен слідувати за першим шляхом, а за будь-яким іншим входом буде слідувати другий шлях на вході спостерігається інше, ніж 1 (натиснуто перемикач). Шляхи додаються за допомогою кнопки “+ додати”. Двічі клацніть на вузлі та налаштуйте, як описано вище. Натисніть "Готово", коли закінчите.
Як тільки ви натиснете кнопку "Готово", ви побачите, як два шляхи відображаються в перспективі вузла перемикача, оскільки він тепер матиме два переходи на виході.
Далі нам потрібно залучити вузол “зміни”. Вузол зміни буде використовуватися для встановлення стану світлодіода на основі результату вузла аргументу.
Ми будемо використовувати два вузли зміни. Корисне навантаження першого буде встановлено на 0, як показано на малюнку нижче, а корисне навантаження другого встановлено на одиницю. Клацніть готово після редагування властивостей обох.
Щоб краще пояснити, пам’ятаєте, ми використовували підтягуючий резистор? Таким чином, коли кнопка не натиснута, вихід на цьому штифті буде ВИСОКИМ (1), це означає, що якщо ми пропустимо його через вузол перемикача, світлодіод буде ввімкнено, оскільки це не повинно бути, ми використовуйте вузол “change”, щоб встановити його як LOW (0). Другий вузол “зміни” використовується для встановлення такого значення, щоб, коли виявлено щось інше, крім ВИСОКОГО стану контакту 4 GPIO, він повинен увімкнути світлодіод “увімкнено”, оскільки це означатиме натискання кнопки. З’єднайте вузли зміни та решту вузлів разом, як показано на малюнку нижче.
Після цього ми готові до розгортання проекту. Перейдіть за підключенням, щоб переконатися, що все є як слід, а потім натисніть кнопку розгортання. Як зазвичай, у разі успіху ви побачите спливаюче спливаюче вікно розгортання і тепер зможете керувати світлодіодом за допомогою перемикача.
Хоча Node-Red дозволяє легко і швидко прототипувати вашу збірку, не турбуючись про код, насправді це може бути не найкращим чином, особливо для досвідчених розробників, які хочуть гнучкість і контроль над програмою. Тим не менше, це чудовий інструмент, який дозволяє створювати прототипи за лічені хвилини.
До наступного разу!