Esperienza nella creazione del primo robot su Arduino (robot 'cacciatore')

Salve.

In questo articolo voglio descrivere il processo di assemblaggio del mio primo robot con Arduino. Il materiale sarà utile ad altri principianti come me, che vogliono realizzare un "carrello autonomo". L'articolo costituisce una descrizione delle fasi di lavoro con i miei suggerimenti su vari dettagli. Un link al codice finale (probabilmente non il più perfetto) è fornito alla fine dell'articolo.

Esperienza nella creazione del primo robot su Arduino (robot 'cacciatore')

Dove possibile, ho coinvolto mio figlio (8 anni). Ciò che abbiamo realizzato insieme e ciò che non ha funzionato — ho dedicato una parte dell'articolo a questo, potrebbe tornare utile a qualcuno.

Descrizione generale del robot

Iniziamo con alcune parole sul robot stesso (un'idea). Non volevo assemblare qualcosa di convenzionale all'inizio. Allo stesso tempo, il set di componenti era piuttosto standard: telaio, motori, sensore ultrasonico, sensore di linea, LED, buzzer. Inizialmente, da questo "mix di componenti" è stato concepito un robot che difende il proprio territorio. Si avvicina all'intruso che ha oltrepassato la linea del cerchio, per poi tornare al centro. Tuttavia, in questa opzione era necessaria una linea tracciata, oltre a una matematica complessa per rimanere costantemente dentro il cerchio.

Quindi, dopo aver riflettuto, ho leggermente cambiato idea e ho deciso di costruire un robot "cacciatore". All'inizio, si gira su sé stesso, cercando un obiettivo nelle vicinanze (una persona). Se la "vittima" viene avvistata, il "cacciatore" accende le luci lampeggianti e la sirena, e inizia a muoversi verso di essa. Quando la persona si allontana, il robot sceglie un nuovo obiettivo e la insegue, e così via. Questo robot non ha bisogno di un cerchio limitato e può operare in spazi aperti.

Come potete vedere, questo ricorda molto il gioco del "prendere il ladro". Anche se alla fine il robot non è risultato abbastanza agile, interagisce onestamente con le persone che lo circondano. Questo piace particolarmente ai bambini (a volte, però, sembra che stiano per schiacciarlo, e il cuore batte forte…). Penso che per la promozione della costruzione tecnica sia una buona soluzione.

Struttura del robot

Dunque, abbiamo definito l'idea, passiamo a configurazione. L'elenco degli elementi si forma in base a ciò che il robot deve saper fare. Qui tutto è abbastanza chiaro, 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 inclusa nel kit ordinato dalla Cina. Per le nostre esigenze è più che sufficiente (ci orientiamo in base al numero di pin utilizzati). Dallo stesso kit abbiamo preso un telaio già pronto (2), sul quale si fissano due ruote motrici (3) e una ruota posteriore (a rotazione libera) (4). Inoltre, nel kit c'era un vano batteria già pronto (5). Nella parte anteriore del robot c'è un sensore a ultrasuoni (HC-SR04) (6), nella parte posteriore si trova il driver dei motori (L298N) (7), al centro c'è un LED lampeggiante (8) e un po' di lato si trova un buzzer (9).

Nella fase di assemblaggio, osserviamo:

— che tutto ci stia
— che sia bilanciato
— che sia razionalmente disposto

Parzialmente questo è già stato fatto per noi dai colleghi cinesi. Così, il pesante vano batteria è posizionato al centro, e circa sotto di esso ci sono le ruote motrici. Tutti gli altri circuiti sono leggeri e possono essere posizionati sulla periferia.

Dettagli:

  1. Nel telaio del kit ci sono molti fori di fabbrica, ma quale sia la loro logica — ancora non l'ho compresa. I motori e il pacco batteria si sono fissati senza problemi, poi è iniziato il "fitting" con la perforazione di nuovi fori per fissare vari circuiti.
  2. Le staffe in ottone e altri elementi di fissaggio recuperati (a volte mi è toccato arrangiarmi) sono stati molto utili.
  3. Ho passato i cavi di ogni circuito attraverso i morsetti (ancora una volta trovati tra le scorte). È molto comodo, tutti i fili sono disposti in modo ordinato e non penzolano.

Blocchi separati

Ora passerò ai blocchi e parlerò personalmente di ciascuno.

Vano batteria

È chiaro che il robot deve avere una buona fonte di alimentazione. Le opzioni possono essere diverse, ho scelto l'opzione con 4 batterie AA. In totale forniscono circa 5 V e questa tensione può essere direttamente fornita al pin 5V della scheda Arduino (saltando il regolatore).

Certo, avevo una certa diffidenza, ma questa soluzione è decisamente funzionante.

Poiché l'alimentazione è necessaria ovunque, per comodità ho creato al centro del robot due connettori: uno "distribuisce" la massa (a destra), e l'altro — 5 V (a sinistra).

Esperienza nella creazione del primo robot su Arduino (robot 'cacciatore')

Motori e driver

Iniziamo con il montaggio dei motori. Il montaggio è fabbricato, ma è realizzato con ampie tolleranze. In altre parole, i motori possono "ondulare" di qualche millimetro a sinistra e a destra. Per il nostro compito questo non è critico, ma in altre situazioni potrebbe influire (il robot potrebbe iniziare a deviare). Per sicurezza, ho allineato i motori esattamente in modo parallelo e li ho fissati con della colla.

Esperienza nella creazione del primo robot su Arduino (robot 'cacciatore')

Per controllare i motori, come ho scritto sopra, si utilizza il driver L298N. Secondo la documentazione, ha tre pin per ciascun motore: uno per regolare la velocità e una coppia di pin per la direzione di rotazione. Qui c'è un punto importante. Risulta che se la tensione di alimentazione è di 5 V, la regolazione della velocità semplicemente non funziona! Cioè o non ruota affatto, oppure ruota al massimo. È una peculiarità che mi ha "portato via" un paio di serate. Alla fine, ho trovato un accenno su uno dei forum.

In generale, avevo bisogno di bassa velocità di rotazione durante la manovra del robot — affinché avesse il tempo di scansionare lo spazio. Ma, poiché con questa idea non è andata a buon fine, ho dovuto agire in un altro modo: piccola rotazione — fermata — rotazione — fermata e così via. Anche se non è così elegante, è funzionale.

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

Sensore ultrasonico

Esperienza nella creazione del primo robot su Arduino (robot 'cacciatore')

Un'altra periferica in cui ho dovuto cercare una soluzione di compromesso. Il sensore ultrasonico fornisce numeri instabili su ostacoli reali. In effetti, era prevedibile. Funziona perfettamente in competizioni dove ci sono superfici lisce, uniformi e perpendicolari, ma se davanti a lui ci sono "piedi che si muovono" — è necessario implementare un'ulteriore elaborazione.

Come tale elaborazione, ho installato un filtro mediano su tre misurazioni. Basato su test fatti con bambini reali (durante i test nessun bambino è stato ferito!), si è rivelato abbastanza efficace per normalizzare i dati. La fisica qui è semplice: abbiamo segnali riflessi da oggetti richiesti (che forniscono la distanza necessaria) e riflessi da ostacoli più lontani, come le pareti. Questi ultimi rappresentano outlier casuali nelle misurazioni come 45, 46, 230, 46, 46, 45, 45, 310, 46… Proprio questi vengono filtrati dal filtro mediano.

Dopo tutta la lavorazione, otteniamo la distanza dall'oggetto più vicino. Se è minore di una certa soglia, attiviamo l'allarme e ci dirigiamo direttamente verso il "trasgressore".

Luce lampeggiante e sirena

Probabilmente, gli elementi più semplici di tutti quelli elencati. Sono visibili nelle foto sopra. Non c'è molto da dire sull'hardware, quindi ora passiamo al codice.

Programma di gestione

Non vedo senso nel descrivere dettagliatamente il codice, chi ne ha bisogno troverà il link alla fine dell'articolo, dove è abbastanza leggibile. Tuttavia, sarebbe utile spiegare la struttura generale.

La prima cosa che ho dovuto comprendere: il robot è un dispositivo in tempo reale. Piuttosto, ricordarlo, perché sia prima che ora mi occupo comunque di elettronica. Quindi, dimentichiamoci subito della chiamata delay(), che molti amano usare negli sketch di esempio e che semplicemente "ferma" il programma per un certo intervallo di tempo. Invece di questo, come consigliano le persone esperte, introduciamo timer per ogni blocco. È trascorso l'intervallo richiesto - eseguiamo l'azione (aumentiamo la luminosità del LED, accendiamo il motore e così via).

I timer possono essere interconnessi. Ad esempio, il beep funziona in sincrono con la luce lampeggiante. Questo semplifica un po' il programma.

Naturalmente, suddividiamo tutto in funzioni separate (luce lampeggiante, suono, svolta, movimento in avanti e così via). Se non lo facciamo, poi è difficile capire cosa proviene da dove.

Le sfumature della pedagogia

Tutto ciò che è stato descritto sopra l'ho fatto nel mio tempo libero la sera. Con calma, ho impiegato circa tre settimane per il robot. A questo punto potremmo anche fermarci, ma ho promesso di parlarvi del lavoro con i bambini. Cosa è fattibile a questa età?

Lavorare secondo le istruzioni

Prima di tutto, abbiamo controllato ogni singolo componente - LED, beep, motori, sensori, ecc. Ci sono un gran numero di esempi pronti - alcuni direttamente nell'ambiente di sviluppo, altri si possono trovare in rete. Questo, senza dubbio, è incoraggiante. Prendiamo il codice, colleghiamo il componente, ci assicuriamo che funzioni, poi iniziamo a modificarlo per il nostro scopo. Le connessioni seguendo lo schema e sotto il mio controllo, il bambino le fa da solo. Questo è positivo. È importante saper lavorare anche in modo preciso secondo le istruzioni.

Ordine di lavoro ("dal particolare al generale")

Questo è un punto complesso. È necessario abituarsi all'idea che un grande progetto («fare un robot») è composto da compiti più piccoli («collegare un sensore», «collegare i motori»...), i quali, a loro volta, consistono in passi ancora più piccoli («trovare il programma», «collegare la scheda», «caricare il firmware»...). Svolgendo compiti di livello inferiore, riusciamo a completare i compiti di livello medio, dai quali si ottiene il risultato complessivo. L'ho spiegato, ma penso che la consapevolezza non arriverà presto. Probabilmente, verso l'età adolescenziale.

Installazione

Foratura, filettatura, viti, dadi, saldature e l'odore della colofonia — come si può fare a meno di tutto ciò. Il bambino ha acquisito la competenza di base «Lavorare con il saldatore» — siamo riusciti a saldare alcune connessioni (ho aiutato un po', non lo nego). Non dimenticate di spiegare le norme di sicurezza.

Lavorare al computer

Ho scritto il programma per il robot, ma sono riuscito a raggiungere comunque alcuni risultati collaterali.

Primo: l'inglese. A scuola lo hanno appena iniziato, quindi ci siamo «strappati» per capire cosa fosse pishalka, migalka, yarkost e altre translitterazioni. Almeno questo lo abbiamo capito. Ho scelto consapevolmente di non usare le parole inglesi native, poiché non siamo ancora arrivati a quel livello.

Secondo: lavoro efficace. Abbiamo imparato le scorciatoie da tastiera più utili, come eseguire rapidamente operazioni standard. Periodicamente, mentre scrivevamo il programma, cambiavamo i ruoli e io dicevo cosa doveva essere fatto (sostituzioni, ricerche, ecc.). Ho dovuto ripetere più e più volte: «seleziona con un doppio clic», «tieni premuto Shift», «tieni premuto Ctrl» e così via. Il processo di apprendimento non è veloce, ma penso che le competenze si depositeranno lentamente nella memoria.

Testo nascostoPuoi dire che quanto descritto sopra è quasi ovvio. Ma, onestamente, quest'autunno mi è capitato di insegnare informatica nelle classi nona in una scuola. È terribile. Gli studenti non sanno cose così elementari come Ctrl + Z, Ctrl + C e Ctrl + V, selezionare testo tenendo premuto Shift o con un doppio clic su una parola, e altro ancora. Questo nonostante fosse il loro terzo anno di insegnamento di informatica... Fai tu la conclusione.

Terzo: la digitazione cieca. Ho affidato al bambino il compito di scrivere i commenti nel codice (chissà, magari si allena). Abbiamo subito messo le mani nella posizione giusta, affinché le dita memorizzassero gradualmente la disposizione dei tasti.

Come vedi, stiamo ancora appena iniziando. Continueremo a perfezionare abilità e conoscenze, che ci saranno utili nella vita.

A proposito, riguardo al futuro...

Sviluppo futuro

Il robot è pronto, si muove, lampeggia e fa bip. E adesso? Ispirati dai risultati ottenuti, intendiamo svilupparlo ulteriormente. Abbiamo in mente di creare un controllo remoto, simile a quello di un rover. Sarebbe interessante controllare il movimento del robot da un ipotetico joystick, mentre si trova in un luogo completamente diverso. Ma questa è un'altra storia…

E infine, i veri protagonisti di questo articolo (video cliccabile):

Esperienza nella creazione del primo robot su Arduino (robot 'cacciatore')

Grazie per l'attenzione!

Link al codice

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster