Keep Close to Me (Digilent Robot Project): 6 kroków

Keep Close to Me (Digilent Robot Project): 6 kroków

Spisu treści:

Anonim

To nasz pierwszy projekt robota, który chcielibyśmy pokazać. Naszym planem jest zbudowanie robota, który może poruszać się w określonym środowisku. Celem jest ułatwienie życia seniorów. Robot musi być w stanie przenosić małe, ważne rzeczy do określonych punktów.

To pierwsza wersja projektu.

Kieszonkowe dzieci:

Krok 1: Materiały

Użyliśmy

- chipKit Max32

- Irobot Roomba

- kompas cyfrowy Pmod HMC5883L

- PmodWifi MRF24WG0MA

- 4 szt. Dalmierza ultradźwiękowego PmodMAXSONAR LV-EZ1

- 4 kawałki mosfet na kanale n

- 8 sztuk rezystora 200 Ohm

- deska do krojenia chleba

- niektóre przewody do podłączenia materiałów

i wreszcie wszystkie te rzeczy znajdują się w plastikowym pudełku na górze robota

Krok 2: Podstawowa teoria

Mapowanie

Robot obsługuje środowisko w układzie współrzędnych Kartezjusza. W miejscu, w którym znajduje się robot, punktem jest punkt (0,0). Wyobrażamy sobie siatkę siatki do układu współrzędnych, a robot musi znajdować się w środku siatki. Siatka ma 35 cm, czyli średnicę robota. Siatkę nazywamy węzłem. Robot mapuje swój sąsiedni węzeł i definiuje, że jest on wolny lub nie. Jeśli jest wolny, robot zapisuje go i wybiera wolny węzeł ze swojego środowiska, aby się tam przenieść. To działanie jest kontynuowane, dopóki nie ma węzła aktywacji. Wreszcie środowisko jest mapowane. Budujemy bazę danych z węzłów. Jeden węzeł zawiera parę (x, y) i dostępne węzły sąsiednie. Zgodnie z bazą danych możemy wyszukiwać między dwoma dowolnymi punktami najkrótszą trasą z heurystycznym algorytmem wyszukiwania (najpierw szerokość), a jednym z nich będzie pozycja robota.

Krok 3: Moduł ChipKit

ChipKit jest głównym modułem, ponieważ obsługuje ruch robota i przetwarza dane z czujników. Buduje i utrzymuje bazę danych. Potrzebujemy więcej pamięci, aby zbudować bazę danych z węzłów, niż mamy w rzeczywistości. Z tego powodu po pierwsze nadefiniowaliśmy rozmiar sterty.

#define CHANGE_HEAP_SIZE (rozmiar) __asm__ volatile (".globl _min_heap_size n.equ _min_heap_size," #size "n")

CHANGE_HEAP_SIZE (0x5000); extern __attribute __ ((sekcja ("linker_defined")))) char_heap; extern __attribute __ ((sekcja ("linker_defined")))) char _min_heap_size;

Krok 4: Czujniki

Jeden zakres pomiarowy czujnika wynosi 15,24 cm - 6,45 m. Używamy 4 czujników i jeśli sprawimy, że będą działać jednocześnie, będą się wzajemnie mylić. Dlatego używamy obwodu N chanel mosfet.

Proces datareadingu:

- po pierwsze, żaden czujnik nie ma mocy, ponieważ wszystkie mosfety są aktywne wysoko.

- jeden z ustawionych nisko mosfet, więc czujnik ma moc

- pinguj czujnik RX

- przeczytaj dane

- zestaw mosfet wysoko

Krok 5: Roomba Robot

To najłatwiejsza część projektu. Komunikacja między robotem a chipKitem to komunikacja szeregowa. To używa RX i pinów TX. W robocie jest bateria. ChipKit pobiera energię z baterii. Na obrazku podświetlone linie pokazują przydatne szpilki. Komunikacja między robotem a chipKitem jest asynchroniczna. Robot można kontrolować za pomocą kodów operacyjnych. Na przykład, jeśli opcode 137 zostanie zapisany z prawidłowymi parametrami, robot się poruszy. Biblioteka Roomba zawiera te kody.

Krok 6: Połączenie modułów

Bateria robota jest podłączona do wyjścia 5 V chipKit. Jedna z ziemi robota jest podłączona do wspólnej masy. 2 szeregowe piny komunikacyjne są podłączone do chipKit: RX robota (pin 1) jest podłączony do TX1 chipKit (pin 18), a TX robota (pin 2) do RX1 chipKit (pint 19).

4 Ziemia MaxSONAR jest podłączona do wspólnej masy. Piny RX są podłączone do 82, 79, 76, 73 pinów. Piny PWM są podłączone do 81, 78, 75, 72 pinów. 4 mosfet udowodnić moc sonarów. Dzięki tranzystorom MOSFET możemy włączać i wyłączać sonary.

Wtyki bramki MOSFET są podłączone do 11, 8, 5, 2 pinów przez rezystory 200 Ohm 4. Źródło mosfetów jest podłączone do 5 V pinów sonarów, a dreny Mosfets podłączane są do baterii 5 V.

Kompas ma styki SCL i SDA, które łączą się z podobnymi pinami SCK i SDA chipKit.