Esperienza nella creazione del primo robot su Arduino (robot “cacciatore”)

Ciao

In questo articolo voglio descrivere il processo di assemblaggio del mio primo robot utilizzando Arduino. Il materiale sarà utile ad altri principianti come me che vogliono realizzare una sorta di “carrello autoportante”. L'articolo è una descrizione delle fasi del lavoro con le mie aggiunte su varie sfumature. Alla fine dell'articolo viene fornito un collegamento al codice finale (molto probabilmente non il più ideale).

Esperienza nella creazione del primo robot su Arduino (robot “cacciatore”)

Quando possibile, ho coinvolto mio figlio (8 anni) nella partecipazione. Cosa ha funzionato esattamente e cosa no: a questo ho dedicato parte dell'articolo, forse sarà utile a qualcuno.

Descrizione generale del robot

Innanzitutto, alcune parole sul robot stesso (идея). All’inizio non volevo davvero assemblare qualcosa di standard. Allo stesso tempo, il set di componenti era abbastanza standard: telaio, motori, sensore a ultrasuoni, sensore di linea, LED, tweeter. Inizialmente, da questo "set da zuppa" è stato inventato un robot che sorveglia il suo territorio. Si dirige verso l'autore del reato che ha oltrepassato la linea circolare e poi ritorna al centro. Tuttavia, questa versione richiedeva una linea tracciata e calcoli aggiuntivi per rimanere sempre nel cerchio.

Pertanto, dopo averci pensato un po', ho cambiato un po' l'idea e ho deciso di creare un robot "cacciatore". All'inizio gira attorno al proprio asse, scegliendo un bersaglio vicino (persona). Se viene rilevata la “preda”, il “cacciatore” accende i lampeggianti e la sirena e inizia a dirigersi verso di essa. Quando la persona si allontana/scappa, il robot seleziona un nuovo bersaglio e lo insegue, e così via. Un robot del genere non ha bisogno di un cerchio limitato e può funzionare in aree aperte.

Come puoi vedere, questo è molto simile a un gioco di recupero. Anche se alla fine il robot non si è rivelato abbastanza veloce, interagisce onestamente con le persone che lo circondano. Piace soprattutto ai bambini (a volte, però, sembra che stiano per calpestarlo, gli batte forte il cuore...). Penso che questa sia una buona soluzione per divulgare il design tecnico.

Struttura del robot

Quindi, abbiamo deciso l'idea, passiamo a disposizione. L'elenco degli elementi è formato da ciò che il robot dovrebbe essere in grado di fare. Qui tutto è abbastanza ovvio, quindi diamo subito un'occhiata alla numerazione:

Esperienza nella creazione del primo robot su Arduino (robot “cacciatore”)

Il “cervello” del robot è una scheda arduino uno (1); era in un set ordinato dalla Cina. Per i nostri scopi è abbastanza (ci concentriamo sul numero di pin utilizzati). Dallo stesso kit abbiamo preso un telaio già pronto (2), sul quale sono fissate due ruote motrici (3) e una posteriore (girevole liberamente) (4). Il kit comprendeva anche un vano batteria già pronto (5). Davanti al robot c'è un sensore a ultrasuoni (HC-SR04) (6), dietro c'è un driver del motore (L298N) (7), al centro c'è un lampeggiatore LED (8), e un po' di lato c'è il tweeter (9).

In fase di layout esaminiamo:

- in modo che tutto si adatti
- essere equilibrato
- essere collocato razionalmente

I nostri colleghi cinesi lo hanno già fatto in parte per noi. Quindi, il pesante vano batteria è posizionato al centro e le ruote motrici si trovano approssimativamente sotto di esso. Tutte le altre tavole sono leggere e possono essere posizionate sulla periferia.

nuances:

  1. Il telaio del kit ha molti buchi di fabbrica, ma non ho ancora capito quale sia la logica in essi. I motori e il pacco batterie sono stati fissati senza problemi, poi è iniziato il “aggiustamento” con la realizzazione di nuovi fori per fissare questa o quella tavola.
  2. Le rastrelliere in ottone e gli altri elementi di fissaggio delle aree di stoccaggio sono stati di grande aiuto (a volte dovevamo tirarli fuori).
  3. Ho fatto passare le sbarre di ciascuna scheda attraverso i morsetti (di nuovo, le ho trovate in deposito). Molto comodo, tutti i fili giacciono bene e non penzolano.

Blocchi individuali

Ora andrò avanti blocchi e ti parlerò personalmente di ciascuno di essi.

compartimento della batteria

È chiaro che il robot deve avere una buona fonte di energia. Le opzioni possono variare, ho scelto l'opzione con 4 batterie AA. In totale danno circa 5 V e questa tensione può essere applicata direttamente al pin 5 V della scheda Arduino (bypassando lo stabilizzatore).

Naturalmente, ho avuto qualche cautela, ma questa soluzione è abbastanza praticabile.

Poiché l'energia è necessaria ovunque, per comodità ho realizzato due connettori al centro del robot: uno “distribuisce” la terra (a destra) e il secondo - 5 V (a sinistra).

Esperienza nella creazione del primo robot su Arduino (robot “cacciatore”)

Motori e driver

Innanzitutto, riguardo al montaggio dei motori. Il supporto è realizzato in fabbrica, ma realizzato con ampie tolleranze. In altre parole, i motori possono oscillare di un paio di millimetri a destra e a sinistra. Per il nostro compito questo non è fondamentale, ma in alcuni punti potrebbe avere un effetto (il robot inizierà a spostarsi di lato). Per ogni evenienza, ho impostato i motori rigorosamente paralleli e li ho fissati con la colla.

Esperienza nella creazione del primo robot su Arduino (robot “cacciatore”)

Per controllare i motori, come ho scritto sopra, viene utilizzato il driver L298N. Secondo la documentazione, ha tre perni per ciascun motore: uno per cambiare la velocità e una coppia di perni per il senso di rotazione. C'è un punto importante qui. Si scopre che se la tensione di alimentazione è 5 V, il controllo della velocità semplicemente non funziona! Cioè o non gira affatto, oppure gira al massimo. Questa è la caratteristica che mi ha fatto “uccidere” un paio di sere. Alla fine, ho trovato una menzione da qualche parte su uno dei forum.

In generale, quando giravo il robot avevo bisogno di una velocità di rotazione bassa, in modo che avesse il tempo di scansionare lo spazio. Ma poiché da questa idea non è venuto fuori nulla, ho dovuto farlo diversamente: una piccola svolta - stop - svolta - stop, ecc. Anche in questo caso, non così elegante, ma fattibile.

Aggiungerò anche che dopo ogni inseguimento il robot sceglie una direzione casuale per una nuova svolta (in senso orario o antiorario).

Sensore ultrasonico

Esperienza nella creazione del primo robot su Arduino (robot “cacciatore”)

Un altro componente hardware per il quale abbiamo dovuto cercare una soluzione di compromesso. Il sensore a ultrasuoni produce numeri instabili su ostacoli reali. In realtà questo era previsto. Idealmente, funziona da qualche parte nelle competizioni dove ci sono superfici lisce, uniformi e perpendicolari, ma se le gambe di qualcuno “lampeggiano” davanti ad essa, è necessario introdurre un'ulteriore elaborazione.

Come tale elaborazione ho impostato filtro mediano per tre conteggi. Basandosi su test su bambini reali (nessun bambino è stato ferito durante i test!), si è rivelato abbastanza sufficiente per normalizzare i dati. La fisica qui è semplice: abbiamo segnali riflessi destra oggetti (dando la distanza richiesta) e riflessi da quelli più distanti, ad esempio i muri. Queste ultime sono emissioni casuali nelle misurazioni della forma 45, 46, 230, 46, 46, 45, 45, 310, 46... Sono questi che il filtro mediano taglia fuori.

Dopo tutta l'elaborazione, otteniamo la distanza dall'oggetto più vicino. Se è inferiore a un determinato valore di soglia, attiviamo l'allarme e guidiamo direttamente verso l '"intruso".

Lampeggiatore e sirena

Forse gli elementi più semplici di tutto quanto sopra. Possono essere visti nelle fotografie sopra. Non c'è nulla da scrivere sull'hardware qui, quindi ora passiamo a codice.

Programma di controllo

Non vedo il punto nel descrivere il codice in dettaglio, chi ne ha bisogno: il collegamento è alla fine dell'articolo, lì è tutto abbastanza leggibile. Ma sarebbe carino spiegarne la struttura generale.

La prima cosa che dovevamo capire era che un robot è un dispositivo in tempo reale. Più precisamente, da ricordare, perché sia ​​prima che adesso lavoro ancora nell'elettronica. Quindi, ci dimentichiamo immediatamente della sfida ritardo (), che amano utilizzare negli schizzi di esempio e che semplicemente "congela" il programma per un periodo di tempo specificato. Invece, come consigliano le persone esperte, introduciamo i timer per ogni blocco. L'intervallo richiesto è trascorso: l'azione è stata eseguita (aumento della luminosità del LED, accensione del motore e così via).

I timer possono essere interconnessi. Ad esempio, il tweeter funziona in modo sincrono con il lampeggiatore. Questo semplifica un po' il programma.

Naturalmente suddividiamo tutto in funzioni separate (luci lampeggianti, suono, svolta, avanzamento e così via). Se non lo fai, non sarai in grado di capire cosa viene da dove e dove.

Sfumature della pedagogia

Facevo tutto quanto sopra descritto la sera nel mio tempo libero. Senza fretta, ho trascorso circa tre settimane sul robot. La cosa poteva finire qui, ma vi avevo promesso anche di raccontarvi del lavoro con un bambino. Cosa si può fare a questa età?

Lavorare secondo le istruzioni

Per prima cosa abbiamo controllato ogni dettaglio separatamente: LED, tweeter, motori, sensori, ecc. Esistono numerosi esempi già pronti: alcuni direttamente nell'ambiente di sviluppo, altri possono essere trovati su Internet. Questo sicuramente mi rende felice. Prendiamo il codice, colleghiamo la parte, ci assicuriamo che funzioni, quindi iniziamo a modificarla per adattarla al nostro compito. Il bambino effettua i collegamenti secondo lo schema e sotto la mia supervisione. Questo è buono. Devi anche essere in grado di lavorare rigorosamente secondo le istruzioni.

Ordine di lavoro (“dal particolare al generale”)

Questo è un punto difficile. Devi imparare che un grande progetto (“crea un robot”) consiste in piccoli compiti (“collega un sensore”, “collega motori”...) e questi, a loro volta, consistono in passaggi ancora più piccoli (“trova un programma", "collega una scheda." ", "scarica firmware"...). Eseguendo compiti più o meno comprensibili del livello inferiore, “chiudiamo” i compiti del livello medio e da essi si forma il risultato complessivo. L'ho spiegato, ma penso che la realizzazione non arriverà presto. Da qualche parte, probabilmente, durante l'adolescenza.

Installazione

Foratura, filettatura, viti, dadi, saldatura e odore di colofonia: dove saremmo senza? Il bambino ha ricevuto l'abilità di base "Lavorare con un saldatore" - è riuscito a saldare diverse connessioni (ho aiutato un po', non lo nasconderò). Non dimenticare la spiegazione della sicurezza.

Lavoro informatico

Ho scritto il programma per il robot, ma sono comunque riuscito a ottenere dei risultati favorevoli.

Primo: inglese. L'avevano appena iniziato a scuola, quindi facevamo fatica a capire cosa fossero pishalka, migalka, yarkost e altre traslitterazioni. Almeno questo lo abbiamo capito. Non ho usato deliberatamente parole di madrelingua inglese, poiché non abbiamo ancora raggiunto questo livello.

Secondo: lavoro efficiente. Abbiamo insegnato le combinazioni di tasti di scelta rapida e come eseguire rapidamente operazioni standard. Periodicamente, mentre scrivevamo il programma, io e mio figlio ci scambiavamo di posto e io dicevo cosa bisognava fare (sostituzione, ricerca, ecc.). Ho dovuto ripetere più e più volte: "fai doppio clic su Seleziona", "tieni premuto Maiusc", "tieni premuto Ctrl" e così via. Il processo di apprendimento qui non è veloce, ma penso che le abilità verranno gradualmente depositate “nella sottocorteccia”.

Testo nascostoSi può dire che quanto sopra è quasi ovvio. Ma, onestamente, quest'autunno ho avuto l'opportunità di insegnare informatica in prima media in una scuola. È orribile. Gli studenti non conoscono cose basilari come Ctrl + Z, Ctrl + C e Ctrl + V, selezionando il testo tenendo premuto Maiusc o facendo doppio clic su una parola e così via. Questo nonostante fossero al terzo anno di informatica... Trai le tue conclusioni.

Terzo: digitazione a tocco. Ho affidato al bambino la digitazione dei commenti presenti nel codice (lasciatelo esercitarsi). Abbiamo immediatamente posizionato le mani correttamente in modo che le nostre dita ricordassero gradualmente la posizione dei tasti.

Come puoi vedere, siamo ancora all’inizio. Continueremo ad affinare le nostre capacità e conoscenze; ​​ci saranno utili nella vita.

A proposito, riguardo al futuro...

Ulteriore sviluppo

Il robot è pronto, guida, lampeggia ed emette un segnale acustico. E adesso? Ispirati da ciò che abbiamo realizzato, intendiamo perfezionarlo ulteriormente. C'è l'idea di realizzare un telecomando, come un rover lunare. Sarebbe interessante, seduto al telecomando, controllare il movimento di un robot che si muove in un luogo completamente diverso. Ma quella sarà una storia diversa...

E alla fine, infatti, gli eroi di questo articolo (video cliccando):

Esperienza nella creazione del primo robot su Arduino (robot “cacciatore”)

Grazie!

Collegamento del codice

Fonte: habr.com

Aggiungi un commento