Snap4Arduino – Czujnik odległości
Czujnik odległości pozwala robotowi wykrywać znajdujące się przed nim przeszkody. W Lo Fi Robocie zdecydowaliśmy się na wykorzystanie czujników SHARP (dokładnie GP2Y0A41SK0F) ich główną zaletą jest prostota podłączenia i odczytywania pomiarów oraz ich stabilność.
Czujnik podłączmy do Arduino przy pomocy trzech przewodów, najlepiej połączonych wtyczką JST 3-pin.
Wyjścia czujnika to odpowiednio:
1. Vo – sygnał pomiarowy – odpowidający odległości przeszkody od czujnika
2. GND – minus (-) – masa – uziemienie czujnika – podłączamy do GND Arduino lub niebieskiej listwy zasilającej na płytce prototypowej
3. Vcc – zasilanie czujnika – podłączmy do +5V
Sygnalizacja świetlno-dźwiękowa
Prostym przykładem wykorzystania czujnika odległości może być skonstruowanie sygnalizacji alarmowej, która dawać będzie sygnał świetlny i dźwiękowy w momencie wykrycia przeszkody z częstotliwością proporcjonalną do odległości przeszkody.
Do skonstruowania sygnalizacji potrzebujemy:
- Arduino
- Płytka prototypowa i kabelki
- Czujnik odległości SHARP
- Dioda LED
- Buzzer – czyli mały głośniczek z wbudowanym generatorem
- Komplet części drewnianych + śrubki i nakrętki do zbudowania ramy pojazdu
- Dwa komplety części drewnianych do skonstruowania koła + odwa ringi 90mm
- Dwa silniki serwo 360
- Płytka prototypowa + kabelki
- Arduino
- Czujnik odległości – SHARP GP2Y0A41SK0F
- Przewód JST 3pin – do podłączenia czujnika odległości
- Obrotowe kółko do mebli
- Kilka kolorowych diod i oporników również się przyda
- Arduino – dowolny model, w przypadku zestawu NA KOŁACH jest to LEONARDO
- Płytka prototypowa + kabelki
- Czujnik odległości SHARP GP2Y0A41SK0F (lub inny model ANALOGOWEGO czujnika odległości)
- Przewód JST 3pin
- Dwa silniki serwo 360
- Zasilanie – 4 baterie AA lub zasilanie przez kabel USB
Podłączenie czujnika SHARP jest bardzo proste, do czujnika wepnij kabelek JST 3pin a następnie jego przewody połącz odpowiednio:
1. Czerwony – +5V
2. Czarny – GND
3. Żółty – pin anologowy AO (lub jeśli wolisz jakiś inny pin analogowy)
Nasza sygnalizacja składać się będzie z dwóch migających diod LED (wybór koloru zależy od Ciebie!) oraz tzw. buzzera.
Buzzer wygląda jak mały głośniczek, różni się jednak tym, że posiada dodatkowo wbudowany tzw. generator, emitujący charakterystyczny piszczący dźwięk o wysokiej częstotliwości. Aby buzzer zaczął piszczeć wystarczy podłączyć go do zasilania.
Podłączenie elektroniczne naszej instalacji alarmowej wygląda następująco:
1. Buzzer (nóżkę oznaczoną +) podłączamy do pinu cyfrowego nr 4
2. Za buzzerem szerogowo wpinamy diodę led (minus buzzera do plusa diody), krótszą nogę diody wpinamy do masy, tym razem dioda nie potrzebuje opornika, funkcję zabezpieczenia przed przepaleniem pełni buzzer.
Programowanie
Podłącz Arduino do komputera i połącz go ze Snap4Arduino
W pierwszej kolejności zaprogramujemy prostą sygnalizację polegającą na uruchomieniu buzzera i diody w momencie gdy wartość odczytana z czujnika przekroczy określony poziom (w tym wypadku 100).
W zakładce DANE kliknij przycisk UTWÓRZ ZMIENNĄ i nazwij ją ODLEGŁOŚĆ
Konstrujemu następujący algorytm:
1. Po uruchomieniu programu (zielona flaga) ustaw pin cyfrowy 4 jako DIGITAL OUTPUT (wyjście)
2. W pętli ZAWSZE odczytujemy wartość z pinu analogowego nr 0 (do którego podłączony jest czujnik) i przypisujemy ją do zmiennej ODLEGŁOŚĆ
3. Jeżeli wartość zmiennej ODLEGŁOŚĆ przekroczy 100 ustawiamy wyjście na pinie 4 jako PRAWDA (włączamy buzzer i diodę) w innym wypadku ustawiamy ją jako FAŁSZ (wyłączamy buzzer i diodę)
Po uruchomieniu programu zwróć uwagę że w prawym górnym rogu ekranu pojawiło się pole zmiennej ODLEGŁOŚĆ, w którym na bieżąco wyświetlane są wartości odczytane z czujnika odległości, wartość ta powinna się zmieniać w zakresie 2-600 jednostek. Zwróć uwagę, że nie są to rzeczywiste pomiary odległości w centymetrach, żeby je uzyskać należałoby wyniki odpowiednio przeliczyć, proces ten nazywa się kalibracją czujnika, w tym wypadku nie jest nam ona potrzebna.
W momencie zbliżenia ręki do czujnika, gdy wartość odległości przekroczy 100, buzzer i dioda zostają uruchomione, gdy oddalimy rękę (odległość spada poniżej 100) buzzer przestaje piszczeć.
W dalszej kolejności rozwińmy nasz program tak aby buzzer zamiast jednostajnego pisku wykonywał sekwencję “piknięć”, której tempo (częstotliwość) zależeć będzie od odległości przeszkody wykrytej przez czujnik odległości
Modyfikujemy nasz program w następujący sposób:
1. Tworzymy nową zmienną TEMPO, której wartość będzie zależna od zmiennej odległość ale przeliczonej odpowiednio tak aby zmieniała się ona w zakresie od 0.2 do 0.1 i zmniejszała się w momencie zbliżania przeszkody do czujnika.
2. W pętli JEŻELI dodajemy bloki CZEKAJ z wartością odpowiadającą zmiennej TEMPO (czyli zależnie od odległości przeszkody czekaj od 0.2 do 0.1 sekundy) i podobnie jak w przykładzie BLINK włączamy buzzer, czekamy wartość TEMPO, wyłączamy buzzer, czekamy wartość TEMPO, dzięki czemu buzzer i dioda będą cyklicznie pulsować a częstotliwość pulsowania zależy od zmiennej TEMPO.
Robot na kołach
Co potrzebujesz do zbudowania podstawowego robota-pojazdu:
Pliki do ściągnięcia
Części drewniane – pojazd NA KOŁACH
Koło ver.2 – części drewniane
Model SKETCHUP
Konstrukcja
1. Zamontuj silniki serwo w ściankach bocznych pojazdu.
2. Połącz ścianki boczne odpowiednimi klockami z wypustami.
3. Na górze pojazdu przymocuj element z płytką prototypową i Arduino. Z przodu pojazdu zamocuj płaski klocek 6×12 otworów zklockiem “uśmiechem”
4. Od spodu pojazdu, w tylnej jego części włóż koszyk na baterie, zamocuj wsporniki i kółko obrotowe.
3. Zmontuj uchwyt do czujnika odległości
4. Od przodu pojazdu zamontuj czujnik odległości. Do silników zamontuj koła. Podstawowa konstrukcja pojazdu jest gotowa.
Elektronika
Robot pojazd sterowany jest przy pomocy czujnika odległości, dzięki któremu może wykrywać przeszkody pojawiające się na jego drodze i je omijać.
Do skonstruowania układu elektronicznego potrzebujemy:
UWAGA!
Zanim podłączysz serwomotory do zasilania, zapoznaj się dokładnie z działaniem płytki prototypowej i przerób wszystkie ćwiczenia z działu PODSTAWY.
Błędne podłączenie silników może skutkować ich uszkodzeniem.
Zanim podłączysz baterie do płytki prototypowej SPRAWDŹ DOKŁADNIE CZY PODŁĄCZASZ JE ZGODNIE Z POLARYZACJĄ POZOSTAŁYCH ELEMENTÓW!
Skunstruuj układ elektroniczny jak na poniższym schemacie.
1. Piny zasilające Arduino podłącz do listew zasilających płytki prototypowej (5V do czerwonej listwy, GND do niebieskiej listwy).
2. Koszyk z bateriami podłącz do listew zasilających płytki prototypowej.
3. Silniki SERWO podłącz w standardowy sposób – przewód czerwony do +5V, brązowy do GND, żółty do pinów cyfrowych Arduino nr 9 i 10 .
4. Do czujnika odległości wepnij wtyczkę JST a następnie podłącz odpowiednie przewody: czerwony do +5V, czarny do GND, żółty (sygnał pomiarowy) do pinu analogowego A0
Programowanie
Jeśli wszystkie moduły robota (Arduino, czujnik odległości i silniki) są już ze sobą odpowiednio połączone, możemy przystąpić do programowania.
Snap4Arduino
Przygotowanie:
1. Podłącz Arduino do komputera.
2. Upewnij się, że na Arduino wgrany jest skrypt STANDARD FIRMATA (zestaw na kołach wysyłamy z wgranym skryptem n Arduino)
3. Uruchom Snap4Arduino i połącz go z Arduino
Program:
1. Po kliknięciu zielonej flagi ustaw cyfrowe piny 9 i 10 jako SERVO
2.W zakładce DANE stwórz zmienną ODLEGŁOŚĆ.
3. Do bloku z zieloną flagą dodaj pętlę ZAWSZE i w jej środku umieść blok, który będzie zamieniał wartość zmiennej ODLEGŁOŚĆ na wartość odczytaną z pinu analogowego O – czyli odbieraną z czujnika odległości.
3. Uruchom program (naciśnij zieloną flagę), zwróć uwagę jak zmienia się wartość zmiennej ODLEGŁOŚĆ gdy zbliżasz rękę do czujnika. Gdy nic nie znajduje się w zasięgu czujnika wartość zmiennej powinna wynosić od 0 do ok 100, gdy zbliżysz rękę na ok. 25cm wartość zmiennej ODLEGŁOŚĆ powinna wynosić ok. 120-160, gdy zbliżysz na ok 5cm powinna wzrosnąć do ok 400-600.
ŚLEDZENIE
Możemy przystąpić do programowania ruchu. Na początku zaprogramujmy prosty mechanizm śledzenia.
Jego algorytm będzie następujący:
1. Kiedy czujnik nic nie wykrywa (ODLEGŁOŚĆ mniejsza od 100) robot stoi w miejscu
2. Gdy coś pojawia się w zasięgu wzroku czujnika (ODLEGŁOŚĆ większa od 100 i mniejsza od 300) robot stara się do tego obiektu zbliżyć (jedzie do przodu).
3. Gdy robot zbliży się do przeszkody odpowiednio blisko (ODLEGŁOŚĆ > 300) robot staje w miejscu.
W Snapie nasz program wyglądać będzie następująco:
Zwróć uwagę na środkowy krok, gdy robot powinien iść do przodu. Aby obydwa koła obracały się do przodu, silniki muszą kręcić się W PRZECIWNYCH KIERUNKACH ponieważ w konstrukcji ustawione są w lustrzanym odbiciu, dlatego silnik podłączony do pinu 9 ustawiony jest na obrót w kierunku przeciwnym do ruchu wskazówek zegara (Counter-clockwise) a silnik podłączony do pinu numer 10 obraca się w kierunku zgodnym z ruchem wskazówek zegara (Clockwise). Jeśli w Twoim wypadku takie ustawienie powoduje obracanie się kół do tyłu poprostu odwróć kierunki obrotu silników.
OMIJANIE PRZESZKODY
Algorytm prostego omijania przeszkód jest podobny do przedstawionego powyżej. Można go opisać następująco:
1. Jeśli nic nie znajduje się w polu widzenia czujnika (ODLEGŁOŚĆ < 150) jedź do przodu. 2. Kiedy zauważysz przeszkodę (150 < ODLEGŁOŚĆ < 300) skręcaj w lewo. 3. Jeśli przeszkoda jest bardzo blisko (ODLEGŁOŚĆ > 300) cofaj się.