Innholdsfortegnelse:

Guiden jeg skulle ønske jeg hadde om å bygge en Arduino -drone: 9 trinn
Guiden jeg skulle ønske jeg hadde om å bygge en Arduino -drone: 9 trinn

Video: Guiden jeg skulle ønske jeg hadde om å bygge en Arduino -drone: 9 trinn

Video: Guiden jeg skulle ønske jeg hadde om å bygge en Arduino -drone: 9 trinn
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, September
Anonim
Guiden jeg skulle ønske jeg hadde om å bygge en Arduino Drone
Guiden jeg skulle ønske jeg hadde om å bygge en Arduino Drone

Dette er dokumentet er en slags "How to guide" skråstrekningsdokumentasjon som går gjennom prosessen. Det tok meg å forstå konseptene for å nå målet mitt om å bygge et enkelt quadcopter som jeg kunne kontrollere fra mobiltelefonen.

For å gjøre dette prosjektet ønsket jeg å få en ide om hva en drone egentlig er, i mitt tilfelle et quadcopter, så jeg begynte å forske litt. Jeg så på mange YouTube -videoer, leste en haug med artikler og Ustrukturerbare sider, og dette er hva jeg fikk.

I hovedsak kan du dele en drone i to deler. Jeg kalte det "Fysisk" og "Kontrolleren". The Physical er egentlig alt som har å gjøre med mekanikken som får dronen til å fly. Dette er ting som motoren, rammen, batteriet, propellene og alt annet som fysisk gir dronen muligheten til å fly.

Kontrolleren er egentlig flykontrolleren. Hva styrer det fysiske slik at dronen kan fly som en hel enhet uten å falle. I hovedsak mikrokontrolleren, programvaren på den og sensorene som hjelper den med å triangulere lagrene. Så for å ha en drone, trengte jeg en kontroller og en haug med fysiske deler for kontrolleren å "kontrollere".

Rekvisita

Budsjett for prosjektet: $ 250

Tidsramme: 2 uker

Ting å kjøpe:

  • Fysisk ramme $ 20
  • Blad $ 0 (leveres med ramme)
  • Batteripakke $ 25
  • ESC (elektroniske hastighetsregulatorer) $ 0 (leveres med motorer)
  • Motorer $ 70

Flykontroller

  • Arduino nano $ 20
  • Arduino USB -kabel $ 2
  • Bluetooth-modul (HC-05) $ 8
  • 3 mm LED og 330 Ohm motstander og ledninger $ 13
  • GY-87 (akselerometer, gyroskop) $ 5
  • Prototypebrett $ 10
  • Mannlige og kvinnelige overskrifter $ 5

Annen

  • Loddesett $ 10
  • Multimeter $ 20

Jeg ønsket å glede meg over å bygge dette prosjektet som ingeniør, så jeg kjøpte andre ting som jeg ikke trengte.

Totalt: $ 208

Trinn 1: Min første erfaring

Etter å ha kjøpt alle komponentene mine, satte jeg alt sammen og prøvde deretter å starte dronen ved å bruke Multiwii (gå til programvare som mange av DIY -dronesamfunnet bruker), men jeg skjønte raskt at jeg ikke helt forsto hva jeg gjorde fordi det var mange feil og jeg ante ikke hvordan jeg skulle fikse dem.

Etter det bestemte jeg meg for å ta dronen fra hverandre og forstå hver komponent stykke for stykke og bygge den om på en måte som jeg helt ville forstå alt som foregikk.

I de følgende avsnittene vil jeg gå gjennom prosessen med å sette puslespillet sammen. Før det får vi en rask oversikt.

Fysisk

For det fysiske bør vi ha: rammen, propellene, batteriet og esken. Disse ville være ganske enkle å sette sammen. For å forstå disse delene og hvilke du bør få, kan du besøke denne lenken. Han forklarer hva du trenger å vite om å kjøpe hver av delene jeg har listet opp. Se også denne Youtube -videoen. Det vil hjelpe deg hvis du sitter fast ved å sette delene sammen.

Trinn 2: Tips om deling og feilsøking av fysiske deler

Tips om deling og feilsøking av fysiske deler
Tips om deling og feilsøking av fysiske deler

Propeller og motorer

  • For å sjekke om propellene dine er i riktig retning (vendt eller ikke), når du snurrer dem i retningen angitt av motorene (de fleste motorer har piler som viser hvordan de skal spinne), skal du føle en bris under propellene og ikke over.
  • Skruene på motsatte propeller skal ha samme farge.
  • Fargen på tilstøtende propeller skal være den samme.
  • Sørg også for at du har ordnet motorene slik at de snurrer akkurat som på bildet ovenfor.
  • Hvis du prøver å snu retningen til en motor, er det bare å bytte ledninger i motsatte ender. Dette vil snu retningen til motoren.

Batteri og strøm

  • Hvis ting av en eller annen grunn gnister og du ikke kan finne ut hvorfor, er det mest sannsynlig fordi du har byttet positive og negative.
  • Hvis du ikke er sikker på når du skal lade batteriene, kan du bruke et voltmeter for å kontrollere spenningen. Hvis den er lavere enn spesifikasjonene på batteriet sier, må den lades. Sjekk denne lenken for lading av batteriene.
  • De fleste LIPO -batterier kommer ikke med batteriladere. Du kjøper dem separat.

Trinn 3: Arduino -kontrolleren

Arduino -kontrolleren
Arduino -kontrolleren

Dette er uten tvil den vanskeligste delen av hele dette prosjektet. Det er veldig enkelt å sprenge komponenter, og feilsøking kan være ekstremt frustrerende hvis du ikke vet hva du gjør. Også i dette prosjektet kontrollerte jeg dronen min ved hjelp av bluetooth og en app som jeg vil vise deg hvordan du bygger. Dette gjorde prosjektet spesielt vanskeligere fordi 99% av opplæringen der ute bruker radiokontroller (dette er ikke et faktum lol), men ikke bekymre deg, jeg har gått gjennom frustrasjonen for deg.

Tips før du legger ut på denne reisen

  • Bruk et brødbrett før du fullfører enheten på en PCB. Dette lar deg enkelt gjøre endringer.
  • Hvis du har testet en komponent grundig og den ikke fungerer, fungerer den sannsynligvis ikke!
  • Se på spenningene en enhet kan håndtere før du kobler den til!

    • Arduino kan håndtere 6 til 20V, men prøv å koble den til 12V slik at du ikke blåser den opp. Du kan lese mer om spesifikasjonene her.
    • HC-05 kan håndtere opptil 5V, men noen pinner fungerer på 3.3V, så pass på det. Vi snakker om det senere.
    • IMU (GY-521, MPU-6050) fungerer også på 5V.
  • Vi bruker RemoteXY til å bygge appen vår. Hvis du vil bygge den på en iOS-enhet, må du bruke en annen Bluetooth-modul (HM-10). Du kan lære mer om dette på RemoteXY -nettstedet.

Forhåpentligvis har du lest tipsene. La oss nå teste hver komponent som vil være en del av kontrolleren separat.

Trinn 4: MPU-6050

MPU-6050
MPU-6050

Denne enheten har et gyroskop og et akselerometer, så det forteller deg i hovedsak akselerasjonen i en retning (X, Y, Z) og vinkelakselerasjonen langs disse retningene.

For å teste dette kan vi bruke opplæringen om dette, vi kan bruke denne opplæringen på Arduino -nettstedet. Hvis det fungerer, bør du få en strøm av akselerometer- og gyroskopverdier som endres når du vipper, roterer og akselererer oppsettet. Prøv også å justere og manipulere koden slik at du vet hva som skjer.

Trinn 5: HC-05 Bluetooth-modulen

HC-05 Bluetooth-modulen
HC-05 Bluetooth-modulen
HC-05 Bluetooth-modulen
HC-05 Bluetooth-modulen
HC-05 Bluetooth-modulen
HC-05 Bluetooth-modulen

Du trenger ikke å gjøre denne delen, men det er viktig å kunne gå til AT -modus (innstillingsmodus), da du mest sannsynlig må endre en av innstillingene til modulen. Dette var en av de mest frustrerende delene av dette prosjektet. Jeg gjorde så mye forskning for å finne ut hvordan jeg skulle få modulen min til AT -modus, fordi enheten min ikke reagerte på kommandoene mine. Det tok meg 2 dager å konkludere med at modulen min var ødelagt. Jeg bestilte en til og det fungerte. Ta en titt på denne opplæringen for å komme inn i AT -modus.

