ROBOTYKA

Projekt 1. - Gra zręcznościowa

Projekt 1.

Projekt ten został wykonany przeze mnie jako praca na dodatkową ocenę z informatyki w pierwszej klasie liceum. Moim celem było tutaj pokazanie prostego urządzenia, które może zbudować każdy samemu, ale które dostarczyłoby wielu doświadczeń dla osoby początkującej oraz aby finalny efekt można było dotknąć i się nim pobawić. Miało to zachęcić innych uczniów do samodzielnej zabawy z elektroniką. Gra polegała na kliknięciu w przycisk w momencie zapalenia się czerwonej diody LED. Przy każdym kliknięciu na czas gracz dostawał punkt, następnie od razu zaczynała się następna fala w której diody zapalały się szybciej. Kiedy gracz nie trafił na czas w przycisk gra kończyła się. Do wyświetlania punktów, aktualnej fali oraz informacji o końcu gry służył prosty wyświetlacz LCD.

Największym wyzwaniem przy tworzeniu tego urządzenia było zaprogramowanie mikrokontrolera Arduino tak, aby jednocześnie czekał na naciśnięcie przycisku przez gracza oraz zapalał LEDy w odpowiednich odstępach czasowych. Przy mikrokontrolerze, który posiada jeden rdzeń podzielenie zadań aby działały jednocześnie nie było takie łatwe, gdyż nie można po prostu zaprogramować LEDów aby "poczekały" przez chwilę włączone a potem się wyłączyły, w tym czasie czekania cały czas trzeba sprawdzać czy gracz nie wcisnął przycisku.

Do wykonania tego projektu użyłem następujących komponentów:

Projekt 2. - "Discoverer", zdalnie sterowany pojazd

Projekt 2.

Ten projekt wykonałem po obejrzeniu filmu "Purge" w którym zaintrygowała mnie zabawka jednej z bohaterek. Był to zdalnie sterowany pojazd z kamerą ukrytą w głowie lalki (kadr z filmu). Zachciałem mieć takie urządzenie więc wziąłem się do pracy i w efekcie powstał sterowany przez WiFi pojazd z ruchomą kamerą transmitującą obraz w czasie rzeczywistym. W prostym Arduino o ile dałoby się zrobić sterowanie przez sieć, tak niestety nie nadaje się ono zupełnie do przetwarzania obrazu. Dlatego za "mózg" posłużyło tutaj RaspberryPi. Działało jako serwer nadający obraz z kamery i odbierający komendy dostępne przez stronę w sieci.

Tutaj głównym wyzwaniem było postawienie na RaspberryPi serwera wysyłającego obraz oraz przyjmującego polecenia ze strony które sterowały pinami GPIO. Takiego kodu, niestety, nie potrafiłem napisać samemu więc posłużyłem się frameworkiem Pythona o nazwie Flask który umożliwiał sterowanie GPIO przez stronę oraz dostępnym w sieci serwerem streamującym obraz z kamerki RaspberryPi do lokalnej sieci WiFi. Niestety, stworzona przeze mnie platforma nie była najbardziej wydajna gdyż serwer dla strony i Flaska działał równolegle z serwerem kamerki. Strona z przyciskami do sterowania brała obraz z osobnego serwera który znajdował się na innym porcie. Całość działała poprawnie w lokalnej sieci, lecz nie nadawałaby się do sterowania przez internet. Mimo wszystko byłem zadowolony z efektu gdyż kosztował mnie dużo pracy, chociażby nad zasileniem całości nie mówiąc o stronie software'owej.

Do wykonania "Discoverer'a" użyłem:

Projekt 3. - DIYduino, własnoręcznie zrobione Arduino

Projekt 3.

DIYduino to tak naprawdę Arduino, tylko nie w formie ładnej płytki dostarczanej przez producenta a jak najmniejszego układu który można z powodzeniem stosować w późniejszych projektach. To, co widać na zdjęciu to Arduino z wyprowadzonymi pinami oraz układem zasilającym. Samym mikrokontrolerem jest czarny "scalak" włożony na środku z przyciskiem oraz diodą LED. To oznacza, że przy odpowiednim zasilaniu do projektu można użyć wyłącznie tego i będzie zachowywało się jak pełnowymiarowe, programowalne Arduino przy znacznym zmniejszeniu rozmiarów. Z takim układem obawa przed zniszczeniem płytki jest znikoma ze względu na niski koszt wytworzenia w porównaniu do oryginalnej płytki Arduino kosztującej ok. 90zł.

Do mikrokontrolera ATmega328P przycisk, dioda oraz obowiązkowe komponenty umożliwiające jego samodzielną pracę (rezonator kwarcowy, kondensatory, rezystory) zostały przylutowane na stałe przy zachowaniu możliwosci wpięcia go w odpowiednie gniazdo. Układ scalony z owym gniazdem odpowiada za poprawne zasilanie mikrokontrolera oraz posiada wyprowadzone piny GPIO. Dodatkowo znajdują się tam diody LED sygnalizujące stan zasilania oraz jedna podpięta do pinu dostępnego dla użytkownika, tak jak jest to rozwiązane w oryginalnej płytce Arduino.

W tym projekcie użyłem: