- Condiții prealabile
- Componente necesare
- Instalarea Node-RED pe Raspberry Pi
- Lansarea Node-RED în Raspberry Pi
- Înțelegerea interfeței Node-RED
- Scheme
- Crearea unui flux în Node-RED
- Adăugarea unui buton / comutator în interfața Node-RED cu Raspberry Pi
M-am întrebat vreodată dacă există o modalitate de a face prototipuri simple de soluții IoT fără a fi nevoie să petreceți zile scriind coduri sau să construiți proiecte practice avansate fără codificare. Da, acest lucru este posibil cu platforma Node-Red. Dezvoltat de IBM, Node-RED este un instrument de programare open-source pentru conectarea între dispozitive hardware, API-uri și servicii online într-un mod nou și interesant. Oferă un editor bazat pe browser care face mai ușoară conectarea „ fluxurilor” folosind gama largă de noduri din paletă care pot fi implementate în timpul rulării sale cu un singur clic.
Node-RED este un instrument puternic pentru construirea aplicațiilor Internet of Things (IoT) cu scopul de a simplifica componenta de programare.
Folosește programare vizuală care vă permite să conectați blocuri de cod, cunoscute sub numele de noduri, împreună pentru a efectua o sarcină. Pentru tutorialul de astăzi, vom examina modul în care puteți implementa proiecte simple pe raspberry pi utilizând Node-RED. Zmeura pi-nod roșu tutorial va acoperi;
- Instalarea Node-RED pe Raspberry Pi.
- Introducere în interfața utilizatorului Node-RED
- Cum se configurează fluxurile Node-RED
- Cum se controlează pinii GPIO Raspberry Pi cu Node-RED
- Cum se utilizează intrările, ieșirile Node-RED și, de exemplu, luarea deciziilor folosind comutatoare
Condiții prealabile
Acest tutorial se va baza pe sistemul de operare Raspbian stretch și voi presupune că sunteți familiarizat cu configurarea Raspberry Pi cu acesta și știți cum să SSH în Pi utilizând un software terminal cum ar fi chit. Dacă aveți probleme cu oricare dintre acestea, există o mulțime de tutoriale Raspberry Pi pe acest site web care vă pot ajuta.
Pentru a completa cu ușurință tutorialul, vă voi sfătui să folosiți un monitor conectat la raspberry pi sau să utilizați software-ul VNC Viewer. Dacă nu aveți un monitor și începeți cu Pi, puteți citi această configurație Headless Raspberry Pi pentru a continua cu acest tutorial. În timp ce Node-Red rulează dintr-un browser web și poate fi accesat pe computerul dvs. la care Pi este conectat prin adresa IP a Pi, cred că experiența VNC / monitor vă va oferi o mai bună atitudine.
Ca o demonstrație pentru a arăta cum funcționează Node-Red, vom folosi Node-RED pentru a programa Raspberry Pi pentru a controla un LED conectat la GPIO și ulterior vom modifica programul pentru a permite controlul LED-ului de la un buton tactil conectat la Pi GPIO.
Componente necesare
Următoarele componente sunt necesare pentru a construi acest proiect;
- Raspberry Pi 3 cu card SD preîncărcat cu Raspbian Stretch Preloaded
- Rezistor de 100 ohmi (1)
- LED (1)
- Panou (1)
- Sârme jumper de la bărbat la femeie
- Buton tactil (1)
Instalarea Node-RED pe Raspberry Pi
În timp ce Node-Red vine preinstalat pe sistemul de operare Raspbian Stretch, trebuie să îl actualizăm înainte de a ne putea bucura de unele dintre cele mai recente caracteristici ale acestuia. Actualizarea testamentului Node-Red
- Actualizați utilizatorul existent la LTS 8.x sau 10.x Node.js și cel mai recent Node-RED
- Migrați orice noduri existente existente la nivel global în spațiul utilizatorilor ~ /.node-red, astfel încât să poată fi gestionate prin intermediul managerului de palete, NU actualizează niciun nod instalat de utilizator. Acest lucru trebuie făcut manual de către utilizator (vezi mai jos).
- Opțional (re) instalați nodurile suplimentare care sunt preinstalate pe o imagine Raspbian Pi completă.
Cu toate acestea, procesul de actualizare a Node-Red este similar cu instalarea unuia nou, așa că, de dragul acestui tutorial, îl vom trata doar ca o nouă instalare, astfel încât să poată urma persoanele care utilizează alte versiuni ale sistemului de operare.
Urmați pașii de mai jos pentru a instala / actualiza Node-RED pe Raspberry Pi.
Începem prin actualizarea și actualizarea pi, pentru a ne asigura că totul este actualizat și pentru a evita problemele de compatibilitate. Faceți acest lucru deschizând un terminal sau prin ssh și rulați;
Sudo apt-get update
urmat de
sudo apt-get upgrade
Cu acest lucru, rulați scriptul bash de mai jos pe terminal;
bash <(curl -sL
Script bash va face următoarele lucruri
- Întrebați dacă doriți să (re) instalați nodurile Pi suplimentare
- Salvați o listă cu toate nodurile-roșu-nod instalate la nivel global găsite în / usr / lib / node_modules
- apt-get elimina Node-Red existent
- eliminați orice binar roșu de nod din / usr / bin și / usr / local / bin
- Eliminați toate modulele roșii nod din / usr / lib / node_modules și / usr / local / lib / node_modules
- Detectați dacă Node.js a fost instalat din pachetul Node.js sau Debian
- Dacă nu v8 sau mai recent - eliminați după caz și instalați cele mai recente versiuni v8 sau v10 LTS (fără utilizarea apt).
- Curățați memoria cache npm și memoria cache.node-gyp pentru a elimina orice versiuni anterioare ale codului
- Instalați cea mai recentă versiune Node-RED
- Reinstalați sub contul de utilizator orice noduri care au fost instalate anterior la nivel global
- Reinstalați nodurile Pi suplimentare dacă este necesar
- Reconstruiți toate nodurile - pentru a recompila orice binare pentru a se potrivi cu cea mai recentă versiune Node.js
- Adăugați comenzile node-red-start, node-red-stop și node-red-log în / usr / bin
- Adăugați o comandă rapidă de meniu și o pictogramă
- Adăugați un script de sistem și setați utilizatorul
- Dacă pe un Pi adăugați o temperatură CPU -> exemplu IoT
Scriptul bash de mai sus rulează multe comenzi ca sudo și șterge Node.js existente și directorul Node-RED de bază. Puteți verifica conținutul scriptului pe această pagină GitHub înainte de al rula pentru a vă asigura că nu va afecta niciun proiect pe care îl aveți deja pe Pi.
Odată ce instalarea este completă, ar trebui să vedeți acum pictograma Node-Red sub lista de aplicații de programare din meniul dvs.
Lansarea Node-RED în Raspberry Pi
Node-Red poate fi lansat prin secțiunea de meniu de pe desktop-ul raspberry pi, prin terminal sau prin ssh.
Pentru a lansa pe desktop-ul raspberry pi, faceți clic pe pictograma Raspberry, plasați mouse-ul pe Programare, faceți clic pe Node-RED (Meniu> Programare> NodeRed) pentru al lansa.
Poate fi lansat și de pe ssh sau terminal rulând;
nod-roșu-start
Ar trebui să vedeți o fereastră ca cea de mai jos care arată lansarea roșie a nodului pe desktop.
După ce vedeți acest lucru, accesați meniu-> internet și lansați browserul web crom. În timp ce Raspberry pi nu are nevoie de internet pentru a rula Node-Red, acesta folosește un browser ca interfață.
Odată cu lansarea cromului, introduceți localhost: 1880 în bara de adrese urmată de tasta Enter. 1880 este portul de pe pi de zmeură pe care Node-Red este presetat să comunice. Aceasta ar trebui să afișeze interfața Node-Red, așa cum se arată în imaginea de mai jos.
Înțelegerea interfeței Node-RED
Interfața Node-Red cuprinde panoul de flux, paleta nodurilor, consola de depanare și consola de informații, așa cum este evidențiat în imaginea de mai sus.
Panoul de curgere este în cazul în care nodurile sunt unite împreună pentru a crea un program care, în Nod-roșu se numește flux, în timp ce paleta Nod cuprinde obiecte care sunt reprezentative pentru hardware, protocoale și software caracteristici asociate cu dispozitive. Include protocoale precum MQTT pentru IoT și moduri de ieșire și intrare GPIO pentru plăci precum raspberry pi. Consola info oferă informații despre obiectele evidențiate / selectate în timp ce consola de depanarefuncționează la fel ca monitorul serial Arduino și poate oferi feedback în timp ce fluxul rulează. Butonul de implementare este utilizat pentru a încărca fluxul către hardware-ul țintă. Butonul Meniu conține diferite tipuri de încărcare pentru a vă ajuta să profitați la maximum de proiectul dvs. Cu Node-Red în funcțiune, putem continua să construim proiectul demo.
Scheme
După cum sa menționat în timpul introducerii, proiectul nostru demo pentru astăzi va fi să controlăm GPIO-ul Raspberry Pi folosind un flux Node-RED. Pentru a arăta variația stării GPIO, vom conecta un LED la GPIO astfel încât atunci când acel anumit pin GPIO este pornit, LED-ul se aprinde și invers.
Conectați LED-ul la Raspberry PI așa cum se arată în schemele de mai jos.
De asemenea, construiesc același lucru pe hardware-ul meu folosind o panou de testare, LED, rezistență și câteva fire de conectare. Configurarea mea hardware arată așa ceva odată ce conexiunile sunt făcute.
Acest proiect poate fi transformat cu ușurință într-un proiect de automatizare a casei, doar prin înlocuirea LED-ului cu un releu și orice aparat de curent alternativ, învățați cum să faceți acest lucru parcurgând diverse proiecte de automatizare a casei.
Crearea unui flux în Node-RED
Cu LED-ul conectat, putem continua să dezvoltăm fluxul. Programele din NodeRed se numesc fluxuri la fel cum ID-ul Arduino le numește schițe. Fluxurile sunt create folosind o combinație de noduri. Puteți crea mai multe fluxuri care pot rula toate în același timp, dar pentru acest tutorial, vom crea un singur flux pentru a porni / opri LED-ul.
Pentru început, derulați până în partea de jos a paletei Noduri, veți vedea secțiunea nodurilor pi zmeură spre final cu două noduri etichetate rpigpio. Aceste noduri sunt utilizate pentru comunicarea cu GPIO-ul raspberry pi. Unul dintre noduri este pentru intrare, în timp ce celălalt este pentru ieșire diferențiat de poziția logo-ului raspberry pi. Pentru nodul de intrare, sigla vine înaintea textului, în timp ce pentru nodul de ieșire, sigla vine după text, așa cum se arată în imaginea de mai jos.
Pentru acest tutorial vom folosi nodul de ieșire, trageți-l în secțiunea de flux a interfeței. Acest pas este similar cu declararea unui anumit pin din Arduino ca ieșire folosind comanda pinMode () . Faceți dublu clic pe nodul de ieșire și se va deschide o fereastră pop-up așa cum se arată mai jos, pentru a vă permite să editați proprietățile nodului.
Sub secțiunea proprietății pinului, selectați GPIO17 (pinul 11). Apoi setați proprietatea tip la „ Ieșire digitală ” și bifați „ Inițializați starea pinului?” bifați caseta lăsând opțiunea „ nivel inițial de pin ” la un nivel scăzut (0). Dați nodului orice nume doriți și faceți clic pe butonul Terminat.
Numele nodului ar trebui să se schimbe automat cu cel pe care l-ați introdus în setarea de proprietăți. De exemplu, l-am numit LED și, prin urmare, numele nodului este schimbat și ca LED, așa cum se arată mai jos.
Pentru a porni / opri LED-ul, trebuie să folosim o intrare, ceva care să conducă acțiunea. În timp ce am putea folosi un buton, vreau să folosesc acest lucru pentru a introduce caracteristica în Node-RED care permite injectarea de mesaje în fluxuri. Aceste caracteristici se numesc Nodul de injectare. Vom folosi două noduri de injectare. Una va fi să porniți LED-ul, în timp ce cealaltă va fi să-l opriți.
Mergeți la paleta nodului și trageți nodul de injectare în flux. Este primul nod din paletă cu o săgeată, nodul injectat este evidențiat în imaginea de mai jos.
Faceți dublu clic pe acesta pentru a edita proprietățile sale. Schimbați tipul de date în șir făcând clic pe meniul derulant din fața sarcinii utile și introduceți 1 în caseta Încărcare utilă. Valoarea din caseta de încărcare utilă este cea care va fi injectată în flux atunci când nodul este apăsat. Setați numele nodului la „ACTIVAT” Apăsați butonul „Terminat” pentru a salva.
Repetați cele de mai sus pentru al doilea nod, setând valoarea sarcinii utile la „0” și numele acesteia ca „dezactivat”, așa cum se arată mai jos.
Sub funcția de proprietăți, repetare dropdown poate fi folosit pentru a automatiza injectare, astfel butoanele sunt apăsate la intervale. Aceasta poate fi utilizată pentru a crea efectul de clipire. Alăturați-vă nodurile așa cum se arată mai jos, trăgând punctul gri pe unul dintre noduri în celălalt pentru a crea fluxul.
După ce am făcut acest lucru, am finalizat acum primul nostru flux Node-Red.
Următorul pas este ca noi să implementăm fluxul pe pi zmeură. Faceți clic pe butonul roșu de implementare. Ar trebui să vedeți blițul „implementat cu succes” în partea de sus a ecranului, așa cum se arată mai jos.
Faceți clic pe butonul gri din spatele nodurilor de injectare pentru a activa fiecare dintre noduri.
Făcând clic pe nodul de injectare „on”, ar trebui să vedeți „on” injectat cu succes afișat și LED-ul se aprinde. LED-ul ar trebui să se stingă când se face clic pe nodul de injectare „off”.
Asta e. Funcționarea completă a acestei setări poate fi găsită în videoclipul legat în partea de jos a acestei pagini.
Adăugarea unui buton / comutator în interfața Node-RED cu Raspberry Pi
Pentru a explica cum să conectați / adăugați un element de intrare la fluxul dvs., vom continua fluxul de mai sus adăugând un buton pentru a înlocui nodurile de injectare.
Conectați butonul la pi de zmeură, astfel încât, un picior al butonului să fie conectat la masă, iar celălalt să fie conectat la pinul GPIO 4 (pinul 11) al pi de zmeură, așa cum se arată în schemele de mai jos.
După ce ați făcut acest lucru, reveniți la Node-Red și ștergeți cele două noduri injectate pe care le-am folosit mai devreme, făcând clic pe noduri și apăsând ștergeți de pe tastatură sau făcând dublu clic pe noduri și apăsând ștergeți în fereastra pop-up. După ce ați terminat, derulați în jos paleta nodului până la secțiunea raspberry pi și selectați nodul de intrare. Este cel cu pictograma zmeură pi în stânga, înainte de numele nodului.
Trageți nodul în flux și faceți dublu clic pe acesta pentru a edita proprietățile. Setați pinul la GPIO 4 (pinul 11) și setați meniul vertical din fața rezistorului pentru a trage în sus. Aceasta va „ridica” GPIO 4 la HIGH. Faceți clic pe butonul Terminat după setarea proprietăților
Pentru a ne permite să luăm decizii logice atunci când comutatorul este apăsat, mai degrabă decât scurtcircuitarea GPIO4 la masă, vom folosi nodul comutatorului. Căutați-l în paleta nodurilor, sub secțiunea funcție și trageți la flux.
Nodul de comutare vă permite să luați decizii într-un mod similar cu declarațiile „dacă”. Poate fi configurat pentru a avea ieșiri diferite în funcție de valoarea de intrare. Pentru acest tutorial, îl vom configura cu două căi de ieșire, astfel încât, atunci când proprietatea msg.payload este egală cu 1 (comutatorul nu este apăsat) ar trebui să urmeze prima cale și o a doua cale va fi urmată dacă orice altă intrare altul decât 1 este observat la intrare (comutatorul este apăsat). Căile sunt adăugate folosind butonul „+ adăugare”. Faceți dublu clic pe nod și configurați așa cum este descris mai sus. Faceți clic pe terminat când ați terminat.
De îndată ce apăsați butonul Terminat, ar trebui să vedeți că cele două căi se reflectă în perspectiva nodului comutatorului, deoarece acesta va avea acum două joncțiuni la ieșire.
Apoi, trebuie să aducem un nod de „schimbare”. Nodul de schimbare va fi folosit pentru a seta starea LED-ului pe baza rezultatului nodului argumentului.
Vom folosi două dintre nodurile de schimbare. Sarcina utilă a primei va fi setată la 0 așa cum se arată în imaginea de mai jos și sarcina utilă a celei de-a doua setată la una. Faceți clic pe terminat după editarea proprietăților pentru ambele.
Pentru a explica mai bine, îți amintești că am folosit rezistența de tracțiune? Astfel, când butonul nu a fost apăsat, ieșirea la acel pin va fi HIGH (1), ceea ce înseamnă că, dacă îl trecem prin nodul comutatorului, LED-ul va fi „aprins”, deoarece nu ar trebui să fie așa, vom face folosiți nodul „schimbare” pentru al seta ca LOW (0). Al doilea nod „schimbare” este folosit pentru a seta valoarea la unul astfel încât atunci când este detectat altceva decât starea HIGH a pinului GPIO 4, acesta ar trebui să aprindă LED-ul, deoarece acest lucru va însemna că butonul a fost apăsat. Conectați nodurile de schimbare și restul nodurilor împreună așa cum se arată în imaginea de mai jos.
După ce am făcut acest lucru, suntem acum gata să implementăm proiectul. Treceți peste conexiune pentru a vă asigura că totul este așa cum ar trebui să fie, apoi faceți clic pe butonul de implementare. Ca de obicei, dacă aveți succes, ar trebui să vedeți pop-up-ul implementat cu succes și acum puteți controla ledul folosind comutatorul.
În timp ce Node-Red face ușor și rapid să vă prototipați construcția fără să vă faceți griji cu privire la cod, este posibil să nu fie cea mai potrivită, în special pentru dezvoltatorii experimentați care vor dori flexibilitate și control asupra programului. Cu toate acestea, este un instrument excelent care vă permite să construiți prototipuri în câteva minute.
Până la data viitoare!