Inhoudsopgave:

De gids die ik wou dat ik had bij het bouwen van een Arduino-drone - Ajarnpa
De gids die ik wou dat ik had bij het bouwen van een Arduino-drone - Ajarnpa

Video: De gids die ik wou dat ik had bij het bouwen van een Arduino-drone - Ajarnpa

Video: De gids die ik wou dat ik had bij het bouwen van een Arduino-drone - Ajarnpa
Video: Arduino simuleren met Tinkercad 2024, November
Anonim
De gids die ik wou dat ik had bij het bouwen van een Arduino-drone
De gids die ik wou dat ik had bij het bouwen van een Arduino-drone

Dit document is een soort "Hoe te begeleiden" slash-documentatie die het proces doorloopt dat ik nodig had om de concepten te begrijpen om mijn doel te bereiken: het bouwen van een eenvoudige quadcopter die ik vanaf mijn mobiele telefoon kon bedienen.

Om dit project te doen, wilde ik een idee krijgen van wat een drone eigenlijk is, in mijn geval een quadcopter, dus begon ik wat onderzoek te doen. Ik heb veel YouTube-video's bekeken, een heleboel artikelen en Insructible-pagina's gelezen en dit is wat ik kreeg.

In wezen kun je een drone in twee delen splitsen. Ik noemde het de "Fysieke" en de "Controller". Het fysieke is in wezen alles wat te maken heeft met de mechanica die de drone laat vliegen. Dit zijn dingen zoals de motor, het frame, de batterij, propellers en al het andere dat de drone fysiek de mogelijkheid geeft om te vliegen.

De controller is in wezen de vluchtcontroller. Wat bestuurt het fysieke zodat de drone als een geheel kan vliegen zonder te vallen. In wezen de microcontroller, de software erop en de sensoren die hem helpen zijn lagers te trianguleren. Dus om een drone te hebben, had ik een controller nodig en een aantal fysieke onderdelen om de controller te 'controleren'.

Benodigdheden

Budget voor project: $ 250

Tijdsbestek: 2 weken

Dingen om te kopen:

  • Fysiek frame $ 20
  • Messen $ 0 (wordt geleverd met frame)
  • Batterijpakket $ 25
  • ESC (elektronische snelheidsregelaars) $0 (wordt geleverd met motoren)
  • Motoren $ 70

Vluchtcontroller

  • Arduino nano $20
  • Arduino USB-kabel $ 2
  • Bluetooth-module (HC-05) $ 8
  • 3 mm LED en 330 Ohm weerstanden en draden $ 13
  • GY-87 (versnellingsmeter, gyroscoop) $ 5
  • Prototypebord $ 10
  • Mannelijke en vrouwelijke headers $ 5

Ander

  • Soldeerkit $10
  • Multimeter $20

Ik wilde genieten van het bouwen van dit project als ingenieur, dus kocht ik wat andere dingen die ik niet hoefde te doen.

Totaal: $ 208

Stap 1: Mijn eerste ervaring

Nadat ik al mijn componenten had gekocht, zette ik alles in elkaar en probeerde ik de drone te lanceren met behulp van Multiwii (de software die veel van de doe-het-zelf-drone-gemeenschap gebruiken), maar ik realiseerde me al snel dat ik niet helemaal begreep wat ik deed omdat er veel fouten waren en ik geen idee had hoe ik ze moest oplossen.

Daarna besloot ik de drone uit elkaar te halen en elk onderdeel stuk voor stuk te begrijpen en het zo opnieuw op te bouwen dat ik alles wat er gaande was volledig zou begrijpen.

In de volgende paragrafen zal ik het proces van het in elkaar zetten van de puzzel doornemen. Laten we eerst een snel overzicht krijgen.

Fysiek

Voor het fysieke zouden we moeten hebben: het frame, de propellers, de batterij en de escs. Deze zouden vrij eenvoudig te combineren zijn. Om deze onderdelen te begrijpen en welke u moet krijgen, kunt u deze link bezoeken. Hij legt uit wat u moet weten over het kopen van elk van de onderdelen die ik heb vermeld. Bekijk ook dit Youtube filmpje. Het zal je helpen als je vastzit aan het aan elkaar plakken van de onderdelen.

Stap 2: Tips voor het samenstellen en debuggen van de fysieke onderdelen

Tips voor het samenstellen en debuggen van de fysieke onderdelen
Tips voor het samenstellen en debuggen van de fysieke onderdelen

Propellers en motoren

  • Om te controleren of uw propellers in de juiste richting staan (omgedraaid of niet), moet u een briesje voelen onder de propellers en niet boven.
  • De schroeven op tegenover elkaar liggende propellers moeten dezelfde kleur hebben.
  • De kleur van aangrenzende propellers moet hetzelfde zijn.
  • Zorg er ook voor dat je de motoren zo hebt opgesteld dat ze draaien zoals in de afbeelding hierboven.
  • Als u de richting van een motor probeert om te draaien, verwisselt u gewoon de draden aan de tegenovergestelde uiteinden. Dit zal de richting van de motor omkeren.

Batterij en stroom

  • Als om wat voor reden dan ook dingen vonken en je kunt er niet achter komen waarom, is dat hoogstwaarschijnlijk omdat je positieve en negatieve punten hebt verwisseld.
  • Als u niet zeker weet wanneer u uw batterijen moet opladen, kunt u een voltmeter gebruiken om de spanning te controleren. Als deze lager is dan de specificaties op de batterij aangeven, moet deze worden opgeladen. Bekijk deze link over het opladen van uw batterijen.
  • De meeste LIPO-batterijen worden niet geleverd met batterijladers. Je koopt ze apart.

Stap 3: De Arduino-controller

De Arduino-controller
De Arduino-controller

Dit is ongetwijfeld het moeilijkste deel van dit hele project. Het is heel gemakkelijk om componenten op te blazen en debuggen kan erg frustrerend zijn als je niet weet wat je doet. Ook in dit project bestuurde ik mijn drone met behulp van bluetooth en een app die ik je zal laten zien hoe te bouwen. Dit maakte het project bijzonder moeilijker omdat 99% van de tutorials die er zijn radiocontrollers gebruiken (dit is geen feit lol), maar maak je geen zorgen, ik heb de frustratie voor je doorgenomen.

Tips voordat je aan deze reis begint

  • Gebruik een breadboard voordat u uw apparaat op een PCB voltooit. Hierdoor kunt u eenvoudig wijzigingen aanbrengen.
  • Als je een onderdeel uitgebreid hebt getest en het werkt niet, dan werkt het waarschijnlijk niet!
  • Kijk naar de spanningen die een apparaat aankan voordat je het aansluit!

    • Arduino kan 6 tot 20V aan, maar probeer het op 12V te zetten, zodat je het niet opblaast. Je kunt hier meer lezen over de specificaties.
    • De HC-05 kan tot 5V aan, maar sommige pinnen werken op 3,3V, dus pas daar op. We praten er later over.
    • De IMU (GY-521, MPU-6050) werkt ook op 5V.
  • We zullen RemoteXY gebruiken om onze app te bouwen. Als je het op een iOS-apparaat wilt bouwen, moet je een andere bluetooth-module gebruiken (de HM-10). U kunt hier meer over lezen op de RemoteXY-website.

Hopelijk heb je de tips gelezen. Laten we nu elk onderdeel dat deel uitmaakt van de controller afzonderlijk testen.

Stap 4: De MPU-6050

De MPU-6050
De MPU-6050

Dit apparaat heeft een gyroscoop en een versnellingsmeter, dus in wezen vertelt het je de versnelling in een richting (X, Y, Z) en de hoekversnelling in die richtingen.

Om dit te testen kunnen we gebruik maken van de tutorial hierover kunnen we deze tutorial gebruiken op de Arduino website. Als het werkt, zou u een stroom versnellingsmeter- en gyroscoopwaarden moeten krijgen die veranderen terwijl u de installatie kantelt, roteert en versnelt. Probeer ook de code aan te passen en te manipuleren, zodat u weet wat er aan de hand is.

Stap 5: De HC-05 Bluetooth-module

De HC-05 Bluetooth-module
De HC-05 Bluetooth-module
De HC-05 Bluetooth-module
De HC-05 Bluetooth-module
De HC-05 Bluetooth-module
De HC-05 Bluetooth-module

U hoeft dit niet te doen, maar het is belangrijk om naar de AT-modus (instellingenmodus) te kunnen gaan, omdat u waarschijnlijk een van de instellingen van de module moet wijzigen. Dit was een van de meest frustrerende onderdelen van dit project. Ik heb zoveel onderzoek gedaan om erachter te komen hoe ik mijn module in de AT-modus kon krijgen, omdat mijn apparaat niet reageerde op mijn commando's. Het kostte me 2 dagen om te concluderen dat mijn module kapot was. Ik bestelde voor een andere en het werkte. Bekijk deze tutorial om in de AT-modus te komen.

De HC-05 is er in verschillende soorten, sommige met knoppen en sommige zonder en allerlei ontwerpvariabelen. Een daarvan die constant is, is dat ze allemaal een "Pin 34" hebben. Bekijk deze tutorial.

Dingen die je moet weten

  • Om in de AT-modus te gaan, houdt u 5V vast op pin 34 van de Bluetooth-module voordat u de stroom erop aansluit.
  • Sluit een potentiaalverdeler aan op de RX-pin van de module aangezien deze werkt op 3,3V. Je zou het nog steeds op 5V kunnen gebruiken, maar het kan die pin bakken als er iets misgaat.
  • Als je Pin 34 gebruikt (in plaats van de knop of een andere manier die je online hebt gevonden), zal de module de baudrate van bluetooth instellen op 38400. Daarom staat er in de link voor de tutorial hierboven een regel in de code die zegt:

BTSerial.begin(38400); // HC-05 standaardsnelheid in AT-commando meer

Als de module nog steeds niet reageert met "OK", probeer dan de tx- en rx-pinnen om te wisselen. Het zou moeten zijn:

Bluetooth =>Arduino

RXD =>TX1

TDX =>RX0

Als dat nog steeds niet werkt, kies dan verander de pinnen in de code naar andere Arduino-pinnen. Test, als het niet werkt, verwissel dan de tx- en rx-pinnen en test opnieuw

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

Verander de regel hierboven. U kunt RX = 2, TX = 3 of andere geldige combinaties proberen. U kunt de Arduino-pinnummers in de bovenstaande afbeelding bekijken.

Stap 6: De onderdelen aansluiten

De onderdelen aansluiten
De onderdelen aansluiten

Nu we zeker weten dat alles werkt, is het tijd om ze samen te stellen. U kunt de onderdelen aansluiten zoals weergegeven in het circuit. Dat heb ik van Electronoobs. Hij heeft me echt geholpen met dit project. Bekijk hier zijn versie van het project. Als je deze tutorial volgt, hoef je je geen zorgen te maken over de aansluitingen van de ontvanger: input_Yaw, input_Pitch, etc. Dat wordt allemaal afgehandeld met bluetooth. Sluit ook de bluetooth aan zoals we in het vorige gedeelte hebben gedaan. Mijn tx- en rx-pinnen gaven me wat problemen, dus ik gebruikte Arduino's:

RX als 2, en TX als 3, in plaats van de normale pinnen. Vervolgens gaan we een eenvoudige app schrijven die we zullen blijven verbeteren totdat we het eindproduct hebben.

Stap 7: De schoonheid van RemoteXY

De schoonheid van RemoteXY
De schoonheid van RemoteXY

Ik dacht al heel lang aan een eenvoudige manier om een bruikbare Remote-app te bouwen waarmee ik de drone kon besturen. De meeste mensen gebruiken MIT App Inventor, maar de gebruikersinterface is niet zo mooi als ik zou willen en ik ben ook geen fan van picturale programmering. Ik had het kunnen ontwerpen met Android Studio, maar dat zou gewoon te veel werk zijn. Ik was enorm enthousiast toen ik een tutorial vond met RemoteXY. Hier is de link naar de website. Het is zeer eenvoudig te gebruiken en de documentatie is zeer goed. We zullen een eenvoudige gebruikersinterface voor onze drone maken. U kunt de uwe aanpassen zoals u dat wilt. Zorg er gewoon voor dat je weet wat je doet. Volg de instructies hier.

Zodra je dat hebt gedaan, zullen we de code bewerken, zodat we de gashendel op onze helikopter kunnen veranderen. Voeg de regels met de /**** Dingen die je moet doen en waarom ***/ toe aan je code.

Als het niet aan het compileren is, zorg er dan voor dat je de bibliotheek hebt gedownload. Open ook een voorbeeldschets en vergelijk wat het heeft dat de jouwe niet heeft.

/////////////////////////////////////////////////RemoteXY omvatten bibliotheek // /////////////////////////////////////////////

// RemoteXY selecteer verbindingsmodus en neem bibliotheek op

#define REMOTEXY_MODE_HC05_SOFTSERIAL

#include #include #include

// RemoteXY-verbindingsinstellingen

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

// Propellers

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

// RemoteXY configureren

#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 }; // deze structuur definieert alle variabelen van uw control interface struct {

// invoervariabele

int8_t Joystick_x; // -100..100 x-coördinaat joystickpositie int8_t Joystick_y; // -100..100 y-coördinaat joystickpositie int8_t ThrottleSlider; // 0..100 schuifregelaarpositie

// andere variabele

uint8_t connect_flag; // =1 indien draad aangesloten, anders =0

} RemoteXY;

#pragma-pakket (pop)

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

// END RemoteXY inclusief // /////////////////////////////////////////// /

/**********Voeg deze regel toe om de gasklepwaarde vast te houden ***************/

int input_THROTTLE;

ongeldige setup() {

RemoteXY_Init ();

/**********Bevestig de motoren aan pinnen Verander de waarden zodat ze passen bij de jouwe ***************/

L_F_prop.attach(4); //motor linksvoor

L_B_prop.attach(5); // motor linksachter R_F_prop.attach (7); //motor rechtsvoor R_B_prop.attach (6); // rechtsachter motor

/***************Voorkomen dat esc de programmeermodus binnengaat********************/

L_F_prop.writeMicroseconden(1000); L_B_prop.writeMicroseconden(1000); R_F_prop.writeMicroseconden(1000); R_B_prop.writeMicroseconden(1000); vertraging (1000);

}

lege lus() {

RemoteXY_Handler ();

/****** Breng de gasklepwaarde die u van de app krijgt in kaart met 1000 en 2000, wat de waarden zijn die de meeste ESC's gebruiken bij *********/

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

L_F_prop.writeMicroseconden(input_THROTTLE);

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

Stap 8: Testen

Als je alles goed hebt gedaan, zou je je helikopter moeten kunnen testen door de gashendel op en neer te schuiven. Zorg ervoor dat je dit buiten doet. Houd ook de propellers niet aan, want dan zal de helikopter springen. We hebben de code nog niet geschreven om het in evenwicht te brengen, dus het zou een SLECHT IDEE zijn om DIT TE TESTEN MET DE SCHROEVEN AAN! Ik deed dit alleen omdat lmao.

De demonstratie is alleen om te laten zien dat we de gashendel vanuit de app moeten kunnen bedienen. Je zult merken dat de motoren stotteren. Dit komt omdat de ESC's niet zijn gekalibreerd. Bekijk hiervoor de instructies op deze Github-pagina. Lees de instructies, open het ESC-Calibration.ino bestand en volg die instructies. Als je wilt begrijpen wat er aan de hand is, bekijk dan deze tutorial van Electronoobs.

Terwijl u het programma uitvoert, moet u ervoor zorgen dat u de drone vastbindt met touwtjes, want deze gaat op volle toeren. Zorg er ook voor dat de propellers niet aan staan. Ik heb de mijne alleen aangelaten omdat ik half gek ben. LAAT UW SCHROEVEN NIET AAN!!! Deze demonstratie wordt getoond in de tweede video.

Stap 9: Ik werk aan de code. Zal de Instructable in een paar dagen voltooien

Ik wilde alleen toevoegen dat als je deze tutorial gebruikt en op mij wacht, ik er nog steeds aan werk. Het zijn gewoon andere dingen in mijn leven waar ik ook mee bezig ben, maar maak je geen zorgen, ik zal het binnenkort posten. Laten we zeggen uiterlijk 10 augustus 2019.

Update van 10 augustus: Ik wilde je niet laten hangen. Helaas heb ik de afgelopen week geen tijd gehad om aan het project te werken. Heb het erg druk gehad met andere dingen. Ik wil je niet leiden. Hopelijk zal ik de instructable in de nabije toekomst voltooien. Als je vragen hebt of hulp nodig hebt, kun je hieronder een opmerking toevoegen en ik neem contact met je op.

Aanbevolen: