Мазмуну:

Ардуино дронун курууну каалаган гид: 9 кадам
Ардуино дронун курууну каалаган гид: 9 кадам

Video: Ардуино дронун курууну каалаган гид: 9 кадам

Video: Ардуино дронун курууну каалаган гид: 9 кадам
Video: Build Seven Segment LED clock with Arduino and DS3231 - Robojax 2024, Декабрь
Anonim
Ардуино дронун жасоону каалаган гид
Ардуино дронун жасоону каалаган гид

Бул документ - бул "кантип жетектөө керек" слэш документациясы, ал процесстен өтөт, ал менин уюлдук телефондон башкара турган жөнөкөй квадрокоптерду куруу максатыма жетүү үчүн түшүнүктөрдү түшүнүүмдү талап кылды.

Бул долбоорду ишке ашыруу үчүн мен дрондун чынында эмне экенин түшүнгүм келди, менин учурда квадрокоптер, ошондуктан мен изилдөө жүргүзө баштадым. Мен YouTube видеолорун көп көрдүм, көптөгөн макалаларды жана бузулбоочу барактарды окудум, менде ушундай болду.

Негизи дронду эки бөлүккө бөлсөңүз болот. Мен аны "Физикалык" жана "Контроллер" деп атадым. Физикалык негизи пилотсуз учуучу механикага байланыштуу бардык нерсе. Бул кыймылдаткыч, рамка, батарея, винттер жана дронго учуу мүмкүнчүлүгүн берген башка нерселер.

Контроллер негизинен учуу контроллери болуп саналат. Пилотсуз жыгылбай бүтүндөй бирдик катары учуп кетиши үчүн физикалык нерсени эмне көзөмөлдөйт. Негизи микроконтроллер, андагы программалык камсыздоо жана анын подшипниктерин үч бурчтукка айлантууга жардам берген сенсорлор. Ошентип, дронго ээ болуу үчүн мага контролер жана контролерди "көзөмөлдөө" үчүн көптөгөн физикалык бөлүктөр керек болчу.

Жабдуулар

Долбоордун бюджети: $ 250

Мөөнөтү: 2 жума

Сатыла турган нерселер:

  • Физикалык алкак $ 20
  • Бычактар $ 0 (Рамка менен келет)
  • Батарея пакети $ 25
  • ESC (Электрондук ылдамдыкты көзөмөлдөөчүлөр) $ 0 (Моторлору менен келет)
  • Мотор 70 доллар

Учуу контролери

  • Arduino нано $ 20
  • USB Arduino кабели $ 2
  • Bluetooth модулу (HC-05) $ 8
  • 3мм LED жана 330 Ом резисторлор жана зымдар $ 13
  • GY-87 (акселерометр, гироскоп) 5 доллар
  • Прототип тактасы $ 10
  • Эркек менен Аялдын башы $ 5

Башка

  • Лайнердик комплект $ 10
  • Мультиметр 20 доллар

Мен инженер катары бул долбоорду курууну жактыргым келди, андыктан мага кереги жок башка нерселерди сатып алдым.

Бардыгы: $ 208

1 -кадам: Менин алгачкы тажрыйбам

Бардык компоненттеримди сатып алгандан кийин, мен баарын чогулттум, андан кийин Multiwii (пилотсуз DIY дрону коомчулугу көп колдонгон программалык камсыздоону колдонуу) аркылуу пилотсуз учууну ишке ашырууга аракет кылдым, бирок мен эмнени толук түшүнбөгөнүмдү дароо түшүндүм. Каталар көп болгондуктан, мен аларды кантип оңдоо керек экенин билбегендиктен кылып жаттым.

Андан кийин мен дронду бөлүп алып, ар бир компонентти бөлүкчө түшүнүп, эмне болуп жатканын толугу менен түшүнөм деп кайра курууну чечтим.

Кийинки бөлүмдөрдө табышмакты бириктирүү процессинен өтөм. Ага чейин келгиле, кыскача карап чыгалы.

Физикалык

Физикалык үчүн бизде болушу керек: рамка, пропеллер, батарея жана эсс. Буларды бириктирүү оңой болмок. Бул бөлүктөрдү жана кайсынысын алуу керек экенин түшүнүү үчүн бул шилтемеге баш багыңыз. Ал мен тизмектеген бөлүктөрдүн ар бирин сатып алууда эмнени билиш керек экенин түшүндүрөт. Бул Youtube видеосун да көрүңүз. Эгер бөлүктөрдү бириктирип тыгылып калсаңыз, бул сизге жардам берет.

2 -кадам: Физикалык бөлүктөрдү бириктирүү жана мүчүлүштүктөрдү оңдоо боюнча кеңештер

Физикалык бөлүктөрдү бириктирүү жана мүчүлүштүктөрдү оңдоо боюнча кеңештер
Физикалык бөлүктөрдү бириктирүү жана мүчүлүштүктөрдү оңдоо боюнча кеңештер

Пропеллер жана моторлор

  • Сиздин винттериңиздин туура багытта экенин текшерүү үчүн (Оодарылганбы же жокпу), сиз аларды моторлор көрсөткөн багытта айландырганда (көпчүлүк моторлордо кантип айланышы керек экенин көрсөткөн жебелери бар), винтлердин астында шамал болушу керек жана жогору эмес.
  • Карама -каршы винттин бурамалары бирдей түстө болушу керек.
  • Жанаша турган винттердин түсү бирдей болушу керек.
  • Ошондой эле моторлорду жогорудагы сүрөттөгүдөй айланып тургандай кылып жайгаштырганыңызды текшериңиз.
  • Эгерде сиз мотордун багытын бурууга аракет кылып жатсаңыз, жөн гана зымдарды карама -каршы учтарынан алмаштырыңыз. Бул мотордун багытын өзгөртөт.

Батарея жана кубат

  • Эгерде кандайдыр бир себептерден улам нерселер учкун болуп жатса жана анын себебин түшүнө албасаңыз, анда, балким, сизде оң жана терс нерселер алмашылган.
  • Эгерде сиз батарейкаңызды качан заряддоону так билбесеңиз, анда чыңалууну текшерүү үчүн вольтметрди колдонсоңуз болот. Эгерде ал батарейканын өзгөчөлүктөрүнөн төмөн болсо, анда аны заряддоо керек. Батареяңызды кубаттоо үчүн бул шилтемени караңыз.
  • Көпчүлүк LIPO батарейкалары батарейка кубаттагычтары менен келбейт. Сиз аларды өзүнчө сатып аласыз.

3 -кадам: Arduino Controller

Arduino контроллери
Arduino контроллери

Бул бүтүндөй долбоордун эң татаал бөлүгү экени талашсыз. Компоненттерди жардыруу абдан оңой жана мүчүлүштүктөрдү оңдоо, эгер сиз эмне кылып жатканыңызды билбесеңиз, абдан капа болот. Ошондой эле бул долбоордо мен блютузду жана кантип курууну көрсөтө турган тиркемени колдонуп, дронумду башкардым. Бул долбоорду өзгөчө татаалдаштырды, анткени ал жердеги окуу куралдарынын 99% радио контроллерлерди колдонушат (бул чындык эмес), бирок кабатыр болбоңуз, мен сиз үчүн капа болдум.

Бул сапарды баштоодон мурун кеңештер

  • ПКБда түзмөгүңүздү бүтүрүүдөн мурун нан тактасын колдонуңуз. Бул өзгөрүүлөрдү оңой жасоого мүмкүндүк берет.
  • Эгерде сиз бир компонентти кеңири сынап көрсөңүз жана ал иштебесе, анда ал иштебей калышы мүмкүн!
  • Сиз аны туташтырардан мурун, түзмөктүн чыңалуусун караңыз!

    • Arduino 6дан 20Вга чейин көтөрө алат, бирок аны жардырбоо үчүн 12В чыңдоого аракет кылыңыз. Бул жерде анын өзгөчөлүктөрү жөнүндө көбүрөөк окуй аласыз.
    • HC-05 5В чейин иштей алат, бирок кээ бир казыктар 3.3Vде иштейт, андыктан сак болуңуз. Бул тууралуу кийинчерээк сүйлөшөбүз.
    • ӨИК (GY-521, MPU-6050) да 5Вде иштейт.
  • Биз колдонмону куруу үчүн RemoteXY колдонобуз. Эгер сиз аны iOS түзмөгүнө кургуңуз келсе, башка bluetooth модулун колдонушуңуз керек (HM-10). Бул тууралуу көбүрөөк биле аласыз RemoteXY веб -сайты.

