Sadržaj:

Vodič koji sam želio imati o izgradnji Arduino drona: 9 koraka
Vodič koji sam želio imati o izgradnji Arduino drona: 9 koraka

Video: Vodič koji sam želio imati o izgradnji Arduino drona: 9 koraka

Video: Vodič koji sam želio imati o izgradnji Arduino drona: 9 koraka
Video: Управляющая лампа переменного тока с реле 5 В с помощью Arduino 2024, Novembar
Anonim
Vodič koji sam želio imati o izgradnji Arduino drona
Vodič koji sam želio imati o izgradnji Arduino drona

Ovaj dokument je svojevrsna kosa dokumentacija “Kako voditi” koja prolazi kroz proces koji mi je trebao za razumijevanje koncepata za postizanje cilja izgradnje jednostavnog četvorokontrolera kojim bih mogao upravljati sa svog mobilnog telefona.

Da bih napravio ovaj projekt, želio sam steći predodžbu o tome što je zapravo dron, u mom slučaju quadcopter, pa sam počeo istraživati. Gledao sam mnogo YouTube videa, čitao gomilu članaka i stranica koje se ne mogu obraniti i to sam dobio.

U osnovi možete podijeliti bespilotnu letjelicu na dva dijela. Nazvao sam to "Fizički" i "Kontroler". Fizičko je u suštini sve što ima veze sa mehanikom zbog koje dron leti. To su stvari poput motora, okvira, baterije, propelera i svih drugih stvari koje fizički daju bespilotnoj letjelici mogućnost letenja.

Kontrolor je u suštini kontrolor leta. Ono što kontrolira fizičko tako da bespilotna letjelica može letjeti kao cjelina bez pada. U osnovi mikrokontroler, softver na njemu i senzori koji mu pomažu u triangulaciji ležajeva. Dakle, sve u svemu da bih imao bespilotnu letjelicu, trebao mi je kontroler i gomila fizičkih dijelova kako bi kontroler mogao "upravljati".

Supplies

Budžet projekta: 250 USD

Vremenski okvir: 2 sedmice

Stvari koje treba kupiti:

  • Fizički okvir 20 USD
  • Oštrice 0 USD (dolazi s okvirom)
  • Baterija 25 USD
  • ESC (elektronički regulatori brzine) 0 USD (dolazi s motorima)
  • Motori 70 dolara

Kontrolor leta

  • Arduino nano 20 USD
  • Arduino USB kabel 2 USD
  • Bluetooth modul (HC-05) 8 USD
  • 3mm LED i 330 Ohm otpornici i žice 13 USD
  • GY-87 (akcelerometar, žiroskop) 5 USD
  • Prototipna ploča 10 USD
  • Muško i žensko zaglavlje 5 USD

Ostalo

  • Komplet za lemljenje 10 USD
  • Multimetar 20 USD

Htio sam uživati u izgradnji ovog projekta kao inženjer, pa sam kupio neke druge stvari koje nisam morao.

Ukupno: 208 USD

Korak 1: Moje početno iskustvo

Nakon što sam kupio sve svoje komponente, sve sam to sastavio, a zatim pokušao lansirati dron koristeći Multiwii (idite na softver koji koristi većina DIY zajednice dronova), međutim brzo sam shvatio da nisam potpuno shvatio što radio jer je bilo puno grešaka i nisam imao pojma kako ih popraviti.

Nakon toga sam odlučio rastaviti bespilotnu letjelicu i razumjeti svaku komponentu dio po dio i obnoviti je na način da ću u potpunosti razumjeti sve što se događa.

U sljedećim odjeljcima ću proći kroz proces slaganja slagalice. Prije toga idemo na kratak pregled.

Fizički

Za fizičko, trebali bismo imati: okvir, propelere, bateriju i escs. Bilo bi ih prilično lako sastaviti. Da biste razumjeli ove dijelove i koje biste trebali nabaviti, posjetite ovu vezu. On objašnjava šta trebate znati o kupovini svakog od dijelova koje sam naveo. Pogledajte i ovaj video na Youtube -u. Pomoći će vam ako zaglavite sastavljajući dijelove.

Korak 2: Savjeti o sastavljanju i otklanjanju grešaka fizičkih dijelova

Savjeti za sastavljanje i ispravljanje pogrešaka fizičkih dijelova
Savjeti za sastavljanje i ispravljanje pogrešaka fizičkih dijelova

Propeleri i motori

  • Da biste provjerili jesu li vaši propeleri u ispravnoj orijentaciji (okrenuti ili ne), kada ih okrećete u smjeru koji pokazuju motori (većina motora ima strelice koje pokazuju kako se trebaju vrtjeti), trebali biste osjetiti povjetarac ispod propelera, a ne iznad.
  • Vijci na suprotnim propelerima trebaju biti iste boje.
  • Boja susjednih elisa trebala bi biti ista.
  • Također provjerite jeste li rasporedili motore na način da se okreću kao na gornjoj slici.
  • Ako pokušavate okrenuti smjer motora, zamijenite žice na suprotnim krajevima. Ovo će promijeniti smjer motora.

Baterija i napajanje

  • Ako iz nekog razloga stvari iskre i ne možete shvatiti zašto, to je najvjerojatnije zato što ste zamijenili pozitivne i negativne.
  • Ako niste sigurni kada napuniti baterije, možete upotrijebiti voltmetar za provjeru napona. Ako je niža od specifikacija na bateriji, potrebno ju je napuniti. Pogledajte ovaj link o punjenju baterija.
  • Većina LIPO baterija ne dolazi s punjačima. Kupujete ih zasebno.

Korak 3: Arduino kontroler

Arduino kontroler
Arduino kontroler

Ovo je bez sumnje najteži dio cijelog projekta. Vrlo je lako razneti komponente, a otklanjanje grešaka moglo bi biti izuzetno frustrirajuće ako ne znate što radite. Također u ovom projektu sam kontrolirao svoj dron koristeći bluetooth i aplikaciju koja će vam pokazati kako se izrađuje. Ovo je dodatno otežalo projekt jer 99% vodiča koristi radijske kontrolere (ovo nije činjenica lol), ali ne brinite jer sam prošao kroz frustraciju za vas.

Savjeti prije nego što krenete na ovo putovanje

  • Koristite matičnu ploču prije nego što finalizirate svoj uređaj na PCB -u. Ovo vam omogućava da lako unosite promene.
  • Ako ste opsežno testirali komponentu i ne radi, vjerojatno ne radi!
  • Pogledajte napone koje uređaj može podnijeti prije nego ga uključite!

    • Arduino može podnijeti 6 do 20V, ali pokušajte ga ograničiti na 12V kako ga ne biste digli u zrak. Više o specifikacijama možete pročitati ovdje.
    • HC-05 može podnijeti do 5V, ali neki pinovi rade na 3.3V pa pripazite na to. O tome ćemo kasnije.
    • IMU (GY-521, MPU-6050) takođe radi na 5V.
  • Za izradu naše aplikacije koristit ćemo RemoteXY. Ako ga želite izgraditi na iOS uređaju, morate koristiti drugi Bluetooth modul (HM-10). Više o tome možete saznati na web stranici RemoteXY.

Nadam se da ste pročitali savjete. Sada hajde da testiramo svaku komponentu koja će biti dio kontrolera zasebno.

Korak 4: MPU-6050

MPU-6050
MPU-6050

Ovaj uređaj ima žiroskop i mjerač ubrzanja, pa vam u osnovi govori ubrzanje u smjeru (X, Y, Z) i kutno ubrzanje u tim smjerovima.

Da bismo to provjerili, možemo upotrijebiti vodič na ovoj stranici. Ovaj vodič možemo koristiti na web stranici Arduino. Ako uspije, trebali biste dobiti niz mjerača ubrzanja i žiroskopa koji se mijenjaju dok naginjete, rotirate i ubrzavate postavljanje. Također pokušajte prilagoditi i manipulirati kodom kako biste znali što se događa.

Korak 5: HC-05 Bluetooth modul

Bluetooth-modul HC-05
Bluetooth-modul HC-05
Bluetooth-modul HC-05
Bluetooth-modul HC-05
Bluetooth-modul HC-05
Bluetooth-modul HC-05

Ne morate raditi ovaj dio, ali važno je da možete otići u AT način (način postavki) jer ćete najvjerojatnije morati promijeniti jednu od postavki modula. Ovo je bio jedan od najfrustrirajućih dijelova ovog projekta. Toliko sam istraživao kako bih shvatio kako prebaciti modul u AT način rada, jer moj uređaj nije reagirao na moje naredbe. Trebalo mi je 2 dana da zaključim da mi je modul pokvaren. Naručio sam još jedan i upalilo je. Pogledajte ovaj vodič o ulasku u AT način rada.

HC-05 dolazi u različitim vrstama, neke imaju tipke, a neke bez i sve vrste varijabli dizajna. Jedna konstanta je ta da svi imaju "Pin 34". Pogledajte ovaj vodič.

Stvari koje biste trebali znati

  • Da biste prešli u AT način rada, samo držite 5V na pin 34 bluetooth modula prije nego što na njega priključite napajanje.
  • Spojite razdjelnik potencijala na RX pin modula jer radi na 3.3V. I dalje biste ga mogli koristiti na 5V, ali mogao bi ispržiti taj pin ako nešto pođe po zlu.
  • Ako koristite Pin 34 (umjesto dugmeta ili na neki drugi način koji ste pronašli na mreži), modul će postaviti brzinu prijenosa Bluetootha na 38400. Zato se u linku za gornji vodič nalazi red u kodu koji kaže:

BTSerial.begin (38400); // Zadana brzina HC-05 u AT naredbi više

Ako modul i dalje ne reagira sa "OK", pokušajte promijeniti tx i rx pinove. To bi trebao biti:

Bluetooth => Arduino

RXD => TX1

TDX => RX0

Ako to i dalje ne radi, odaberite promjenu pinova u kodu u druge Arduino pinove. Testirajte, ako ne radi, zamijenite pinove tx i rx, a zatim ponovo testirajte

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

Promijenite gornju liniju. Možete probati RX = 2, TX = 3 ili bilo koju drugu valjanu kombinaciju. Arduino pin brojeve možete pogledati na gornjoj slici.

Korak 6: Povezivanje dijelova

Povezivanje delova
Povezivanje delova

Sada kada smo sigurni da sve funkcionira, vrijeme je da ih počnemo sastavljati. Možete spojiti dijelove baš kao što je prikazano u krugu. Dobio sam to od Electronoobs -a. Zaista mi je pomogao u ovom projektu. Njegovu verziju projekta pogledajte ovdje. Ako pratite ovaj vodič, ne morate brinuti o vezama prijemnika: input_Yaw, input_Pitch itd. Sve će se to rješavati putem bluetootha. Također, povežite bluetooth na način na koji smo to učinili u prethodnom odjeljku. Moje igle za tx i rx zadavale su mi probleme, pa sam upotrijebio Arduino:

RX kao 2, a TX kao 3, umjesto normalnih pinova. Zatim ćemo napisati jednostavnu aplikaciju koju ćemo nastaviti poboljšavati dok ne dobijemo konačni proizvod.

Korak 7: Ljepota RemoteXY -a

Ljepota RemoteXY -a
Ljepota RemoteXY -a

Najduže sam razmišljao o jednostavnom načinu da napravim upotrebljivu aplikaciju za daljinsko upravljanje koja bi mi omogućila upravljanje dronom. Većina ljudi koristi MIT App Inventor, ali korisničko sučelje nije toliko lijepo koliko bih želio, a također nisam ni ljubitelj slikovnog programiranja. Mogao sam ga dizajnirati koristeći Android Studio, ali to bi jednostavno bilo previše posla. Bio sam izuzetno oduševljen kada sam pronašao vodič pomoću RemoteXY -a. Evo linka do web stranice. Izuzetno je jednostavan za upotrebu, a dokumentacija je vrlo dobra. Napravit ćemo jednostavno korisničko sučelje za naš dron. Svoju možete prilagoditi kako želite. Samo pazite da znate šta radite. Slijedite upute ovdje.

Nakon što to učinite, uredit ćemo kôd tako da možemo promijeniti gas na našem helikopteru. Dodajte redove koji sadrže / **** stvari koje trebate učiniti i zašto *** / u vaš kôd.

Ako se ne sastavlja, provjerite jeste li preuzeli biblioteku. Otvorite i primjer skice i uporedite ono što ima, a vaše nema.

////////////////////////////////////////////////////// RemoteXY uključuje biblioteka // ///////////////////////////////////////////////////

// RemoteXY odabire način povezivanja i uključuje biblioteku

#define REMOTEXY_MODE_HC05_SOFTSERIAL

#include #include #include

// Postavke veze RemoteXY

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

// Propeleri

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

// RemoteXY konfigurirati

#pragma paket (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}; // ova struktura definira sve varijable vaše strukture upravljačkog sučelja {

// ulazna varijabla

int8_t Joystick_x; // -100..100 x -koordinatni položaj joystick -a int8_t Joystick_y; // -100..100 pozicija džojstika sa koordinatom y int8_t ThrottleSlider; // 0..100 položaj klizača

// druga varijabla

uint8_t connect_flag; // = 1 ako je žica spojena, else = 0

} RemoteXY;

#pragma paket (pop)

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

// END RemoteXY include // ///////////////////////////////////////////// /

/********** Dodajte ovu liniju da zadržite vrijednost gasa **************/

int input_THROTTLE;

void setup () {

RemoteXY_Init ();

/********** Priključite motore na pinove Promijenite vrijednosti tako da odgovaraju vašim **************/

L_F_prop.attach (4); // prednji lijevi motor

L_B_prop.attach (5); // lijevi zadnji motor R_F_prop.attach (7); // prednji desni motor R_B_prop.attach (6); // desni zadnji motor

/************* Spriječite esc da uđe u programski način ********************/

L_F_prop.writeMicroseconds (1000); L_B_prop.writeMicroseconds (1000); R_F_prop.writeMicroseconds (1000); R_B_prop.writeMicroseconds (1000); kašnjenje (1000);

}

void loop () {{100} {101}

RemoteXY_Handler ();

/****** Preslikajte vrijednost leptira za gas koju dobijete iz aplikacije na 1000 i 2000, vrijednosti na kojima većina ESC -a radi *********/

input_THROTTLE = mapa (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); }

Korak 8: Testiranje

Ako ste sve učinili kako treba, trebali biste moći testirati svoje helikopter klizanjem gasa gore -dolje. Učinite to vani. Takođe nemojte držati propelere uključene jer će to uzrokovati skok helikoptera. Još nismo napisali kôd kako bismo ga uravnotežili, pa bi bila LOŠA IDEJA OVO ISPITIVATI S UKLJUČENIM PROPELERIMA! Ovo sam učinio samo zato što sam lmao.

Demonstracija samo želi pokazati da bismo trebali moći kontrolirati gas iz aplikacije. Primijetit ćete da motori mucaju. To je zato što ESC nisu kalibrirani. Da biste to učinili, pogledajte upute na ovoj Github stranici. Pročitajte upute, otvorite datoteku ESC-Calibration.ino i slijedite ta uputstva. Ako želite razumjeti što se događa, pogledajte ovaj vodič tvrtke Electronoobs.

Dok pokrećete program, obavezno povežite dron žicama jer će raditi punim gasom. Također provjerite da propeleri nisu uključeni. Ostavio sam svoj samo zato što sam polu lud. NE OSTAVLJAJTE SVOJE PROPELERE UKLJUČENE !!! Ova demonstracija prikazana je u drugom videu.

Korak 9: Radim na Kodeksu. Završit će instrukcije za nekoliko dana

Samo sam htio dodati da ako koristite ovaj vodič i čekate na mene, još uvijek radim na tome. Samo su se druge stvari u mom životu pojavile na kojima također radim, ali ne brinite, uskoro ću to objaviti. Recimo najkasnije do 10. avgusta 2019.

Ažuriranje 10. avgusta: Nisam htio da vas ostavim na cjedilu. Nažalost, nisam imao vremena za rad na projektu protekle sedmice. Bio sam jako zauzet drugim stvarima. Ne želim te voditi dalje. Nadam se da ću u bliskoj budućnosti završiti uputstva. Ako imate bilo kakvih pitanja ili vam je potrebna pomoć, možete dodati komentar ispod, a ja ću vam se javiti.

Preporučuje se: