Spisu treści:
- Kieszonkowe dzieci:
- Krok 1: Materiały
- Krok 2: Podstawowa teoria
- Krok 3: Moduł ChipKit
- Krok 4: Czujniki
- Krok 5: Roomba Robot
- Krok 6: Połączenie modułów
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.