Сиз кеңештерди окудуңуз деп үмүттөнөбүз. Эми контроллердин бир бөлүгү боло турган ар бир компонентти өзүнчө сынап көрөлү.

4-кадам: MPU-6050

MPU-6050
MPU-6050

Бул аппаратта гироскоп жана акселерометр бар, андыктан ал сизге багытта ылдамданууну (X, Y, Z) жана ошол багыттар боюнча бурчтук ылдамдатууну айтат.

Муну текшерүү үчүн, биз бул боюнча окуу куралын колдоно алабыз, бул окуу куралын Arduino вебсайтында колдоно алабыз. Эгер ал иштесе, сиз акселерометр менен гироскоптун агымын алышыңыз керек, анткени сиз эңкейип, айланып жана орнотууну тездетесиз. Ошондой эле, эмне болуп жатканын билүү үчүн кодду өзгөртүүгө жана башкарууга аракет кылыңыз.

5-кадам: HC-05 Bluetooth модулу

HC-05 Bluetooth модулу
HC-05 Bluetooth модулу
HC-05 Bluetooth модулу
HC-05 Bluetooth модулу
HC-05 Bluetooth модулу
HC-05 Bluetooth модулу

Бул бөлүктү кылуунун кажети жок, бирок AT режимине (жөндөөлөр режими) өтүү маанилүү, анткени модулдун жөндөөлөрүнүн бирин өзгөртүү керек болот. Бул долбоордун эң капаланткан бөлүктөрүнүн бири болду. Мен модулумду AT режимине кантип алууну билүү үчүн көп изилдөө жүргүздүм, анткени менин аппаратым менин буйруктарыма жооп бербей калды. Менин модулум бузулду деген тыянак чыгарууга 2 күн убакыт кетти. Мен дагы бирөөнү заказ кылдым, ал иштеди. AT режимине өтүү боюнча бул окуу куралын карап көрүңүз.

HC-05 ар кандай болот, кээ бирлери баскычтары бар, кээ бирлери жок жана ар кандай дизайн өзгөрмөлөрү. Бул дайыма болуп туруучу нерсе, алардын баарында "пин 34" бар. Бул окуу куралын карап көрүңүз.

Сиз билишиңиз керек болгон нерселер

  • AT режимине өтүү үчүн, жөн эле 5Вду кармап туруңуз, bluetooth модулун 34кө туташтырып коюңуз.
  • Потенциалдуу бөлүштүргүчтү модулдун RX пинине туташтырыңыз, анткени ал 3.3Vде иштейт. Сиз аны 5Вда колдоно берсеңиз болот, бирок эгер бир нерсе туура эмес болуп калса, анда ал кууруп калышы мүмкүн.
  • Эгерде сиз 34 -пинди колдонсоңуз (баскычтын ордуна же интернеттен тапкан башка жол менен), модуль bluetoothдун берүү ылдамдыгын 38400гө коёт. Ошол себептен жогорудагы үйрөткүчтүн шилтемесинде коддо мындай сызык бар:

BTSerial.begin (38400); // AT командасында HC-05 демейки ылдамдыгы

Эгерде модуль дагы деле "ОК" менен жооп бербесе, tx жана rx казыктарын алмаштырып көрүңүз. Болушу керек:

Bluetooth => Arduino

RXD => TX1

TDX => RX0

Эгерде бул дагы деле иштебесе, коддогу төөнөгүчтөрдү башка Arduino казыктарына алмаштырууну тандаңыз. Сыноо, эгер ал tx жана rx пиндерин алмаштырбаса, анда кайра сынап көрүңүз

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

