Litar

Bagaimana Membina Robot - Pelajaran 7: Membina Robot Arduino yang Dikendalikan Bluetooth: 14 Langkah

Ардуино робот идет / Arduino robot walks (sexual motions)

Ардуино робот идет / Arduino robot walks (sexual motions)

Isi kandungan:

Anonim

Oleh kerana robot Arduino dapat melaksanakan fungsi asas, kami kini menaikkannya dengan satu lagi ciri - kawalan romote melalui Bluetooth.

Sama seperti tutorial 'Cara Membangunkan Robot' yang lain, kit Robot Arduino (Pirate: 4WD Arduino Robot Kit Mudah Alih dengan Bluetooth 4.0) digunakan di sini sebagai contoh. Selain itu, kami juga memerlukan bantuan GoBLE (A Generic BLE APP Controller) yang membolehkan anda menyambung dan mengawal robot, platform mudah alih, dron atau apa saja seperti kenderaan udara tanpa pemandu (uav) dengan peranti mudah alih anda melalui Bluetooth.

Menu Pelajaran:

Pelajaran 1: Pengenalan

Pelajaran 2: Membina Robot Arduino Asas

Pelajaran 3: Membina Tracking Line Arduino Robot

Pelajaran 4: Membina Robot Arduino Yang Boleh Dihindari Halangan

Pelajaran 5: Membina Robot Arduino Dengan Kesan Cahaya dan Bunyi

Pelajaran 6: Membina Robot Arduino Yang Boleh Memantau Alam Sekitar

Pelajaran 7: Membina Robot Arduino yang Dikendalikan Bluetooth

Persediaan

iPhone atau iPad × 1

GoBLE APP × 1

Bekalan:

Langkah 1:

Nota: Pada masa ini, GoBLE hanya boleh digunakan pada peranti iOS dan ia meminta anda sekurang-kurangnya memasang iOS 8.1.

Untuk pengguna iOS: sila muat turun GOBLE dari App Store.

Langkah 2:

Muat naik Kod Ujian

Sila sambung Romeo BLE dengan komputer. Kod ujian 'GoBLE_Test.ino' boleh didapati dalam pakej perisian. Ia membolehkan anda menyemak output isyarat dari peranti anda. MUAT TURUN IT & CHECK IT OUT. Jangan lupa memuatkan perpustakaan GoBLE sebelum memuat turun kod ujian.

Langkah 3:

Ujian Bluetooth

Kini mari kita mulakan pasangan Bluetooth. Hidupkan bluetooth mudah alih dan kemudian buka aplikasi GoBLE. Skrin anda akan kelihatan seperti ini!

Langkah 4:

Klik kekunci carian Bluetooth (ia kelihatan seperti kaca pembesar merah). Kemudian, pilih salah satu peranti Bluetooth yang sepadan dengan nama Romeo BLE. Klik UUID dan mereka akan mula berpasangan.

Langkah 5:

Setelah disambungkan, warna kunci carian Bluetooth akan berubah dari merah ke hijau.

Langkah 6:

Pada masa yang sama, LINK yang diketuai di papan akan dihidupkan, ini bermakna iPhone anda telah disambungkan ke Romeo BLE (Arduino Robot Control Board dengan Bluetooth 4.0).

Langkah 7:

Sekarang mari kita uji jika pengawal berjaya dapat menerima isyarat dari iPhone anda. Kembali ke antara muka IDE Arduino dan klik Monitor Serial di sudut kanan atas.

Langkah 8:

Dialog seperti yang ditunjukkan dalam gambar di bawah akan muncul. Pertama, kadar baud port siri hendaklah ditetapkan 115200 seperti yang ditunjukkan dalam bulatan merah di bawah.

Langkah 9:

Sekarang anda boleh mengambil iPhone anda, dan sapu rawak joystick maya atau klik butang pada skrin. Jika tidak ada yang lain, anda akan melihat nilai yang sepadan pada Monitor Serial. Nilai joystick pada Monitor Serial akan diubah apabila anda menggeser kayu bedik maya pada skrin. Anda akan mendapati bahawa nilai meningkat apabila sapu joystick bergerak ke atas, atau penurunan nilai apabila sapu joystick bergerak ke bawah.

ID Butang bermaksud butang yang anda klik.

Langkah 10:

Muat naik Kod untuk Kawalan Jauh

Jika semuanya ok, mari kita teruskan dan muat naik kod untuk kawalan jauh ke papan Arduino. Terdapat satu perkara yang sangat penting untuk diingat!

IPhone anda telah disambungkan ke Romeo BLE Board pada peringkat ujian terakhir. Walau bagaimanapun, anda tidak dapat memuat naik kod ke papan BLE Romeo apabila Bluetooth telah ditubuhkan di antara telefon dan papan anda. Oleh itu, anda harus BREAK OFF pasangan Bluetooth terlebih dahulu. Di samping itu, anda boleh memuat naik semula kod jika papan telah terputus sambungan dari telefon. INI SANGAT PENTING!

Terdapat dua cara untuk mengganggu sambungan. Salah satu cara ialah anda hanya boleh mematikan kuasa BLE Remeo dan kemudian menghidupkannya semula. Cara lain ialah mematikan Bluetooth pada telefon anda.

Setelah diputuskan, anda boleh memuat naik kod contoh sekali lagi. Kod ini dinamakan sebagai GoBLE_APP.ino dalam pakej kod.

Langkah 11:

Apabila berjaya dimuat naik, anda boleh mengikuti anak panah merah dalam gambar di bawah dan luncurkan Joystick untuk mengawal robot anda. Juga, anda boleh mengklik butang merah untuk menghidupkan atau mematikan LED di papan yang bersambung dengan PIN13.

Langkah 12:

Sinopsis Kod

Selepas bermain robot, mari kita mula belajar cara menggunakan kod itu. Tiada lagi perkataan untuk kod ujian untuk ujian GoBLE. Kemudian kami teruskan ke APP GoBLE.

Tidak perlu membincangkan kod asas - mari kita lihat bahagian yang melibatkan kawalan bluethooth. Sekiranya anda mahu mengawal robot secara automatik, dua perpustakaan yang bernama Metro dan GoBLE akan digunakan.

#include "Metro.h"

#include "GoBLE.h"

int joystickX, joystickY;

int buttonState 6;

joystickX, joystickY dan butangState 6, tiga pembolehubah, ditakrifkan untuk perpustakaan GoBLE. Mereka digunakan untuk menyimpan nilai negeri untuk paksi-X, paksi Y dan nilai-nilai enam butang.

Peta di bawah menunjukkan tata letak semua butang. Anda mungkin mungkin tahu makna dari + X, -X, + Y, dan -Y jika anda telah menganalisis perubahan nilai-nilai negara.

X & Y ialah arah pergerakan Joystick. "+, -" menunjukkan trend nilai. "+" Bermaksud nilai negeri semakin meningkat. Dan "-" bermakna nilai negeri semakin berkurang.

Langkah 13:

Penetapan awal hendaklah ditulis dalam fungsi Setup ().
Goble.begin ();

Garis ini digunakan untuk memulakan persediaan bluetooth. Dan ia tidak boleh dilepaskan apabila anda menggunakan kod Bluetooth di papan anda.

Serial.begin (115200);

Malah, garis ini telah digunakan pada peringkat ujian. Ia digunakan untuk memulakan port bersiri. Jika anda ingin membaca nilai dari Monitor Serial, anda mesti menulis pernyataan ini dalam fungsi persediaan. DAN, juga perlu menetapkan kadar baud.

Kerana kadar baud Bluetooth khusus, anda perlu menetapkan ke 115200. Pastikan kadar baud telah ditetapkan, jika tidak, ia mungkin akan menyebabkan beberapa masalah.

Sila terus lihat. Baris seterusnya ialah fungsi Goble.available ()

jika (Goble.available ()) {melakukan sesuatu; }

Bermaksud bahawa tindakan seterusnya adalah angka yang telah diterima melalui Bluetooth.

Apa yang ditulis dalam kurungan akan menjadi tindakan seterusnya. Pertama, kita perlu menganalisis angka yang diterima. Dua pernyataan berikut adalah untuk membaca nilai pada paksi X dan Y.

joystickX = Goble.readJoystickX ();

joystickY = Goble.readJoystickY ();

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

/ // Serial.print (joystickX);

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

// Serial.println (joystickX);

Teka apa empat kenyataan Serial.print () di atas bermakna. Ia berkaitan dengan Serial. Ia adalah untuk siri untuk mencetak data yang diterima, yang mudah untuk debug dan pengoptimuman kod.

"//" bermaksud anotasi kandungan berikut. Empat ayat ini tidak akan disertakan semasa menyusun kod. Iaitu, tiada data akan dihantar ke siri ini apabila kita menggunakan annotate untuk empat kenyataan ini.

Sila rujuk halaman Rujukan Laman Web Arudino (www.arduino.cc) untuk maklumat lanjut.

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 ();

Semua kandungan di atas digunakan untuk memuatkan maklumat mengenai keadaan butang.

Susunan butang adalah seperti berikut.

SWITCH_UP - 1 SWITCH_RIGHT - 2

SWITCH_DOWN - 3

SWITCH_LEFT - 4

SWITCH_SELECT - 5

SWITCH_START - 6

Langkah 14:

Kita perlu memproses semua data yang dibaca sebelum kita mula menggunakannya.

Nilai yang dibaca pada Joystick akan dipetakan ke kelajuan putaran roda robot kami. Oleh itu, kelajuan putaran roda ternyata berada antara -255 dan 255.

int SpeedX = 2 * joystickX-256;

int SpeedY = 2 * joystickY-256;

Serial.print ("Speed:");

Serial.print (SpeedX);

Serial.print ("");

Serial.println (SpeedY);

Juga siri akan mencetak kelajuan. Sekiranya tidak perlu, anda boleh menambah "//" pada mulanya untuk mengeluarkannya.

Sekarang mari kita mengawal robot dan membuatnya bergerak.

Jika (gerakkan Joystick ke atas atau (||) ke bawah) {Robot bergerak ke hadapan atau ke belakang; }

Jika (gerakkan Joystick ke kanan atau (||) kiri) {Robot bergerak ke kanan atau ke kiri}

Sekiranya paksi-paksi X berada di tengah dan (&&) paksi Y dari Joystick menyimpan di tengah-tengah) {Robot berhenti; }

Kod wartawan adalah seperti berikut:

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

lain (SpeedY> 200 || SpeedY <-200) {LeftWheelSpeed ​​= SpeedY-80; RightWheelSpeed ​​= SpeedY-80; Robot.Speed ​​(LeftWheelSpeed, RightWheelSpeed);}

lain jika (SpeedX == 0 && SpeedY == 0) {Robot.Speed ​​(0,0); }

Kod terakhir digunakan untuk mengawal LED di papan yang disambungkan ke PIN13.

int ledPin = 13;

Pin 13 harus menentukan pada permulaan kod.

pinMode (ledPin, OUTPUT);

Sediakan mod output untuk LED dengan menulis fungsi persediaan (). Sila rujuk kepada arahan untuk fungsi pinMode () di laman web Arduino (www.arduino.cc).

Ungkapan-ungkapan berikut menunjukkan keadaan butang. Setelah butang No.1 ditekan, LED akan dihidupkan. Bermaksud bahawa pin LED ditetapkan untuk TINGGI.

jika (buttonState 1 == PRESSED) {digitalWrite (ledPin, HIGH); }

Setelah butang No.1 dikeluarkan, LED akan dimatikan. Bermaksud bahawa pin LED ditetapkan menjadi RENDAH.

jika (buttonState 1 == RELEASED) {digitalWrite (ledPin, LOW); }

Itu semua untuk pengkodan hari ini. Bukankah menyenangkan? Jadi, tidak mustahil untuk menulis kod untuk anda, bukan? Anda boleh cuba menukar butang untuk mengawal lampu LED dengan mengubah suai kod. Ini pasti lebih menarik apabila anda boleh mengawalnya dengan kod anda. Sekarang, MEMULAKKAN HANYA dengan robot anda !!!