Devreler

Robot Nasıl Yapılır - Ders 7: Bluetooth Kontrollü Arduino Robot Yapın: 14 Adım

Cep telefonu kontrollü Bluetooth Arduino 6WD Robot Araba - 6WD Bluetooth Car "Diferansistem"

Cep telefonu kontrollü Bluetooth Arduino 6WD Robot Araba - 6WD Bluetooth Car "Diferansistem"

İçindekiler:

Anonim

Arduino robotu temel fonksiyonları yerine getirebildiğinden, şimdi bir başka özellikle daha yükseltiyoruz - Bluetooth ile romote kontrolü.

Diğer bir “Bir Robot Nasıl Yapılır” dersleriyle aynı şekilde bir Arduino robot kiti (Korsan: Bluetooth 4.0 ile 4WD Arduino Mobil Robot Kiti) örnek olarak kullanılmıştır. Ayrıca, robotları, mobil platformları, dronları veya insansız hava aracı (İHA) gibi herhangi bir şeyi Bluetooth aracılığıyla mobil cihazlarınızla bağlamanızı ve kontrol etmenizi sağlayan GoBLE'nin (Genel BLE APP Denetleyicisi) yardımına ihtiyacımız var.

Dersler Menüsü:

Ders 1: Giriş

Ders 2: Temel Bir Arduino Robotu Oluşturun

Ders 3: Bir Çizgi İzleme Arduino Robotu Oluşturma

Ders 4: Engelleri Önleyebilecek Bir Arduino Robotu Oluşturun

Ders 5: Işık ve Ses Efektleri Olan Bir Arduino Robotu Oluşturun

Ders 6: Ortamı İzleyebilecek Bir Arduino Robotu Oluşturun

Ders 7: Bluetooth Kontrollü bir Arduino Robotu Oluşturun

Hazırlık

iPhone veya iPad × 1

GoBLE APP × 1

Gereçler:

Aşama 1:

Not: Şu anda, GoBLE yalnızca iOS aygıtlarında kullanılabilir ve en azından iOS 8.1 yüklü olmasını ister.

İOS kullanıcıları için: lütfen GoBLE'yi App Store'dan indirin.

Adım 2:

Test Kodunu Yükleyin

Lütfen Romeo BLE'yi bilgisayara bağlayın. Test paketinde ‘GoBLE_Test.ino’ yazılım paketinde bulunabilir. Cihazlardan gelen sinyal çıkışını kontrol etmenizi sağlar. İNDİR IT & OUT OUT OUT. Test kodunu indirmeden önce GoBLE kitaplığını yüklemeyi unutmayın.

Aşama 3:

Bluetooth Testi

Şimdi Bluetooth eşleşmesini başlatalım. Mobil bluetooth'u açın ve ardından GoBLE uygulamasını açın. Ekranınız böyle görünür!

4. Adım:

Bluetooth arama tuşunu tıklayın (kırmızı bir büyüteç gibi görünüyor). Ardından, Romeo BLE adına karşılık gelen Bluetooth cihazlarından birini seçin. UUID'yi tıkladığınızda eşleşmeye başlarlar.

Adım 5:

Bağlandıktan sonra, Bluetooth arama tuşunun rengi kırmızıdan yeşile değişecektir.

6. Adım:

Aynı zamanda, tahtadaki LINK ledi yanacaktır, bu iPhone'unuzun Romeo BLE'ye (Bluetooth 4.0 ile Arduino Robot Kontrol Kurulu) bağlandığı anlamına gelir.

7. Adım:

Şimdi, denetleyicinin iPhone'unuzdan başarıyla sinyal alabildiğini test edelim. Arduino IDE arayüzüne dönün ve sağ üst köşedeki Seri Monitör'ü tıklayın.

8. adım:

Aşağıdaki resimde gösterildiği gibi bir diyalog açılır. İlk olarak, seri portun baud hızı, aşağıdaki kırmızı dairede gösterildiği gibi 115200 olarak ayarlanmalıdır.

9. adım:

Artık iPhone'unuzu çıkarabilir ve sanal joystick'i rastgele bir şekilde kaydırabilir veya ekrandaki düğmeyi tıklayabilirsiniz. Başka bir şey yoksa, Seri Monitörde karşılık gelen değeri göreceksiniz. Ekrandaki sanal joystick'i kaydırdığınızda Seri Monitör'deki joystick değeri değişecektir. Joystick yukarı kaydırıldığında değerin arttığını veya joystick aşağı kaydırırken değerin azaldığını fark edeceksiniz.

Düğme Kimliği, hangi düğmeyi tıkladığınız anlamına gelir.

10. Adım:

Uzaktan Kumanda Kodunu Yükleyin

Her şey yolunda giderse, devam edip uzaktan kumanda kodunu Arduino kartına yükleyelim. Aklında tutmak için çok önemli bir nokta var!

İPhone'unuz son test aşamasında Romeo BLE Board'a zaten bağlı. Ancak, telefonunuz ile kart arasında Bluetooth kurulduğunda kodu Romeo BLE panosuna yükleyemezsiniz. Bu nedenle, önce Bluetooth eşleşmesini KESMEN KAPALI olmanız gerekir. Ayrıca, kart telefondan çıkarıldıysa kodu tekrar yükleyebilirsiniz. BU ÇOK ÖNEMLİ!

Bağlantıyı kesmenin iki yöntemi vardır. Bunun bir yolu Remeo BLE gücünü kapatıp tekrar açmanızdır. Diğer bir yol da, telefonunuzdaki Bluetooth'u kapatmanızdır.

Bağlantı kesildikten sonra, örnek kodu tekrar yükleyebilirsiniz. Kod, kod paketinde GoBLE_APP.ino olarak adlandırılır.

11. adım:

Başarılı bir şekilde yüklendikten sonra, aşağıdaki resimdeki kırmızı oku takip edebilir ve robotunuzu kontrol etmek için Joystick'i kaydırın. Ayrıca, PIN13 ile bağlı olan panodaki LED'i açmak veya kapatmak için kırmızı düğmeye tıklayabilirsiniz.

Adım 1/2:

Kod özeti

Robotu oynadıktan sonra, kodu nasıl kullanacağınızı öğrenmeye başlayalım. GoBLE testi için test kodu için daha fazla kelime yok. O zaman biz sadece GoBLE APP için ilerliyoruz.

Temel kodu tartışmaya gerek yok - sadece bluethooth kontrolünü içeren kısma bir göz atalım. Robotu uzaktan kontrol etmek istiyorsanız, Metro ve GoBLE adlı iki kütüphaneci kullanılacak.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, joystickY;

int buttonState 6;

joystickX, joystickY ve buttonState 6, üç değişken GoBLE kütüphanesi için tanımlanmıştır. X ekseni, Y ekseni ve altı düğmenin bu değerlerinin durum değerini kaydetmek için kullanılırlar.

Aşağıdaki harita tüm butonların yerleşimini göstermektedir. Durum değerlerinin değişimini analiz ettiyseniz, muhtemelen + X, -X, + Y ve –Y öğelerinin anlamlarını biliyor olabilirsiniz.

X & Y, Joystick’in hareket yönleridir. ”+, -“ Değerin eğilimlerini gösterir. “+”, Devlet değerinin arttığı anlamına gelir. Ve “-” durum değerinin azaldığı anlamına gelir.

13. Adım:

İlk ayar Setup () işlevine yazılmalıdır.
) (Goble.begin;

Bu hat, bluetooth kurulumunu başlatmak için kullanılır. Tahtadaki Bluetooth kodunu her kullandığınızda ve bu kaçırılmayacak.

Serial.begin (115200);

Aslında, bu hat test aşamasında kullanılmıştır. Seri portu başlatmak için kullanılır. Değeri Seri Monitör'den okumak istiyorsanız, bu ifadeyi kurulum işlevine yazmalısınız. AND, aynı zamanda baud hızını ayarlamanız gerekir.

Bluetooth baud hızı özel olduğundan, 115200 olarak ayarlamanız gerekir. Baud hızının ayarlandığından emin olun, aksi halde bazı sorunlara neden olabilir.

Lütfen aşağıya bakmaya devam et. Sonraki satır Goble.available () işlevidir.

if (Goble.available ()) {bir şeyler yapın; }

Yani, bir sonraki işlemin, Bluetooth ile bir rakam alındığında ne olduğu.

Parantez içinde yazan şey bir sonraki eylemimiz olacaktır. İlk önce, alınan rakamı analiz etmemiz gerekiyor. Aşağıdaki iki ifade, X ve Y eksenindeki değeri okumaktır.

joystickX = Goble.readJoystickX ();

joystickY = Goble.readJoystickY ();

// Seri.print ("joystickX:");

// Seri.print (joystickX);

// Seri.print ("joystickY:");

// Seri.println (joystickX);

Dört Serial.print () ifadesinin ne anlama geldiğini tahmin edin. Seri ile ilgilidir. Kod hata ayıklama ve optimizasyon için uygun olan, alınan verileri yazdırması için seridir.

”//”, aşağıdaki içeriğin ek açıklaması anlamına gelir. Bu dört cümle, kodu derlerken dahil edilmeyecektir. Yani, bu dört cümle için notu kullandığımızda seriye veri gönderilmez.

Daha fazla bilgi için lütfen Arudino Web Sitesinin Referans sayfasına (www.arduino.cc) bakın.

buttonState SWITCH_UP = Goble.readSwitchUp ();

buttonState SWITCH_DOWN = Goble.readSwitchDown ();

buttonState SWITCH_LEFT = Goble.readSwitchLeft ();

buttonState SWITCH_RIGHT = Goble.readSwitchRight ();

buttonState SWITCH_SELECT = Goble.readSwitchSelect ();

buttonState SWITCH_START = Goble.readSwitchStart ();

Yukarıdaki tüm içerikler, düğmelerin durumu hakkındaki bilgileri yüklemek için kullanılır.

Düğmelerin düzeni aşağıdaki gibidir.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

Adım 14:

Kullanmaya başlamadan önce okunan tüm verileri işlememiz gerekir.

Joystick'te okunan değer, robotumuzun tekerleklerinin dönme hızıyla eşlenmelidir. Böylece, tekerleklerin dönme hızı -255 ile 255 arasındadır.

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Seri.print ("Hız:");

Serial.print (SpeedX);

Seri baskı ("");

Serial.println (hızlı);

Ayrıca seri hızı basardı. Gerekmiyorsa, kaldırmak için başlangıçta ”//” ekleyebilirsiniz.

Şimdi robotu kontrol edelim ve hareket ettirelim.

Eğer (Joystick'i yukarı veya (||) aşağı hareket ettirin) {Robot ileri veya geri hareket eder; }

Eğer (Joystick'i sağa veya (||) sola hareket ettirin) {Robot sağa veya sola hareket ettirin}

(Joystick'in X ekseni merkezde kalırsa ve (&&) Joystick'in Y ekseni merkezde kalırsa) {Robot durur; }

İlgili kodlar aşağıdaki gibidir:

eğer (SpeedX> 200 || SpeedX <-200) {LeftWheelSpeed ​​= SpeedX; RightWheelSpeed ​​= SpeedX; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed); }

başka eğer (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80; RightWheelSpeed ​​= SpeedY-80; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

aksi takdirde (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

Son kod, PIN13'e bağlı panodaki LED'i kontrol etmek için kullanılır.

int ledPin = 13;

Pim 13 kodun başında tanımlanmalıdır.

pinMode (ledPin, ÇIKIŞ);

Setup () işlevini yazarak LED için çıkış modunu ayarlayın. Lütfen Arduino web sitesinde (www.arduino.cc) pinMode () işlevinin talimatına bakın.

Aşağıdaki ifadeler, düğmelerin durumunu gösterir. 1 No'lu düğmeye basıldığında, LED açık olacaktır. LED pim YÜKSEK olarak ayarlanmıştır.

if (buttonState 1 == BASINLI) {digitalWrite (ledPin, HIGH); }

1 No'lu düğme bırakıldığında, LED sönecektir. LED pim DÜŞÜK olarak ayarlanmıştır.

if (buttonState 1 == YAYILMIŞ) {digitalWrite (ledPin, LOW); }

Hepsi bugün kodlama için. EĞLENCE değil mi? SO, sizin için kod yazmak imkansız değil, değil mi? Kodu değiştirerek LED ışığını kontrol etmek için bir düğmeyi değiştirmeyi deneyebilirsiniz. Kodunuzla kontrol edebilmeniz kesinlikle daha ilginç. Şimdi, robotunuzla eğlenmeye başlayın !!!