Жогорудагы линияны өзгөртүңүз. Сиз RX = 2, TX = 3 же башка жарактуу айкалыштарды колдонуп көрсөңүз болот. Сиз жогорудагы сүрөттөгү Arduino пин сандарын карай аласыз.

6 -кадам: Бөлүктөрдү туташтыруу

Бөлүктөрдү туташтыруу
Бөлүктөрдү туташтыруу

Эми биз баары иштей турганына көзүбүз жеткенден кийин, аларды бириктире баштоонун мезгили келди. Сиз тетиктерди схемада көрсөтүлгөндөй туташтыра аласыз. Мен муну Electronoobsтан алдым. Ал мага бул долбоорго чындап жардам берди. Долбоордун анын версиясын бул жерден караңыз. Эгерде сиз бул үйрөткүчтү ээрчип жатсаңыз, анда ресивердин туташуулары жөнүндө кабатыр болбоңуз: input_Yaw, input_Pitch ж.б.у.с. Ошондой эле, bluetooth'ду мурунку бөлүмдөгүдөй туташтырыңыз. Менин tx жана rx төөнөгүчтөрүм мага бир аз кыйынчылык туудуруп жаткандыктан, мен Arduino колдонгон:

Кадимки казыктардын ордуна RX 2, TX 3 катары. Андан кийин, биз акыркы продуктка ээ болгонго чейин жакшыртууну уланта турган жөнөкөй колдонмо жазышыбыз керек.

7 -кадам: RemoteXY сулуулугу

RemoteXY сулуулугу
RemoteXY сулуулугу

Узак убакыт бою мен пилотсуз учакты башкарууга мүмкүндүк бере турган Алыскы колдонмону түзүүнүн оңой жолун ойлоп жүрдүм. Көпчүлүк адамдар MIT App Inventor колдонушат, бирок UI мен каалагандай сулуу эмес, мен дагы сүрөттүү программалоонун күйөрманы эмесмин. Мен аны Android Studio аркылуу иштеп чыкмакмын, бирок бул өтө эле көп иш болмок. Мен RemoteXYди колдонуу боюнча окуу куралын тапканда абдан кубандым. Бул жерде веб -сайтка шилтеме бар. Бул колдонууга абдан оңой жана документтер абдан жакшы. Биз пилотсуз учагыбыз үчүн жөнөкөй UI түзөбүз. Сиз өзүңүздү каалагандай ыңгайлаштырсаңыз болот. Жөн гана эмне кылып жатканыңызды билиңиз. Бул жердеги көрсөтмөлөрдү аткарыңыз.

Сиз муну кылгандан кийин, биз коптерубуздун дроссельин алмаштыруу үчүн кодду түзөтөбүз. Кодуңузга / **** кылышыңыз керек болгон нерселерди жана эмне үчүн *** / деген саптарды кошуңуз.

Эгерде ал компиляцияланбаса, китепкана жүктөлүп алынганын текшериңиз. Ошондой эле мисалдын эскизин ачып, сиздики жок нерсени салыштырыңыз.

////////////////////////////////////////////////////////////// RemoteXY камтыйт китепкана ///////////////////////////////////////////////

// RemoteXY туташуу режимин тандап, китепкананы камтыйт

#аныктоо REMOTEXY_MODE_HC05_SOFTSERIAL

#кошуу #кошуу #кошуу

// RemoteXY туташуу орнотуулары

#REMOTEXY_SERIAL_RX 2 аныктоо #REMOTEXY_SERIAL_TX 3 аныктоо #REMOTEXY_SERIAL_SPEED 9600

// Пропеллер

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

// RemoteXY конфигурациялоо

#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}; // бул структура башкаруу интерфейсинин структурасынын бардык өзгөрмөлөрүн аныктайт {

// киргизүү өзгөрмөсү

int8_t Joystick_x; // -100..100 x -координаты джойстик позициясы int8_t Joystick_y; // -100..100 y -координаттар джойстик позициясы int8_t ThrottleSlider; // 0..100 слайдер абалы

// башка өзгөрмө

uint8_t connect_flag; // = 1 зым туташса, башка = 0

} RemoteXY;

#прагма пакети (поп)

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

// END RemoteXY камтыйт // /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /

/********** Бул сапты дроссель маанисин кармоо үчүн кошуңуз **************/

int input_THROTTLE;

жараксыз орнотуу () {

RemoteXY_Init ();

/********** Пиндерге моторлорду тиркеңиз Маанилерди өзүңүзгө ылайыктуу кылып өзгөртүңүз **************/

L_F_prop.attach (4); // сол алдыңкы мотор

L_B_prop.attach (5); // арткы мотор R_F_prop.attach (7); // оң алдыңкы мотор R_B_prop.attach (6); // арткы мотор

/************* Эскинин программалоо режимине кирүүсүн алдын алуу ********************/

L_F_prop.writeMicroseconds (1000); L_B_prop.writeMicroseconds (1000); R_F_prop.writeMicroseconds (1000); R_B_prop.writeMicroseconds (1000); кечигүү (1000);

}

void loop () {

RemoteXY_Handler ();

/****** Колдонмодон алган дроссельдин маанисин 1000 жана 2000ге картага салыңыз, бул көпчүлүк ESCs ********* иштейт/

input_THROTTLE = карта (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 -кадам: Тестирлөө

Эгер сиз баарын туура кылган болсоңуз, анда газды өйдө -ылдый жылдырып, коптериңизди сынап көрүшүңүз керек. Муну сыртта кылганыңызды текшериңиз. Ошондой эле винттерди күйгүзбөңүз, анткени бул коптердин секирүүсүнө алып келет. Биз кодду балансташтыруу үчүн жаза элекпиз, андыктан муну пропеллерлер менен сыноо жаман болмок! Мен муну болгону үчүн гана кылдым.

Демонстрация жөн гана колдонмодон дроссельди башкара билишибиз керек экенин көрсөтүү үчүн. Сиз моторлордун кекечтенип жатканын байкайсыз. Бул ESCs калибрленген эмес, себеби болуп саналат. Бул үчүн Github баракчасындагы көрсөтмөлөрдү карап көрүңүз. Көрсөтмөлөрдү окуп, ESC-Calibration.ino файлын ачыңыз жана ошол көрсөтмөлөрдү аткарыңыз. Эгерде сиз эмне болуп жатканын түшүнгүңүз келсе, Electronoobsтун бул окуу куралын карап көрүңүз.

Программаны иштетип жатканда, дронду жиптер менен байлаганыңызды текшериңиз, анткени ал толук дросселге түшөт. Ошондой эле винттер күйүк эмес экенин текшериңиз. Мен жарымын жинди болгондугум үчүн таштап койгом. ӨЗҮҢҮЗДҮН ӨЗҮҢҮЗДҮ КАЛТЫРБАНЫЗ !!! Бул демонстрация экинчи видеодо көрсөтүлгөн.

9 -кадам: Мен Кодекстин үстүндө иштеп жатам. Нускаманы Саналуу күндөрдө бүтүрөт

Жөн гана кошумчалагым келди, эгер сиз бул окуу куралын колдонуп, мени күтүп жатсаңыз, мен дагы эле анын үстүндө иштеп жатам. Менин жашоомдо башка нерселер пайда болду, мен дагы иштеп жатам, бирок убара болбоңуз, мен жакында жарыя кылам. Келгиле, 2019 -жылдын 10 -августуна чейин.

Августтун 10 -жаңыртуусу: Сизди асып койгум келген жок. Тилекке каршы, акыркы бир жумада долбоордун үстүндө иштөөгө убактым болгон жок. Башка нерселер менен абдан алек болдум. Мен сени жетелегим келбейт. Жакынкы арада инструкцияны бүтүрөм деп үмүттөнөм. Эгерде сизде кандайдыр бир суроолор болсо же жардамга муктаж болсоңуз, төмөнгө комментарий жазсаңыз болот, мен сизге кайра кайрылам.

Сунушталууда: