Tavola-disegno-6@8x-100-scaled
Tavola-disegno-5-copia-3@8x-100-scaled
Tavola-disegno-5-copia-5@8x-100-scaled
Tavola-disegno-5-copia-6@8x-100-scaled
Tavola-disegno-5-copia@8x-100-scaled
Tavola-disegno-5-copia-8@8x-100-scaled
Tavola-disegno-3@8x-100-scaled
Tavola-disegno-5-copia-7@8x-100-scaled
Tavola-disegno-5-copia-7@8x-100-scaled
previous arrow
next arrow

Tavola-disegno-6@8x-100-scaled
Tavola-disegno-5-copia-3@8x-100-scaled
Tavola-disegno-5-copia-5@8x-100-scaled
Tavola-disegno-5-copia-6@8x-100-scaled
Tavola-disegno-5-copia@8x-100-scaled
Tavola-disegno-5-copia-8@8x-100-scaled
Tavola-disegno-3@8x-100-scaled
Tavola-disegno-5-copia-7@8x-100-scaled
Tavola-disegno-5-copia-7@8x-100-scaled
previous arrow
next arrow

Tavola-disegno-6@8x-100-scaled
Tavola-disegno-5-copia-3@8x-100-scaled
Tavola-disegno-5-copia-5@8x-100-scaled
Tavola-disegno-5-copia-6@8x-100-scaled
Tavola-disegno-5-copia@8x-100-scaled
Tavola-disegno-5-copia-8@8x-100-scaled
Tavola-disegno-3@8x-100-scaled
Tavola-disegno-5-copia-7@8x-100-scaled
Tavola-disegno-5-copia-7@8x-100-scaled
previous arrow
next arrow

Progetto Raspberry Pi Pico con ChatGPT

da | 14 Gen, 23 | Microcontrollori, Technology & Science |

Per la creazione di un nuovo progetto è del tutto normale farsi aiutare e consigliare da una persona più esperta e competente. Ottenere un aiuto da un Chat Bot dotato di intelligenza artificiale è proprio il massimo. Qualche anno fa sarebbe stato letteralmente impossibile ottenere da un computer un parere, un consiglio o, addirittura, un listato sorgente per un progetto software e hardware. Vediamo come si comporta l’AI quando viene chiesto un quesito su come creare un progetto per il Raspberry Pi.

Intelligenza artificiale: migliore è la domanda e più precisa sarà la risposta

Porre una domanda generica a un Bot AI non contribuisce a ottenere buone risposte. La prima cosa da sviluppare, infatti, è l’idea principale che sta alla base del progetto. E così, dopo aver analizzato varie tipologie di soluzioni e scartando quelle molto complesse, l’idea da portare avanti prevede la realizzazione di un semaforo stradale, con la possibilità di pilotare la luce verde, gialla e rossa con le opportune temporizzazioni. In generale questo progetto è molto semplice è può essere svolto in pochi minuti da chiunque. Quello che invece desta attenzione è il fatto che con l’intelligenza artificiale l’utente ordina al computer un determinato progetto, secondo i suoi gusti e le sue esigenze. La macchina, quindi, consegna all’utente questo progetto interamente svolto con precisione e senza errori. L’intervallo temporale della tecnologia che stiamo vivendo è particolarmente importante in quanto una svolta epocale sta investendo il mondo dell’informatica. L’uomo si sta avvicinando sempre di più ai computer pensanti e senzienti. Il mondo del lavoro viene messo, praticamente, in discussione con tutti i vantaggi e gli svantaggi del caso.

Il progetto del semaforo

Siamo adesso pronti per comandare e impartire i nostri ordini al computer. Come detto prima, più si è precisi nelle richieste e più il software sarà più adatto a soddisfare le esigenze. Il progetto del semaforo è costituito dai seguenti componenti:

  • un Raspberry Pi Pico;
  • un diodo Led di colore verde;
  • un diodo Led di colore giallo;
  • un diodo Led di colore rosso;
  • tre resistori di 220 Ohm;
  • un buzzer attivo.

I tre resistori hanno la funzione di limitare la corrente sui rispettivi diodi Led, per evitare che essi si danneggino per un eccesso di corrente. Il dispositivo ha un carattere generale e ha la funzione di controllo logico. Se si vogliono pilotare carichi più grossi, come lampade ad alta potenza, occorre utilizzare interruttori elettronici (MOSFET) o relè. Al momento del progetto, il cui schema elettrico è visibile in figura 1, si decide che le connessioni dei diodi Led devono essere effettuate alle seguenti pote digitali del Raspberry Pi Pico:

  • l’anodo del diodo Led rosso è collegato alla porta digitale GP0;
  • l’anodo del diodo Led giallo è collegato alla porta digitale GP1;
  • l’anodo del diodo Led verde è collegato alla porta digitale GP2.
  • i catodi dei tre diodi Led sono collegati a massa al ping GND.4, ma qualunque collegamento a massa va bene.
Figura 1: lo schema elettrico del semaforo

E’ sempre consigliabile riferirsi al pinout ufficiale del Raspberry Pi Pico, mostrato in figura 2.

Figura 2: il pinout del Raspberry Pi Pico

E adesso facciamoci preparare il progetto dall’intelligenza artificiale

Il progettista deve sempre tenere sott’occhio i collegamenti elettrici e le connessioni dei diodi Led alle rispettive porte digitali. Esse saranno configurate, ovviamente, in output. Siamo pronti per accedere al sito di chatGPT, raggiungibile all’indirizzo https://chat.openai.com/chat. Occorre, ovviamente, effettuare il login per usufruire dei suoi servizi. L’aspetto interessante è che è possibile inserire qualsiasi domanda in stile umano, senza seguire particolari regole. Inoltre è possibile porre la domanda in qualunque lingua internazionale. Per il nostro progetto inseriamo la seguente stringa nella casella di chatGPT:

Please create listing for Raspberry Pi Pico in Micropython regarding a traffic light, with green, yellow and red lights. The sequence to be played is green, green with yellow, red.”

Dopo qualche istante di attesa, dipendente anche dall’enorme traffico in rete attualmente coinvolto sulla piattaforma, il Bot risponde con una risposta molto umana e degna di un esperto di elettronica e di programmazione, come si può osservare nello screenshot di figura 3. La risposta prevede anche un listato sorgente di firmware, pronto per essere caricato sul dispositivo. Il listato è estremamente corretto sia da un punto di vista logico, che algoritmico e sintattico, Sono rispettate le funzioni, le indentazioni e le sintassi di ogni linguaggio di programmazione, in questo caso il Micropython.

Figura 3: chatGPT risponde perfettamente a qualsiasi quesito posto dall’utente

La risposta di chatGPT è disarmante e il listato del suo codice sorgente è il seguente, con tanto di commenti esplicativi:

from machine import Pin
import time
# Set up the pins for the traffic lights
red_pin = Pin(0, Pin.OUT)
yellow_pin = Pin(1, Pin.OUT)
green_pin = Pin(2, Pin.OUT)
while True:
# Green light on
green_pin.value(1)
time.sleep(5)
# Green and yellow lights on
yellow_pin.value(1)
time.sleep(2)
# Red light on
green_pin.value(0)
yellow_pin.value(0)
red_pin.value(1)
time.sleep(5)
# All lights off
red_pin.value(0)

Il commento che chatGPT riporta alla fine del listato è ancor più disarmante in quanto, oltre al listato sorgente, esso fornisce anche una dettagliata spiegazione del funzionamento del prototipo, come segue:

This code will turn on the green light for 5 seconds, then turn on both the green and yellow lights for 2 seconds, then turn on the red light for 5 seconds, and then turn all the lights off. You can adjust the length of time that each light is on by changing the time.sleep values. To use this code, you will need to connect the traffic light to the Raspberry Pi Pico using three LEDs and three 220 ohm resistors (one for each LED)”.

Il programmatore può, ovviamente, modificare a suo piacimento il codice, in particolar modo le seguenti sezioni:

  • le porte digitali a cui sono collegati i diodi Led;
  • la lunghezza delle varie temporizzazioni;
  • la sequenza delle luci;
  • eventuali controlli e condizioni diverse.

Collaudo finale

Con le connessioni pronte e con il listato sorgente a portata di mano è possibile, adesso, effettuare il collaudo del prototipo. Per questo scopo esistono diverse soluzioni possibili, alcune mostrate nel seguente elenco:

  • provare il prototipo direttamente sul dispositivo Raspberry Pi Pico;
  • provare il prototipo sul simulatore online Wokwi.

La seconda soluzione è molto comoda in quanto esso è un simulatore elettronico online totalmente gratuito. E’ possibile utilizzarlo per simulare Arduino, ESP32, Raspberry e molte altre schede. Con Wokwi è possibile iniziare subito un progetto, come si può osservare in figura 4. E’ sufficiente selezionare la piattaforma hardware desiderata, posizionare i vari componenti (diodi Led, resistenze, pulsanti, display, tastiere, sensori, buzzer, ecc) e avviare la simulazione. Non c’è bisogno di avere i componenti elettronici a portata di mano e il firmware viene compilato istantaneamente. Tutto quello che serve è avere una connessione a Internet e un browser. Inoltre con il simulatore elettronico è possibile commettere errori di progettazione hardware senza il pericolo di bruciare la scheda. Wokwi inoltre è appoggiato da diverse comunità che aggiornano costantemente i propri lavori condivisi in rete. Wokwi ha caratteristiche uniche che altri simulatori non hanno. Ad esempio è possibile simulare la rete WiFi e connettere il proprio progetto simulato a Internet. Inoltre si possono utilizzare i protocolli MQTT, HTTP, NTP e molti altri protocolli di rete. Dispone anche di un analizzatore logico virtuale e acquisisce i segnali digitali nella simulazione (UART, I2C, SPI) analizzandoli al computer. I programmi possono anche essere sottoposti a debug con GDB. Il simulatore consente di simulare le schede SD come memoria di massa, in modo da memorizzare e aprire i files e le directory dal codice. Il sistema gestisce anche i files binari, come le immagini.

Figura 4: l’ambiente operativo del simulatore elettronico online Wokwi

Una modifica del sistema

L’appetito vien mangiando e l’utente ha la nuova esigenza di riprodurre una nota acustica su un buzzer attivo, collegato alla porta 3 del Raspberry, quando si accende la luce gialla. La chat di chatGPT è contestuale è ricorda i precedenti colloqui. Per ottenere la modifica del listato è sufficiente digitare la seguente frase:

To the previous listing please add that a buzzer connected on port 3 should sound when the yellow light comes on”.

Secondo il nuovo schema di cablaggio visualizzato in figura 5, il nuovo semplice listato viene immediatamente generato da chatGPT.

from machine import Pin
import time
# Set up the pins for the traffic lights
red_pin = Pin(0, Pin.OUT)
yellow_pin = Pin(1, Pin.OUT)
green_pin = Pin(2, Pin.OUT)
buzzer_pin = Pin(3, Pin.OUT)
while True:
# Green light on
green_pin.value(1)
time.sleep(5)
# Green and yellow lights on, and sound the buzzer
yellow_pin.value(1)
buzzer_pin.value(1)
time.sleep(2)
buzzer_pin.value(0)
# Red light on
green_pin.value(0)
yellow_pin.value(0)
red_pin.value(1)
time.sleep(5)
# All lights off
red_pin.value(0)

Figura 5: l’aggiunta del buzzer sulla porta 3 del Raspberry Pi Pico

Conclusioni

Oggi l’intelligenza artificiale può aiutare a scrivere i firmware per i microcontrollori in diversi modi. Ad esempio, può essere utilizzata per automatizzare alcuni aspetti del processo di sviluppo del firmware, come la generazione di codice a partire da alcune specifiche o il test del codice generato. Inoltre, l’IA può essere utilizzata per analizzare il codice esistente e suggerire modifiche o miglioramenti. Inoltre, l’IA può essere utilizzata per il debug del codice, ad esempio analizzando il comportamento del sistema durante l’esecuzione e individuando eventuali errori o problemi. Infine, l’IA può essere utilizzata per ottimizzare il codice, ad esempio riducendo il consumo di risorse o aumentando la velocità di esecuzione del sistema. Si tenga presente che l’IA può essere utilizzata solo come supporto allo sviluppo del firmware ma non può ancora sostituire completamente il lavoro dei programmatori umani. Nonostante le domande e le richieste siano effettuate verso una intelligenza artificiale, è buona norma utilizzare sempre un linguaggio gentile ed educato. E’ anche utile usare frasi di cortesia come “per favore” oppure “grazie” poiché queste espressioni mostrano gratitudine e considerazione per il prossimo, anche se si tratta di un cervello elettronico.

Articolo originale qui.

Altri articoli dell’autore

Condividi questo articolo

Categorie

Archivi

Apri la chat
1
Ciao come possiamo aiutarti?
Ciao come possiamo aiutarti?