Archivi categoria: i miei allievi

Arduino: stampare più funzioni sulla serial plotter

L’attività di progetto di questa mattina: progettazione di dispositivi elettronici che rispondono a diverse necessità per la salute umana: cura della persona, disabilità, sicurezza sul lavoro, strumenti medici/laboratorio, accessibilità dei luoghi pubblici, ecc…

Con mio piacere ne è nata un’intensa attività di ricerca che ha coinvolto l’intero gruppo classe. Molte le necessità e tra queste ne evidenzio uno, semplice, che riguarda la programmazione, che in più occasioni gli studenti affrontano durante le sperimentazioni e di cui mi sono reso conto di non avere documentato adeguatamente, ovvero: il plot di più funzioni su uno stesso piano cartesiano con Arduino.

Avevo mostrato in più occasioni come effettuare il plot di grandezze variabili nel tempo utilizzando la Serial Plotter dell’IDE di Arduino, uno degli ultimi articoli si riferisce alla realizzazione di uno strumento per la rilevazione di vibrazioni, un semplice sismografo realizzato con un sensore piezoelettrico.

Alcuni studenti questa mattina, si stavano cimentando nella progettazione di un guanto da utilizzare per la movimentazione di un braccio robot industriale della hyundai con l’obiettivo di simulare la movimentazione a distanza di sostanze chimiche pericolose. Nelle prime attività di ricerca si è manifestata la necessità di visualizzare su tre grafici diversi le componenti X, Y, Z dell’accelerazione fornite da un accelerometro connesso ad Arduino.

Come sicuramente saprete l’avvio della Serial Plotter avviene, così come per la Serial Monitor dal menù Tools. Ricordo che Serial Monitor e Serial Plotter non possono essere avviate contemporaneamente.

La Serial Plotter prende i valori che giungono dalla seriale (connessione USB) e li grafica su un piano cartesiano. I dati numerici vengono anche visualizzati nella parte in alto a sinistra della finestra della Serial Plotter.

I valori massimi e minimi rappresentati sull’asse Y vengono regolati automaticamente, mentre la dimensione dell’asse X è fissato a 500 punti e l’aggiornamento del grafico avviene ogni qual volta nel vostro sketch viene eseguita una Serial.println().

Ricordate inoltre di fissare il Baud Rate del Serial Plotter in modo che corrisponda a quello che avete indicato nel codice.

Per tracciare contemporaneamente forme d’onda è possibile agire in due modi:

inserendo uno spazio tra due istruzioni di stampa

1Serial.print(temperatura);
2Serial.print(" ");
3Serial.println(umidita);

oppure inserendo una tabulazione tra due istruzioni di stampa

1Serial.print(temperatura);
2Serial.print("\t");
3Serial.println(umidita);

In questo caso le due grandezze, temperatura e umidità, saranno rappresentate da due funzioni separate e tracciate contemporaneamente sullo stesso piano cartesiano.

A titolo di esempio consideriamo il mio post in cui mostravo come utilizzare un DHT11 e visualizzeremo sulla Serial Plotter le due grandezze fisiche temperatura ed umidità. Di seguito schema di collegamento, sketch e grafici.

1// Prof. Maffucci Michele
2// Visualizzazione della pressione e dell'umidità rilevata da un DHT11
3// sulla Serial Plotter
4// 16.09.2021
5 
6// Libreria DHT
7#include "DHT.h"
8 
9// Pin digitale di arduino connesso al DHT
10#define DHTPIN 2
11 
12// tipo del sensore: DHT 11
13#define DHTTYPE DHT11
14 
15DHT dht(DHTPIN, DHTTYPE);
16 
17void setup() {
18  Serial.begin(9600);
19  dht.begin();
20}
21 
22void loop() {
23  // Attesa di 1 millisecondo prima di fornire la misura.
24  delay(1);
25 
26  // Lettura dell'umidità
27  float h = dht.readHumidity();
28  // Lettura della temperatura in gradi Celsius
29  float t = dht.readTemperature();
30 
31  // Verifica se le si presenta un errore di lettura (e riprova nuovamente)
32  if (isnan(h) || isnan(t)) {
33    Serial.println(F("Impossibile leggere dal sensore DHT!"));
34    return;
35  }
36 
37  // Stampa del valore dell'umidità
38  Serial.print(h);
39  Serial.print(' ');
40  // Stampa del valore della temperatura
41  Serial.println(t);
42}

Il plot delle due grandezze è:

Per completezza realizziamo un semplice sketch che permette di rappresentare 3 funzioni sinusoidali sfasate di 90 gradi una rispetto all’altra con ampiezze diverse:

1// Prof. Maffucci Michele
2// Visualizzazione di tre funzioni siusoidali
3// di ampiezza diversa e sfasate di 90 gradi
4// 16.09.2021
5 
6void setup() {
7  Serial.begin(9600);
8}
9 
10void loop() {
11 
12  // M_PI è la macro definita nell'header math.h
13  // che definisce il pi greco che ha il valore di:
14  // 3.14159265358979323846
15  for(int i = 0; i < 360; i += 2) {
16    float ValoreY1 = 1 * sin(i * M_PI / 180);
17    float ValoreY2 = 2 * sin((i + 90)* M_PI / 180);
18    float ValoreY3 = 4 * sin((i + 180)* M_PI / 180);
19 
20    Serial.print(ValoreY1);
21    Serial.print(' ');         // deve essere stampato spazio ' ' o  tab '\t' tra due valori.
22    Serial.print(ValoreY2);
23    Serial.print(' ');         // deve essere stampato spazio ' ' o  tab '\t' tra due valori.
24    Serial.println(ValoreY3);  // l'ultimo valore deve avere un ritorno a capo
25 
26    delay(1);
27  }
28}

Buon Coding a tutti 🙂

Raspberry Pi Pico – come cancellare un file dalla memoria del microcontrollore

Come avrete notato durante le prime sperimentazioni con il PiPico, possiamo depositare all’interno della memoria del microcontrollore più programmi in MicroPython e decidere quali di questi mandare in esecuzione. Nel caso in cui si desideri rendere l’avvio automatico e continuo uno programma non appena il PiPico  viene connesso ad una fonte di alimentazione, è sufficiente rinominate il file in main.py.
Può accadere quindi che le nostre sperimentazioni ci portino a memorizzare più programmi all’interno della memoria del PiPico pertanto si potrebbe avere la necessità di dover cancellare o rinominare alcuni di questi.
In questo breve tutorial vedremo come cancellare un file usando i comandi che inseriremo nella shell di Thonny.

Come aprire un programma memorizzato nel PiPico

Per poter consultare la lista di file memorizzati all’interno del microcontrollore con l’IDE Thonny, fate clic su “Apri” (seconda icona)

Si aprirà un pannello che richiede la selezione dell’unità da aprire: sul computer o sul PiPico, selezionare il Raspberry Pi Pico

Ciò aprirà la finestra di seguito indicata da cui poter visionare la lista dei file e con cui potrete aprire uno dei file per poi modificarlo o eseguirlo.

Cancellare un file memorizzato nel PiPico

Posizionate il cursore nella prima riga della Shell e digitate il comando. Inseriremo una serie di comandi terminali in Python:

in Python “import os” consente di importare i moduli necessari per interfacciarsi con il sistema operativo sottostante su cui Python è in esecuzione ed eseguire una serie di operazioni sui file, come ad esempio la cancellazione, lo spostamento dei file, rinominare file, creare directory e molto altro. Poichè con MicroPython non si ha nessun sistema operativo il modulo os fornisce tutte quelle funzioni relative alla gestione del semplice del file system e le informazioni relativo al sistema.

Continua a leggere

Dove prelevare tutte le versione del Firmware per il Raspberry Pi Pico e come installarlo

L’installazione del Firmware sul Raspberry Pi Pico è descritta nel primo post pubblicato, rispetto alla prima pubblicazione del mio post, le pagine della documentazione di Raspberry Pi Fundation sono state modificate, il clic sul file INDEX.HTM all’interno del vostro PiPico rimandava direttamente alla pagina di download, ora invece rimanda alla home page della documentazione. Per rendere più agevole il download, quindi, così come segnalato sul mio profilo Facebook, segnalo il link diretto alla pagina e alla sezione specifica di download.

Successivamente clic su: Download the MicroPython UF2 file.

Ciò che scaricherete è l’ultima versione (stable), ma nel caso in cui abbiate necessità di avere l’ultima versione, oppure desiderate sperimentare l’uso dell’ultima versione beta o ancora avere tutte le versioni passate del firmware, il sito di riferimento è https://micropython.org

recatevi nella sezione: Download

Selezionate: Raspberry Pi RP2040 microcontroller boards

Nella pagina troverete tutte le versioni, un clic sul link corrispondente per effettuare il download

L’installazione può avvenire tramite REPL, oppure premendo il pulsante sulla scheda BOOTSEL e procedere come descritto nel mio post.

L’installazione del Firmware può avvenire in una modalità ancora più comoda utilizzando anche l’editor Thonny che abbiamo iniziato a conoscere.

Connettete il PiPico al computer mantenendo premuto il pulsante BOOTSEL, dopo non più di 3 secondi rilasciate il pulsante, comparirà l’unità USB sul vostro computer. Avviate Thonny comparirà la seguente finestra:

Clic sul “Installa”

Al termine comparirà il messaggio “Done!”

Se fate clic su “Done!” si aprirà la finestra di stato che vi dirà su quale porta USB è connesso il vostro PiPico:

Un clic su “Chiudi” per iniziare a programmare.

Buon Making a tutti 🙂

Raspberry Pi Pico – Blink di un LED esterno

Nel primo post pubblicato sull’uso di Raspberry Pi Pico, avevo concluso il tutorial mostrando come controllare l’accensione del LED sulla scheda, quello connesso alla pin 25. Il passo successivo, molto semplice, in quanto riprende i medesimi passaggi dell’ultimo esempio mostrato, sarà quello di controllare un LED esterno alla scheda.
Ovviamente sappiamo già che in serie al LED dovrà essere inserita una resistenza per controllare la corrente che fluisce nel LED (per approfondimenti consultare il link). Poiché in questo caso la tensione di alimentazione del LED sarà quella disponibile sulla scheda, 3,3 Volt, considerando un LED rosso, con una corrente di funzionamento di 15 mA ed una tensione di soglia di 1,8V, usando la legge do Ohm il valore della resistenza serie dovrà essere di 100 Ohm. Nel caso non abbiate questo valore potrete utilizzare anche i classici valori, 220 Ohm o 330 Ohm, che trovate in un qualsiasi kit di sperimentazione, valori più grandi di resistenza ovviamente faranno emettere a parità di tensione, una luminosità inferiore.

Colleghiamo un reoforo del resistore al pin digitale 15 (GPIO 15), il restante reoforo all’anodo del LED ed il catodo del LED al GND. Di seguito le immagini del Pin Out del PiPico e schema di collegamento:

Prendendo a riferimento il programma in MicroPython del precedente tutorial, andiamo a variare alcune linee di codice. Bisognerà modificare solamente il numero del pin digitale utilizzato:

1# Prof. Maffucci Michele
2# Blink LED connesso al pin 15
3# 10.09.2021
4 
5# libreria che permette di utilizzare MicroPython con il RaspyMicro
6import machine
7 
8# per la gestione del tempo
9import utime
10 
11#pin 15 dichiarato come OUTPUT
12ledEsterno = machine.Pin(15, machine.Pin.OUT)
13 
14# loop infinito, while sempre vero, che scrive, ad intervalli di 1 secondo
15# sul pin 15 il valore 1 e 0
16while True:
17    ledEsterno.value(1)    # imposta il livello logico 1 sul pin 15
18    utime.sleep(1)         # lo stato logico 1 viene mantenuto per 1 secondo
19    ledEsterno.value(0)    # imposta il livello logico 0 sul pin 15
20    utime.sleep(1)         # lo stato logico 0 viene mantenuto per 1 secondo

Buon coding a tutti 🙂

Programmare Raspberry Pi Pico con l’IDE di Arduino

Nel mio precedente post introduttivo sull’uso di Raspberry Pi Pico abbiamo iniziato a conoscere la scheda ed avevo mostrato come programmarla in MicroPython.
Vediamo in questo post come programmare la scheda con l’IDE di Arduino.
Ovviamente prima di iniziare è necessario installare l’IDE di Arduino.

Installare il pacchetto Raspberry pico nell’IDE di Arduino

E’ possibile procedere in due modi, seguendo l’installazione del pacchetto non ufficiale, oppure quello ufficiale di Arduino. Vedremo entrambe le installazioni.

Installazione del pacchetto non ufficiale

Il pacchetto non ufficiale è quello che preferisco perché ad oggi è quello che fornisce più opzioni di programmazione e gestioni di schede di diverso tipo con il medesimo microcontrollore RP2040.

1. Aprire l’Arduino IDE. Andate in File > Preferences

2. Copiare ed incollate il seguente link nel Gestore Schede

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Click su ok per salvare le impostazioni

3. Aprire il Gestore schede. Andate in Strumenti > Scheda > Gestore schede. Si aprirà la finestra Gestore schede in questo modo verranno caricati i contenuti aggiunti con il link inserito al passo 2.

4. Cercare tramite il campo di ricerca “Pi Pico”. Troverete: “Raspberry Pi Pico/RP2040 by Earle F. Philhower”, selezionate l’ultima versione e fate clic su “Installa”

5. L’installazione del pacchetto non ufficiale è terminata, vedrete la voce: INSTALLED di fianco al nome del pacchetto.

Continua a leggere