Funduino Calle

FunduinoUltimo aggiornamento il

Linienverfolger, Ultraschall und NeoPixel mit MakeCode

Der Fahrroboter Calle wird mit dem Calliope mini V3 gesteuert. Programmiert wird er grafisch in MakeCode – du steckst die Blöcke im Browser zusammen und überträgst das Programm per USB auf den Calliope.

Die Anleitung führt dich durch alle Funktionen des Roboters:

  • Motoren ansteuern und vorwärts, rückwärts und im Kreis fahren
  • Scheinwerfer und NeoPixel-LEDs schalten
  • Einer Linie folgen mit den beiden Liniensensoren
  • Hindernissen ausweichen mit dem Ultraschallsensor

Vorkenntnisse brauchst du keine. Jeder Abschnitt beginnt mit einem kurzen Erklärstück und endet mit einem fertigen Beispielprogramm zum Nachbauen.

Robot mobile Calle con Calliope mini V3 montato sopra
Programma con Calliope mini V3

Struttura: le ruote motrici

Il montaggio di Calle è piuttosto semplice: devi montare solo le due ruote motrici e la rotella anteriore. Prima stacca a mano i bordi laterali della scheda: servono solo durante la produzione per garantire la stabilità.

Fissa i motori sul lato inferiore con i supporti bianchi. Assicurati che la parte sporgente del supporto e l’albero del motore siano rivolti verso l’esterno.

Fai passare i cavi dei due motori attraverso l’apertura nella scheda fino al lato superiore e inserisci i connettori JST nelle apposite prese. L’orientamento dei cavi neri e rossi è indifferente, perché i connettori si inseriscono in un solo verso.

Motori montati sul lato inferiore con i supporti bianchi
Montare i motori di trazione
Connettori JST dei motori nelle prese sul lato superiore
Inserisci il connettore del motore
1 / 2

Struttura: ruota e componenti

La ruota libera anteriore funziona come una ruota di supporto e segue tutti i movimenti generati dai due motori di trazione.

Fissa due distanziali esagonali tra la ruota libera e la scheda con due viti corte in nylon. In questo modo la ruota libera raggiunge un’altezza adeguata a quella delle ruote motrici. Poi fissa la ruota sotto la scheda inserendo altre due viti dall’alto attraverso i fori appositi e avvitandole nei distanziali.

Infine, inserisci sulla parte superiore della scheda i componenti rimanenti: i sensori di line tracking e il sensore a ultrasuoni.

Creare un progetto MakeCode

Calle viene programmata tramite l'IDE MakeCode. Se non hai mai lavorato con un Calliope, dovresti prima familiarizzare con questo strumento.

In MakeCode un nuovo programma si chiama «progetto». Fai clic su «Nuovo progetto», gli dai un nome - in questo esempio «Calle» - e fai clic su «Crea». Poiché Calle è progettata per Calliope mini V3, seleziona questo microcontrollore.

A sinistra vedi il controller selezionato e, accanto, i blocchi di programmazione. Nell'ampia area centrale sono già presenti i blocchi «all'avvio» e «per sempre»: sono disponibili per impostazione predefinita.

Interfaccia MakeCode con i blocchi all'avvio e per sempre
L'interfaccia di programmazione

Esercizio pratico: accendere i fari anteriori

Compito: I due fari di Calle devono essere accesi e spenti con i pulsanti A e B. Si tratta di due LED, entrambi collegati al pin C12 del Calliope.

Senza programmazione, il contatto C12 ha lo stato «0»: non c’è tensione e i LED non si accendono. Con il blocco «imposta il valore digitale del pin C12 su 1» cambi lo stato in «1» e il Calliope eroga 3,3 V su questo contatto.

Vai su Avanzate → Pin, seleziona nella sezione Digitale «imposta il valore digitale del pin P0 su 0» e imposta il pin su C12. Duplica questo blocco: con il pulsante A imposta 1, con il pulsante B imposta 0.

Poi fai clic su «Scarica», collega il cavo al Calliope e al computer, fai clic su «Avanti» e poi su «Associa». Nel popup seleziona il Calliope: ora sei connesso.

Se la connessione non funziona, di solito la causa è il browser: Safari, Firefox e Internet Explorer non supportano WebUSB. Chrome, Edge e Opera invece sì.

Programma: C12 con il pulsante A su 1, con il pulsante B su 0
Fari tramite i pulsanti A e B
Popup con Calliope collegato
Calliope è connesso.
1 / 2

Leggi i valori dei sensori del seguilinee

I sensori di linea emettono una tensione oppure no, a seconda che rilevino una superficie chiara o una linea scura.

Per riutilizzare il valore misurato, ti serve uno spazio di memoria: una variabile. Vai su Variabili → Crea una variabile e crea una variabile chiamata „LinienVerfolgerLinks“. Trascina il blocco „imposta LinienVerfolgerLinks a 0“ nel blocco „per sempre“.

Poi fai clic su Avanzate → Digitale, trascina „valori digitali dal pin P0“ al posto dello „0“ e cambia il contatto in C15.

Per vedere cosa rileva il sensore, aggiungi il blocco „mostra testo“ dai blocchi di base e sostituisci il testo predefinito con la variabile. Dopo il caricamento, sulla matrice LED appare uno „0“ oppure uno „1“.

In un punto l’articolo dice che il segnale «1» corrisponde a uno sfondo chiaro, mentre in un capitolo successivo afferma che il sensore emette «1» quando rileva una linea. Le due cose non possono essere vere entrambe: verifica il significato sul tuo setup.

Blocco programma, valore digitale impostato dal pin su C15
Leggi il sensore sul contatto C15
Programma: visualizzare il valore del sensore sulla matrice LED tramite un testo
Visualizza il valore del sensore sulla matrice
1 / 2

Seguilinee: controllare i motori

Il principio del line following è semplice: se Calle devia a sinistra rispetto alla linea, il motore sinistro deve girare più velocemente: così il robot curva a destra. Se devia a destra, gira più velocemente il motore destro.

Con due sensori ci sono quattro casi: entrambi chiari, entrambi scuri, sinistro scuro e destro chiaro, sinistro chiaro e destro scuro. Se entrambi i sensori rilevano «scuro», il robot si trova al centro della linea e può andare a tutta velocità.

Per la programmazione, crea due variabili, «LinienVerfolgerLinks» e «LinienVerfolgerRechts», e assegnagli i valori digitali dei contatti C14 e C15. Dalla sezione Logica, seleziona «se vero allora altrimenti» ed espandi il blocco due volte con il simbolo più. Verifica i quattro casi con due confronti ciascuno, collegati tramite «e».

Il controllo dei motori è già integrato in MakeCode: il motore destro è M0, quello sinistro M1.

Se il programma è in esecuzione ma i sensori non reagiscono, probabilmente non sono calibrati correttamente. Sui sensori c'è una scatola blu che puoi regolare con un cacciavite. Per farlo, posiziona Calle sopra la linea e regola il sensore in modo che funzioni esattamente al limite tra acceso e spento.

Condizioni annidate se-allora per entrambi i sensori di linea
La struttura condizionale
Programma completo per seguire la linea con controllo dei motori
Il programma completo per il robot seguilinea
1 / 2

Misurare la distanza con il sensore a ultrasuoni

Sulla parte anteriore del Calliope c’è un modulo con due cilindri che sembra avere due occhi. È un sensore a ultrasuoni.

Funziona come un pipistrello: emette onde ultrasoniche, che vengono riflesse dagli oggetti e tornano indietro come un’eco. In base al tempo impiegato dall’onda per arrivare, il Calliope calcola la distanza.

I moduli esterni non sono inclusi di default in MakeCode. Fai clic su «Estensioni» e inserisci nella barra di ricerca il link diretto alla libreria: github.com/Funduino-GmbH/RCW0001

Dopo aver fatto clic sulla scheda «RCW-0001», appare una nuova categoria con un unico blocco: «Sensore a ultrasuoni (in cm), trigger su C8 ed echo su C9».

Per visualizzare la distanza, trascina «mostra numero 0» dalla sezione «Base» nel blocco «per sempre» e sostituisci lo «0» con il blocco del sensore a ultrasuoni.

Blocco di programma del sensore a ultrasuoni con Trigger C8 ed Echo C9
Il blocco a ultrasuoni
Programma: mostra la distanza misurata come numero
Visualizza la distanza sulla matrice
1 / 2

Visualizzare i valori misurati tramite comunicazione seriale

C’è un inconveniente nel visualizzare i dati sulla matrice LED: ci vuole un po’ di tempo perché il numero scorra fino in fondo, e solo dopo il programma riprende. Se vuoi elaborare i dati rapidamente, i blocchi «mostra numero» e «mostra testo» non sono adatti.

Usa invece la comunicazione seriale. In Avanzate → Seriale, inserisci il blocco «reindirizza seriale su USB» in «all’avvio» e il blocco «invia riga seriale» in «per sempre». Dopo aver scaricato il programma, sulla sinistra della pagina web apparirà una nuova opzione che ti permette di vedere i valori misurati.

Per poter riutilizzare i valori, crea una variabile «Distanza», inserisci il blocco a ultrasuoni in «imposta Distanza a 0» e inserisci la variabile nell’uscita seriale. In questo modo puoi leggere i dati e lasciare che altri blocchi del programma lavorino in parallelo.

Programma: memorizzare la distanza in una variabile e visualizzarla tramite seriale
Visualizza la distanza in serie

Programmare le dipendenze

Ora, a seconda della distanza misurata, riproduci un suono. In informatica, una dipendenza di questo tipo si chiama «istruzione If» o «funzione Se-Allora».

Dalla categoria Logica, prendi «se vero allora»; dalla categoria Suono, il blocco «suona la nota … per …»; e di nuovo da Logica, il confronto «maggiore di». Unisci questi blocchi.

Per aggiungere condizioni, clicca sul più nel blocco verde scuro: Calle deve avanzare se la distanza supera 30 e fermarsi se è inferiore. Dalla categoria Motori, prendi il blocco «Motore» e impostalo da M0 a M0 & M1. Per valori inferiori a 30, imposta il valore su 0; altrimenti, impostalo al 50 per cento, così Calle non va troppo veloce.

Programma completo: avanzare da 30 cm, altrimenti fermarsi
Il programma completo

Controllare i NeoPixel

Calle ha sei fonti luminose speciali: LED intelligenti di tipo WS2812, spesso chiamati anche NeoPixel. Possono illuminarsi in migliaia di colori e diverse centinaia di LED condividono un unico cavo dati.

Per Calle si usano due contatti: P2 controlla i tre LED sul lato destro, P3 quelli sul lato sinistro.

In «Estensioni», cerca «NeoPixel» e installa la libreria. Poi, nella nuova categoria, fai clic su «Imposta strip su NeoPixels al pin P0 …» e imposta il pin su P2. Per il lato sinistro, crea una seconda variabile, che chiameremo «strip2», e impostala su P3.

Con il blocco «mostra colore» imposti il colore. Per evitare che i colori cambino troppo velocemente, aggiungi il blocco «attendi (ms) 1000» dalla categoria «Base».

Puoi controllare i LED singolarmente con NeoPixel → altro, usando il blocco «strip imposta il colore del NeoPixel 0 su rosso». Su entrambi i lati, la numerazione va da 0, all’estremità anteriore, a 2, all’estremità posteriore.

Due strisce NeoPixel, strip su P2 e strip2 su P3
Crea entrambi i lati LED
Programma: imposta individualmente i NeoPixel in blu, verde e rosso
Controllare i LED singolarmente
Numerazione dei NeoPixel da 0 davanti a 2 dietro, vista dall’alto
La numerazione dei pixel
1 / 3
Valuta le istruzioni

Commenti

Fare una domanda o condividere un'esperienza

Scrivici se qualcosa non funziona. Indica la tua scheda e il messaggio di errore.

Controlliamo ogni commento prima della pubblicazione. Il tuo indirizzo e-mail rimane presso di noi.