İçindekiler:

Arduino Drone Yaparken Sahip Olmak İstediğim Rehber: 9 Adım
Arduino Drone Yaparken Sahip Olmak İstediğim Rehber: 9 Adım

Video: Arduino Drone Yaparken Sahip Olmak İstediğim Rehber: 9 Adım

Video: Arduino Drone Yaparken Sahip Olmak İstediğim Rehber: 9 Adım
Video: Bölüm 11 - Arduino Drone Uçuş Kontrol Yazılımı 2024, Kasım
Anonim
Arduino Drone İnşa Etmek İstediğim Rehber
Arduino Drone İnşa Etmek İstediğim Rehber

Bu belge, cep telefonumdan kontrol edebileceğim basit bir quadcopter yapma hedefime ulaşmak için kavramları anlamamı sağlayan süreçten geçen bir tür "Nasıl yönlendirilir" eğik çizgi belgesidir.

Bu projeyi yapmak için bir dronun gerçekte ne olduğu hakkında bir fikir edinmek istedim, benim durumumda bir quadcopter, bu yüzden biraz araştırma yapmaya başladım. Bir sürü YouTube videosu izledim, bir sürü makale ve Insructible sayfası okudum ve elimdeki bu.

Esasen bir drone'u iki parçaya bölebilirsiniz. Ben ona “Fiziksel” ve “Kontrolör” adını verdim. Fiziksel, esasen drone'u uçuran mekanikle ilgili olan her şeydir. Bunlar motor, şasi, pil, pervaneler ve drone'a fiziksel olarak uçma kabiliyeti veren diğer her şey gibi şeyler.

Kontrolör esasen uçuş kontrolörüdür. Drone'un düşmeden bir bütün olarak uçabilmesi için fiziksel olanı kontrol eden şey. Esasen mikrodenetleyici, üzerindeki yazılım ve yataklarını üçgenleştirmesine yardımcı olan sensörler. Sonuç olarak, bir drone'a sahip olmak için bir Kontrolöre ve kontrolörün "kontrol etmesi" için bir sürü fiziksel parçaya ihtiyacım vardı.

Gereçler

Proje için bütçe: 250$

Zaman Çerçevesi: 2 hafta

Satın alınacak şeyler:

  • Fiziksel Çerçeve $20
  • Bıçaklar 0 $ (Çerçeve ile birlikte gelir)
  • Pil Paketi 25$
  • ESC (Elektronik hız kontrol cihazları) 0 $ (Motorlarla birlikte gelir)
  • Motorlar 70 $

uçuş kontrolörü

  • Arduino nano 20$
  • Arduino USB Kablosu $2
  • Bluetooth Modülü (HC-05) 8 $
  • 3 mm LED ve 330 Ohm dirençler ve teller 13 $
  • GY-87 (İvmeölçer, Jiroskop) $5
  • Prototip Panosu $10
  • Erkek ve Dişi başlıklar $5

Başka

  • Lehimleme takımı 10$
  • multimetre 20$

Bir Mühendis olarak bu projeyi yapmaktan zevk almak istedim, bu yüzden mecbur olmadığım başka şeyler satın aldım.

Toplam: 208$

Adım 1: İlk Deneyimim

Tüm bileşenlerimi satın aldıktan sonra hepsini bir araya getirdim ve ardından Multiwii'yi (birçok DIY drone topluluğunun kullandığı yazılıma git) kullanarak drone'u başlatmaya çalıştım, ancak ne yaptığımı tam olarak anlamadığımı çabucak fark ettim. Yapıyordu çünkü çok fazla hata vardı ve onları nasıl düzelteceğime dair hiçbir fikrim yoktu.

Bundan sonra drone'u parçalara ayırmaya ve her bir bileşeni parça parça anlamaya ve olup biten her şeyi tamamen anlayacağım şekilde yeniden inşa etmeye karar verdim.

İlerleyen bölümlerde bulmacayı bir araya getirme sürecinden geçeceğim. Ondan önce hızlı bir genel bakış yapalım.

Fiziksel

Fiziksel olarak şunlara sahip olmalıyız: çerçeve, pervaneler, pil ve escs. Bunları bir araya getirmek oldukça kolay olacaktır. Bu parçaları ve hangilerini almanız gerektiğini anlamak için bu bağlantıyı ziyaret edebilirsiniz. Listelediğim parçaların her birini satın alma hakkında bilmeniz gerekenleri açıklıyor. Bu Youtube videosunu da izleyin. Parçaları bir araya getirmekte zorlanıyorsanız size yardımcı olacaktır.

2. Adım: Fiziksel Parçaları Birleştirme ve Hata Ayıklama İle İlgili İpuçları

Fiziksel Parçaları Birleştirme ve Hata Ayıklama İle İlgili İpuçları
Fiziksel Parçaları Birleştirme ve Hata Ayıklama İle İlgili İpuçları

Pervaneler ve Motorlar

  • Pervanelerinizin doğru yönde olup olmadığını kontrol etmek için (Çevrilmiş veya değil), motorların gösterdiği yönde döndürdüğünüzde (çoğu motorda nasıl dönmesi gerektiğini gösteren oklar vardır), pervanelerin altında bir esinti hissetmelisiniz, yukarıda değil..
  • Karşı pervanelerdeki vidalar aynı renkte olmalıdır.
  • Bitişik pervanelerin rengi aynı olmalıdır.
  • Ayrıca motorları yukarıdaki resimdeki gibi dönecek şekilde ayarladığınızdan emin olun.
  • Bir motorun yönünü çevirmeye çalışıyorsanız, sadece telleri zıt uçlarda değiştirin. Bu, motorun yönünü tersine çevirecektir.

Pil ve Güç

  • Herhangi bir nedenle bir şeyler parlıyorsa ve nedenini bulamıyorsanız, bunun nedeni büyük olasılıkla pozitif ve negatifleri değiştirmiş olmanızdır.
  • Pillerinizi ne zaman şarj etmeniz gerektiğinden emin değilseniz, voltajı kontrol etmek için bir voltmetre kullanabilirsiniz. Pilde belirtilen özelliklerden daha düşükse, şarj edilmesi gerekir. Pillerinizi şarj etmek için bu bağlantıya göz atın.
  • Çoğu LIPO pil, pil şarj cihazlarıyla birlikte gelmez. Onları ayrı olarak satın alırsınız.

Adım 3: Arduino Denetleyicisi

Arduino Denetleyicisi
Arduino Denetleyicisi

Bu, şüphesiz tüm bu projenin en zor kısmıdır. Bileşenleri havaya uçurmak çok kolaydır ve ne yaptığınızı bilmiyorsanız hata ayıklama son derece sinir bozucu olabilir. Ayrıca bu projede drone'umu bluetooth ve nasıl yapıldığını göstereceğim bir uygulama kullanarak kontrol ettim. Bu, projeyi özellikle daha da zorlaştırdı çünkü oradaki öğreticilerin %99'u radyo denetleyicileri kullanıyor (bu bir gerçek lol değil), ama endişelenmeyin, sizin için hayal kırıklığı yaşadım.

Bu yolculuğa çıkmadan önce ipuçları

  • Cihazınızı bir PCB üzerinde sonlandırmadan önce bir devre tahtası kullanın. Bu, değişiklikleri kolayca yapmanızı sağlar.
  • Bir bileşeni kapsamlı bir şekilde test ettiyseniz ve çalışmıyorsa, muhtemelen çalışmıyordur!
  • Bir cihazın fişini takmadan önce kaldırabileceği voltajlara bakın!

    • Arduino 6 ila 20V arasında çalışabilir, ancak 12V'da kapatmaya çalışın, böylece onu havaya uçurmazsınız. Özellikleri hakkında daha fazla bilgiyi buradan okuyabilirsiniz.
    • HC-05 5V'a kadar çalışabilir ancak bazı pinler 3.3V'da çalışır, bu yüzden buna dikkat edin. Bunu daha sonra konuşacağız.
    • IMU(GY-521, MPU-6050) ayrıca 5V'de çalışır.
  • Uygulamamızı oluşturmak için RemoteXY kullanacağız. Bir iOS cihazında kurmak istiyorsanız, farklı bir bluetooth modülü (HM-10) kullanmanız gerekir. Bununla ilgili daha fazla bilgiyi RemoteXY web sitesinde bulabilirsiniz.

Umarım ipuçlarını okumuşsunuzdur. Şimdi kontrolörün parçası olacak her bir bileşeni ayrı ayrı test edelim.

Adım 4: MPU-6050

MPU-6050
MPU-6050

Bu cihazın bir jiroskopu ve bir ivmeölçeri vardır, bu nedenle esasen size bir yöndeki (X, Y, Z) ivmeyi ve bu yönler boyunca açısal ivmeyi söyler.

Bunu test etmek için, bununla ilgili öğreticiyi kullanabiliriz, bu öğreticiyi Arduino web sitesinde kullanabiliriz. İşe yararsa, siz eğdikçe, döndürdükçe ve kurulumu hızlandırdıkça değişen bir ivmeölçer ve jiroskop değerleri akışı almalısınız. Ayrıca, neler olduğunu anlamak için kodu değiştirmeye ve değiştirmeye çalışın.

Adım 5: HC-05 Bluetooth Modülü

HC-05 Bluetooth Modülü
HC-05 Bluetooth Modülü
HC-05 Bluetooth Modülü
HC-05 Bluetooth Modülü
HC-05 Bluetooth Modülü
HC-05 Bluetooth Modülü

Bu kısmı yapmak zorunda değilsiniz ancak büyük olasılıkla modülün ayarlarından birini değiştirmeniz gerekeceğinden AT moduna (ayarlar modu) gidebilmeniz önemlidir. Bu, bu projenin en sinir bozucu kısımlarından biriydi. Modülümü AT moduna nasıl alacağımı bulmak için çok araştırma yaptım çünkü cihazım komutlarıma yanıt vermiyordu. Modülümün bozulduğu sonucuna varmam 2 günümü aldı. Bir tane daha sipariş ettim ve işe yaradı. AT moduna girmeyle ilgili bu eğiticiye göz atın.

HC-05 farklı türlerde gelir, bazılarında düğmeli, bazılarında ise her türlü tasarım değişkeni vardır. Sabit olanlardan biri, hepsinin bir "Pin 34"e sahip olmasıdır. Bu eğiticiye göz atın.

Bilmen gereken şeyler

  • AT moduna geçmek için, gücü bağlamadan önce bluetooth modülünün 34 pinine 5V basılı tutun.
  • 3.3V üzerinde çalıştığı için modülün RX pinine bir potansiyel bölücü bağlayın. Yine de 5V'ta kullanabilirsiniz, ancak bir şeyler ters giderse bu pimi kızartabilir.
  • Pin 34'ü kullanırsanız (düğme veya çevrimiçi bulduğunuz başka bir yol yerine), modül bluetooth'un baud hızını 38400'e ayarlayacaktır. Bu nedenle, yukarıdaki öğreticinin bağlantısında kodda şöyle bir satır var:

BTSerial.başla(38400); // AT komutunda HC-05 varsayılan hız daha fazla

Modül hala "OK" ile yanıt vermiyorsa, tx ve rx pinlerini değiştirmeyi deneyin. Olmalı:

Bluetooth =>Arduino

RXD =>TX1

TDX =>RX0

Bu hala işe yaramazsa, koddaki pinleri diğer Arduino pinleriyle değiştirmeyi seçin. Test edin, işe yaramazsa tx ve rx pinlerini değiştirin, ardından tekrar test edin

YazılımSeri BTSerial(10, 11); // RX | TX

Yukarıdaki satırı değiştirin. RX = 2, TX = 3 veya diğer geçerli kombinasyonları deneyebilirsiniz. Arduino pin numaralarına yukarıdaki resimden bakabilirsiniz.

Adım 6: Parçaların Bağlanması

Parçaları Bağlama
Parçaları Bağlama

Artık her şeyin çalıştığından emin olduğumuza göre, onları bir araya getirmenin zamanı geldi. Parçaları devrede gösterildiği gibi bağlayabilirsiniz. Bunu Electronoobs'tan aldım. Bu projede bana gerçekten yardımcı oldu. Projenin onun versiyonuna buradan göz atın. Bu öğreticiyi izliyorsanız, alıcı bağlantıları hakkında endişelenmenize gerek yok: input_Yaw, input_Pitch, vb. Tüm bunlar bluetooth ile halledilecek. Ayrıca bluetooth'u önceki bölümde yaptığımız gibi bağlayın. Tx ve rx pinlerim bana biraz sıkıntı veriyordu, bu yüzden Arduino'yu kullandım:

Normal pinler yerine RX 2 ve TX 3 olarak. Ardından, nihai ürüne sahip olana kadar geliştirmeye devam edeceğimiz basit bir uygulama yazacağız.

Adım 7: RemoteXY'nin Güzelliği

RemoteXY'nin Güzelliği
RemoteXY'nin Güzelliği

Uzun zamandır drone'u kontrol etmeme izin verecek kullanışlı bir Remote uygulaması oluşturmanın kolay bir yolunu düşünüyordum. Çoğu kişi MIT App Inventor kullanıyor, ancak kullanıcı arayüzü istediğim kadar güzel değil ve ayrıca resimli programlama hayranı değilim. Android Studio kullanarak tasarlayabilirdim ama bu çok fazla iş olurdu. RemoteXY'yi kullanan bir öğretici bulduğumda çok heyecanlandım. İşte web sitesine bağlantı. Kullanımı son derece kolaydır ve dokümantasyon çok iyidir. Drone'muz için basit bir kullanıcı arayüzü oluşturacağız. Sizinkini istediğiniz gibi özelleştirebilirsiniz. Sadece ne yaptığınızı bildiğinizden emin olun. Buradaki talimatları izleyin.

Bunu yaptıktan sonra, helikopterimizin gaz kelebeğini değiştirebilmemiz için kodu düzenleyeceğiz. /**** Yapmanız gereken şeyler ve neden ***/ içeren satırları kodunuza ekleyin.

Derlemiyorsa, kitaplığı indirdiğinizden emin olun. Ayrıca örnek bir çizim açın ve sizde olmayanları karşılaştırın.

//////////////////////////////////////////RemoteXY dahil kütüphane // /////////////////////////////////////////////

// RemoteXY bağlantı modunu seç ve kitaplığı dahil et

#define REMOTEXY_MODE_HC05_SOFTSERIAL

#include #include #include

// RemoteXY bağlantı ayarları

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

// Pervaneler

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

// RemoteXY yapılandır

#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 }; // bu yapı, kontrol arayüzünüzün tüm değişkenlerini tanımlar struct {

// giriş değişkeni

int8_t Joystick_x; // -100..100 x-koordinat joystick konumu int8_t Joystick_y; // -100..100 y-koordinat joystick konumu int8_t ThrottleSlider; // 0..100 kaydırıcı konumu

// diğer değişken

uint8_t connect_flag; // =1 kablo bağlıysa, yoksa =0

} RemoteXY;

#pragma paketi(pop)

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

// RemoteXY'yi BİTİR // /////////////////////////////////////// /

/********** Gaz kelebeği değerini tutmak için bu satırı ekleyin**************/

int input_THROTTLE;

geçersiz kurulum() {

RemoteXY_Init();

/**********Motorları Pinlere bağlayın Değerleri kendinize göre değiştirin **************/

L_F_prop.attach(4); // sol ön motor

L_B_prop.attach(5); //sol arka motor R_F_prop.attach(7); //sağ ön motor R_B_prop.attach(6); // sağ arka motor

/*************esc'nin programlama moduna girmesini engelle********************/

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

}

boşluk döngüsü () {

RemoteXY_Handler();

/****** Uygulamadan aldığınız kısma değerini, çoğu ESC'nin çalıştığı değerler olan 1000 ve 2000 ile eşleştirin *********/

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

Adım 8: Test Etme

Her şeyi doğru yaptıysanız, gaz kelebeğini yukarı ve aşağı kaydırarak helikopterinizi test edebilmelisiniz. Bunu dışarıda yaptığınızdan emin olun. Ayrıca pervaneleri açık tutmayın çünkü bu helikopterin zıplamasına neden olur. Henüz dengelemek için kodu yazmadık, bu yüzden BUNU PERVANELER AÇIKKEN TEST ETMEK KÖTÜ BİR FİKİR olurdu! Bunu sadece lmao için yaptım.

Gösteri sadece gaz kelebeğini uygulamadan kontrol edebilmemiz gerektiğini göstermek içindir. Motorların kekelediğini fark edeceksiniz. Bunun nedeni, ESC'lerin kalibre edilmemiş olmasıdır. Bunu yapmak için bu Github sayfasındaki talimatlara bir göz atın. Talimatları okuyun, ESC-Calibration.ino dosyasını açın ve bu talimatları izleyin. Neler olduğunu anlamak istiyorsanız, Electronoobs'un bu eğitimine göz atın.

Programı çalıştırırken, drone'yu tam gaz gideceği için iplerle bağladığınızdan emin olun. Ayrıca pervanelerin açık olmadığından emin olun. Benimkini sadece yarı deli olduğum için bıraktım. PERVANELERİNİZİ AÇIK BIRAKMAYIN!!! Bu gösterim ikinci videoda gösterilmiştir.

Adım 9: Kod Üzerinde Çalışıyorum. Eğitilebilirliği Birkaç Gün İçinde Bitirecek

Bu öğreticiyi kullanıyorsanız ve beni bekliyorsanız, hala üzerinde çalıştığımı eklemek istedim. Sadece hayatımda başka şeyler de ortaya çıktı, ben de üzerinde çalışıyorum, ama merak etmeyin yakında yayınlayacağım. En geç 10 Ağustos 2019'a kadar diyelim.

10 Ağustos Güncellemesi: Sizi asılı bırakmak istemedim. Maalesef geçen hafta proje üzerinde çalışmak için zamanım olmadı. Başka şeylerle çok meşguldü. Seni yönlendirmek istemiyorum. Umarım yakın gelecekte talimatı tamamlayacağım. Herhangi bir sorunuz varsa veya herhangi bir yardıma ihtiyacınız varsa, aşağıya bir yorum ekleyebilirsiniz, size geri döneceğim.

Önerilen: