- Requisits previs
- Components necessaris
- Instal·lació de Node-RED al Raspberry Pi
- Llançament de Node-RED a Raspberry Pi
- Comprensió de la interfície Node-RED
- Esquemes
- Creació d'un flux en Node-RED
- Addició d’un pulsador / commutador a la interfície Node-RED amb Raspberry Pi
Alguna vegada em vaig preguntar si hi havia una manera de fer prototips senzills de solucions IoT sense haver de passar dies escrivint codis o de construir projectes pràctics avançats sense codificar. Sí, això és possible amb la plataforma Node-Red. Desenvolupat per IBM, Node-RED és una eina de programació de codi obert per connectar de manera nova i interessant dispositius de maquinari, API i serveis en línia. Proporciona un editor basat en navegadors que facilita la connexió de fluxos mitjançant l’àmplia gamma de nodes de la paleta que es poden desplegar al seu temps d’execució amb un sol clic.
Node-RED és una potent eina per crear aplicacions d'Internet de les coses (IoT) amb l'objectiu de simplificar el component de programació.
Utilitza programació visual que us permet connectar blocs de codi, coneguts com a nodes, junts per realitzar una tasca. Per al tutorial d'avui, examinarem com podeu desplegar projectes senzills al raspberry pi mitjançant Node-RED. Es tractarà el tutorial de node vermell de raspberry pi;
- Instal·lació de Node-RED al Raspberry Pi.
- Introducció a la interfície d'usuari Node-RED
- Com configurar els fluxos Node-RED
- Com controlar els pins GPIO de Raspberry Pi amb Node-RED
- Com s'utilitzen les entrades, les sortides i el Node-RED com la presa de decisions mitjançant commutadors
Requisits previs
Aquest tutorial es basarà en el sistema operatiu stretch Raspbian i suposaré que esteu familiaritzat amb la configuració del Raspberry Pi amb ell i que sabeu com fer SSH al Pi mitjançant un programari de terminal com la massilla. Si teniu problemes amb això, hi ha un munt de tutorials de Raspberry Pi en aquest lloc web que us poden ajudar.
Per completar fàcilment el tutorial, us aconsellaré que feu servir un monitor connectat al raspberry pi o que utilitzeu el programari VNC Viewer. Si no teniu un monitor i comenceu de nou amb Pi, podeu llegir aquesta configuració de Headless Raspberry Pi per continuar amb aquest tutorial. Tot i que Node-Red s’executa des d’un navegador web i s’hi pot accedir des del vostre PC al qual està connectat el Pi mitjançant l’adreça IP del Pi, crec que l’experiència VNC / monitor us donarà un millor aspecte.
Com a demostració per mostrar com funciona Node-Red, utilitzarem Node-RED per programar el Raspberry Pi per controlar un LED connectat al GPIO i posteriorment modificarem el programa per permetre que el LED es pugui controlar des d’un botó tàctil connectat al Pi GPIO.
Components necessaris
Els components següents són necessaris per construir aquest projecte;
- Raspberry Pi 3 amb targeta SD precarregada amb Raspbian Stretch precarregada
- Resistència de 100 ohms (1)
- LED (1)
- Taula de pa (1)
- Filferros de pont masculí a femella
- Polsador tàctil (1)
Instal·lació de Node-RED al Raspberry Pi
Tot i que Node-Red ve preinstal·lat al sistema operatiu Raspbian Stretch, l’hem d’actualitzar abans de poder gaudir d’algunes de les seves darreres funcions. Actualització del testament Node-Red
- Actualitzeu l’usuari existent a LTS 8.x o 10.x Node.js i l’últim Node-RED
- Migreu els nodes instal·lats globalment existents a l'espai ~ /.node-red dels usuaris perquè es puguin gestionar mitjançant el gestor de paletes, NO actualitza cap node existent instal·lat per l'usuari. Això l’ha de fer manualment l’usuari (vegeu més avall).
- Opcionalment, torneu a instal·lar els nodes addicionals preinstal·lats en una imatge completa de Raspbian Pi.
No obstant això, el procés d'actualització del Node-Red és similar a la instal·lació d'un de nou, de manera que, pel bé d'aquest tutorial, el tractarem com una nova instal·lació perquè la gent que faci servir altres versions del sistema operatiu pugui seguir-la.
Seguiu els passos següents per instal·lar / actualitzar Node-RED al vostre Raspberry Pi.
Comencem per actualitzar i actualitzar el pi, per assegurar-nos que tot el que conté està actualitzat i evitar problemes de compatibilitat. Feu-ho obrint un terminal o mitjançant ssh i executeu;
Sudo apt-get update
Seguit per
sudo apt-get upgrade
Fet això, executeu l'script bash següent al terminal;
bash <(curl -sL
El guió bash farà les següents coses
- Pregunteu si voleu (re) instal·lar els nodes Pi addicionals
- Deseu una llista de qualsevol node-vermell-node instal·lat a tot el món que es troba a / usr / lib / node_modules
- apt-get elimina Node-Red existent
- elimineu els fitxers binaris vermells de node de / usr / bin i / usr / local / bin
- Elimineu els mòduls vermells de node de / usr / lib / node_modules i / usr / local / lib / node_modules
- Detecteu si Node.js s'ha instal·lat des del paquet Node.js o Debian
- Si no és v8 o més recent: traieu-lo segons correspongui i instal·leu el v8 o v10 LTS més recent (sense utilitzar apt).
- Neteja la memòria cau de npm i la memòria cau de.node-gyp per eliminar qualsevol versió anterior del codi
- Instal·leu la versió més recent de Node-RED
- Torneu a instal·lar sota el compte d'usuari els nodes que s'havien instal·lat anteriorment a tot el món
- Torneu a instal·lar els nodes Pi addicionals si cal
- Reconstrueix tots els nodes: per recompilar qualsevol binari perquè coincideixi amb la versió més recent de Node.js
- Afegiu ordres node-red-start, node-red-stop i node-red-log a / usr / bin
- Afegeix una icona i una drecera de menú
- Afegiu un script de sistema i configureu l'usuari
- Si en un Pi afegiu una temperatura de CPU -> exemple IoT
L'escriptura bash anterior executa moltes ordres com sudo i elimina Node.js existents i els directoris Node-RED bàsics. Podeu comprovar el contingut de l'script en aquesta pàgina de GitHub abans d'executar-lo per assegurar-vos que no afectarà cap projecte que ja tingueu al Pi.
Amb la instal·lació completa, ara hauríeu de veure la icona Node-Red a la llista d'aplicacions de programació del menú.
Llançament de Node-RED a Raspberry Pi
Node-Red es pot llançar a través de la secció de menú des de l'escriptori del vostre raspberry pi, a través del terminal o mitjançant ssh.
Per iniciar-lo a l'escriptori del raspberry pi, feu clic a la icona del gerd, passeu el ratolí a Programació i feu clic a Node-RED (Menú> Programació> NodeRed) per iniciar-lo.

També es pot llançar des de ssh o terminal executant-se;
node-red-start

Hauríeu de veure una finestra com la següent que mostra el llançament en vermell del node a l'escriptori.
Un cop ho veieu, aneu a menú-> Internet i inicieu el navegador web Chrome. Tot i que el vostre Raspberry pi no necessita Internet per executar Node-Red, utilitza un navegador com a interfície.
Amb el llançament de crom, introduïu localhost: 1880 a la barra d'adreces seguit de la tecla d'inici. El 1880 és el port del raspberry pi en què Node-Red està predefinit per comunicar-se. Això hauria de mostrar la interfície Node-Red com es mostra a la imatge següent.

Comprensió de la interfície Node-RED
La interfície Node-Red inclou el tauler de flux, la paleta de nodes, la consola de depuració i la consola d'informació tal com es ressalta a la imatge superior.
El tauler de flux és on els nodes s’uneixen per crear un programa que en Node-Red s’anomena flux, mentre que la paleta Node comprèn objectes que són representatius de maquinari, protocols i funcions de programari associades als dispositius. Inclou protocols com MQTT per a IoT i modes de sortida i entrada GPIO per a plaques com el raspberry pi. La consola d' informació proporciona informació sobre objectes ressaltats / seleccionats mentre es troba la consola de depuraciófunciona igual que el monitor sèrie Arduino i pot proporcionar comentaris mentre el flux s'està executant. El botó de desplegament s’utilitza per carregar el flux al maquinari de destinació. El botó Menú conté diferents tipus de càrrega per ajudar-vos a treure el màxim partit al vostre projecte. Amb Node-Red en funcionament, ara podem procedir a la construcció del projecte de demostració.
Esquemes
Com es va esmentar durant la introducció, el nostre projecte de demostració d'avui serà controlar el GPIO de Raspberry Pi mitjançant un flux Node-RED. Per mostrar la variació de l'estat del GPIO, connectarem un LED al GPIO de manera que quan s'encengui aquest pin GPIO concret, el LED s'encengui i viceversa.
Connecteu el LED al Raspberry PI tal com es mostra als esquemes següents.

També construeixo el mateix al meu maquinari mitjançant una placa de control, un LED, una resistència i alguns cables de connexió. La configuració del maquinari té un aspecte semblant a això un cop realitzades les connexions.

Aquest projecte es pot convertir fàcilment en un projecte domòtic, només substituint el LED per un relé i qualsevol aparell de CA. Apreneu a fer-ho passant per diversos projectes domòtics.
Creació d'un flux en Node-RED
Amb el LED connectat, podem procedir a desenvolupar el flux. Els programes de NodeRed s’anomenen fluxos tal com els Arduino IDE els anomenen esbossos. Els fluxos es creen mitjançant una combinació de nodes. Podeu crear diversos fluxos que es poden executar al mateix temps, però per a aquest tutorial, crearem un flux únic per encendre / apagar el LED.

Per començar, desplaceu-vos fins a la part inferior de la paleta Nodes, veureu la secció de nodes raspberry pi cap al final amb dos nodes etiquetats com rpigpio. Aquests nodes s’utilitzen per comunicar-se amb el GPIO del raspberry pi. Un dels nodes és per a l'entrada mentre que l'altre és per a sortida diferenciat per la posició del logotip del raspberry pi. Per al node d’entrada, el logotip apareix abans que el text, mentre que per al node de sortida el logotip apareix després del text tal com es mostra a la imatge següent.
Per a aquest tutorial farem ús del node de sortida, l’arrossegarem a la secció de flux de la interfície. Aquest pas és similar a declarar un pin concret del vostre Arduino com a sortida mitjançant l' ordre pinMode () . Feu doble clic al node de sortida i s'obrirà una finestra emergent com es mostra a continuació per permetre editar les propietats del node.

A la secció de propietats del pin, seleccioneu GPIO17 (pin 11). A continuació, configureu la propietat tipus a " Sortida digital " i marqueu " Inicialitzar l'estat del pin?" activeu la casella de selecció deixant l'opció " nivell inicial de pin " tan baixa (0). Doneu al node el nom que vulgueu i feu clic al botó Fet.
El nom del node hauria de canviar automàticament pel que heu introduït a la configuració de propietats. Per exemple, el vaig anomenar com a LED i, per tant, el nom del node també es canvia com a LED, tal com es mostra a continuació.

Per engegar / apagar el LED, hem d’utilitzar una entrada que serveixi per impulsar l’acció. Tot i que podríem fer servir un polsador, vull utilitzar-lo per introduir la funció a Node-RED que permet la injecció de missatges als fluxos. Aquesta característica s’anomena node d’injectar. Farem servir dos nodes d'injecció. Un serà encendre el LED mentre que l’altre l’apagarà.
Aneu a la paleta de nodes i arrossegueu el node d'injecció fins al flux. És el primer node de la paleta amb una fletxa; el node d'injecció es ressalta a la imatge següent.

Feu-hi doble clic per editar-ne les propietats. Canvieu el tipus de dades a cadena fent clic al menú desplegable situat davant de la càrrega útil i introduïu 1 al quadre Càrrega útil. El valor del quadre de càrrega útil és el que s’injectarà al flux quan es prem el node. Establiu el nom del node a "ACTIVAT" Premeu el botó "Fet" per desar.

Repetiu l'anterior per al segon node, establint el valor de la càrrega útil a "0" i el seu nom com a "desactivat", com es mostra a continuació.

A la funció de propietats, el menú desplegable de repetició es pot utilitzar per automatitzar la injecció de manera que es pressionin els botons a intervals. Es pot utilitzar per crear l'efecte parpelleig. Uniu els nodes com es mostra a continuació, arrossegant el punt gris d'un dels nodes a l'altre per crear el flux.

Fet això, ara hem completat el nostre primer flux vermell de node.
El següent pas és desplegar el flux al raspberry pi. Feu clic al botó de desplegament vermell. Hauríeu de veure el flaix "desplegat correctament" a la part superior de la pantalla, tal com es mostra a continuació.

Feu clic al botó gris que hi ha darrere dels nodes d'injecció per activar cadascun dels nodes.

En fer clic al node d'injectar "on", hauríeu de veure que s'injecta correctament "on" i el LED s'encén. El LED s’ha d’apagar quan es fa clic al node d’injecció “off”.

Això és. El funcionament complet d'aquesta configuració es troba al vídeo enllaçat a la part inferior d'aquesta pàgina.
Addició d’un pulsador / commutador a la interfície Node-RED amb Raspberry Pi
Per explicar com connectar / afegir un element d’entrada al flux, afegirem un flux anterior afegint un polsador per substituir els nodes d’injecció.
Connecteu el polsador al raspberry pi, de manera que una pota del polsador estigui connectada a terra i l’altra estigui connectada al pin GPIO 4 (pin 11) del pi raspbery, tal com es mostra als esquemes següents.

Fet això, torneu a Node-Red i suprimiu els dos nodes injectats que hem utilitzat anteriorment, fent clic als nodes i prement Delete al teclat o fent doble clic als nodes i prement Delete a la finestra emergent. Fet això, desplaceu-vos cap avall per la paleta de nodes fins a la secció de raspberry pi i seleccioneu el node d'entrada. És el que té la icona de raspberry pi a l'esquerra, abans del nom del node.

Arrossegueu el node al flux i feu-hi doble clic per editar les propietats. Establiu el pin a GPIO 4 (pin 11) i configureu el menú desplegable que hi ha davant de la resistència per arrencar. Això farà que el GPIO 4 es tiri cap amunt a HIGH. Feu clic al botó Fet després de configurar les propietats.

Per permetre’ns prendre decisions lògiques quan es pressiona l’interruptor en lloc d’acortar GPIO4 a terra, utilitzarem el node d’interruptor. Cerqueu-lo a la paleta de nodes, a la secció de funcions i arrossegueu fins al flux.

El node de commutador us permet prendre decisions d'una manera similar a les sentències "si". Es pot configurar per tenir diferents sortides en funció del valor d'entrada. Per a aquest tutorial, el configurarem amb dos camins de sortida, de manera que, quan la propietat msg.payload sigui igual a 1 (no es prem el commutador), hauria de seguir el primer camí i se seguirà un segon camí si hi ha alguna altra entrada a l’entrada s’observa un altre que 1 (es prem el commutador). Els camins s’afegeixen mitjançant el botó “+ afegir”. Feu doble clic al node i configureu-ho tal com es descriu anteriorment. Feu clic a Finalitzat quan hàgiu acabat.

Tan bon punt premeu el botó Fet, hauríeu de veure els dos camins reflectits a la perspectiva del node del commutador, ja que ara tindrà dues unions a la sortida.

A continuació, hem d’incloure un node de “canvi”. El node de canvi s'utilitzarà per establir l'estat del LED en funció del resultat del node d' argument.

Farem servir dos dels nodes de canvi. La càrrega útil del primer s'establirà a 0 tal com es mostra a la imatge següent i la càrrega útil del segon a un. Feu clic a Fet després d'editar les propietats de tots dos.

Per explicar-ho millor, recordeu que hem utilitzat la resistència de tracció? Així, quan no s’hagi premut el botó, la sortida d’aquest pin serà ALTA (1), el que significa que si el passem pel node d’interruptor, el LED estarà “encès”, ja que no hauria de ser així, ho farem utilitzeu el node "canvia" per establir-lo com a BAIX (0). El segon node de "canvi" s'utilitza per establir el valor en un tal que, quan es detecti qualsevol cosa que no sigui l'estat HIGH del pin GPIO 4, hauria d'encendre el LED perquè això significa que s'ha premut el polsador. Connecteu els nodes de canvi i la resta de nodes com es mostra a la imatge següent.

Fet això, ja estem preparats per desplegar el projecte. Repasseu la connexió per assegurar-vos que tot és com hauria de ser i feu clic al botó desplega. Com és habitual, si teniu èxit, hauríeu de veure el desplegament correcte i ara podreu controlar el led mitjançant el commutador.
Tot i que Node-Red facilita el prototipatge de la compilació de manera senzilla i ràpida sense preocupar-se pel codi, és possible que no sigui el més adequat, especialment per a desenvolupadors experimentats que vulguin flexibilitat i control sobre el programa. Tot i això, és una gran eina que us permet construir prototips en qüestió de minuts.
Fins la propera!
