Yakınımda Tutun (digilent Robot Project): 6 Adım

Yakınımda Tutun (digilent Robot Project): 6 Adım

İçindekiler:

Anonim

Bu, göstermek istediğimiz ilk robot projemiz. Planımız, belirli bir ortamda hareket edebilen bir robot inşa etmektir. Amaç yaşlıların hayatını kolaylaştırmaktır. Robotun küçük, önemli şeyleri belirli noktalara taşıyabilmesi gerekir.

Projenin ilk sürümüdür.

Gereçler:

1. Adım: Malzemeler

Kullandığımız

-a chipKit Max32

- bir roomba irobot

- bir Pmod dijital pusula HMC5883L

- bir PmodWifi MRF24WG0MA

- 4 adet PmodMAXSONAR Ultrasonik Telemetre LV-EZ1

- 4 adet n kanal mosfet

- 8 adet 200 Ohm direnç

- breadboard

- malzemeleri bağlamak için bazı teller

ve sonunda bütün bunlar robotun tepesindeki plastik bir kutuya yerleştirildi.

Adım 2: Temel Teori

haritalama

Robot, Descartes koordinat sisteminde çevreyi idare eder. Robotun bulunduğu yerde, bu nokta (0,0) noktasıdır. Koordinat sistemine bir ızgara ağı hayal ediyoruz ve robotun bir ızgara ortasında olması gerekiyor. Robotun çapı 35 cm olan bir ızgaradır. Kılavuz olarak düğüm diyoruz. Robot, komşu düğümünü eşler ve bunun serbest ya da değil olduğunu tanımlar. Serbestse, robot onu kaydeder ve oraya taşınması için ortamından serbest bir düğüm seçer. Bu etkinlik, etkinleştirme düğümü bulunana kadar devam eder. Sonunda çevre haritalandı. Düğümlerden bir veritabanı oluşturuyoruz. Bir düğüm bir çift (x, y) ve mevcut komşu düğümleri içerir. Veritabanına göre, sezgisel arama algoritmasıyla (ilk önce genişlik) en kısa iki yol arasında arama yapabiliriz ve bunlardan biri robotun konumu olacaktır.

Adım 3: ChipKit Modülü

ChipKit, modülün temelini oluşturur, çünkü robotun hareketini gerçekleştirir ve sensörlerden gelen verileri işler. Veritabanını oluşturur ve korur. Veritabanını düğümlerden oluşturmak için gerçekte sahip olduğumuzdan daha fazla belleğe ihtiyacımız var. Bu yüzden ilk önce, yığının boyutunu belirledik.

#define CHANGE_HEAP_SIZE (size) __asm__ uçucu (" t.globl _min_heap_size n t.equ _min_heap_size," #size " n")

CHANGE_HEAP_SIZE (0x5000); harici __attribute __ ((bölüm ("linker_defined"))) char _heap; extern __attribute __ ((bölüm ("linker_defined"))) char _min_heap_size;

Adım 4: Sensörler

Bir sensörün ölçüm aralığı 15,24 cm - 6,45 m'dir. 4 sensör kullanıyoruz ve aynı anda çalışmalarını sağlarsak birbirlerini karıştırırlar. Bu yüzden N chanel mosfet devre kullanıyoruz.

Veri okuma işlemi:

- Öncelikle hiçbir sensöre güç gelmiyor çünkü tüm Mosfet'ler aktif durumda.

- mosfet'ten biri sensöre güç vermesi için düşük ayarlanmış

- sensörünün RX’ine ping atmak

- verileri oku

- mosfet yüksek ayarlandı

Adım 5: Roomba Robot

Bu projenin en kolay kısmı. Robot ve chipKit arasındaki iletişim seri iletişimdir. Bu, bir RX ve bir TX pimi kullanır. Robotun içinde bir batarya var. ChipKit pilden güç alır. Resimde vurgulanan çizgiler kullanılabilir pinleri gösterir. Robot ve chipKit arasındaki iletişim asenkrondir. Robot çalışma kodları ile kontrol edilebilir. Örneğin, 137 opcode doğru parametrelerle yazılacaksa robot hareket edecektir. Roomba kütüphanesi bu kodları içerir.

Adım 6: Modüllerin Bağlanması

Robotun aküsü chipKit'in 5 V çıkışına bağlı. Robotun topraklarından biri, ortak toprağa bağlanır. 2 seri haberleşme pimi chipKit'e bağlanır: robotun RX'i (pin 1) chipKit'in TX1'e (pin 18) ve robotun TX'i (pin 2) chipKit'in RX1'e (pint 19) bağlanır.

4 MaxSONAR topraklaması ortak toprağa bağlanır. RX pinleri 82, 79, 76, 73 pinlere bağlanır. PWM pinleri 81, 78, 75, 72 pinlere bağlanır. 4 mosfet sonarların gücünü kanıtladı. MOSFET'leri boğarak sonarları açıp kapatabiliriz.

MOSFET geçit pimleri, 200 Ohm 4 rezistanslı 11, 8, 5, 2 pime bağlanmıştır. Mosfetlerin kaynağı sonarların 5 V pinlerine ve mosfetlerin drenajları 5 V aküye bağlanır.

Pusula, chipKit 'SCL ve SDA benzer pimlerine bağlanan SCL ve SDA pinlerine sahiptir.