- Prerequisiti
- Componenti richiesti
- Installazione di Node-RED su Raspberry Pi
- Avvio di Node-RED in Raspberry Pi
- Comprensione dell'interfaccia Node-RED
- Schematico
- Creazione di un flusso in Node-RED
- Aggiunta di un pulsante / interruttore nell'interfaccia Node-RED con Raspberry Pi
Ti sei mai chiesto se ci fosse un modo per realizzare semplici prototipi di soluzioni IoT senza dover passare giorni a scrivere codici o per costruire progetti pratici avanzati senza codifica. Sì, questo è possibile con la piattaforma Node-Red. Sviluppato da IBM, Node-RED è uno strumento di programmazione open source per il collegamento di dispositivi hardware, API e servizi online in modo nuovo e interessante. Fornisce un editor basato su browser che semplifica il collegamento di " flussi" utilizzando l'ampia gamma di nodi nella tavolozza che possono essere distribuiti al suo runtime con un solo clic.
Node-RED è un potente strumento per la creazione di applicazioni Internet of Things (IoT) con l'obiettivo di semplificare la componente di programmazione.
Utilizza la programmazione visuale che consente di collegare blocchi di codice, noti come nodi, insieme per eseguire un'attività. Per il tutorial di oggi, esamineremo come distribuire progetti semplici sul raspberry pi utilizzando Node-RED. Il tutorial rosso nodo lampone pi coprirà;
- Installazione di Node-RED su Raspberry Pi.
- Introduzione all'interfaccia utente di Node-RED
- Come impostare i flussi Node-RED
- Come controllare i pin GPIO di Raspberry Pi con Node-RED
- Come utilizzare gli ingressi, le uscite e gli eventuali altri processi decisionali di Node-RED utilizzando gli interruttori
Prerequisiti
Questo tutorial sarà basato sul sistema operativo Raspbian stretch e presumo che tu abbia familiarità con la configurazione del Raspberry Pi e che tu sappia come eseguire SSH nel Pi utilizzando un software terminale come putty. Se hai problemi con uno di questi, ci sono tonnellate di tutorial Raspberry Pi su questo sito Web che possono aiutarti.
Per completare facilmente il tutorial, ti consiglierò di utilizzare un monitor collegato al raspberry pi oppure di utilizzare il software VNC Viewer. Se non si dispone di un monitor e si ricomincia da capo con Pi, è possibile leggere questa configurazione Headless Raspberry Pi per procedere con questo tutorial. Mentre Node-Red viene eseguito da un browser Web ed è possibile accedervi sul PC a cui è collegato il Pi tramite l'indirizzo IP del Pi, credo che l'esperienza VNC / monitor ti darà una migliore sospensione delle cose.
Come demo per mostrare come funziona Node-Red, useremo Node-RED per programmare il Raspberry Pi per controllare un LED collegato al suo GPIO e successivamente modificare il programma per consentire al LED di essere controllato da un pulsante tattile collegato al Pi GPIO.
Componenti richiesti
I seguenti componenti sono necessari per costruire questo progetto;
- Raspberry Pi 3 con scheda SD precaricata con Raspbian Stretch Preloaded
- Resistenza da 100 ohm (1)
- LED (1)
- Breadboard (1)
- Cavi ponticello maschio-femmina
- Pulsante tattile (1)
Installazione di Node-RED su Raspberry Pi
Sebbene Node-Red sia preinstallato sul sistema operativo Raspbian Stretch, dobbiamo aggiornarlo prima di poter godere di alcune delle sue ultime funzionalità. L'aggiornamento del Node-Red farà
- Aggiorna l'utente esistente a LTS 8.x o 10.x Node.js e l'ultimo Node-RED
- Migrare qualsiasi nodo esistente installato a livello globale nello spazio ~ /.node-red degli utenti in modo che possano essere gestiti tramite il gestore della tavolozza, NON aggiorna i nodi esistenti installati dall'utente. Questa operazione deve essere eseguita manualmente dall'utente (vedere di seguito).
- Facoltativamente (ri) installare i nodi aggiuntivi preinstallati su un'immagine Raspbian Pi completa.
Tuttavia, il processo di aggiornamento di Node-Red è simile all'installazione di uno nuovo, quindi per il bene di questo tutorial lo tratteremo come una nuova installazione in modo che le persone che utilizzano altre versioni del sistema operativo possano seguirlo.
Segui i passaggi seguenti per installare / aggiornare Node-RED sul tuo Raspberry Pi.
Iniziamo aggiornando e aggiornando il pi, per garantire che tutto sia aggiornato ed evitare problemi di compatibilità. Fallo aprendo un terminale o tramite ssh ed esegui;
Aggiornamento di Sudo apt-get
seguito da
sudo apt-get upgrade
Fatto ciò, esegui lo script bash di seguito sul terminale;
bash <(curl -sL
Lo script bash farà le seguenti cose
- Chiedi se desideri (ri) installare i nodi Pi aggiuntivi
- Salva un elenco di qualsiasi nodo rosso-nodo installato a livello globale trovato in / usr / lib / node_modules
- apt-get rimuove esistente Node-Red
- rimuovere tutti i file binari del rosso nodo da / usr / bin e / usr / local / bin
- Rimuovi tutti i moduli node-red da / usr / lib / node_modules e / usr / local / lib / node_modules
- Rileva se Node.js è stato installato dal pacchetto Node.js o da Debian
- Se non v8 o più recente: rimuovere se appropriato e installare l'ultima versione di LTS v8 o v10 (senza utilizzare apt).
- Pulisci la cache npm e la cache.node-gyp per rimuovere eventuali versioni precedenti del codice
- Installa l'ultima versione di Node-RED
- Reinstallare con l'account utente tutti i nodi che erano stati precedentemente installati a livello globale
- Reinstallare i nodi Pi aggiuntivi se necessario
- Ricostruisci tutti i nodi - per ricompilare qualsiasi binario in modo che corrisponda all'ultima versione di Node.js.
- Aggiungi i comandi node-red-start, node-red-stop e node-red-log a / usr / bin
- Aggiungi collegamento al menu e icona
- Aggiungi script di sistema e imposta utente
- Se su un Pi aggiungi una temperatura della CPU -> esempio IoT
Lo script bash sopra esegue molti comandi come sudo ed elimina Node.js esistenti e le directory Node-RED principali. Puoi controllare il contenuto dello script su questa pagina GitHub prima di eseguirlo per assicurarti che non influirà su alcun progetto che hai già sul Pi.
Una volta completata l'installazione, dovresti ora vedere l'icona Nodo-Rosso sotto l'elenco delle app di programmazione del tuo menu.
Avvio di Node-RED in Raspberry Pi
Node-Red può essere avviato tramite la sezione menu dal desktop del tuo raspberry pi, tramite il terminale o tramite ssh.
Per avviarlo sul desktop del raspberry pi, fare clic sull'icona Raspberry, posizionare il mouse su Programmazione fare clic su Nodo-ROSSO (Menu> Programmazione> NodeRed) per avviarlo.
Può anche essere avviato da ssh o da terminale eseguendo;
nodo-rosso-inizio
Dovresti vedere una finestra come quella qui sotto che mostra il lancio del nodo rosso sul desktop.
Una volta visualizzato, vai su menu-> Internet e avvia il browser web Chrome. Sebbene il tuo Raspberry pi non abbia bisogno di Internet per eseguire Node-Red, utilizza un browser come interfaccia.
Con il lancio di Chrome, inserisci localhost: 1880 nella barra degli indirizzi seguito dal tasto Invio. 1880 è la porta del raspberry pi su cui Node-Red è preimpostato per comunicare. Questo dovrebbe visualizzare l' interfaccia Node-Red come mostrato nell'immagine sotto.
Comprensione dell'interfaccia Node-RED
L' interfaccia Node-Red comprende il pannello di flusso, la tavolozza dei nodi, la console di debug e la console delle informazioni come evidenziato nell'immagine sopra.
Il pannello di flusso è il punto in cui i nodi vengono uniti per creare un programma che in Node-Red è chiamato flusso, mentre la palette Node comprende oggetti rappresentativi di hardware, protocolli e funzionalità software associate ai dispositivi. Include protocolli come MQTT per IoT e modalità di output e input GPIO per schede come Raspberry Pi. La console delle informazioni fornisce informazioni sugli oggetti evidenziati / selezionati durante la console di debugfunziona proprio come il monitor seriale di Arduino e può fornire feedback mentre il flusso è in esecuzione. Il pulsante di distribuzione viene utilizzato per caricare il flusso nell'hardware di destinazione. Il pulsante Menu contiene diversi tipi di caricamento per aiutarti a ottenere il meglio dal tuo progetto. Con Node-Red attivo e funzionante, ora possiamo procedere alla creazione del progetto demo.
Schematico
Come accennato durante l'introduzione, il nostro progetto demo per oggi sarà controllare il GPIO del Raspberry Pi utilizzando un flusso Node-RED. Per mostrare la variazione nello stato del GPIO, collegheremo un LED al GPIO in modo tale che quando quel particolare pin GPIO è acceso, il LED si accende e viceversa.
Collega il LED al Raspberry PI come mostrato negli schemi seguenti.
Ho anche costruito lo stesso sul mio hardware usando una breadboard, LED, resistore e alcuni cavi di collegamento. La mia configurazione hardware assomiglia a questa una volta che le connessioni sono state effettuate.
Questo progetto può essere facilmente convertito in un progetto di automazione domestica, semplicemente sostituendo il LED con un relè e qualsiasi apparecchio CA, impara come farlo passando attraverso vari progetti di automazione domestica.
Creazione di un flusso in Node-RED
Con il led connesso possiamo procedere allo sviluppo del flusso. I programmi in NodeRed sono chiamati flussi proprio come l'IDE di Arduino li chiama sketch. I flussi vengono creati utilizzando una combinazione di nodi. È possibile creare più flussi che possono essere eseguiti tutti allo stesso tempo, ma per questo tutorial creeremo un unico flusso per accendere / spegnere il LED.
Per iniziare, scorri fino alla fine della palette Nodes, vedrai la sezione dei nodi raspberry pi verso la fine con due nodi etichettati rpigpio. Questi nodi vengono utilizzati per comunicare con il GPIO del raspberry pi. Uno dei nodi è per l'input mentre l'altro è per l'output differenziato dalla posizione del logo del raspberry pi. Per il nodo di input, il logo viene prima del testo, mentre per il nodo di output il logo viene dopo il testo come mostrato nell'immagine sotto.
Per questo tutorial utilizzeremo il nodo di output, trascinalo nella sezione del flusso dell'interfaccia. Questo passaggio è simile alla dichiarazione di un particolare pin di Arduino come output utilizzando il comando pinMode () . Fare doppio clic sul nodo Output e si aprirà una finestra a comparsa come mostrato di seguito per consentire di modificare le proprietà del nodo.
Nella sezione delle proprietà del pin, seleziona GPIO17 (pin 11). Quindi imposta la proprietà del tipo su " Uscita digitale " e seleziona " Inizializzare lo stato del pin?" casella di controllo lasciando l' opzione " livello iniziale di pin " bassa (0). Dai al nodo il nome che preferisci e fai clic sul pulsante Fine.
Il nome del nodo dovrebbe cambiare automaticamente in quello che hai inserito nelle impostazioni delle proprietà. Ad esempio, l'ho chiamato LED e quindi anche il nome del nodo viene modificato come LED come mostrato di seguito.
Per accendere / spegnere il LED, dobbiamo usare un input, qualcosa per guidare l'azione. Anche se potremmo usare un pulsante, voglio usarlo per introdurre la funzionalità in Node-RED che consente l'iniezione di messaggi nei flussi. Questa funzionalità è chiamata inject Node. Useremo due nodi di iniezione. Uno sarà quello di accendere il LED mentre l'altro sarà quello di spegnerlo.
Vai alla palette dei nodi e trascina il nodo di iniezione nel flusso. È il primo nodo nella tavolozza con una freccia, il nodo di iniezione è evidenziato nell'immagine sotto.
Fare doppio clic su di esso per modificarne le proprietà. Modificare il tipo di dati in stringa facendo clic sul menu a discesa davanti al payload e immettere 1 nella casella Payload. Il valore nella casella del payload è ciò che verrà iniettato nel flusso quando viene premuto il nodo. Impostare il nome del nodo su "ON" Premere il pulsante "Done" per salvare.
Ripetere quanto sopra per il secondo nodo, impostando il valore del payload su "0" e il suo nome su "off" come mostrato di seguito.
Sotto la funzione proprietà, la ripetizione discesa può essere utilizzato per automatizzare l'iniezione in modo che i pulsanti vengono premuti a intervalli. Può essere utilizzato per creare l'effetto ammiccamento. Unisci i nodi insieme come mostrato di seguito, trascinando il punto grigio su uno dei nodi sull'altro per creare il flusso.
Fatto ciò, abbiamo ora completato il nostro primo Node-Red Flow.
Il prossimo passo è per noi distribuire il flusso sul raspberry pi. Fare clic sul pulsante rosso di distribuzione. Dovresti vedere il flash "distribuito correttamente" nella parte superiore dello schermo come mostrato di seguito.
Fare clic sul pulsante grigio dietro i nodi di iniezione per attivare ciascuno dei nodi.
Cliccando sul nodo di iniezione “on”, dovresti vedere il messaggio “on” iniettato con successo e il LED si accende. Il LED dovrebbe spegnersi quando si fa clic sul nodo di iniezione "off".
Questo è tutto. Il funzionamento completo di questo allestimento si trova nel video linkato in fondo a questa pagina.
Aggiunta di un pulsante / interruttore nell'interfaccia Node-RED con Raspberry Pi
Per spiegare come connettere / aggiungere un elemento di input al flusso, porteremo ulteriormente il flusso sopra aggiungendo un pulsante per sostituire i nodi di iniezione.
Collegare il pulsante al raspberry pi, in modo tale che una gamba del pulsante sia collegata a massa e l'altra sia collegata al pin GPIO 4 (pin 11) del raspbery pi, come mostrato negli schemi seguenti.
Fatto ciò, torna a Node-Red ed elimina i due nodi di iniezione che abbiamo usato in precedenza, facendo clic sui nodi e premendo Canc sulla tastiera o facendo doppio clic sui nodi e premendo Elimina nella finestra pop-up. Fatto ciò, scorri verso il basso la palette dei nodi fino alla sezione raspberry pi e seleziona il nodo di input. È quello con l'icona raspberry pi a sinistra, prima del nome del nodo.
Trascina il nodo nel flusso e fai doppio clic su di esso per modificare le proprietà. Impostare il pin su GPIO 4 (pin 11) e impostare il menu a discesa davanti al resistore su pull-up. Questo "porterà" GPIO 4 ad HIGH. Fare clic sul pulsante Fine dopo aver impostato le proprietà.
Per consentirci di prendere decisioni logiche quando si preme l'interruttore invece di cortocircuitare GPIO4 a massa, utilizzeremo il nodo dello switch. Cercalo nella palette dei nodi, sotto la sezione delle funzioni e trascina nel flusso.
Il nodo switch consente di prendere decisioni in modo simile alle istruzioni "if". Può essere impostato per avere uscite diverse a seconda del valore di ingresso. Per questo tutorial, lo configureremo con due percorsi di output, in modo tale che, quando la proprietà msg.payload è uguale a 1 (interruttore non premuto) dovrebbe seguire il primo percorso e un secondo percorso verrà seguito se qualsiasi altro input diverso da 1 è osservato all'ingresso (interruttore premuto). I percorsi vengono aggiunti utilizzando il pulsante "+ aggiungi". Fare doppio clic sul nodo e configurare come descritto sopra. Al termine, fai clic su Fine.
Non appena si preme il pulsante Fine, dovresti vedere i due percorsi riflettere nella prospettiva del nodo di commutazione, poiché ora avrà due giunzioni in uscita.
Successivamente, dobbiamo introdurre un nodo di "cambiamento". Il nodo di modifica verrà utilizzato per impostare lo stato del LED in base al risultato dell'argomento nodo.
Useremo due dei nodi di modifica. Il carico utile del primo verrà impostato a 0 come mostrato nell'immagine sottostante e il carico utile del secondo impostato a uno. Fare clic su Fine dopo aver modificato le proprietà per entrambi.
Per spiegare meglio, ricordi che abbiamo usato la resistenza di pull-up? Quindi, quando il pulsante non è stato premuto, l'uscita su quel pin sarà ALTA (1), il che significa che se lo passiamo attraverso il nodo dell'interruttore, il LED sarà "acceso", poiché non dovrebbe essere così, lo faremo utilizzare il nodo "modifica" per impostarlo come BASSO (0). Il secondo nodo di "modifica" viene utilizzato per impostare il valore su uno tale che quando viene rilevato qualcosa di diverso dallo stato ALTO del pin 4 GPIO, dovrebbe accendere il LED in quanto ciò significa che il pulsante è stato premuto. Collega i nodi di modifica e il resto dei nodi insieme come mostrato nell'immagine sotto.
Fatto ciò, siamo ora pronti per distribuire il progetto. Controlla la connessione per assicurarti che tutto sia come dovrebbe essere, quindi fai clic sul pulsante di distribuzione. Come al solito, in caso di successo dovresti vedere il popup di distribuzione riuscita e ora essere in grado di controllare il led usando l'interruttore.
Sebbene Node-Red renda facile e veloce la prototipazione della build senza preoccuparsi del codice, potrebbe non essere effettivamente la soluzione migliore, soprattutto per sviluppatori esperti che desiderano flessibilità e controllo sul programma. Tuttavia, è un ottimo strumento che ti consente di costruire prototipi in pochi minuti.
Fino alla prossima volta!