Drone Arduino con GPS
Abbiamo deciso di costruire un drone quadricottero FPV (First-View-View-FPV) controllato e stabilizzato da Arduino con ritorno a casa, andare alle coordinate e funzioni di mantenimento GPS. Abbiamo ingenuamente ipotizzato che la combinazione dei programmi Arduino esistenti e il cablaggio per un quadricottero senza GPS con quelli di un sistema di trasmissione GPS sarebbe relativamente semplice e che potremmo passare rapidamente a compiti di programmazione più complessi. Tuttavia, è stato necessario apportare modifiche sorprendenti al fine di creare un mesh tra questi due progetti e quindi abbiamo finito per realizzare un quadricottero FPV abilitato per GPS, senza alcuna funzionalità aggiuntiva.
Abbiamo incluso le istruzioni su come replicare il nostro prodotto se sei soddisfatto del quadricoptero più limitato.
Abbiamo anche incluso tutti i passaggi che abbiamo intrapreso sulla strada per un quadricottero più autonomo. Se ti senti a tuo agio a scavare in profondità in Arduino o hai già molta esperienza con Arduino e vorresti prendere il nostro punto di sosta come punto di partenza per la tua esplorazione, allora questo Instructable è anche per te.
Questo è un grande progetto per imparare qualcosa sulla costruzione e la programmazione di Arduino, indipendentemente da quanta esperienza tu abbia. Inoltre, si spera che tu vada via con un drone.
L'impostazione è la seguente:
Nell'elenco dei materiali, sono necessari pezzi senza asterisco per entrambi gli obiettivi.
Le parti con un asterisco sono necessarie solo per il progetto incompiuto di un quadricottero più autonomo.
Le parti con due asterischi sono necessarie solo per il quadricoptero più limitato.
I passaggi comuni ad entrambi i progetti non hanno marcatori dopo il titolo
I passaggi richiesti solo per il quadricoptero non autonomo più limitato hanno "(Uno)" dopo il titolo.
I passaggi necessari solo per il quadricottero autonomo in corso hanno "(Mega)" dopo il titolo.
Per creare il quad basato su Uno, seguire i passaggi in ordine, saltando tutti i passaggi con "(Mega)" dopo il titolo.
Per lavorare sul quad basato su Mega, seguire i passaggi in ordine, saltando tutti i passaggi con "(Uno)" dopo il titolo.
Passaggio 1: raccogliere materiali
Componenti:
1) Un frame quadricottero (il frame esatto probabilmente non ha importanza) ($ 15)
2) Quattro motori brushless 2830, 900kV (o simili) e quattro pacchetti di accessori di montaggio (4x $ 6 + 4x $ 4 = $ 40 in totale)
3) Quattro ESC UBEC da 20 A (4x $ 10 = $ 40 in totale)
4) Una scheda di distribuzione dell'alimentazione (con connessione XT-60) ($ 20)
5) Una batteria LiPo 3s 3000-5000mAh con connessione XT-60 (3000mAh corrisponde a circa 20 minuti di volo) ($ 25)
6) Un sacco di eliche (queste si rompono molto) ($ 10)
7) Un Arduino Mega 2560 * ($ 40)
8) Un Arduino Uno R3 ($ 20)
9) Un secondo Arduino Uno R3 ** ($ 20)
10) Un Arduino Ultimate GPS Shield (non è necessario lo scudo, ma l'utilizzo di un GPS diverso richiederà un cablaggio diverso) ($ 45)
11) Due ricetrasmettitori wireless HC-12 (2x $ 5 = $ 10)
12) Un giroscopio / accelerometro MPU- 6050, 6DOF (grado di libertà) ($ 5)
13) One Turnigy 9x 2.4GHz, coppia trasmettitore / ricevitore 9 canali ($ 70)
14) Arduino intestazioni femminili (impilabili) ($ 20)
15) Caricabatterie LiPo Battery Balance (e adattatore 12V DC, non incluso) ($ 20)
17) Cavo adattatore da USB A a B maschio a maschio ($ 5)
17) Nastro adesivo
18) Tubi termoretraibili
Equipaggiamento:
1) Un saldatore
2) Saldatura
3) resina epossidica di plastica
4) Più leggero
5) Spellafili
6) Una serie di chiavi a brugola
Componenti opzionali per la trasmissione video FPV in tempo reale (visuale in prima persona):
1) Una piccola fotocamera FPV (si collega a quella piuttosto economica e di cattiva qualità che abbiamo usato, puoi sostituirla con una migliore) ($ 20)
2) Coppia trasmettitore / ricevitore video 5, 6 GHz (832 modelli utilizzati) ($ 30)
3) Batteria LiPo da 500 mAh, 3s (11, 1 V) ($ 7) (utilizzata con una spina a banana, ma si consiglia in retrospettiva di utilizzare la batteria collegata, poiché ha un connettore compatibile con il trasmettitore TS832, e quindi non funziona richiede saldatura).
4) 2 batterie LiPo da 1000 mAh 2s (7, 4 V) o simili ($ 5). Numero di mAh non critico purché sia superiore a 1000 mAh o giù di lì. La stessa dichiarazione di cui sopra si applica al tipo di spina per una delle due batterie. L'altro verrà utilizzato per alimentare il monitor, quindi dovrai saldare qualunque cosa accada. Probabilmente è meglio ottenerne uno con una spina XT-60 per questo (è quello che abbiamo fatto). Un collegamento per quel tipo è qui: LiPo 1000mAh 2s (7.4V) con spina XT-60
5) Monitor LCD (opzionale) ($ 15). È inoltre possibile utilizzare un adattatore AV-USB e un software di copia DVD per visualizzare direttamente su un laptop. Ciò offre anche la possibilità di registrare video e foto, piuttosto che visualizzarli in tempo reale.
6) Se hai acquistato batterie con spine diverse da quelle collegate, potresti aver bisogno di adattatori adeguati. Indipendentemente da ciò, procurati un adattatore corrispondente alla spina della batteria che alimenta il monitor. Ecco dove trovare gli adattatori XT-60
* = solo per progetti più avanzati
** = solo per un progetto più semplice
Costi:
Se si parte da zero (ma con un saldatore, ecc ...), nessun sistema FPV: ~ $ 370
Se hai già un trasmettitore / ricevitore RC, un caricabatterie LiPo e una batteria LiPo: ~ $ 260
Costo del sistema FPV: $ 80
Passaggio 2: assemblare il telaio



Questo passaggio è abbastanza semplice, soprattutto se si utilizza lo stesso telaio prefabbricato che abbiamo usato. Basta usare le viti incluse e unire il telaio come mostrato, usando una chiave a brugola o un cacciavite adeguati per il telaio. Assicurati che le braccia dello stesso colore siano adiacenti l'una all'altra (come in questa immagine), in modo che il drone abbia una parte anteriore e una posteriore chiare. Inoltre, assicurarsi che la parte lunga della piastra inferiore sporga tra bracci di colore opposto. Questo diventa importante in seguito.
Passaggio 3: montare i motori e collegare gli escs




Ora che il telaio è assemblato, estrarre i quattro motori e i quattro accessori di montaggio. È possibile utilizzare le viti incluse nei set di montaggio o le viti rimaste dal telaio del quadricoptero per avvitare i motori e i supporti in posizione. Se acquisti i supporti a cui siamo collegati, riceverai due componenti extra, nella foto sopra. Abbiamo avuto buone prestazioni del motore senza queste parti, quindi le abbiamo lasciate fuori per ridurre il peso.
Una volta che i motori sono stati avvitati, epossidizzare la scheda di distribuzione dell'alimentazione (PDB) in posizione sulla parte superiore della piastra superiore del telaio del quadricottero. Assicurati di orientarlo in modo tale che il connettore della batteria punti tra bracci di colore diverso (parallelamente a una delle parti lunghe della piastra inferiore), come nella figura sopra.
Dovresti anche avere quattro coni elica con filetti femmina. Mettili da parte per ora.
Ora elimina i tuoi ESC. Da un lato usciranno due fili, uno rosso e uno nero. Per ciascuno dei quattro ESC, inserire il filo rosso nel connettore positivo sul PDB e il nero in negativo. Se si utilizza un PDB diverso, questo passaggio potrebbe richiedere la saldatura. Ora collega ciascuno dei tre fili che escono da ciascun motore. A questo punto, non importa quale filo ESC si collega con quale filo motore (fintanto che si collegano tutti i fili di un ESC con lo stesso motore!) In seguito si correggerà qualsiasi polarità all'indietro. Non è pericoloso se i fili sono invertiti; provoca solo la rotazione del motore all'indietro.
Passaggio 4: preparare Arduino e Shield


Una nota prima di iniziare
Innanzitutto, puoi scegliere di saldare tutti i fili direttamente insieme. Tuttavia, abbiamo trovato inestimabile utilizzare le intestazioni dei pin perché offrono molta flessibilità per la risoluzione dei problemi e l'adattamento del progetto. Quella che segue è una descrizione di ciò che abbiamo fatto (e consigliamo ad altri di farlo).
Prepara Arduino e scudo
Elimina il tuo Arduino Mega (o uno Uno se fai il quad non autonomo), lo scudo GPS e le intestazioni impilabili. Saldare l'estremità maschio delle intestazioni impilabili in posizione sullo scudo GPS, nelle file di perni paralleli ai perni pre-saldati, come mostrato nell'immagine sopra. Saldare anche in intestazioni impilabili sulla fila di pin etichettata 3V, CD, ... RX. Utilizzare un tronchese per tagliare la lunghezza in eccesso sui perni che sporgono dal fondo. Posiziona le intestazioni maschili con le parti superiori piegate in tutte queste intestazioni impilabili. Questi sono i componenti con cui saldare i fili per il resto dei componenti.
Attacca lo scudo GPS nella parte superiore, assicurandoti che i pin corrispondano a quelli dell'Arduino (Mega o Uno). Nota che se usi Mega, molti Arduino saranno comunque esposti dopo aver messo lo scudo in posizione.
Posizionare il nastro isolante sul fondo dell'Arduino, coprendo tutte le saldature esposte dei perni, per evitare cortocircuiti mentre Arduino poggia sul PDB.
Passaggio 5: collegare i componenti e posizionare la batteria (Uno)




Lo schema sopra è quasi identico a quello realizzato da Joop Brooking poiché abbiamo fortemente basato il nostro design sul suo.
* Notare che questo schema presuppone uno scudo GPS correttamente montato e quindi il GPS non appare in questo schema.
Lo schema sopra è stato preparato utilizzando il software Fritzing, che è altamente raccomandato soprattutto per gli schemi che coinvolgono Arduino. Abbiamo utilizzato principalmente parti generiche che possono essere modificate in modo flessibile, poiché le nostre parti non erano generalmente nella libreria di parti inclusa di Fritzing.
-Assicurarsi che l'interruttore sulla protezione GPS sia impostato su "Scrittura diretta".
-Ora cablare tutti i componenti secondo lo schema sopra (eccetto la batteria!) (Nota importante sui cavi dati GPS di seguito).
-Nota che hai già collegato gli ESC ai motori e al PDB, quindi questa parte dello schema è fatta.
-Inoltre, si noti che i dati GPS (fili gialli) escono dai pin 0 e 1 sull'Arduino (non i pin Tx e Rx separati sul GPS). Questo perché configurato su "Direct Write" (vedi sotto), il GPS emette direttamente alle porte seriali hardware su uno (pin 0 e 1). Questo è chiaramente mostrato nella seconda immagine sopra del cablaggio completo.
-Quando si collega il ricevitore RC, fare riferimento all'immagine sopra. Osserva che i fili di dati vanno nella riga superiore, mentre Vin e Gnd si trovano rispettivamente sulla seconda e terza fila (e sulla colonna di pin dalla seconda alla più lontana).
-Per eseguire il cablaggio per il ricetrasmettitore HC-12, il ricevitore RC e 5Vout dal PDB al Vin dell'Arduino abbiamo usato le intestazioni impilabili, mentre per il giroscopio abbiamo saldato i fili direttamente alla scheda e utilizzando un tubo termorestringente attorno al saldare. Puoi scegliere di eseguire uno dei due componenti, tuttavia si consiglia di saldare direttamente sul giroscopio in quanto consente di risparmiare spazio, facilitando il montaggio della piccola parte. L'uso delle intestazioni richiede una piccola quantità di lavoro in anticipo, ma offre maggiore flessibilità. I fili di saldatura direttamente sono una connessione più sicura a lungo termine, ma significa che usare quel componente su un altro progetto è più difficile. Nota che se hai utilizzato le intestazioni sullo scudo GPS, avrai comunque una discreta flessibilità indipendentemente da ciò che fai. Fondamentalmente, assicurarsi che i cavi dati GPS nei pin 0 e 1 sul GPS siano facili da rimuovere e sostituire.
Alla fine del nostro progetto, non siamo stati in grado di progettare un buon metodo per collegare tutti i nostri componenti al telaio. A causa della pressione del tempo della nostra classe, le nostre soluzioni in genere ruotavano attorno a nastro biadesivo in schiuma, nastro adesivo, nastro elettrico e fascette. Consigliamo vivamente di dedicare più tempo alla progettazione di strutture di montaggio stabili se si prevede che questo sia un progetto a più lungo termine. Detto questo, se vuoi solo realizzare un prototipo veloce, sentiti libero di seguire il nostro processo. Tuttavia, assicurarsi che il giroscopio sia montato in modo sicuro. Questo è l'unico modo in cui Arduino sa cosa sta facendo il quadricottero, quindi se si muove in volo avrai problemi.
Con tutto collegato e in posizione, prendi la batteria LiPo e inseriscila tra le piastre superiore e inferiore del telaio. Assicurati che il suo connettore punti nella stessa direzione del connettore del PDB e che possano effettivamente connettersi. Abbiamo usato del nastro adesivo per tenere in posizione la batteria (anche il nastro in velcro funziona, ma è più fastidioso del nastro adesivo). Il nastro isolante funziona bene perché si può facilmente sostituire la batteria o rimuoverla per la ricarica. Tuttavia, devi essere sicuro di aver TAGLIATO la batteria TOTALMENTE, come se la batteria si muovesse durante il volo, ciò potrebbe compromettere seriamente l'equilibrio del drone. NON collegare ancora la batteria al PDB.
Passaggio 6: collegare i componenti e posizionare la batteria (mega)