HC-05 kommer i forskjellige typer, det er noen med knapper og noen uten og alle slags designvariabler. En av disse som er konstant er at de alle har en "Pin 34". Sjekk denne opplæringen.

Ting du bør vite

  • For å gå til AT -modus, bare hold 5V til pin 34 på bluetooth -modulen før du kobler strøm til den.
  • Koble en potensiell skillelinje til RX -pinnen på modulen som den fungerer på 3.3V. Du kan fortsatt bruke den på 5V, men den kan steke pinnen hvis noe går galt.
  • Hvis du bruker Pin 34 (i stedet for knappen eller på en annen måte du fant på nettet), vil modulen sette Bluetooth -overføringshastigheten til 38400. Det er derfor i lenken til opplæringen ovenfor er det en linje i koden som sier:

BTSerial.begin (38400); // HC-05 standardhastighet i AT-kommandoen mer

Hvis modulen fremdeles ikke svarer med "OK", kan du prøve å bytte tx- og rx -pinnene. Det bør være:

Bluetooth => Arduino

RXD => TX1

TDX => RX0

Hvis det fortsatt ikke fungerer, velger du å endre pinnene i koden til andre Arduino -pinner. Test, hvis det ikke fungerer, bytt tx- og rx -pinnene, og test deretter igjen

SoftwareSerial BTSerial (10, 11); // RX | TX

Endre linjen ovenfor. Du kan prøve RX = 2, TX = 3 eller andre gyldige kombinasjoner. Du kan se på Arduino -pin -tallene på bildet ovenfor.

Trinn 6: Koble til delene

Koble til delene
Koble til delene

Nå som vi er sikre på at alt fungerer, er det på tide å begynne å sette dem sammen. Du kan koble delene akkurat som vist i kretsen. Jeg fikk det fra Electronoobs. Han hjalp meg virkelig med dette prosjektet. Se hans versjon av prosjektet her. Hvis du følger denne opplæringen, trenger du ikke å bekymre deg for mottakerforbindelsene: input_Yaw, input_Pitch, etc. Alt som skal håndteres med bluetooth. Koble også til bluetooth slik vi gjorde i forrige seksjon. Mine tx- og rx -pins ga meg litt trøbbel, så jeg brukte Arduinos:

RX som 2, og TX som 3, i stedet for de vanlige pinnene. Deretter skriver vi en enkel app som vi vil fortsette å forbedre til vi har sluttproduktet.

Trinn 7: Skjønnheten i RemoteXY

The Beauty of RemoteXY
The Beauty of RemoteXY

For lengst tenkte jeg på en enkel måte å bygge en brukbar Remote -app som lar meg kontrollere dronen. De fleste bruker MIT App Inventor, men brukergrensesnittet er ikke så pent som jeg skulle ønske, og jeg er heller ikke fan av billedprogrammering. Jeg kunne ha designet det ved hjelp av Android Studio, men det ville bare være for mye arbeid. Jeg var ekstremt begeistret da jeg fant en opplæring med RemoteXY. Her er lenken til nettstedet. Det er ekstremt enkelt å bruke og dokumentasjonen er veldig bra. Vi vil lage et enkelt brukergrensesnitt for dronen vår. Du kan tilpasse din slik du vil. Bare sørg for at du vet hva du gjør. Følg instruksjonene her.

Når du har gjort det, redigerer vi koden slik at vi kan endre gasspjeldet. Legg til linjene som har / **** ting du bør gjøre og hvorfor *** / til koden din.

Hvis den ikke kompilerer, må du sørge for at biblioteket er lastet ned. Åpne også opp en eksempelskisse og sammenlign hva den har som din ikke har.

//////////////////////////////////////////////////////// bibliotek///////////////////////////////////

// RemoteXY velg tilkoblingsmodus og inkluder bibliotek

#define REMOTEXY_MODE_HC05_SOFTSERIAL

#include #include #include

// Innstillinger for RemoteXY -tilkobling

#define REMOTEXY_SERIAL_RX 2 #define REMOTEXY_SERIAL_TX 3 #define REMOTEXY_SERIAL_SPEED 9600

// Propeller

Servo L_F_prop; Servo L_B_prop; Servo R_F_prop; Servo R_B_prop;

// RemoteXY -konfigurering

#pragma pack (push, 1) uint8_t RemoteXY_CONF = {255, 3, 0, 0, 0, 61, 0, 8, 13, 0, 5, 0, 49, 15, 43, 43, 2, 26, 31, 4, 0, 12, 11, 8, 47, 2, 26, 129, 0, 11, 8, 11, 3, 17, 84, 104, 114, 111, 116, 116, 108, 101, 0, 129, 0, 66, 10, 7, 3, 17, 80, 105, 116, 99, 104, 0, 129, 0, 41, 34, 6, 3, 17, 82, 111, 108, 108, 0}; // denne strukturen definerer alle variablene i kontrollgrensesnittstrukturen {

// inndatavariabel

int8_t Joystick_x; // -100..100 x -koordinat joystick posisjon int8_t Joystick_y; // -100..100 y -koordinat joystickposisjon int8_t ThrottleSlider; // 0..100 skyveposisjon

// annen variabel

uint8_t connect_flag; // = 1 hvis ledningen er tilkoblet, ellers = 0

} RemoteXY;

#pragma pack (pop)

/////////////////////////////////////////////

// END RemoteXY inkluderer // /////////////////////////////////////////////// /

/********** Legg til denne linjen for å holde gassverdien **************/

int input_THROTTLE;

ugyldig oppsett () {

RemoteXY_Init ();

/********** Fest motorene til Pins Endre verdiene slik at de passer til dine ***************/

L_F_prop.attach (4); // venstre motor foran

L_B_prop.attach (5); // venstreback motor R_F_prop.attach (7); // høyre frontmotor R_B_prop.attach (6); // høyre motor

/************** Hindre esc i å gå inn i programmeringsmodus ********************/

L_F_prop.writeMicroseconds (1000); L_B_prop.writeMicroseconds (1000); R_F_prop.writeMicroseconds (1000); R_B_prop.writeMicroseconds (1000); forsinkelse (1000);

}

void loop () {

RemoteXY_Handler ();

/****** Kartlegg gassverdien du får fra appen til 1000 og 2000, som er verdiene de fleste ESC -er bruker på *********/

input_THROTTLE = kart (RemoteXY. ThrottleSlider, 0, 100, 1000, 2000);

L_F_prop.writeMicroseconds (input_THROTTLE);

L_B_prop.writeMicroseconds (input_THROTTLE); R_F_prop.writeMicroseconds (input_THROTTLE); R_B_prop.writeMicroseconds (input_THROTTLE); }

Trinn 8: Testing

Hvis du har gjort alt riktig, bør du kunne teste copteren ved å skyve gassen opp og ned. Sørg for at du gjør dette utenfor. Ikke hold propellene på, fordi det vil få copteren til å hoppe. Vi har ennå ikke skrevet koden for å balansere den, så det ville være en DÅRLIG IDE å teste dette med propellerne på! Jeg gjorde dette bare fordi lmao.

Demonstrasjonen er bare for å vise at vi skal kunne kontrollere gassen fra appen. Du vil merke at motorene stammer. Dette er fordi ESC -ene ikke er kalibrert. For å gjøre dette, ta en titt på instruksjonene på denne Github -siden. Les instruksjonene, åpne ESC-Calibration.ino-filen og følg instruksjonene. Hvis du vil forstå hva som skjer, sjekk ut denne opplæringen av Electronoobs.

Mens du kjører programmet må du sørge for å knytte dronen med strenger, da det vil gå for full gass. Pass også på at propellene ikke er på. Jeg lot bare mitt være på fordi jeg er halvt gal. IKKE FORLAT PROPELLERENE DINE !!! Denne demonstrasjonen er vist i den andre videoen.

Trinn 9: Jeg jobber med koden. Vil fullføre instruksjonene om noen dager

Ville bare legge til at hvis du bruker denne opplæringen og venter på meg, jobber jeg fortsatt med den. Det er bare andre ting i livet mitt som har kommet opp som jeg også jobber med, men ikke bekymre deg, jeg legger det ut snart. La oss si det siste innen 10. august 2019.

10. august -oppdatering: Ville ikke la deg henge. Dessverre har jeg ikke hatt tid til å jobbe med prosjektet den siste uken. Har vært veldig opptatt med andre ting. Jeg vil ikke lede deg videre. Forhåpentligvis vil jeg fullføre instruksjonene i nær fremtid. Hvis du har spørsmål eller trenger hjelp, kan du legge til en kommentar nedenfor, så kommer jeg tilbake til deg.

Anbefalt: