- Предварителни условия
- Необходими компоненти
- Инсталиране на 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 е мощен инструмент за изграждане на приложения на Internet of Things (IoT) с цел опростяване на програмния компонент.
Той използва визуално програмиране, което ви позволява да свързвате кодови блокове, известни като възли, заедно, за да изпълнявате задача. За днешния урок ще разгледаме как можете да внедрите прости проекти на Raspberry Pi, използвайки Node-RED. На малина пи възел-червен начинаещи ще покрие;
- Инсталиране на Node-RED на Raspberry Pi.
- Въведение в потребителския интерфейс Node-RED
- Как да настроите Node-RED потоци
- Как да контролираме Raspberry Pi GPIO щифтове с Node-RED
- Как да използваме Node-RED входове, изходи и ако не друго като вземане на решения с помощта на превключватели
Предварителни условия
Този урок ще се основава на OS Raspbian stretch и ще предположа, че сте запознати с настройката на 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 и по-късно ще модифицираме програмата, за да позволим на LED да се управлява от тактилен бутон, свързан към Pi GPIO.
Необходими компоненти
Следните компоненти са необходими за изграждането на този проект;
- Raspberry Pi 3 със SD карта, предварително заредена с Raspbian Stretch Preloaded
- 100 ома резистор (1)
- LED (1)
- Макет (1)
- Мъжки към женски джъмпери
- Тактилен бутон (1)
Инсталиране на Node-RED на Raspberry Pi
Докато Node-Red се инсталира предварително на Raspbian Stretch OS, ние трябва да го надстроим, преди да можем да се насладим на някои от най-новите му функции. Надстройка на Node-Red will
- Надстройте съществуващия потребител до LTS 8.x или 10.x Node.js и най-новия Node-RED
- Мигрирайте всички съществуващи глобално инсталирани възли в потребителското ~ /.node-червено пространство, за да могат да се управляват чрез мениджъра на палитри, НЕ Актуализира всички инсталирани от потребителя съществуващи възли. Това трябва да се направи ръчно от потребителя (вижте по-долу).
- По желание (пре) инсталирайте допълнителните възли, които са предварително инсталирани на пълен образ на Raspbian Pi.
Процесът на надграждане на Node-Red обаче е подобен на инсталирането на нов, така че в името на този урок ние просто ще го третираме като нова инсталация, така че хората, които използват други версии на ОС, могат да следват.
Следвайте стъпките по-долу, за да инсталирате / надстроите Node-RED на вашия Raspberry Pi.
Започваме с надстройване и актуализиране на pi, за да гарантираме, че всичко в него е актуално и да избегнем проблеми със съвместимостта. Направете това, като отворите терминал или чрез ssh, и стартирате;
Sudo apt-get update
следван от
sudo apt-get ъпгрейд
След като направите това, стартирайте bash скрипта по-долу на терминала;
bash <(curl -sL
В сценария Баш ще направите следните неща
- Попитайте дали искате да (пре) инсталирате допълнителните Pi възли
- Запазете списък с всички глобално инсталирани node- red - възли, намерени в / 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
- Ако не е 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 може да се стартира чрез раздела от менюто от работния плот на вашия малинов пи, през терминала или през ssh.
За да стартирате на работния плот на Raspberry Pi, щракнете върху иконата Raspberry, задръжте мишката върху Програмиране, щракнете върху Node-RED (Меню> Програмиране> NodeRed), за да го стартирате.
Също така може да се стартира от ssh или терминал чрез стартиране;
node-red-start
Трябва да видите прозорец като този по-долу, показващ червено стартиране на възел на работния плот.
След като видите това, отидете в меню-> интернет и стартирайте уеб браузъра Chrome. Въпреки че вашият Raspberry pi не се нуждае от интернет, за да стартира Node-Red, той използва браузър като свой интерфейс.
С пуснатия хром въведете localhost: 1880 в адресната лента, последван от клавиша за въвеждане. 1880 е портът на малиновия пи, на който Node-Red е предварително зададен за комуникация. Това трябва да показва интерфейса Node-Red, както е показано на изображението по-долу.
Разбиране на Node-RED интерфейса
Интерфейсът Node-Red се състои от панела за потока, палитрата на възлите, конзолата за отстраняване на грешки и информационната конзола, както е подчертано на изображението по-горе.
В панела поток е мястото, където възлите са свързани помежду си, за да се създаде програма, която в Node-Червен се нарича поток, а палитрата възел се състои от обекти, които са представителни за хардуер, протоколи и софтуерни функции, свързани с устройства. Включва протоколи като MQTT за IoT и GPIO изходни и входни режими за платки като Raspberry Pi. В конзолата информация предоставя информация за подчертани / избраните обекти, докато конзолата за отстраняване на грешкиработи точно като монитора Arduino Serial и може да осигури обратна връзка, докато потокът работи. Бутонът за разполагане се използва за качване на потока към целевия хардуер. Бутонът за меню съдържа различни видове качване, за да ви помогне да извлечете най-доброто от вашия проект. След като Node-Red работи и работи, вече можем да продължим да изграждаме демонстрационния проект.
Схеми
Както бе споменато по време на въведението, нашият демонстрационен проект за днес ще бъде да контролира GPIO на Raspberry Pi с помощта на Node-RED поток. За да покажем вариацията в състоянието на GPIO, ще свържем светодиод към GPIO, така че когато този конкретен GPIO щифт е включен, LED светва и обратно.
Свържете светодиода към Raspberry PI, както е показано в схемите по-долу.
Също така изграждам същото на моя хардуер, използвайки макет, LED, резистор и някои свързващи проводници. Моята хардуерна настройка изглежда по подобен начин, след като се свържат връзките.
Този проект може лесно да бъде превърнат в проект за домашна автоматизация, само като замените светодиода с реле и всеки уред за променлив ток, научете как да го направите, като преминете през различни проекти за домашна автоматизация.
Създаване на поток в Node-RED
С включения светодиод можем да продължим да развиваме потока. Програмите в NodeRed се наричат потоци точно както Arduino IDE ги нарича скици. Потоците се създават с помощта на комбинация от възли. Можете да създадете множество потоци, които могат да се изпълняват едновременно, но за този урок ще създадем един поток за включване / изключване на светодиода.
За да започнете, превъртете до дъното на палитрата Nodes, ще видите раздела малинови pi възли към края с два възела, обозначени rpigpio. Тези възли се използват за комуникация с GPIO на Raspberry Pi. Един от възлите е за вход, докато другият е за изход, диференциран от позицията на логото на малиновия пи. За въвеждащия възел логото идва преди текста, докато за изходния възел логото идва след текста, както е показано на изображението по-долу.
За този урок ще използваме изходния възел, плъзнете го в секцията за потока на интерфейса. Тази стъпка е подобна на декларирането на определен пин на вашия Arduino като изход с помощта на командата pinMode () . Щракнете двукратно върху изходния възел и ще се отвори изскачащ прозорец, както е показано по-долу, за да ви позволи да редактирате свойствата на възела.
Под раздела за свойства на пина изберете GPIO17 (щифт 11). След това задайте свойството type на „ цифров изход “ и поставете отметка в „ Инициализиране на състоянието на ПИН?“ отметка, оставяйки опцията „ начално ниво на щифт “ като ниска (0). Дайте на възела каквото име искате и щракнете върху готовия бутон.
Името на възела трябва автоматично да се промени на това, което сте въвели в настройката за свойства. Например го нарекох като LED и следователно името на възела също се променя като LED, както е показано по-долу.
За да включим / изключим светодиода, трябва да използваме вход, нещо, което да стимулира действието. Въпреки че бихме могли да използваме бутон, искам да използвам това, за да въведа функцията в Node-RED, която позволява инжектирането на съобщения в потоци. Тази функция се нарича възел за инжектиране. Ще използваме два инжекционни възела. Единият ще бъде да включи светодиода, докато другият ще го изключи.
Отидете до палитрата на възела и плъзнете възела за инжектиране към потока. Това е първият възел в палитрата със стрелка, възелът за инжектиране е подчертан на изображението по-долу.
Щракнете двукратно върху него, за да редактирате свойствата му. Променете типа данни на низ, като щракнете върху падащото меню пред полезния товар и въведете 1 в полето за полезен товар. Стойността в полезния товар е това, което ще се инжектира в потока при натискане на възела. Задайте името на възела на „ON“ Натиснете бутона „Done“, за да запазите.
Повторете горното за втория възел, като зададете стойността на полезния товар на „0“ и името му като „изключено“, както е показано по-долу.
Под функцията за свойства, падащото меню за повторение може да се използва за автоматизиране на инжектирането, така че бутоните да се натискат на интервали. Това може да се използва за създаване на ефект на мигане. Съединете възлите заедно, както е показано по-долу, като плъзнете сивата точка на един от възлите към другия, за да създадете потока.
С това свършихме, сега завършихме първия ни възел-червен поток.
Следващата стъпка е да разгърнем потока на малиновия пи. Щракнете върху червения бутон за разполагане. Трябва да видите светкавица „успешно внедрена“ в горната част на екрана, както е показано по-долу.
Щракнете върху сивия бутон зад инжекционните възли, за да активирате всеки от възлите.
Като щракнете върху инжекционния възел “on”, ще видите, че се показва успешно инжектирано “on” и светодиодът светва. Светодиодът трябва да изгасне, когато се щракне възелът за инжектиране „изключен“.
Това е. Цялостната работа на тази настройка може да бъде намерена във видеото, свързано в долната част на тази страница.
Добавяне на бутон / превключвател в Node-RED интерфейс с Raspberry Pi
За да обясним как да свържете / добавите входен елемент към вашия поток, ние ще продължим горния поток по-нататък, като добавим бутон, за да заменим инжектиращите възли.
Свържете бутона с малиновия пи, така че единият крак на бутона да е свързан със земята, а другият да е свързан с GPIO щифт 4 (щифт 11) на малиновия пи, както е показано на схемите по-долу.
След това се върнете към Node-Red и изтрийте двата инжекционни възела, които използвахме по-рано, като щракнете върху възлите и натиснете delete на клавиатурата или щракнете двукратно върху възлите и натиснете delete в изскачащия прозорец. След като приключите, превъртете надолу палитрата на възела до раздела малинов пи и изберете възела за въвеждане. Той е този с иконата на малинов пи вляво, преди името на възела.
Плъзнете възела в потока и щракнете двукратно върху него, за да редактирате свойствата. Поставете щифта на GPIO 4 (щифт 11) и задайте падащото пред резистора на изтегляне. Това ще „издърпа“ GPIO 4 до HIGH. Щракнете върху бутона "Готово", след като зададете свойствата.
За да ни позволят да взимаме логични решения при натискане на превключвателя, а не просто да скъсим GPIO4 към земята, ще използваме възела за превключване. Потърсете го в палитрата на възела, под функционалния раздел и плъзнете до потока.
Превключвателният възел ви позволява да вземате решения по начин, подобен на операторите „ако“. Може да се настрои да има различни изходи в зависимост от входната стойност. За този урок ще го конфигурираме с два изходни пътя, така че когато свойството msg.payload е равно на 1 (превключвателят не е натиснат), той трябва да следва първия път и втори път ще бъде последван, ако има друг вход различно от 1 се наблюдава на входа (превключвателят е натиснат). Пътеките се добавят с помощта на бутона „+ добавяне“. Щракнете два пъти върху възела и конфигурирайте, както е описано по-горе. Щракнете върху готово, когато приключите.
Веднага щом натиснете бутона „Готово“, трябва да видите, че двата пътя се отразяват в перспективата на превключвателния възел, тъй като сега той ще има два кръстовища на изхода.
След това трябва да въведем възел за промяна. Възелът за промяна ще се използва за задаване на състоянието на светодиода въз основа на резултата от възела на аргумента.
Ще използваме два от възлите за промяна. Полезният товар на първия ще бъде настроен на 0, както е показано на изображението по-долу, а полезният товар на втория - на един. Щракнете върху готово след редактиране на свойствата и за двете.
За да обясним по-добре, не забравяйте, че използвахме изтеглящия резистор? По този начин, когато бутонът не е натиснат, изходът на този щифт ще бъде HIGH (1), което означава, че ако го прекараме през превключващия възел, светодиодът ще бъде „включен“, тъй като това не трябва да е така, ние ще използвайте възела “change”, за да го зададете като LOW (0). Вторият възел „промяна“ се използва за задаване на стойността на такава, че когато се открие нещо различно от HIGH състоянието на GPIO пин 4, той трябва да включи светодиода „включен“, тъй като това ще означава, че бутонът е бил натиснат. Свържете възлите за промяна и останалите възли заедно, както е показано на изображението по-долу.
С това вече сме готови да внедрим проекта. Преминете през връзката, за да се уверите, че всичко е както трябва, след това щракнете върху бутона за разполагане. Както обикновено, ако успеете, трябва да видите изскачащия прозорец за успешно внедряване и сега да можете да контролирате светодиода с помощта на превключвателя.
Докато Node-Red улеснява и бърза прототипиране на вашата компилация, без да се притеснявате за кода, той всъщност може да не е най-подходящ, особено за опитни разработчици, които ще искат гъвкавост и контрол върху програмата. Независимо от това, това е чудесен инструмент, който ви позволява да създавате прототипи за минути.
До следващия път!