Lo schema sopra è stato preparato utilizzando il software Fritzing, che è altamente raccomandato soprattutto per gli schemi che coinvolgono arduino. Abbiamo utilizzato principalmente parti generiche, in quanto le nostre parti non erano generalmente nella libreria delle parti inclusa di Fritzing.
-Nota che questo schema presuppone uno scudo GPS correttamente montato, e quindi il GPS non appare in questo schema.
-Portare l'interruttore sul Mega 2560 su "Soft Serial".
-Ora cablare tutti i componenti secondo lo schema sopra (eccetto la batteria!)
-Nota che hai già collegato gli ESC ai motori e al PDB, quindi questa parte dello schema è fatta.
-I cavi jumper dal Pin 8 a Rx e dal Pin 7 a Tx sono lì perché (a differenza di Uno, per il quale è stato realizzato questo scudo), il mega manca di un ricevitore-trasmettitore asincrono universale (UART) sui pin 7 e 8, e quindi dobbiamo usare pin seriali hardware. Ci sono altri motivi per cui abbiamo bisogno di pin seriali hardware, discussi più avanti.
-Quando si collega il ricevitore RC, fare riferimento all'immagine sopra. Osserva che i fili di dati vanno nella riga superiore, mentre Vin e Gnd si trovano rispettivamente sulla seconda e terza fila (e sulla colonna di pin dalla seconda alla più lontana).
-Per eseguire il cablaggio per il ricetrasmettitore HC-12, il ricevitore RC e 5Vout dal PDB al Vin dell'Arduino abbiamo usato le intestazioni impilabili, mentre per il giroscopio abbiamo saldato direttamente i fili e utilizzando tubi termorestringenti intorno alla saldatura. È possibile scegliere di eseguire uno dei due componenti. L'uso delle intestazioni richiede una piccola quantità di lavoro in anticipo, ma offre maggiore flessibilità. I fili di saldatura direttamente sono una connessione più sicura a lungo termine, ma significa che usare quel componente su un altro progetto è più difficile. Nota che se hai utilizzato le intestazioni sullo scudo GPS, avrai comunque una discreta flessibilità indipendentemente da ciò che fai.
Alla fine del nostro progetto, non siamo stati in grado di progettare un buon metodo per collegare tutti i nostri componenti al telaio. A causa della pressione del tempo della nostra classe, le nostre soluzioni in genere ruotavano attorno a nastro biadesivo in schiuma, nastro isolante, nastro elettrico e fascette. Consigliamo vivamente di dedicare più tempo alla progettazione di strutture di montaggio stabili se si prevede che questo sia un progetto a più lungo termine. Detto questo, se vuoi solo realizzare un prototipo veloce, sentiti libero di seguire il nostro processo. Tuttavia, assicurarsi che il giroscopio sia montato in modo sicuro. Questo è l'unico modo in cui Arduino sa cosa sta facendo il quadricottero, quindi se si muove in volo avrai problemi.
Con tutto collegato e in posizione, prendi la batteria LiPo e inseriscila tra le piastre superiore e inferiore del telaio. Assicurati che il suo connettore punti nella stessa direzione del connettore del PDB e che possano effettivamente connettersi. Abbiamo usato del nastro adesivo per tenere in posizione la batteria (anche il nastro in velcro funziona, ma è più fastidioso del nastro adesivo). Il nastro isolante funziona bene perché si può facilmente sostituire la batteria o rimuoverla per la ricarica. Tuttavia, devi essere sicuro di aver TAGLIATO la batteria TOTALMENTE, come se la batteria si muovesse durante il volo, ciò potrebbe compromettere seriamente l'equilibrio del drone. NON collegare ancora la batteria al PDB.
Passaggio 7: associare il ricevitore


Prendi il ricevitore RC e collegalo temporaneamente a un alimentatore da 5 V (accendendo Arduino con alimentazione USB o 9 V o con un alimentatore separato. Non collegare ancora il LiPo ad Arduino). Prendi il perno di rilegatura fornito con il ricevitore RC e posizionalo sui piedini BIND sul ricevitore. In alternativa, corto i pin superiore e inferiore nella colonna BIND, come mostrato nella foto sopra. Una luce rossa dovrebbe lampeggiare rapidamente sul ricevitore. Ora prendi il controller e premi il pulsante sul retro mentre è spento, come mostrato sopra. Con il pulsante premuto, accendere il controller. Ora la luce lampeggiante sul ricevitore dovrebbe diventare solida. Il ricevitore è legato. Rimuovere il cavo di rilegatura. Se si utilizzava un alimentatore diverso, ricollegare il ricevitore a 5 V dall'Arduino.
Passaggio 8: (opzionale) collegare e montare il sistema di telecamere FPV.


Innanzitutto, saldare insieme l'adattatore XT-60 con i cavi di alimentazione e di terra sul monitor. Questi possono variare da monitor a monitor, ma la potenza sarà quasi sempre rossa, il terreno quasi sempre nero. Ora inserisci l'adattatore con fili saldati nel LiPo da 1000 mAh con la spina XT-60. Il monitor dovrebbe accendersi con (di solito) sfondo blu. Questo è il passo più difficile!
Ora avvita le antenne sul ricevitore e sul trasmettitore.
Collega il tuo piccolo Lipo da 500 mAh al trasmettitore. Il pin più a destra (proprio sotto l'antenna) è terra (V_) della batteria, il pin successivo a sinistra è V +. Arrivano i tre fili che vanno alla telecamera. La fotocamera dovrebbe essere dotata di una presa tre in uno che si adatta al trasmettitore. Assicurati di avere il filo dati giallo nel mezzo. Se hai utilizzato le batterie a cui siamo collegati con spine destinate a questo scopo, questo passaggio non dovrebbe richiedere alcuna saldatura.
Infine, collegare l'altra batteria da 1000 mAh con il cavo di uscita CC fornito con il ricevitore e, a sua volta, collegarlo alla porta di ingresso CC del ricevitore. Infine, collega l'estremità nera del cavo AVin in dotazione con il ricevitore alla porta AVin sul ricevitore e l'altra estremità (gialla, femmina) all'estremità maschio gialla del cavo AVin del monitor.
A questo punto, dovresti essere in grado di vedere una vista della telecamera sul monitor. Se non ci riesci, assicurati che il ricevitore e il trasmettitore siano entrambi accesi (dovresti vedere i numeri sui loro piccoli schermi) e che siano sullo stesso canale (abbiamo usato il canale 11 per entrambi e abbiamo avuto un buon successo). Inoltre, potrebbe essere necessario cambiare il canale sul monitor.
Montare i componenti sul telaio.
Una volta che l'installazione ha funzionato, scollegare le batterie fino a quando non si è pronti a volare.
Passaggio 9: impostare la ricezione dei dati GPS


Collega il tuo secondo Arduino con il tuo secondo ricetrasmettitore HC-12 come mostrato nello schema sopra, tenendo presente che l'installazione verrà alimentata come visualizzata solo se collegata a un computer. Scarica il codice del ricetrasmettitore fornito, apri il tuo monitor seriale a 9600 baud.
Se si utilizza l'impostazione di base, è necessario iniziare a ricevere le frasi GPS se lo schermo GPS è alimentato e correttamente collegato all'altro ricetrasmettitore HC-12 (e se l'interruttore sullo schermo è su "Scrittura diretta").
Con il Mega, assicurati che l'interruttore sia su "Soft Serial".
allegati
Scarica Transceiver_Uno.ino
Passaggio 10: eseguire il codice di installazione (Uno)
Questo codice è identico a quello usato da Joop Brokking nel suo tutorial sul quadricottero Arduino e merita tutto il merito per la sua scrittura.
Con la batteria scollegata, utilizzare il cavo USB per collegare il computer ad Arduino e caricare il codice di installazione allegato. Accendi il tuo trasmettitore RC. Apri il tuo monitor seriale su 57600 baud e segui le istruzioni.
Errori comuni:
Se non è possibile caricare il codice, assicurarsi che i pin 0 e 1 siano scollegati sulla protezione UNO / GPS. Questa è la stessa porta hardware utilizzata dal dispositivo per comunicare con il computer, quindi deve essere libera.
Se il codice salta tutti i passaggi contemporaneamente, controlla che l'interruttore GPS sia su "Scrittura diretta".
Se non viene rilevato alcun ricevitore, assicurarsi che ci sia una luce rossa fissa (ma fioca) sul ricevitore quando il trasmettitore è acceso. In tal caso, controllare il cablaggio.
Se non viene rilevato alcun giroscopio, ciò potrebbe essere dovuto al fatto che il giroscopio è danneggiato o se si dispone di un tipo di giroscopio diverso da quello su cui è progettato il codice.
allegati
Download YMFC-AL_setup.ino
Passaggio 11: eseguire il codice di installazione (Mega)
Questo codice è identico a quello usato da Joop Brokking nel suo tutorial sul quadricottero Arduino e merita tutto il merito per la sua scrittura. Abbiamo semplicemente adattato il cablaggio per il Mega in modo che gli ingressi del ricevitore corrispondessero ai pin di interruzione cambio pin corretti.
Con la batteria scollegata, utilizzare il cavo USB per collegare il computer ad Arduino e caricare il codice di installazione allegato. Apri il tuo monitor seriale su 57600 baud e segui le istruzioni.
allegati
Download YMFC-AL_setup.ino
Passaggio 12: calibrare gli ESC (Uno)
Ancora una volta, questo codice è identico al codice di Joop Brokking. Tutte le modifiche sono state apportate nel tentativo di integrare il GPS e Arduino e possono essere trovate in seguito, nella descrizione della costruzione del quadricottero più avanzato.
Carica il codice di calibrazione ESC allegato. Sul monitor seriale, scrivi la lettera 'r' e premi Invio. Dovresti iniziare a vedere i valori del controller RC in tempo reale elencati. Verificare che variano da 1000 a 2000 agli estremi di acceleratore, rollio, beccheggio e imbardata. Quindi scrivi "a" e premi invio. Lasciare andare la calibrazione del giroscopio e quindi verificare che il giroscopio registri il movimento del quad. Ora collega l'arduino dal computer, spingi l'acceleratore fino in fondo sul controller e collega la batteria. Gli ESC dovrebbero alternare diversi segnali acustici (ma ciò può variare a seconda dell'ESC e del suo firmware). Spingere l'acceleratore fino in fondo. Gli ESC dovrebbero emettere segnali acustici più bassi, quindi tacere. Scollegare la batteria.
Opzionalmente, a questo punto è possibile utilizzare i coni forniti con i pacchetti di accessori di montaggio del motore per avvitare saldamente le eliche. Quindi immettere i numeri 1 - 4 sul monitor seriale per alimentare rispettivamente i motori 1 - 4, alla potenza più bassa. Il programma registrerà la quantità di agitazione dovuta allo squilibrio degli oggetti di scena. Puoi provare a rimediare aggiungendo piccole quantità di nastro adesivo su un lato o l'altro degli oggetti di scena. Abbiamo scoperto che avremmo potuto volare bene senza questo passaggio, ma forse leggermente meno efficientemente e più rumorosamente di quanto avessimo bilanciato gli oggetti di scena.
allegati
YMFC-AL_esc_calibrate.ino Scarica
Passaggio 13: calibrare ESC (Mega)
Questo codice è molto simile al codice di Brokking, tuttavia l'abbiamo adattato (e il relativo cablaggio) per funzionare con il Mega.
Carica il codice di calibrazione ESC allegato. Sul monitor seriale, scrivi la lettera 'r' e premi Invio. Dovresti iniziare a vedere i valori del controller RC in tempo reale elencati. Verificare che variano da 1000 a 2000 agli estremi di acceleratore, rollio, beccheggio e imbardata.
Quindi scrivi "a" e premi invio. Lasciare andare la calibrazione del giroscopio e quindi verificare che il giroscopio registri il movimento del quad.
Ora collega l'arduino dal computer, spingi l'acceleratore fino in fondo sul controller e collega la batteria. Gli ESC dovrebbero emettere tre bip bassi seguiti da un bip alto (ma questo potrebbe essere diverso a seconda dell'ESC e del suo firmware). Spingere l'acceleratore fino in fondo. Scollegare la batteria.
Le modifiche apportate a questo codice sono passate dall'uso di PORTD per i pin ESC all'utilizzo di PORTA e quindi alla modifica dei byte scritti su queste porte in modo da attivare i pin corretti, come mostrato nello schema di cablaggio. Questa modifica è dovuta al fatto che i pin del registro PORTD non si trovano nella stessa posizione su Mega come in Uno. Non siamo stati in grado di testare completamente questo codice mentre lavoravamo con una vecchia Mega off-brand che aveva il negozio della nostra scuola. Ciò significa che per qualche motivo non tutti i pin del registro PORTA sono stati in grado di attivare correttamente gli ESC. Abbiamo anche avuto problemi con l'utilizzo dell'operatore o uguale (| =) in alcuni dei nostri codici di test. Non siamo sicuri del motivo per cui ciò stava causando problemi durante la scrittura dei byte per impostare le tensioni dei pin ESC, quindi abbiamo modificato il codice di Brooking il meno possibile. Pensiamo che questo codice sia molto vicino al funzionale, ma il tuo chilometraggio può variare.
allegati
YMFC-AL_esc_calibrateMEGA.ino Scarica
Step 14: Get Airborne !! (Uno)
E ancora, questo terzo pezzo di codice geniale è opera di Joop Brokking. Alterazioni di tutte e tre queste parti di codice sono presenti solo nel nostro tentativo di integrazione dei dati GPS in Arduino.
Con le eliche saldamente montate sul telaio e tutti i componenti collegati, fissati o altrimenti montati, caricare il codice del controller di volo su Arduino, quindi scollegare Arduino dal computer.
Porta fuori il quadricoptero, collega la batteria e accendi il trasmettitore. Facoltativamente, porta con te un laptop collegato alla configurazione di ricezione GPS, nonché alla configurazione e al monitor di ricezione video. Carica il codice del ricetrasmettitore sul tuo Arduino terrestre, apri il tuo monitor seriale a 9600 baud e osserva il roll-in dei dati GPS.
Ora sei pronto a volare. Spingere l'acceleratore verso il basso e imbardare a sinistra per armare il quadricottero, quindi sollevare delicatamente l'acceleratore per librarsi. Inizia volando basso a terra e su superfici morbide come l'erba fino a quando non ti senti a tuo agio.
Guarda il video incorporato di noi che eccitiamo volando il drone la prima volta che siamo riusciti a far funzionare simultaneamente drone e GPS.
allegati
Download YMFC-AL_Flight_controller.ino
Step 15: Get Airborne !! (Mega)
A causa del nostro blocco con il codice di calibrazione ESC per il Mega, non siamo mai stati in grado di creare il codice del controller di volo per questa scheda. Se sei arrivato a questo punto, allora immagino che hai almeno armeggiato con il codice di calibrazione ESC per farlo funzionare per il Mega. Pertanto, dovrai probabilmente apportare modifiche simili al codice del controllore di volo come hai fatto nell'ultimo passaggio. Se il nostro codice di calibrazione ESC per Mega funziona magicamente senza altre modifiche, allora ci sono solo alcune cose che dovrai fare per il codice di riserva per farlo funzionare per questo passaggio. Dovrai prima passare attraverso e sostituire tutte le istanze di PORTD con PORTA. Inoltre, non dimenticare di cambiare DDRD in DDRA. Quindi, sarà necessario modificare tutti i byte che vengono scritti nel registro PORTA in modo che attivino i pin corretti. Per fare ciò, utilizzare il byte B11000011 per impostare i pin su alto e B00111100 per impostare i pin su basso. Buona fortuna e facci sapere se voli con successo con un Mega!
Step 16: Come siamo arrivati a dove siamo attualmente con il Mega Design
Questo progetto è stata un'esperienza di apprendimento immensa per noi come principianti di hobby di Arduino ed elettronica. Pertanto, abbiamo pensato di includere la saga di tutto ciò che abbiamo incontrato durante il tentativo di abilitare il codice GPS di Joop Brokking. Poiché il codice di Brokking è così completo e molto più complicato di qualsiasi cosa stessimo scrivendo, abbiamo deciso di modificarlo il meno possibile. Abbiamo cercato di ottenere lo scudo GPS per inviare i dati ad Arduino e quindi far sì che Arduino ci inviasse tali informazioni tramite il ricetrasmettitore HC12 senza modificare il codice di volo o il cablaggio in alcun modo. Dopo aver esaminato gli schemi e il cablaggio del nostro Arduino Uno per capire quali pin fossero disponibili, abbiamo cambiato il codice del ricetrasmettitore GPS che stavamo usando per aggirare il design esistente. Quindi lo abbiamo testato per assicurarsi che tutto funzionasse. A questo punto, le cose sembravano promettenti.
Il passo successivo è stato quello di integrare il codice che avevamo appena modificato e testato con il controllore di volo di Brokking. Questo non è stato troppo difficile, ma abbiamo subito riscontrato un errore. Il controllore di volo di Brokking si affida alle librerie Arduino Wire ed EEPROM mentre il nostro codice GPS utilizzava sia la libreria Serial Software che la libreria GPS Arduino. Poiché la libreria Wire fa riferimento alla libreria Serial Software, si è verificato un errore in cui il codice non veniva compilato perché c'erano "definizioni multiple per _vector 3_", qualunque cosa ciò significhi. Dopo aver guardato su Google e aver scavato nelle biblioteche, alla fine ci siamo resi conto che questo conflitto di biblioteche rendeva impossibile usare questi pezzi di codice insieme. Quindi, siamo andati alla ricerca di alternative.
Ciò che abbiamo capito è che l'unica combinazione di librerie che non ci ha generato errori è stata quella di passare la libreria GPS standard a neoGPS e quindi di utilizzare AltSoftSerial anziché Software Serial. Questa combinazione ha funzionato, tuttavia, AltSoftSerial può funzionare solo con pin specifici, che non erano disponibili nel nostro design. Questo è ciò che ci porta all'utilizzo di Mega. Arduino Megas ha più porte seriali hardware, il che significa che potremmo aggirare questo conflitto di librerie non avendo bisogno di aprire affatto porte seriali di software.
Tuttavia, quando abbiamo iniziato a utilizzare Mega, ci siamo resi rapidamente conto che la configurazione dei pin era diversa. I pin su Uno che hanno interruzioni sono diversi su Mega. Allo stesso modo, i pin SDA e SCL si trovavano in posizioni diverse. Dopo aver studiato gli schemi dei pin per ogni tipo di Arduino e aver aggiornato i registri chiamati nel codice, siamo stati in grado di eseguire il codice di configurazione del volo con solo un ricablaggio minimo e nessuna modifica del software.
Il codice di calibrazione ESC è il punto in cui abbiamo iniziato a riscontrare problemi. Ne abbiamo parlato brevemente prima, ma fondamentalmente il codice utilizza i registri dei pin per regolare i pin utilizzati per controllare gli ESC. Questo rende il codice più difficile da leggere rispetto all'utilizzo della funzione pinMode () standard; tuttavia, rende il codice più veloce e attiva i pin contemporaneamente. Questo è importante perché il codice di volo viene eseguito in un ciclo attentamente programmato. A causa delle differenze di pin tra gli Arduinos, abbiamo deciso di utilizzare il registro delle porte A sul Mega. Tuttavia, nei nostri test, non tutti i pin ci hanno fornito la stessa tensione di uscita quando dicevano di funzionare in modo elevato. Alcuni pin hanno un'uscita di circa 4, 90 V e altri ci hanno avvicinato a 4, 95 V. Apparentemente gli ESC che abbiamo sono un po 'schizzinosi, e quindi funzionerebbero correttamente solo quando usassimo i pin con la tensione più alta. Questo quindi ci ha costretti a cambiare i byte che abbiamo scritto per registrare A in modo che stessimo parlando con i pin corretti. Ulteriori informazioni al riguardo sono disponibili nella sezione di calibrazione ESC.
Si tratta di quanto siamo arrivati in questa parte del progetto. Quando siamo andati a testare questo codice di calibrazione ESC modificato, qualcosa è andato in cortocircuito e abbiamo perso la comunicazione con il nostro Arduino. Ne siamo rimasti estremamente perplessi perché non avevamo modificato alcun cablaggio. Questo ci ha costretto a fare un passo indietro e renderci conto che abbiamo avuto solo un paio di giorni per ottenere un drone volante dopo settimane di tentativi di mettere insieme i nostri pezzi incompatibili. Questo è il motivo per cui abbiamo fatto un passo indietro e creato il progetto più semplice con Uno. Tuttavia, pensiamo ancora che il nostro approccio sia vicino a lavorare con Mega con poco più tempo.
Il nostro obiettivo è che questa spiegazione degli ostacoli che abbiamo incontrato ti sia utile se stai lavorando alla modifica del codice di Brokking. Inoltre, non abbiamo mai avuto la possibilità di provare a codificare alcuna funzionalità di controllo autonomo basata sul GPS. Questo è qualcosa che dovrai capire dopo aver creato un drone funzionante con un Mega. Tuttavia, da alcune ricerche preliminari di Google sembra che l'implementazione di un filtro Kalman possa essere il modo più stabile e preciso per determinare la posizione in volo. Ti consigliamo di fare delle ricerche su come questo algoritmo ottimizza le stime dello stato. A parte questo, buona fortuna e facci sapere se vai oltre di quello che siamo riusciti!