Turinys:

Vadovas, kurį norėjau turėti kurdamas „Arduino“droną: 9 žingsniai
Vadovas, kurį norėjau turėti kurdamas „Arduino“droną: 9 žingsniai

Video: Vadovas, kurį norėjau turėti kurdamas „Arduino“droną: 9 žingsniai

Video: Vadovas, kurį norėjau turėti kurdamas „Arduino“droną: 9 žingsniai
Video: Brandinti Vilmanto ūkio sūriai: nuo idėjos iki realybės 2024, Liepa
Anonim
Vadovas, kurio norėjau turėti kurdamas „Arduino“droną
Vadovas, kurio norėjau turėti kurdamas „Arduino“droną

Šis dokumentas yra tam tikra „Kaip vadovauti“brūkšninių dokumentų dokumentacija, kuri vyksta per procesą, kurio prireikė, kad suprasčiau sąvokas, kad pasiekčiau savo tikslą sukurti paprastą keturkojį, kurį galėčiau valdyti iš savo mobiliojo telefono.

Norėdami atlikti šį projektą, norėjau įsivaizduoti, kas iš tikrųjų yra dronas, mano atveju - keturkojis, todėl pradėjau tyrinėti. Žiūrėjau daug „YouTube“vaizdo įrašų, perskaičiau krūvą straipsnių ir „Insructible“puslapių ir štai ką aš gavau.

Iš esmės droną galite padalyti į dvi dalis. Aš tai pavadinau „fiziniu“ir „valdikliu“. Fizinis iš esmės yra viskas, kas susiję su mechanika, dėl kurios dronas skrenda. Tai yra tokie dalykai kaip variklis, rėmas, akumuliatorius, sraigtai ir visi kiti dalykai, kurie fiziškai suteikia dronui galimybę skristi.

Valdytojas iš esmės yra skrydžio valdytojas. Kas kontroliuoja fizinį, kad dronas galėtų skristi kaip visas vienetas nenukritęs. Iš esmės mikrovaldiklis, jame esanti programinė įranga ir jutikliai, padedantys trikampio formos guolius. Taigi, norint turėti droną, man reikėjo valdiklio ir krūvos fizinių dalių, kad valdiklis galėtų „valdyti“.

Prekės

Projekto biudžetas: 250 USD

Laikas: 2 savaitės

Ką pirkti:

  • Fizinis rėmas 20 USD
  • Ašmenys $ 0 (komplektuojamas su rėmeliu)
  • Akumuliatorius 25 USD
  • ESC (elektroniniai greičio reguliatoriai) $ 0 (ateina su varikliais)
  • Varikliai $ 70

Skrydžio valdiklis

  • „Arduino nano“20 USD
  • „Arduino“USB kabelis 2 USD
  • „Bluetooth“modulis (HC-05) 8 USD
  • 3 mm LED ir 330 omų rezistoriai ir laidai 13 USD
  • GY-87 (akselerometras, giroskopas) 5 USD
  • Prototipo lenta 10 USD
  • Antraštės vyrams ir moterims 5 USD

Kiti

  • Litavimo rinkinys 10 USD
  • Multimetras 20 USD

Aš norėjau džiaugtis statydamas šį projektą kaip inžinierius, todėl nusipirkau kitų dalykų, kurių neprivalėjau.

Iš viso: 208 USD

1 žingsnis: mano pradinė patirtis

Nusipirkęs visus savo komponentus, viską sudėjau ir bandžiau paleisti bepilotį orlaivį, naudodamas „Multiwii“(tai programinė įranga, kuria naudojasi daugelis „pasidaryk pats“dronų bendruomenės), tačiau greitai supratau, kad nesupratau, ką aš padarė, nes buvo daug klaidų ir aš neįsivaizdavau, kaip jas ištaisyti.

Po to aš nusprendžiau išardyti droną ir suprasti kiekvieną komponentą po gabalą ir atstatyti taip, kad galėčiau visiškai suprasti viską, kas vyksta.

Tolesniuose skyriuose apžvelgsiu dėlionės sujungimo procesą. Prieš tai trumpai apžvelkime.

Fizinis

Fiziškai turėtume turėti: rėmą, sraigtus, akumuliatorių ir eskus. Juos būtų gana lengva sujungti. Norėdami suprasti šias dalis ir kurias turėtumėte gauti, apsilankykite šioje nuorodoje. Jis paaiškina, ką reikia žinoti perkant kiekvieną iš mano išvardytų dalių. Taip pat žiūrėkite šį „Youtube“vaizdo įrašą. Tai padės jums, jei įstrigsite, sudėdami dalis.

2 veiksmas: fizinių dalių surinkimo ir derinimo patarimai

