Inizia

Node-RED è uno strumento visuale drag-and-drop che trovi installato in Microninja, il mini computer per padroneggiare i principi del coding. In questa risorsa utilizzeremo Node-RED per controllare LED usando i terminali GPIO di Raspberry Pi’s.


I terminali GPIO

Una caratteristica molto potente di Raspberry PI è la fila di terminali GPIO presente nella parte superiore della scheda. GPIO significa “General-Purpose Input/Output” ovvero “Input/Output per funzioni generiche”. Questi terminali sono l’interfaccia fisica fra Raspberry Pi e il mondo circostante. A livello più semplice, puoi pensare che siano interruttori che tu puoi accendere e spegnere (input), oppure che il Raspberry Pi può accendere e spegnere a proprio piacimento (output).

I terminali GPIO sono utilizzare per connettere Raspberry Pi a circuiti elettrici, e questo permette di controllare e monitorare il mondo circostante. Utilizzando i terminali GPIO, Raspberry Pi può accendere o spegnere un LED, avviare motori ed eseguire molte altre azioni. È anche possibile registrare condizioni esterne, come la temperatura, il livello di luce dell’ambiente, oppure quando un interruttore è azionato. Tutto questo lo chiameremo “physical computing”.

Ci sono 40 terminali sul Raspberry Pi (26 sui primissimi modelli), che garantiscono differenti funzionalità.

Se sei in possesso di una etichetta RasPiO, questo può tornare utile per identificare i terminali. Assicurati che l’etichetta sia posizionata con il foro di fronte alla porta USB come da figura.

Se non sei in possesso dell’etichetta RasPiO, questa immagine ti verrà in aiuto

Vedrai i terminali etichettati come 3V3, 5V, GND and GP2, GP3, e così via:

3V3 3.3 volt Qualsiasi cosa connesso a questo terminale riceverà 3.3V di potenza
5V 5 volt Qualsiasi cosa connesso a questo terminale riceverà 5V di potenza
GND terra Nessun voltaggio, utilizzato per completare il circuito
GP2 GPIO terminale 2 Questi terminali possono essere configurati come input o output
ID_SC/ID_SD/DNC Terminali riservati
ATTENZIONE: se segui attentamente le istruzioni riportate in questa risorsa troverai divertente utilizzare i terminali fi Raspberry Pi. Collegare i terminali a caso, tuttavia, potrebbe compromettere il funzionamento del Raspberry Pi e delle altre apparecchiature eventualmente collegate, specialmente quando utilizzi i terminali 5V.

Collegare il LED

  1. Collega il LED come spiegato nel diagramma che segue

    il piedino positivo del LED è solitamente più lungo, ed è questo il piedino che deve essere collegato nella parte sinistra della scheda (nel diagramma, e1)


Avvia Node-RED

  1. Avvia Microninja; seleziona l’icona Microninja e quindi nel menu “Programmazione” seleziona “Node-RED”

  2. A questo punto dovresti visualizzare una finestre contenente le informazioni di avvio di Node-RED

  3. Ora seleziona Chromium dal menu Internet

  4. In Chromium, inserisci localhost:1880 nella barra degli indirizzi e premi Invio. Verrà mostrata l’interfaccia di Node-RED interface. (Microninja non deve essere connesso ad Internet)


Connettere un terminale GPIO

I programmi in Node-RED sono chiamati Flow (flussi). Puoi osservare come la pagina bianca abbia il titolo Flow 1. Puoi creare tutti i flussi che vuoi che funzioneranno contemporaneamente. Per questa risorsa useremo un solo Flow.

  1. I blocchi colorati sulla parte sinistra dell’interfaccia sono i nodi. Scorri al fondo della lista fino a che non trovi i nodi con l’etichetta Raspberry Pi

  2. Troverai due nodi che riportano l’etichetta rpi gpio: questi sono i nodi che utilizzeremo per dialogare con i terminali GPIO del Raspberry Pi. Il primo nodo della lista, con l’icona del lampone sulla sinistra, è per l’input.
    Utilizzare un bottone per controllare qualche cosa è un esempio di input. Il secondo nodo con l’icona del lampone sulla destra è per gli output.
    Accendere un LED è un esempio di output. Trascina un nodo di output al centro della pagina bianca.

  3. Fai dippio click sul nodo e apparirà un quadrato che permette di configurare il nodo. Cambia il terminale GPIO in GPIO17 e seleziona Initialise pin state?. Lascia l’impostazione per Initial level of pin su low. Dai un nuome al nodo, come “LED verde”. Quando hai terminato, premi Done.


Inviare un messaggio

  1. Ora scorri in cima alla lista dei nodi. Per accendere e spegnere il LED, abbiamo bisogno di un input. In Node-RED possiamo inviare un messaggio nel flow così da far succedere alcune cose in reazione al messaggio inviato. Trascina un nodo Inject all’interno del flow.

  2. Fai doppio click sul nodo Inject. Usa il menu a discesa vicino a Payload per cambiare Type in string e digita 1 nel quadrato corrispondente – questo sarà il messaggio che invieremo. Digita On nel riquadro Name, quindi premi Done.

  3. Ripeti i passi precedenti per creare un nuovo nodo inject, ma questa volta inserisci 0 come messaggio, e chiama questo nodo Off.

  4. Ora cerca il puntino grigio sulla parte destra del nodo inject. Trascina dal pulsante grigio sul nodo On fino al puntino grigio sul nodo LED. Ripeti per il nodo Off.


Avviare il flusso

  1. Il nostro flusso è finito, e possiamo quindi avviarlo. Fai click sul grande pulsante Deploy in alto a destra dello schermo. Apparirà il messaggio Succesffully deployed.

  2. Ora clicca sul quadrato blu a sinistra del nodo On per inviare il messaggio 1. Il Led Verde riceve il messaggio il LED precedentemente collegato si accenderà. Puoi spegnere il LED facendo click sul quadrato blu del nodo Off, che invia il messaggio 0.


Messa a punto del flow

  1. Se il tuo LED non ci accende e non si spegne, innanzitutto controlla di aver collegato correttamente i cavi alla scheda come indicato in precedenza.

    Puoi anche chiedere a Node-RED di mostrare alcune informazioni di debug collegando i tuoi nodi al nodo speciale debug, che puoi trovare sotto il nodo output. Trascina il nodo nel tuo flow e collegalo ai due nodi di input; quindi premi il bottone Deploy. Ora, quando selezioni il quadrato blu dei nodi On e Off, i messaggi inviati da questi due nodi saranno visualizzati sul pannello di destra.

    Per esempio questo è il risultato inviando prima il messaggio di On e poi quello di Off.


Aggiungere un bottone

  1. Ora aggiungiamo un bottone per controllare il LED. Collega il bottone come mostrato nell’immagine sotto, così che il LED sia collegato al terminale GPIO 17, e il bottone sia collegato al terminale GPIO 4

  2. Rimuovi dal flow i nodi On e Off selezionandoli e premendo il pulsante Cancella sulla tastiera. Non abbiamo più bisogno di questi nodi, perché controlleremo il LED con il bottone fisico.
  3. Ora dobbiamo aggiungere il nodo rpi-gpio, che ha il logo del lampone sulla sinistra. Imposta questo nodo per ricevere l’input dal bottone fisico come segue:

  4. Ora collega il nodo del bottone con il nodo del LED e del debug, e avvia il Flow.

    Noterai che il LED è subito acceso, e quando premi il bottone questo si spegne. Questo non è quello che vogliamo, ma capita perché utilizzando pullup come descritto in precedenza il bottone sarà impostato a HIGH generando il messaggio 1, e questo accende il LED. Quando premiamo il bottone, inviamo il messaggio LOW che genera il messaggio 0 che spegne il LED. Dobbiamo quindi invertire il valore; vogliamo che il LED riceva subito il messaggio 0 e che riceva il messaggio 1 quando il bottone viene premuto.

  5. Rimuovi il collegamento effettuato tra il nodo tasto e il nodo LED cliccando sulla linea e premendo Cancella sulla tastiera.
  6. Aggiungi un nodo switch (matrice di commutazione). Questo può essere trovato nella sezione function. Questo nodo è simile al costrutto if/elif/else che potresti aver incontrato in Scratch o Python. Questo nodo può essere configurato per avere output multipli in funzione del valore che gli è passato. In questo caso impostiamo il nodo in modo tale che il valore della proprietà msg.payload sia uguale a 1. Fai click sul piccolo bottone Add al fondo del secondo percorso, e scegli l’opzione otherwise dal menu a tendina. Questo percorso sarà attivato quando l’input è qualsiasi valore tranne che 1. Seleziona infine Done.

  7. Dovresti veder apparire un nuovo nodo switch con due piccoli cerchi sulla destra. Nota che il nome If input is 1 è un nome semplicemente descrittivo.

  8. Unisci l’interruttore
  9. Unisci il nodo input GPIO all’input del nodo interruttore.
  10. Ora trascina il nodo giallo change dalla sezione function e fai doppio click per configurarlo. Utilizziamo questo nodo per configurarlo.

  11. Premi Done, e quindi traccia una linea di collegamento fra i nodi come rappresentato in figura. Quindi collega l’output del nodo change al nodo LED:

  12. Ora aggiungi un nuovo nodo change node per impostare msg.payload a 1. Connetti questo nodo a output 2 al nodo switch e quindi al nodo LED. Questo dice al flusso che quando il ramo otherwise è attivato (quindi quando msg.payload non è già 1), lo dovremmo cambiare in 1. Ora sei pronto per attivare il flow, e per premere il pulsante per verificare il corretto funzionamento.

This learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
Find more at raspberrypi.org/resources and github.com/raspberrypilearning.