Bir robotun bilgisayardan basit uzaktan kumandası. Uzaktan kumanda özelliğine sahip Arduino tabanlı otonom robot Uzaktan kumandalı robotlar

Bir robotu kontrol etmek zorlu bir iştir. Seçtiğimiz tanım, cihazın çevresinden haberdar olmasını gerektirir. Sonra bir karar verin ve uygun eylemi yapın. Robotlar otonom veya yarı otonom olabilir.

  1. Otonom bir robot, sensörlerden alınan verilere dayalı olarak belirli bir algoritmaya göre çalışır.
  2. Yarı otonom bir robot, bir insan tarafından kontrol edilen görevlere sahiptir. Ayrıca kendi başına yaptığı başka görevler de var...

Yarı otonom robotlar

Yarı özerk bir robota iyi bir örnek, karmaşık bir sualtı robotudur. İnsan, robotun temel hareketlerini kontrol eder. Ve bu sırada, yerleşik işlemci su altı akımlarını ölçer ve yanıt verir. Bu, robotu sürüklenmeden aynı pozisyonda tutmanızı sağlar. Robottaki bir kamera, videoyu insana geri gönderir. Ek olarak, yerleşik sensörler su sıcaklığını, basıncını ve daha fazlasını izleyebilir.

Robot yüzeyle temasını kaybederse, otonom program açılır ve su altı robotunu yüzeye çıkarır. Robotunuzu kontrol edebilmek için özerklik seviyesini belirlemeniz gerekecek. Belki de robotun kabloyla kontrol edilmesini, kablosuz olmasını veya tamamen özerk olmasını istiyorsunuz.

Kablo yönetimi

Bir robotu kontrol etmenin en kolay yolu, ona fiziksel olarak bir kabloyla bağlı bir el kumandasıdır. Bu kontrolördeki anahtarlar, düğmeler, kollar, joystickler ve düğmeler, kullanıcının karmaşık elektronikleri açmadan robotu kontrol etmesini sağlar.

Bu durumda motorlar ve güç kaynağı doğrudan anahtara bağlanabilir. Bu nedenle ileri/geri dönüşü kontrol edilebilir. Araçlarda yaygın olarak kullanılmaktadır.

Zekaları yoktur ve "robotlar" yerine "uzaktan kumandalı makineler" olarak kabul edilirler.


  • Bu bağlantının ana avantajı, robotun çalışma süresi ile sınırlı olmamasıdır. Çünkü doğrudan ağa bağlanabilir. Sinyal kaybı konusunda endişelenmenize gerek yok. Robot, kural olarak, minimum elektroniğe sahiptir ve çok karmaşık değildir. Robotun kendisi hafif olabilir veya fazladan bir yüke sahip olabilir. Bir şeyler ters giderse robot, kabloya bağlı bir ip ile fiziksel olarak alınabilir. Bu özellikle su altı robotları için geçerlidir.
  • Ana dezavantajlar, kablonun dolaşması, bir şeye takılması veya kırılmasıdır. Robotun gönderebileceği mesafe ipin uzunluğu ile sınırlıdır. Uzun bir ipi sürüklemek sürtünmeyi artırır ve robotun hareketini yavaşlatabilir hatta durdurabilir.

Kablo ve yerleşik mikro denetleyici ile robot kontrolü

Bir sonraki adım, mikrodenetleyiciyi robota kurmak, ancak kabloyu kullanmaya devam etmektir. Mikrodenetleyiciyi bilgisayarınızın G/Ç bağlantı noktalarından birine (bir USB bağlantı noktası gibi) bağlamak, eylemlerinizi kontrol etmenizi sağlar. Kontrol, klavye, joystick veya diğer çevresel cihazlar kullanılarak gerçekleştirilir. Bir projeye mikrodenetleyici eklemek, robotu giriş sinyalleriyle programlamanızı da gerektirebilir.


  • Ana avantajlar, doğrudan kablo kontrolü ile aynıdır. Daha karmaşık robot davranışı ve bireysel düğmelere veya komutlara verilen tepkiler programlanabilir. Çok çeşitli kontrolör kontrolleri vardır (fare, klavye, joystick, vb.). Eklenen mikrodenetleyici yerleşik algoritmalara sahiptir. Bu, sensörlerle etkileşime girebileceği ve kendi başına belirli kararlar alabileceği anlamına gelir.
  • Dezavantajları, ek elektroniklerin varlığı nedeniyle daha yüksek bir maliyeti içerir. Diğer dezavantajlar, robotun kablo ile doğrudan kontrolü ile aynıdır.

Ethernet kontrolü

Kullanılmış bağlayıcı Ethernet RJ45. Kontrol için bir Ethernet bağlantısı gereklidir. Robot fiziksel olarak yönlendiriciye bağlıdır. Bu nedenle internet üzerinden kontrol edilebilir. Mobil robotlar için de (pek pratik olmasa da) mümkündür.

İnternet üzerinden iletişim kurabilen bir robot kurmak oldukça zor olabilir. Öncelikle WiFi (kablosuz internet) bağlantısı tercih edilir. Kablolu ve kablosuz kombinasyon ayrıca bir alıcı-vericinin (gönderme ve alma) olduğu bir seçenektir. Alıcı-verici internete fiziksel olarak bağlıdır ve internet üzerinden alınan veriler daha sonra kablosuz olarak robota iletilir.


  • Avantajı, robotun internet üzerinden dünyanın her yerinden kontrol edilebilmesidir. Robotun Ethernet Üzerinden Güç kullanabildiği için zaman sınırı yoktur. giriş noktası. Bu, bir Ethernet ağı üzerinden standart bir bükümlü çift kablo aracılığıyla verilerle birlikte elektrik enerjisinin uzak bir cihaza iletilmesine izin veren bir teknolojidir. İnternet Protokolünün (IP) kullanımı, iletişim şemasını basitleştirebilir ve iyileştirebilir. Avantajları, doğrudan kablolu bilgisayar kontrolü ile aynıdır.
  • Dezavantajı, daha karmaşık programlama ve kablo kontrolü ile aynı dezavantajlardır.

IR uzaktan kumanda

Kızılötesi vericiler ve alıcılar, robotu operatöre bağlayan kabloyu ortadan kaldırır. Bu genellikle yeni başlayanlar tarafından kullanılır. Kızılötesi kontrolün çalışması için bir "görüş hattı" gerekir. Alıcı, veri alabilmek için herhangi bir zamanda vericiyi "görebilmelidir".

Kızılötesi uzaktan kumandalar (televizyonlar için evrensel uzaktan kumandalar gibi), bir mikro denetleyiciye bağlı bir kızılötesi alıcıya komut göndermek için kullanılır. Daha sonra bu sinyalleri yorumlar ve robotun hareketlerini kontrol eder.


  • Avantajı düşük maliyettir. Robotu kontrol etmek için basit TV uzaktan kumandaları kullanılabilir.
  • Dezavantajları, kontrol etmek için bir görüş hattı gerektirmesidir.

radyo kontrolü

Radyo frekansı kontrolü, radyo frekansı (RF) verilerini göndermek, almak ve yorumlamak için küçük mikro denetleyicilere sahip bir verici ve alıcı gerektirir. Alıcı kutusunda, alıcı ünitesini ve küçük bir servo motor kontrol cihazını içeren bir baskılı devre kartı (PCB) bulunmaktadır. Radyo iletişimi, alıcıyla eşleşen/eşleştirilmiş bir verici gerektirir. Fiziksel olarak farklı iki iletişim sistemi ortamı arasında veri gönderip alabilen bir alıcı-verici kullanmak mümkündür.

Radyo kontrolü, doğrudan görüş hattı gerektirmez ve uzun mesafelerde gerçekleştirilebilir. Standart RF cihazları, cihazlar arasında birkaç kilometreye kadar mesafelerde veri iletebilir. Daha profesyonel RF cihazları ise robotun kontrolünü neredeyse her mesafeden sağlayabiliyor.


Birçok robot tasarımcısı, yarı otonom radyo kontrollü robotlar yapmayı tercih ediyor. Bu, robotun mümkün olduğunca özerk olmasına ve kullanıcıya geri bildirim sağlamasına olanak tanır. Ve gerekirse, kullanıcıya bazı işlevleri üzerinde bir miktar kontrol verebilir.

  • Avantajları, robotu önemli mesafelerde kontrol etme yeteneğidir, kolayca yapılandırılabilir. İletişim çok yönlüdür, ancak duvarlar veya engeller tarafından tamamen engellenemez.
  • Dezavantajları çok düşük veri aktarım hızıdır (sadece basit komutlar). Ek olarak, frekanslara dikkat etmeniz gerekir.

Bluetooth kontrolü

Bluetooth bir radyo sinyalidir (RF) ve veri göndermek ve almak için belirli protokoller üzerinden iletilir. Normal Bluetooth menzili genellikle yaklaşık 10m ile sınırlıdır, ancak kullanıcıların robotlarını Bluetooth özellikli cihazlar aracılığıyla kontrol etmelerine izin verme avantajına sahiptir. Bunlar öncelikle cep telefonları, PDA'lar ve dizüstü bilgisayarlardır (ancak arayüzü oluşturmak için özel programlama gerekebilir). Tıpkı radyo kontrolü gibi, Bluetooth da iki yönlü iletişim sunar.


  • Yararları: Bluetooth özellikli herhangi bir cihazdan yönetilir. Ancak, kural olarak, ek programlama gereklidir. Bunlar akıllı telefonlar, dizüstü bilgisayarlar vb. Daha yüksek veri hızları çok yönlü olabilir. Bu nedenle görüş hattı gerekli değildir ve sinyal duvarlardan biraz geçebilir.
  • Dezavantajları. Çiftler halinde çalışmalıdır. Mesafe genellikle yaklaşık 10 m'dir (engel olmadan).

WiFi kontrolü

WiFi kontrolü genellikle robotlar için isteğe bağlı bir ekstradır. Bir robotu İnternet üzerinden kablosuz olarak kontrol etme yeteneği, kablosuz kontrole göre bazı önemli avantajlar (ve bazı dezavantajlar) sunar. Robotun Wi-Fi kontrolünü ayarlamak için İnternete bağlı bir kablosuz yönlendiriciye ve robotun kendisinde bir WiFi birimine ihtiyacınız vardır. Robot için TCP/IP protokolünü destekleyen bir cihaz kullanabilirsiniz.


  • Avantaj, robotu dünyanın herhangi bir yerinden kontrol etme yeteneğidir. Bunu yapmak için kablosuz yönlendiricinin menzili içinde olmalıdır. Yüksek veri aktarım hızları mümkündür.
  • Dezavantajları ise programlamanın gerekli olmasıdır. Maksimum mesafe genellikle kablosuz yönlendirici seçimi ile belirlenir.

cep telefonu kontrolü

Başlangıçta insandan insana iletişim için geliştirilen bir diğer kablosuz teknoloji olan cep telefonu, artık robotları kontrol etmek için kullanılıyor. Cep telefonu frekansları ayarlanabildiğinden, robot üzerinde hücre modülünün etkinleştirilmesi genellikle ek programlama gerektirir. Ayrıca hücresel ağ sistemi ve kurallarının anlaşılmasını gerektirmez.


  • Avantajlar: Robot, hücresel sinyalin olduğu her yerde kontrol edilebilir. Uydu iletişimi mümkündür.
  • Dezavantajları; Hücresel kontrolü ayarlamak zor olabilir - yeni başlayanlar için değil. Her hücresel ağın kendi gereksinimleri ve sınırlamaları vardır. Çevrimiçi hizmet ücretsiz değildir. Genellikle, ne kadar çok veri aktarırsanız, o kadar çok para ödemeniz gerekir. Sistem henüz robotikte kullanım için yapılandırılmadı.

Bir sonraki adım, robotunuzdaki mikro denetleyiciyi tam olarak kullanmaktır. Ve her şeyden önce, sensörlerinden veri girmek için algoritmasını programlamak. Otonom kontrol çeşitli şekillerde uygulanabilir:

  1. çevreden geri bildirim almadan önceden programlanabilir
  2. sensörlerden sınırlı geri bildirim ile
  3. karmaşık sensör geri bildirimi ile

Gerçek otonom kontrol, birçok sensör ve algoritma içerir. Robotun herhangi bir durumda en iyi eylemi bağımsız olarak belirlemesine izin verirler. Şu anda otonom robotlarda uygulanan en karmaşık kontrol yöntemleri görsel ve işitsel komutlardır. Görsel kontrol için robot, komutlarını almak için bir kişiye veya nesneye bakar.


Bir yaprak kağıttan sola dönük bir ok okuyarak bir robotu sola dönecek şekilde kontrol etmek, tahmin edildiğinden çok daha zordur. "Sola dön" gibi bir servis komutu da oldukça fazla programlama gerektirir. "Bana terlikleri getir" gibi birçok karmaşık komutu programlamak artık bir hayal değil. Çok yüksek düzeyde programlama ve çok zaman gerektirmesine rağmen.

  • Faydaları “gerçek” robotiktir.Görevler, tek bir sensörden gelen okumalara dayalı olarak bir ışığın yanıp sönmesi kadar basit olabilir, bir uzay aracını uzak bir gezegene indirmeye kadar.
  • Dezavantajlar sadece programcıya bağlıdır. Robot yapmasını istemediğiniz bir şey yapıyorsa, tek seçeneğiniz vardır. Bu, kodunuzu kontrol etmek, değiştirmek ve değişiklikleri robota yüklemek içindir.

pratik kısım

Projemizin amacı, sensörlerden gelen harici sinyallere dayalı kararlar alabilen otonom bir platform oluşturmaktır. Lego EV3 mikrodenetleyici kullanacağız. Onu tamamen özerk bir platform haline getirmemize izin veriyor. Bluetooth veya kızılötesi uzaktan kumanda ile kontrol edilen yarı otonom.


LEGO EV3 Programlanabilir Tuğla

Bugün radyo kontrollü ile kimseyi şaşırtmayacaksınız. ev yapımı. Ancak, kontrol tuşlarına basmak için bir şekilde “eski moda” olarak kabul etmelisiniz ... Yönetmek çok daha ilginç el sanatları fırça darbeleriyle değil mi? Bu makale, bir Arduino kartı ve birkaç bükülme sensörü kullanarak uzaktan kumandayı nasıl kurabileceğinize dair bir örnek gösterir. PHIRO Pro bir test konusu olarak hareket edecek

Adım 1: İhtiyacınız olan şey

  • Bükme sensörleri;
  • Arduino UNO;

  • Bluetooth modülü HC-05;

  • Eldiven;

  • Süveterler;

  • 9B pil;

  • Cep Kodu uygulaması.

Adım 2: Firmata Standardını Arduino'ya Yükleme

Cep Kodu ile bağlantı kurabilmek için Arduino kartına firmata standardını yüklemek gereklidir. Bu projede Arduino UNO kullanıyoruz, ancak herhangi bir Arduino kartı kullanılabilir.

  • Arduino kartını bilgisayara/dizüstü bilgisayara bağlıyoruz.
  • Arduino ID'de COM Port'u seçin. Araçlar -> Seri Bağlantı Noktası -> Karşılık Gelen COM Bağlantı Noktası
  • Ardından, tahta türünü seçin. Araçlar -> Pano -> Arduino Panonuz
  • Ardından Firmata standardını seçiyoruz. Örnekler -> Firmata -> Standart Firmata
  • "Yükle"ye tıklayın ve kodu panoya yükleyin.

Adım 3: Sensörleri panoya bağlayın ve eldivene takın

Esnek sensörler, bükülmeyi veya eğilmeyi algılamak için kullanılabilen dirençli cihazlardır. Aşağıda Arduino'daki sensörler için bir bağlantı şeması bulunmaktadır. Sensörleri eldivene güvenli bir şekilde takmak için bükülmüş zımba braketleri kullandım, ancak dilerseniz plastik fermuarlı bağları da kullanabilirsiniz.

Adım 4: HC-05 Bluetooth Modülünü Arduino'ya Bağlama

Bluetooth modülünün ve Arduino kartının çıkışlarını şu şekilde bağlıyoruz:

  • HC05 Tx - Arduino Rx
  • HC05 Rx - Arduino Tx
  • Vcc - 5V
  • GND-GND

Adım 5: Arduino'yu Bataryaya Bağlama

Arduino kartına Bluetooth modülü ile güç sağlamak için 9V pil kullanıyoruz. Bu tür bir düzenleme bileğe/bilezik üzerine kolay montaj imkanı ile açıklanmaktadır. Ne kadar kompakt, o kadar iyi.

Adım 6: Cep Kodu Programı

Aşağıda programın kullanım örnekleri verilmiştir. Her şeyden önce, PHIRO Pro'nun Mod 3'te (Bluetooth Modu) olduğundan emin olun. Üstteki ekranın yanındaki mavi LED yanmadan önce PHIRO'daki Mod düğmesine basın.

Program için genel olarak 7 mod bulunmaktadır.

  • İşaret parmağı uzatılır. Farlar kırmızı renkte parlıyor. Program STOP'u gösterir.
  • İşaret ve orta parmaklar uzatılır. Farlar yeşil renkte parlıyor. Program STOP'u gösterir.
  • İşaret, orta ve yüzük parmakları düzleştirilir. Farlar mavi renkte parlıyor. Program STOP'u gösterir.
  • Avuç içi açık. PHIRO ilerliyor. Farlar beyaz parlıyor. Program İLERİ (ileri) gösterir.
  • Avuç içi bir yumruk şeklinde sıkılır. PHIRO durur. Farlar kapalı. Program STOP'u gösterir.
  • Avuç içi yumruk şeklinde sıkılır ve sola yatırılır (telefon sola yatırılır). PHIRO sola döner. Sol far sarı renkte yanıyor. Program SOL (solda) gösterir.
  • Avuç içi bir yumruğa sıkılır ve sağa doğru eğilir (telefon sağa yatırılır). PHIRO sağa döner. Sağ far sarı renkte yanıyor. Program SAĞ (sağ) gösterir.

Adım 7: Son kurulumu gerçekleştiriyoruz

Telefonu kolunuza takmak için bir bileklik kullanabilir veya benim yaptığımı yapabilirsiniz.

Cep telefonum için ucuz bir kılıf aldım, delikler açtım ve Velcro bandı gerdim. Telefonlu bileklik hazır.

Hepsi bu kadar!) İlginiz için teşekkürler)

Arduino tahtası ile çalışma deneyimi kazanmak, tabiri caizse, bir öğrenme deneyimi olarak ve sadece eğlence için bu proje oluşturuldu. Projenin amacı, çeşitli engellerle çarpışmadan otonom olarak hareket edebilen bir araba yaratmaktı.

Adım 1: Bileşenlerin listesi ve projenin maliyeti

1. Radyo kontrollü oyuncak araba (radyo kontrollü).

Bu şey yaklaşık 20 dolar tutuyor, daha fazla harcama imkanınız varsa daha iyisini kullanabilirsiniz.

2. Arduino Uno mikrodenetleyici - 25 $

3. Elektrik motorlarını kontrol etmek için motor kalkanı - 20 $

4. Navigasyon için GPS. Adafruit Ultimate GPS Kalkanı - 50 $

5. Navigasyon için bir pusula olarak manyetometre. Adafruit HMC5883 Manyetometre - 10$

6. Engelleri önlemek için ultrasonik mesafe sensörü. HC-SR04 - 6 $

7. Araç durumunu ve bilgilerini gösteren LCD ekran. LCD Ekran Mavi 1602 IIC, I2C TWI - 6 $ (başka bir tane kullanabilirsiniz)

8. Kızılötesi sensör ve uzaktan kumanda.

9. Arduino taslağı (C++ programı).

10. Montaj platformu olarak ince ahşap levha.

11. Ekmek tahtaları. Biri uzun ve dar, diğeri ise manyetometreyi diğer elemanlardan ayrı olarak monte etmek için küçüktür.

12. Süveterler.

13. Ultrasonik Sensör Montaj Kiti - 12 $

14. Havya ve lehim.

Sonuç olarak, yaklaşık 150 $ aldı ve bu, tüm bu bileşenleri satın aldığınızı varsayar, çünkü bunlardan bazılarına zaten sahip olabilirsiniz.

Adım 2: Şasi ve platform montajı

15 dolara mal olan istenmeyen bir oyuncaktan radyo kumandası çıkarıldı.

Bu arabanın iki motoru var. Bir motor yardımı ile uzaktan kumanda robotun hızını kontrol eder ve diğerinin yardımıyla direksiyon kontrol edilir.

Montaj yüzeyi olarak, üzerine breadboard, Arduino, LCD vb. Piller panonun altına yerleştirilir ve teller açılan deliklerden geçirilir.

Adım 3: Program

Arduino, bir C++ programı ile kontrol edilir.

Kaynak

RC_Car_Test_2014_07_20_001.ino

Adım 4: LCD Ekran

Çalıştırma sırasında ekranda aşağıdaki bilgiler görüntülenir:

1. sıra:

1. TH - Hedef, mevcut yol noktasına rota

2. CH - Robotun mevcut yönü

2. sıra:

3. Err - Pusula yönü, robotun hangi yönde hareket ettiğini gösterir (sol veya sağ)

4. Dist - Mevcut yol noktasına olan odak mesafesi (metre olarak)

3. sıra:

5. SNR - Sonar mesafesi, yani robotun önündeki herhangi bir nesneye olan mesafe

6. Spd - Robot hızı

4. sıra:

7. Mem - Bellek (bayt olarak). Arduino hafızası 2 KB

8. WPT n OF x - Robotun geçiş noktası listesinde nerede olduğunu gösterir

Adım 5: Nesnelerle Çarpışmalardan Kaçının

Robotun engellerden kurtulması için burada ultrasonik bir "Ping" sensörü kullanıldı. Basit Ping kütüphanesinden daha iyi olduğu için Arduino NewPing kütüphanesi ile birleştirilmesine karar verildi.

Kütüphane buradan alınmıştır: https://github.com/fmbfla/Arduino/tree/master/NewPing

Sensör, robotun tamponuna monte edildi.

Uzaktan Kumanda, ver. 0.1.1

(Manuel modda bir tabletten Wi-Fi aracılığıyla robotu uzaktan kontrol edin)

mod OpenComputers için çok amaçlı program

Program, robotun kendisini ve parametrelerini görürken robot üzerinde tam kontrol sahibi olmanızı, birçok işlemi uzaktan gerçekleştirmenizi sağlar.

Örneğin, ulaşılması zor yerlere bir robot sokabilir, ışınlanmadan reaktörden uranyumu boşaltabilir, henüz ulaşamayacağınız basit bir yapı inşa edebilir veya tam tersi bir şey getirebilirsiniz. Robot tam kontrolünüz altında.

Programın eğlenceli bir uygulaması oyunculara saldırmaktır. Yapılandırma ayarlarına göre robotlar, özel olanı yok etmeseler de, nesnelerin kullanımı, açma ve kapama düğmeleri, kolları ve mekanizmaları ve araçları ile ilgili eylemleri başkasının özelinde gerçekleştirebilir. Oyuncu oyunda değilse ve her şeyi çatıdan gizlemediyse veya korumalar kurmadıysa ve saldırganları algılamadıysa, saldırı yapmak ve oyuncunun tüm damıtıcılarını, dizel yakıtını ve yel değirmenlerini yıkmak mümkündür.

Reaktör odasını kurbanın duvarına vidalayabilir, oraya 4 uranyum çubuğu itebilir, robottaki redstone'u açabilir ve dikkatsiz oyuncu-kurban tyutelka'nın evini kilitlemişse duvarı birkaç blokta havaya uçurabilirsiniz. oyuncuların genellikle yaptığı gibi, duvarın kenarı boyunca tyutelka'da =).

Ayarlardaki BT üzerindeki reaktör, 2-4 blok yarıçapındaki blokları yok eder. Sığınaktayken ve hiçbir şekilde görünmezken kurbanın evine gizlice girme şansınız var.

Program kodu (en son):

TABLET:(pastebin b8nz3PrH tabletRC.lua olsun)

ROBOT:(pastebin 7V2fvm7L robotRC.lua'yı alır)

Eski sürümler (eski):

Robot ve tabletin konfigürasyonu için gereksinimler ( bağlantılı haritaya göre, gereklidir, robotta envanter kontrolörü de gereklidir, gerisi isteğe bağlıdır. İşaretleri atabilir ve kova denetleyicisini doldurabilir, biraz çizgi ve ovma sıvıları ekleyebilir vb. Programda henüz ChL kullanılmamaktadır. Boyun için kırmızı bir tahta, bir mıknatıs, büyük bir envanter oldukça arzu edilir):

Tablet (yüklü işletim sistemi ile hemen alın):

Robot (şimdilik, CL'yi reddedebilir ve panoların denetleyici genişleticisini itebilirsiniz. Ardından, gerekirse WF kartı veya INET kartı ile robotu anında itebilirsiniz):

Merhaba Habrahabr! 11 Haziran akşamı oturmuş film izliyordum. Beklenmedik bir şekilde, tanımadığım bir kadının yeni arayışları için bir robot yapma önerisiyle bana yazdığını buldum. Sonuç olarak, bulmacaları çözmeniz, önbellekleri keşfetmeniz, ipuçlarını doğru bir şekilde uygulamanız, mevcut şeyleri kullanmanız ve sonunda anahtarları almanız ve kapıları açmanız gerekiyor... Ayrı bir program kullanarak bilgisayardan kontrol edilen bir robot yapmam gerekiyordu. Bazı problemler hakkında şüphelerim vardı, örneğin: zamanım olacak mı ve kablosuz veri aktarımını tam olarak nasıl yapacağım (daha önce sadece NXT'de kablosuz veri aktarımı ile ilgilendim)? Artıları ve eksileri tarttıktan sonra kabul ettim. Ondan sonra veri aktarımı hakkında düşünmeye başladım. Robotu hızlı bir şekilde yapmak gerektiğinden, örneğin Delphi'yi hatırlamak ve ustalaşmak için zaman yoktu, bu yüzden komut gönderecek bir modül yapma fikri ortaya çıktı. Bilgisayarın yalnızca COM bağlantı noktasına veri göndermesi gerekir. Bu yöntem garip, ama en hızlısı. Burada anlatmak istiyorum. Ayrıca radyo kontrollü araba yapmanıza yardımcı olacak 3 program ekleyeceğim.
Vericinin montajı ve programı.
Arduino önyükleyicili oldukça yaygın bir ATMEGA 328P-PU mikro denetleyicisi ve nRF24L01 yongasına dayalı bir radyo modülü olan DFrobot'tan FTDI Basic Breakout 5 / 3.3V'den bir bilgisayar için bir modül yaptım. Aslında, bu sadece bir radyo modülüne sahip bir Arduino Uno. Neyse ne. Radyo modülünün hemen fark etmediğim bir özelliği var: giriş voltajı 3 ila 3,6 volt aralığında olmalı (ona 5 volt uygulamak onu öldürmez ama çalışmaz), üst limit mantıksal birim 5V'dir. Bu, radyo modülünü megaya bağlamak için 3.3V ile 5V arasında bir seviye dönüştürücüye ihtiyacınız olmadığı, ancak bir 3.3V sabitleyici takmanız gerektiği anlamına gelir. FTDI, radyo modülünü beslediğim yerleşik bir sabitleyiciye sahip.

Modülün kendisi şöyle görünür (montajın içinde ve içinde):

Program, başlatma, başlatma mesajı ve kontrol programından gelen komutların işlenmesinden oluşur. Yani benim durumumdaydı. Mirf kütüphanesinin ana komutları:

#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
Bu kütüphaneler radyo modülünün çalışması için gereklidir.

Mirf.csnPin = 4 - radyo modülünün ve MC'nin "iletişim izninden" sorumlu pinin numarasını ayarlar
Mirf.cePin = 6 - radyo modülünün (alıcı / verici) çalışma modundan sorumlu pin sayısını ayarlar
Mirf.spi = &MirfHardwareSpi - SPI hattını ayarlar
Mirf.init() - radyo modülünü başlatır
Mirf.payload = 1 - bir mesajın bayt cinsinden boyutu (varsayılan 16, maksimum 32)
Mirf.channel = 19 - kanalı ayarlar (0 - 127, varsayılan 0)
Mirf.config() - aktarım parametrelerini ayarlar


Mirf.setTADDR((byte *)"serv1") - radyo modülünü verici moduna geçirir
Mirf.setRADDR((byte *)"serv1") - radyo modülünü alıcı moduna geçirir

Mirf.send(data) - bayt türünde bir dizi gönderir
Mirf.dataReady() - alınan verilerin işlenmesinin sonunu bildirir
Mirf.getData(data) - alınan verileri veri dizisine yaz

Verici kodunu ekliyorum.

verici programı

#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek

Karakter aktif;
bayt verisi;

geçersiz kurulum()
{
Seri.başla(19200);

Mirf.csnPin = 4;
Mirf.cePin = 6;

Mirf.init();
Mirf.payload = 1;
Mirf.kanal = 19;
Mirf.config();

Mirf.setTADDR((bayt *)"serv1");

//işin başlangıcı hakkında sinyal mesajı
veri=7;
Mirf.send(veri);
gecikme(200);
}

Geçersiz döngü()
{
if (Serial.available()) //Veri okunmaya hazır ise
{
aktif=Serial.read(); // Değişkene veri yazma
}

Eğer (etkin=="2")
{
veri=2;
}

Eğer (etkin=="3")
{
veri=3;
}

Eğer (etkin=="4")
{
veri=4;
}

Eğer (etkin=="5")
{
veri=5;
}

Eğer (etkin=="6")
{
veri=6;
}

Mirf.send(veri); // Veri gönder
while(Mirf.isSending()); // Verilerin gönderilmesini bekleyin
}

Kontrol programı.

İlginç bir şey var - İşleme. Sözdizimi Arduino ile aynıdır, sadece void loop() yerine void draw() vardır. Ancak seri port ile çalışmanıza izin veren işleme Seri kütüphanesi ile benim durumumda daha da ilginç hale geldi. Spurkfun web sitesindeki dersleri okuduktan sonra bilgisayara bağlı arduino üzerindeki ledin yanıp sönmesi ile mouse tıklaması ile oynadım. Ondan sonra robotu klavyeden kontrol etmek için bir program yazdım. Okları kullanarak kontrol kodunu ekliyorum. Prensip olarak, içinde olağandışı bir şey yoktur.

Makine kontrol programı

işleme.serisini içe aktar.*;
cc.arduino'yu içe aktar*;

Seri myPort;
PFont f=createFont("LetterGotikStd-32.vlw", 24);

geçersiz kurulum()
{
boyut(360, 160);
vuruş(255);
arkaplan(0);
textFont(f);

String portName = "XXXX"; // Buraya portunuzun adını yazmanız gerekiyor
myPort = yeni Seri(bu, portAdı, 19200);
}

Geçersiz beraberlik() (
if(keyPressed==yanlış)
{
açık();
myPort.write("6");
println("6");
}
}

Void tuşuBasılmış()
{
// 10 - girin
// 32 - boşluk
// 37/38/39/40 - tuşlar
açık();

doldur(255);
textAlign(CENTER);
//metin(anahtarKodu, 180, 80);

Anahtar (anahtar Kodu)
{
vaka 37:
text("Edem vlevo", 180, 80);
myPort.write("1");
kırmak;

Vaka 38:
text("Edem pryamo", 180, 80);
myPort.write("2");
kırmak;

Vaka 39:
text("Edem vpravo", 180, 80);
myPort.write("3");
kırmak;

Vaka 40:
text("Edem Nazad", 180, 80);
myPort.write("4");
kırmak;

varsayılan:
text("Taköy kommandı ağı", 180, 80);
myPort.write("6");
kırmak;
}
}

alıcı programı

Bu programın başlatılması, verici programının yalnızca bir satırda başlatılmasından farklıdır. Sonsuz döngüdeki anahtar komut Mirf.getData(data). Ayrıca alınan komut, robotun herhangi bir işlemine karşılık gelen sayılarla karşılaştırılır. O halde robot tam olarak komutlara göre hareket eder. Makine alıcısının program kodunu ekliyorum.

makine programları

#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek
#Dahil etmek

geçersiz kurulum()
{
Seri.başla(9600);

PinMode(13, ÇIKIŞ); //NEDEN OLMUŞ

Mirf.csnPin = 10;
Mirf.cePin = 9;
Mirf.spi=
Mirf.init();
Mirf.payload = 1;
Mirf.kanal = 19;
Mirf.config();
Mirf.setRADDR((bayt *)"serv1");
}

Geçersiz döngü()
{
bayt verisi;

If(!Mirf.isSending() && Mirf.dataReady())
{
Mirf.getData(veri);
Seri println(veri);
}

Anahtar (veri)
{
dava 1:
motorlar(-100, 100); // Sola çevirin
kırmak;

2. Durum:
motorlar(100, 100); // Düz gidin
kırmak;

Durum 3:
motorlar(100, -100); // Sağa dönün
kırmak;

Durum 4:
motorlar(-100, -100); // geri gitmek
kırmak;

varsayılan:
motorlar(0, 0); // ayakta
kırmak;
}

gecikme(50);
}

Çözüm.

Tüm bunlardan ne çıktı:

Bu robotu Klostrofobi için yaptım. Gerçekte farklı şehirlerde görevler yürütüyorlar ve bu görevlerden sadece biri için organizatörlerin radyo kontrollü bir kazıcı robota ihtiyacı vardı. Beğendim. Bu elbette zararlıdır, çünkü dizüstü bilgisayara yerleşik iletişim araçlarını kullanarak kontrolün arka planına karşı, ancak diğer yandan, çok hızlı ve sorunsuz bir şekilde yapıldı. Umarım bu makale benzer ve belki de daha zor bir şey yapmaya yardımcı olur. İşte kim isterse.

Etiketler: Etiketler ekle