Patarimai, kaip surinkti ir derinti fizines dalis
Patarimai, kaip surinkti ir derinti fizines dalis

Sraigtai ir varikliai

  • Norėdami patikrinti, ar jūsų sraigtai yra teisingos padėties (pasukti ar ne), sukdami juos variklių nurodyta kryptimi (daugumoje variklių yra rodyklės, rodančios, kaip jie turėtų suktis), turėtumėte jausti vėją po sraigtais, o ne aukščiau.
  • Priešingų sraigtų varžtai turi būti tos pačios spalvos.
  • Gretimų sraigtų spalva turėtų būti tokia pati.
  • Taip pat įsitikinkite, kad varikliai buvo išdėstyti taip, kad jie suktųsi taip, kaip parodyta aukščiau esančiame paveikslėlyje.
  • Jei bandote pasukti variklio kryptį, tiesiog pakeiskite laidus priešinguose galuose. Tai pakeis variklio kryptį.

Baterija ir maitinimas

  • Jei dėl kokių nors priežasčių viskas kibirkščiuoja ir jūs negalite suprasti, kodėl, greičiausiai dėl to, kad pasikeitėte teigiamais ir neigiamais.
  • Jei nesate tikri, kada įkrauti baterijas, galite naudoti voltmetrą įtampai patikrinti. Jei jis yra mažesnis, nei nurodo akumuliatoriaus specifikacijos, jį reikia įkrauti. Peržiūrėkite šią nuorodą, kaip įkrauti baterijas.
  • Daugelyje LIPO akumuliatorių nėra akumuliatorių įkroviklių. Juos perkate atskirai.

3 žingsnis: „Arduino“valdiklis

„Arduino“valdiklis
„Arduino“valdiklis

Tai, be abejo, yra pati sunkiausia viso projekto dalis. Labai lengva susprogdinti komponentus, o derinimas gali būti labai varginantis, jei nežinote, ką darote. Taip pat šiame projekte aš valdžiau savo droną naudodamas „Bluetooth“ir programą, kurią parodysiu, kaip kurti. Tai dar labiau apsunkino projektą, nes 99% mokymų naudoja radijo valdiklius (tai nėra faktas, lol), bet nesijaudinkite, kad patyriau jūsų nusivylimą.

Patarimai prieš leidžiantis į šią kelionę

  • Prieš baigdami įrenginį naudoti PCB, naudokite duonos lentą. Tai leidžia lengvai atlikti pakeitimus.
  • Jei išsamiai išbandėte komponentą ir jis neveikia, tikriausiai jis neveikia!
  • Prieš prijungdami prietaisą, pažvelkite į įtampą, kurią prietaisas gali atlaikyti!

    • „Arduino“gali valdyti 6–20 V įtampą, tačiau pabandykite jį uždengti 12 V įtampa, kad nesusprogdintumėte. Daugiau apie jo specifikacijas galite perskaityti čia.
    • HC-05 gali valdyti iki 5 V įtampą, tačiau kai kurie kaiščiai veikia esant 3,3 V įtampai, todėl būkite atsargūs. Apie tai kalbėsime vėliau.
    • IMU (GY-521, MPU-6050) taip pat veikia esant 5 V įtampai.
  • Kurdami programą naudosime „RemoteXY“. Jei norite jį sukurti „iOS“įrenginyje, turite naudoti kitą „Bluetooth“modulį („HM-10“). Daugiau apie tai galite sužinoti „RemoteXY“svetainėje.

Tikimės, kad perskaitėte patarimus. Dabar išbandykime kiekvieną komponentą, kuris bus valdiklio dalis atskirai.

4 žingsnis: MPU-6050

MPU-6050
MPU-6050

Šis prietaisas turi giroskopą ir akselerometrą, todėl iš esmės jis nurodo pagreitį (X, Y, Z) kryptimi ir kampinį pagreitį tomis kryptimis.

Norėdami tai patikrinti, galime naudoti šioje pamoką, kurią galime naudoti „Arduino“svetainėje. Jei tai veikia, turėtumėte gauti akselerometro ir giroskopo verčių srautą, kuris keičiasi pakreipiant, pasukant ir spartinant sąranką. Taip pat pabandykite pataisyti ir manipuliuoti kodu, kad žinotumėte, kas vyksta.

5 veiksmas: „HC-05“„Bluetooth“modulis

„HC-05“„Bluetooth“modulis
„HC-05“„Bluetooth“modulis
„HC-05“„Bluetooth“modulis
„HC-05“„Bluetooth“modulis
„HC-05“„Bluetooth“modulis
„HC-05“„Bluetooth“modulis

Jums nereikia atlikti šios dalies, tačiau svarbu turėti galimybę pereiti į AT režimą (nustatymų režimą), nes greičiausiai turėsite pakeisti vieną iš modulio nustatymų. Tai buvo viena iš labiausiai varginančių šio projekto dalių. Aš daug tyrinėjau, norėdamas išsiaiškinti, kaip įjungti modulį į AT režimą, nes mano įrenginys nereagavo į mano komandas. Prireikė 2 dienų, kol padariau išvadą, kad mano modulis sugedo. Užsisakiau kitam ir viskas pavyko. Peržiūrėkite šią mokymo programą, kaip patekti į AT režimą.

„HC-05“yra įvairių tipų, kai kurie yra su mygtukais, o kai kurie be ir visų dizaino kintamųjų. Vienas iš jų yra pastovus, tačiau jie visi turi „34 kaištį“. Peržiūrėkite šią pamoką.

Dalykai, kuriuos turėtumėte žinoti

  • Norėdami įjungti AT režimą, prieš prijungdami maitinimą prie „Bluetooth“modulio, tiesiog laikykite 5V prie 34 kištuko.
  • Prijunkite potencialų skirstytuvą prie modulio RX kaiščio, nes jis veikia 3.3V. Jūs vis tiek galite jį naudoti esant 5 V įtampai, tačiau jei kažkas negerai, jis gali kepti tą kaištį.
  • Jei naudojate 34 kaištį (vietoj mygtuko ar kitu būdu, kurį radote internete), modulis nustatys „Bluetooth“duomenų perdavimo spartą į 38400. Štai kodėl aukščiau esančioje pamokoje esančioje nuorodoje yra kodo eilutė:

BTSerial.begin (38400); // HC-05 numatytasis greitis AT komandoje daugiau

Jei modulis vis tiek nereaguoja „OK“, pabandykite perjungti tx ir rx kaiščius. Turėtų būti:

„Bluetooth“=> „Arduino“

RXD => TX1

TDX => RX0

Jei tai vis tiek neveikia, pasirinkite kodo kaiščius pakeisti į kitus „Arduino“kaiščius. Išbandykite, jei neveikia, pakeiskite tx ir rx kaiščius, tada bandykite dar kartą

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

Pakeiskite aukščiau esančią eilutę. Galite išbandyti RX = 2, TX = 3 arba bet kokius kitus tinkamus derinius. Aukščiau esančiame paveikslėlyje galite pažvelgti į „Arduino“kaiščių numerius.

6 veiksmas: dalių prijungimas

Dalių sujungimas
Dalių sujungimas

Dabar, kai esame tikri, kad viskas veikia, laikas pradėti juos derinti. Galite prijungti dalis taip, kaip parodyta grandinėje. Aš tai gavau iš „Electronoobs“. Jis tikrai padėjo man įgyvendinti šį projektą. Peržiūrėkite jo projekto versiją čia. Jei laikotės šios pamokos, jums nereikia jaudintis dėl imtuvo jungčių: input_Yaw, input_Pitch ir tt Viskas, kas bus tvarkoma naudojant „Bluetooth“. Be to, prijunkite „Bluetooth“taip, kaip mes padarėme ankstesniame skyriuje. Mano „tx“ir „rx“kaiščiai man kėlė šiek tiek problemų, todėl naudojau „Arduino“:

RX kaip 2 ir TX kaip 3 vietoj įprastų kaiščių. Toliau parašysime paprastą programą, kurią toliau tobulinsime, kol turėsime galutinį produktą.

7 žingsnis: „RemoteXY“grožis

„RemoteXY“grožis
„RemoteXY“grožis

Ilgiausiai galvojau apie paprastą būdą sukurti naudotiną nuotolinę programą, kuri leistų man valdyti droną. Dauguma žmonių naudoja „MIT App Inventor“, tačiau vartotojo sąsaja nėra tokia graži, kaip norėčiau, ir aš taip pat nesu vaizdingo programavimo gerbėjas. Aš galėjau jį sukurti naudodami „Android Studio“, bet tai būtų tik per daug darbo. Buvau labai sužavėta, kai radau mokymo programą, naudojančią „RemoteXY“. Čia yra nuoroda į svetainę. Tai labai paprasta naudoti, o dokumentai yra labai geri. Mes sukursime paprastą savo drono vartotojo sąsają. Galite pritaikyti savo, kaip jums patinka. Tiesiog įsitikinkite, kad žinote, ką darote. Vykdykite čia pateiktas instrukcijas.

Kai tai padarysite, mes redaguosime kodą, kad galėtume pakeisti savo kopterio droselį. Prie savo kodo pridėkite eilutes, kuriose yra / **** dalykai, kuriuos turėtumėte daryti ir kodėl *** /.

Jei jis nerenkamas, įsitikinkite, kad esate atsisiuntę biblioteką. Taip pat atidarykite eskizo pavyzdį ir palyginkite, ką jis turi, o ne jūsų.

///////////////////////////////////////////////////////////////- biblioteka // //////////////////////////////////////////////////////////

// „RemoteXY“pasirinkite ryšio režimą ir įtraukite biblioteką

#define REMOTEXY_MODE_HC05_SOFTSERIAL

#įtraukti #įtraukti #įtraukti

// „RemoteXY“ryšio nustatymai

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

// Sraigtai

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

// „RemoteXY“konfigūravimas

#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}; // ši struktūra apibrėžia visus jūsų valdymo sąsajos struktūros kintamuosius {

// įvesties kintamasis

int8_t vairasvirtė_x; // -100..100 x -koordinačių vairasvirtės padėtis int8_t Joystick_y; // -100..100 y koordinatės vairasvirtės padėtis int8_t „ThrottleSlider“; // 0..100 slankiklio padėtis

// kitas kintamasis

uint8_t connect_flag; // = 1, jei prijungtas laidas, kitaip = 0

} RemoteXY;

#pragma pack (pop)

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

// END RemoteXY apima // ////////////////////////////////////////////////////////// /

/********** Pridėkite šią eilutę, kad išlaikytumėte droselio vertę **************/

int input_THROTTLE;

void setup () {

RemoteXY_Init ();

/********** Prijunkite variklius prie kaiščių Pakeiskite vertes, kad jos atitiktų jūsų **************/

L_F_prop.attach (4); // kairysis priekinis variklis

L_B_prop.attach (5); // kairysis galinis variklis R_F_prop.attach (7); // dešinysis priekinis variklis R_B_prop.attach (6); // dešinysis galinis variklis

/************* Neleiskite esc įeiti į programavimo režimą *******************/

L_F_prop.writeMikrosekundės (1000); L_B_prop.writeMikrosekundės (1000); R_F_prop.writeMikrosekundės (1000); R_B_prop.writeMikrosekundės (1000); vėlavimas (1000);

}

void loop () {

„RemoteXY_Handler“();

/****** Susiekite iš programos gautą droselio vertę iki 1000 ir 2000, kurios yra vertybės, kurias dauguma ESC naudoja *********/

input_THROTTLE = žemėlapis („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); }

8 žingsnis: bandymas

Jei viską padarėte teisingai, turėtumėte sugebėti išbandyti savo kopterį, stumdami droselį aukštyn ir žemyn. Įsitikinkite, kad tai darote lauke. Taip pat nelaikykite įjungtų sraigtų, nes dėl to kopteris šokinės. Mes dar neparašėme kodo, kad jį subalansuotume, todėl būtų bloga idėja tai išbandyti su propeleriais! Aš tai padariau tik todėl, kad lmao.

Demonstracija skirta tik parodyti, kad turėtume sugebėti valdyti droselį iš programos. Pastebėsite, kad varikliai mikčioja. Taip yra todėl, kad ESC nebuvo sukalibruotas. Norėdami tai padaryti, peržiūrėkite instrukcijas šiame „Github“puslapyje. Perskaitykite instrukcijas, atidarykite failą ESC-Calibration.ino ir vykdykite šias instrukcijas. Jei norite suprasti, kas vyksta, peržiūrėkite šią „Electronoobs“mokymo programą.

Kol vykdote programą, būtinai pririškite droną virvelėmis, nes jis veiks visu greičiu. Taip pat įsitikinkite, kad sraigtai neįjungti. Aš palikau savo, nes esu pusiau pamišusi. Nepalikite savo propelerių !!! Ši demonstracija parodyta antrame vaizdo įraše.

9 žingsnis: Aš dirbu su kodeksu. Pabaigs pamokomą per kelias dienas

Tiesiog norėjau pridurti, kad jei naudojatės šia pamoka ir laukiate manęs, aš vis dar dirbu. Tiesiog mano gyvenime atsirado kitų dalykų, kuriuos taip pat dirbu, bet nesijaudinkite, kad netrukus paskelbsiu. Tarkime, ne vėliau kaip 2019 m. Rugpjūčio 10 d.

Rugpjūčio 10 d. Atnaujinimas: nenorėjau tavęs kabinti. Deja, pastarąją savaitę neturėjau laiko dirbti su projektu. Buvo labai užsiėmęs kitais reikalais. Aš nenoriu tavęs vesti. Tikiuosi, kad artimiausiu metu įvykdysiu instrukciją. Jei turite klausimų ar jums reikia pagalbos, galite pridėti komentarą žemiau ir aš su jumis susisieksiu.

Rekomenduojamas: