Blog (30)
Komentarze (5.6k)
Recenzje (0)

Sterowane autko z Arduino

@mikolaj_sSterowane autko z Arduino13.07.2015 22:53

Projekt autka z wykorzystaniem platformy zdalnie sterowanego za pomocą telefonu komórkowego chodził mi od jakiegoś czasu po głowie. Niestety znalazłem czas na realizację projektu dopiero na urlopie. To dobra okazja, żeby posiedzieć trochę z dzieckiem i zrobić z nim zabawkę. Jasne, że znacznie ładniejsze sterowane autko można kupić gotowe, bez wysiłku i straty czasu. Tym bardziej, że koszt samodzielnego złożenia pojazdu nie jest wcale niższy od zakupu nowego, a do tego trzeba w to włożyć sporo wysiłku. Po co zatem się wysilać? Poza satysfakcją z samodzielnego wykonania dochodzi możliwość dowolnego oprogramowywania pojazdu oraz rozbudowy. W każdej chwili jeśli coś się popsuje mogę wymienić zużyty element nowym. Ale w mojej opinii najważniejsze jest kontakt z dzieckiem i przykład oraz zachęta dla niego, że można i warto robić coś samodzielnie. Fakt, że dziecko niewiele mogło pomóc, ale za to frajda z zabawy jest chyba większa niż z gotowego pojazdu ze sklepu.

Potrzebne elementy

Początkowo próbowałem zrobić podwozie robota z klocków Lego. Jednak mają one to do siebie, że nie są zbyt trwałe. Trudno jest tak umocować silniki, aby przy uderzeniu w przeszkodę całość konstrukcji nie rozpadła się. Potrzebne byłyby zapewne silniczki zalane w plastiku z Mindstorma, ale koszt ich jest zbyt wysoki. Postanowiłem kupić gotowe podwozie z popularnego serwisu aukcyjnego:

Papierową naklejkę należy zdjąć, a następnie całość złożyć zgodnie z instrukcją. Wszystko skręca się dość prosto, poza jedną przeszkodą otóż niestety Chińczycy nie są zbyt solidni i kątowniki do umocowania silniczka nie pasowały do wyciętych dziurek. Trzeba było popracować trochę, aby je powiększyć.

Po zmontowaniu całości samochodzik wygląda następująco:

Sercem pojazdu może być dowolne Arduino, w moim przypadku użyłem klona Arduino Nano. Jest ono bardzo małe, nie zajmuje wiec dużo miejsca, ma złącze USB i nie zużywa dużo prądu, a ilość pinów jest wystarczająca. Jako sterownika silników użyłem: UNO MEGA2560 R3 Mini L293D Motor Driver, kupiony z Chin (popularny zagraniczny serwis aukcyjny). Ma on tę zaletę, że może posłużyć jako zasilacz dla naszego Arduino. Obsługuje dwa kanały. Należy przylutować kabelki do silników i połączyć prawą stronę do kanału A, a lewą do kanału B (łącząc po dwa kable). Wyjście VCC i GND łączymy z Nano do pinów: 5V znajdującego się obok A7 oraz dwa piny dalej GND. Do VIN i GND obok wyjść na silniki podłączamy zasilanie bateryjne (VIN jako +). Prąd dostarcza kołyska 6 paluszków akumulatorków 1,2V. Sterowanie silników odbywa się przez piny D5, D6, D9, D10 podłączone do pinów sterownika IN1, IN2, IN3, IN4 (dwa silniki * przód i tył). Te piny Nano pozwalają na użycie PWMu. Do połączenia z telefonem po bluetooth użyłem popularnego modułu HC-05. Wymaga on zasilania 3,3V podłączonego z Arduino. Piny RX i TX tego modułu podłączamy do pinów A7 i A8. W Arduino IDE potrzebujemy do komunikacji biblioteki Software Serial, którą musimy ściągnąć i zapisać w katalogu lib.

Sterowanie

Potrzebujemy programu na telefon z Androidem, który będzie łączył się po bluetooth z autem. Użyłem do tego aplikacji Arduino Controll Car.

Działa ona w prosty sposób, wysyłając litery odpowiadające klawiszom po ich wciśnięciu (a - naprzód, e - tył, b - prawo, d - lewo, c - stop). Wyłapując je w aplikacji na Arduino wiem czy pojazd ma jechać naprzód do tyłu czy też skręcać. Nie da się nie zauważyć, że zachowuje się ono bardziej podobnie do czołgu niż samochodu, ponieważ sterowanie kierunkiem musi polegać na obracaniu kół z jednej strony szybciej niż z drugiej. Jednak ze względu na brak odpowiedniej aplikacji na Androida, będzie on skręcać obracając tylko jedną stroną kół, bez możliwości regulacji stopniem skrętu. Kod testowy dla autka:

[code=c++]#include <SoftwareSerial.h> SoftwareSerial mySerial(7, 8); // RX, TX char character; int p= 0; void setup() { mySerial.begin(9600); Serial.begin(9600); pinMode(9, OUTPUT); pinMode(10, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); }

void loop() // run over and over { if(mySerial.available()){ character = mySerial.read(); p= 50; } switch(character) { case 'a': analogWrite(9, 0); analogWrite(10, p); analogWrite(5, 0); analogWrite(6, p); break; case 'e': analogWrite(9, p); analogWrite(10, 0); analogWrite(5, p); analogWrite(6, 0); break; case 'd': analogWrite(9, 0); analogWrite(10, 0); analogWrite(5, 0); analogWrite(6, p); break; case 'b': analogWrite(9, 0); analogWrite(10, p); analogWrite(5, 0); analogWrite(6, 0); break; case 'c': analogWrite(9, 0); analogWrite(10, 0); analogWrite(5, 0); analogWrite(6, 0); p = 0; break; default: break; } delay(50); if(p < 250) p+= 10; } [/code]

Dodatkowo w celu uproszczenia sterowania zmienna p reguluje moc silników powodując, że na początku działają one słabiej, a siła rośnie z czasem, dzięki czemu łatwiej jest delikatnie skręcić.

Koszt

Całkowity koszt materiałów wyniósł około 160 zł.

  • klon Arudino Nano - 20 zł
  • sterownik silników - 15 zł
  • moduł bluetooth - 20 zł
  • podwozie z silnikami - 100 zł
  • koszyczek na baterie - 5 zł

Podsumowanie

To co mam teraz jest w zasadzie tylko wstępem do dalszego rozwijania projektu. Można eksperymentować ze sterowaniem, poprzez udoskonalanie kodu na Arduino, ale również przez szukanie innych programów na Androida, a być może napisaniem nawet własnego. Planuję również pobawić się w dodanie nowych modułów, w tym przede wszystkim miernika ultrasonicznego dystansu, dzięki czemu pojazd będzie unikać wpadania na przeszkody. Zastanawiam się również na uczynieniem z projektu platformy do nauki programowania dla dzieci z wykorzystaniem projektu Kojo lub Scratch. Aby dzieci mogły samodzielnie planować zachowanie pojazdu przy użyciu języka typu LOGO lub składania go z klocków. Na razie efekt wygląda następująco: [youtube=https://youtu.be/zzzO-k5FgB8] Sterowanie: [youtube=https://youtu.be/gQFfhhnD0zc] Myślę, że dla każdego kto lubi trochę się pobawić z Arduino to bardzo prosty projekt, który można wykonać małym kosztem czasu, a przy okazji zrobić dziecku zabawkę.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.