Flowcode Formula. Rysujesz i jedziesz!

Flowcode Formula. Rysujesz i jedziesz!

Robotyka to dziedzina łącząca wiedzę z zakresu mechaniki, elektroniki i automatyki. Zaawansowane roboty przemysłowe  mogą wykonywać skomplikowane czynności z bardzo szybko i z dużą dokładnością. Ich działaniem steruje algorytm zapisany w programie sterowniczym. Przykładem takich robotów koga być roboty zgrzewające, lub lakierujące karoserie w fabrykach produkujących samochody. Istnieje też inna grupa robotów. W ich przypadku  program sterujący nie składa się tylko ze ściśle określonych  sekwencji wykonywanych jedna po drugiej. Algorytm sterujący dopuszcza różne warianty zachowania się robota zależnie od napływających informacji z wbudowanych sensorów. Są to na przykład  wszelkiego rodzaju „inteligentne” pojazdy potrafiące omijać przeszkody, podążać za światłem, lub dźwiękiem. W bardzo zaawansowanych  konstrukcjach na pokładzie  umieszczone są kamery, a sterownik ma wbudowane  procedury potrafiące analizować odbierany obraz i odpowiednio reagować.

Robotyka jest bardzo fascynującą dziedziną wiedzy. Wyższe stopnie wtajemniczenia wymagają przyswojenia sporej wiedzy teoretycznej i praktycznej. Jednak żeby rozpocząć przygodę z robotami i robotyką wcale nie trzeba być wysoko kwalifikowanym inżynierem. Potrzebne do opanowania podstawy są zaskakująco proste i może je samodzielnie opanować z powodzeniem uczeń szkoły średniej.

Współczesne roboty są w zasadzie wyłącznie sterowane mikrokontrolerami. Nauka podstaw programowania jest szeroko opisana w wielu książkach i w Internecie. Jednak każdy potencjalny entuzjasta robotyki musi się zmierzyć z połączeniem programowanego sterownika i sterownego nim układu mechanicznego. I tutaj najczęściej okazuje się ,że mechanika jest o wiele trudniejsza niż programowanie . Jeżeli chcemy zbudować na przykład pojazd -  robota ( chyba najczęściej spotykany przypadek robota dla początkujących), to musimy wykonać kompletny układ napędowy z korpusem na którym jest umieszczona płytką sterownika. Na korpusie muszą być umieszczone w odpowiednich miejscach czujniki ( sensory) i układ zasilania bateryjnego. Konieczność wykonania  tych mechanicznych prac zniechęca wielu potencjalnych entuzjastów robotyki. Jednym ze sposobów poradzenia sobie z tym problemem jest zakup napędzanych silnikami elektrycznymi zabawek dla dzieci. Jest tam rozwiązany problem napędu i zasilania. Można na bazie zabawki po zamontowaniu  sterownika budować całkiem tanio swoje pojazdy- roboty.
Problem zauważyli też  producenci zestawów dla elektroników hobbystów. Oferują  specjalnie do tego celu zaprojektowane zestawy do samodzielnego montażu najczęściej ze sterownikiem.  Trochę nietypowym zestawem „startowym” dla entuzjastów robotyki jest zestaw Formula Flowcode produkowany przez firmę Matrix Multimedia. Producent dostarcza gotowy pojazd napędzany dwoma silnikami elektrycznymi sterowany kompletnym sterownikiem zbudowanym na bazie mikrokontrolera PIC18F4455 firmy Microchip. Wyjątkowość zestawu nie polega na jakichś specjalnych rozwiązaniach mechanicznych, ale na możliwości  łatwego  i szybkiego  programowania sterownika za pomocą pakietu Flowcode.
Na rysunku 1 pokazano płytkę sterownika z mikrokontrolerem i rozmieszczeniem najważniejszych układów: sterowania silnikami , sensorami odległości, sensorem natężenia światła, układem generowania dźwięku i mikrofonem, złączem do dodatkowych płytek systemu E-BLOCK, diodami sygnalizacyjnymi LED i złaczem USB do programowania mikrokontrolera.

Rysunek 1. Płytka sterownika

Zastosowany w sterowniku  mikrokontroler PIC18F4455 jest umieszczony w 40 wyprowadzeniowej obudowie do montażu przewlekanego. Jest to 8 bitowa szybka jednostka o architekturze RISC z 24 kilobajtami pamięci programu,  2 kilobajtami pamięci RAM i wieloma peryferiami w tym z interfejsem USB. Interfejs USB jest wykorzystywany do programowania pamięci programu mikrokontrolera z poziomu programu Flowcode. Żeby programowanie było możliwe w pamięci PIC18F4455 jest zapisany program bootloadera.
Ważnym elementem pojazdu jest zasilanie. Robot jest standardowo zasilany z 4 akumulatorków o rozmiarze R4 („paluszek”). Znamionowe napięcie jednego akumulatorka wynosi 1,2V, czyli napięcie „pokładowe” jest równe  4,8V. Można tez podłączyć zewnętrzne napięcie +5V z zasilacza stabilizowanego ( złącze J3) . Jest to bardzo przydatna opcja w trakcie intensywnych prób z programem. Nie trzeba wtedy często ładować akumulatorków. Do złącza J4 można podłączyć napięcie z 6 akumulatorków, lub napięcie niestabilizowane. Napięcie to jest stabilizowane w układzie stabilizatora LM2940 5,0.  

Rysunek 2. Układ zasilania robota

Aby sterownik mikroprocesorowy mógł spełniać rolę sterownika robota musi być wyposażony w układ  sterownia układem napędowym , czyli silnikami elektrycznymi prądu stałego. Sterowanie silnika sprowadza się do :
 - Włączania i wyłączania zasilania silnika (start/stop).
 - Zmiany kierunków obrotu przez zmianę polaryzacji zasilania.
 - Regulowania prędkości obrotowej silnika.
W pojeździe Flowcode Formula do sterowania silnikami  zastosowano popularny scalony mostek L293D produkowany przez firmę STM.  Schemat sterowania jest pokazany na rysunku 3.  Każdy z silników jest sterowany osobnym mostkiem. Jedno z wejść sterujących jest wejściem zmiany kierunku obrotów, a drugie jest wykorzystywane do regulacji prędkości obrotowej. Widać tu ważną zależność pomiędzy kierunkiem obrotów i współczynnikiem wypełnienia. W gałęzi zaznaczonej na niebiesko aktywny jest stan niski przebiegu PWM, bo wejście KIERUNEK ma stan wysoki i na nóżce 14 układu L293 jest plus napięcia zasilania. W gałęzi zaznaczonej na czerwono aktywny jest stan wysoki przebiegu PWM, bo na wejściu KIERUNEK jest stan niski i na nóżce 6 układu L293 jest minus napięcia zasilania.

Rysunek 3. Sterowanie silnikami Flowcode Formula

Zastosowane w sterowniku  czujniki odległości  pracują w podczerwieni i są zbudowane z diody nadawczej LED na podczerwień i czujnika promieniowania podczerwonego zbudowanego w oparciu o fototranzystor (rysunek 4).

Rysunek 4. Czujniki odległości

Pomiar odległości jest wykonywany przez 3 czujniki umieszczone z przodu z lewej i prawej strony oraz centralnie. Diody nadawcze są odseparowane od optotrazystorów przez umieszczenie ich na  obu warstwach płytki: diody na górnej warstwie, a optotranzystory na dolnej warstwie. Dzięki temu bezpośrednio emitowana wiązka nie jest odbierana przez detektor. Przez diodę nadawczą zaczyna płynąć prąd kiedy sterujący ja tranzystor wchodzi w stan nasycenia po podaniu stanu wysokiego z portu sterującego jego bazą przez rezystor ograniczający. Wiązka podczerwieni trafia na otaczające przedmioty, zostaje od nich odbita i powraca do czujnika ( detektora). Im przedmiot jest bliżej, tym więcej światła się od niego odbija i przez to zwiększa się  prąd optotranzystora powodując zmniejszanie się napięcia na dzielniku. Im przedmiot jest dalej tym napięcie na wyjściu dzielnika będzie większe, bo optotranzystor mniej przewodzi.  Napięcie z dzielnika jest mierzone przez przetwornik analogowo cyfrowy mikrokontrolera.
Na takiej samej  zasadzie działają czujniki drogi. Dzięki nim pojazd może się samodzielnie poruszać po wyznaczonej trasie. Warunkiem prawidłowego działania detekcji trasy jest jej narysowanie w postaci czarnego pasa o określonej szerokości na białym tle. Producent wraz z pojazdem Flowcode Formula dostarcza wydrukowaną przykładową trasę. Dwa czujniki drogi są umieszczone na dolnej płytce blisko powierzchni po której porusza się pojazd, a schemat ich podłączenia jest pokazany na  rysunku 5.

Rysunek 5. Schemat podłączenia czujników drogi

Kiedy oświetlana powierzchnia jest czarna, to ilość odbitego światła jest mała i na wyjściu czujnika jest stan wysoki. Po oświetleniu białej powierzchni odbija się dużo więcej światła i na wyjściu czujnika jest stan niski. Mając do dyspozycji informację z dwu czujników można tak sterować pojazdem żeby wracał zawsze na czarny pas.
Czujniki natężenia światła i poziomu dźwięku pozwalają na implementację algorytmów podążania za źródłem światła, lub źródłem dźwięku . Czujnik natężenia światła jest fotorezystor włączony w układ dzielnika napięcia od strony masy . Im silniejsze światło padające na światłoczułą warstwę fotorezystora tym jego rezystancja jest mniejsza i napięcie na wyjściu dzielnika jest mniejsze. Napięcie dzielnika jest mierzone przez wejście przetwornika analogowo cyfrowego mikrokontrolera. Jako czujnik natężenia dźwięku wykorzystano mikrofon elektretowy z tranzystorowym wzmacniaczem – rysunek 6. Wzmocnienie wzmacniacza można regulować potencjometrem P1.  Napięcia wyjściowe z czujników są mierzone przetwornikiem analogowo cyfrowym.

Rysunek 6. Czujniki światła i dźwięku

Układ elektryczny robota został uzupełniony o interfejsy sygnalizacyjne w postaci linijki 8 czerwonych diod LED i miniaturowego głośnika/buzzera. Dodatkowo na płytce zostały umieszczone 2 przyciski, których stan można odczytywać, oraz żeńskie złącze DSUB9 do podłączenia modułów peryferyjnych zestawu E-Block produkowanych przez firmę Matrix Multimedia. Można na przykład w celach testowych dołączyć przez to złącze wyświetlacz alfanumeryczny, jak na fotografii 7.

 

Fotografia 7. Robot z dołączonym wyświetlaczem z zestawu E-Block  

Działanie robota jest sterowanie przez program zapisany w pamięci mikrokontrolera. Dla  wprawnego programisty obsługa interfejsu PWM, przetwornika analogowo cyfrowego, czy linii portów nie będzie stanowiło żadnego problemu. Jednak dla tych, którzy zaczynają przygodę ze sterownikami mikroprocesorowymi przebrnięcie przez prawidłowe skonfigurowanie wszystkich rejestrów układów peryferyjnych nie jest zadaniem łatwym, a na pewno czasochłonnym. Jeżeli weźmiemy pod uwagę fakt, że producent przewidział użycie zabawki do nauki robotyki w szkołach średnich, to klasyczne programowanie w asemblerze, lub w języku C może jednak być problemem przynajmniej dla części uczniów. I tutaj z pomocą przychodzi znany już nam pakiet Flowcode. Flowcode- narzędzie do szybkiego graficznego tworzenia programów idealnie się do tego celu nadaje. Żeby jeszcze lepiej wykorzystać jego zalety i ułatwić Zycie tym dla których programowanie to konieczność producent przygotował specjalne sprzętowe makro z gotowymi funkcjami obsługi układu napędu i czujników.
Nie bez znaczenia jest też możliwość bezpośredniego programowania poziomu Flowcode  mikrokontrolera sterownika przez interfejs USB. Żeby programowanie było możliwe to trzeba podłączyć zasilony pojazd połączyć kablem USB z komputerem iż zainstalować driver w systemie Windows. Potem  w czasie tworzenia nowego projektu trzeba wybrać w oknie Choose Target urządzenie Formula Flowcode Buggy. W pasku urządzeń peryferyjnym znajdujemy ikonę Formula Flowcode i klikając na nią dodajemy ten element do projektu. Na rysunku 8 jest pokazany element  symulacji działania sterownika. Można tu przesuwając myszką suwaki symulować działanie czujników odległości ( Left,  Right, Forward) , czujników drogi ( Line followers), poziom sygnału z mikrofonu ( MIC) i sygnału z czujnika światła (LDR). W ikonach Left Motor i wright Motor można obserwować ustawiony współczynnik wypełnienia i kierunek obrotów w układzie sterownia silnikami napędu.

Rysunek 8. Element symulacji sterownika pojazdu.

Po dodaniu elementu symulacji sterownika mamy do dyspozycji sprzętowe makro z funkcjami sterowania. Można je podzielić na grupę funkcji sterowania napędem, odczytywania sensorów i sterowania wyjściowymi układami peryferyjnymi. Do sterowania napędem są przeznaczone funkcje:
 - Forward: jazda do przodu z ustaloną prędkością.
 - Reverse : jazda do tyłu z ustaloną prędkością.
 - Stop: zatrzymaj się.
 - SpinLeft: skręcanie w lewo z ustaloną prędkością.
 - SpinRight: skręcanie w prawo z ustaloną prędkością.
 - Set Motors: indywidualne sterowanie każdym z silników.
Do odczytywania sensorów są przeznaczone funkcje:
 - ReadLineSensor: odczytanie czujnika drogi.
 - ReadIRSensor: odczytanie czujnika odległości.
 - ReadLDR: odczytanie czujnika natężenia światła.
 - ReadMic: odczytanie czujnika natężenia dźwięku.
Do sterowania układami peryferyjnymi są przeznaczone funkcje:
 - WriteLEDs: zapisanie portu sterującego diodami LED.
 - LEDOn; zaświecenie jednej diody.
 - LEDOff: zgaszenie jednej diody.
 - ReadSwitch: odczytanie stanu przycisków.
 - WaitForSwitch: czekanie na przyciśnięcie przycisku.
 - PlayNote: sterowanie głośniczkiem.
Mając do dyspozycji ten zestaw funkcji można budować proste i bardziej skomplikowane algorytmy sterowania pojazdem. Dla początkujących producent przygotował kurs programowania robota zapisany w  dokumencie „Formula Flowcode – An Introductory Course.pdf. Dokument jest umieszczony na płycie CD dołączonej do pojazdu. Można go tez pobrać ze strony internetowej firmy Matrix Multimedia. Kurs jest przeznaczony dla młodych ludzi od 14 lat wzwyż. Do przerobienia jest 5 poziomów od najprostszego po bardziej rozbudowane. Ja chociaż 14 lat już jakiś czas temu skończyłem postanowiłem również poeksperymentować i przerobić jedną z końcowych lekcji. Wybór padł na algorytm jechania pojazdu  po wytyczonej czarnej drodze (Follow Line).
Jak już wiemy do detekcji drogi są przeznaczone  dwa odpowiednio umieszczone czujniki na podczerwień. Ich stan jest odczytywany funkcją ReadLineSensor. Wykonywany w nieskończonej pętli program na początku odczytuje stan obu czujników, lewego i prawego. Odczytane wartości są zapisywane do zmiennych L_Line i R-Line. Następnie jest sprawdzany stan lewego czujnika. Jeżeli wartość odczytana z czujnika jest jedynką oznacza to, że czujnik nie jest na drodze i trzeba pojazd skręcić w lewo. Do skręcenia pojazdu używamy funkcji SpinLeft z argumentem 200. Po skręceniu program przechodzi na początek i ponownie sprawdza stan czujników.
Kiedy jednak stan lewego czujnika jest zerem ( jest na czarnej drodze), to sprawdzane jest czy prawy czujnik jest na drodze, Jeżeli tak to wykonywana jest funkcja Forward i pojazd jedzie do przodu. Jeżeli nie to oznacza że prawy czujnik nie jest na drodze i pojazd musi skręcić w prawo po wykonaniu funkcji SpinRight z argumentem 200.
Cały program dzięki specjalizowanym funkcjom makra Formula jest w sumie dość prosty – rysunek 9. Po skompilowaniu i załadowaniu do pamięci robota przyszedł czas na próby działania. Tu warto wspomnieć o pewnej praktycznej właściwości makra. Po załadowaniu programu do pamięci nie jest automatycznie uruchamiany, ale czeka na przyciśnięcie jednego z przycisku sterownika. Można zabawkę odłączyć od komputera, postawić na torze i po naciśnięciu przycisku rozpocząć próby. Procedura sprawdzania naciśnięcia przycisku jest dodawana automatycznie i nie trzeba jej aplikować w programie.
Do pierwszej próby użyłem toru wydrukowanego na firmowej instrukcji obsługi. Ponieważ instrukcja była złożona tak by się zmieściła do pudełka, to po rozłożeniu toru wydrukowanego na twardym kredowym papierze okazało się że nie jest on zbyt równy. Widać było, że procedury działają, pojazd się stara podążać wytyczona trasą, ale przeszkadzają nu w tym nierówności toru. Sytuację poprawiła próba prostowania toru. Jednak dopiero po narysowaniu na prostym kartonie fragmentu toru pokazało że program radzi sobie nawet nieźle. Można  poeksperymentować z parametrami funkcji Forward, SpinLeft i SpinRight. W pewnych sytuacjach układ lepiej sobie radzi, kiedy jedzie wolniej.
Ten przykład jest jednym z wielu opracowanych na potrzeby edukacyjne. Robot tez może poruszać się w labiryncie ( projekt Maze). Na potrzeby testów algorytmamów poruszania się w labiryncie można kupić w firmie gotowe elementy z których składa się  labirynt.
Edukacyjne przeznaczenie pojazdu Formula Flowcode ma odbicie w ofercie handlowej. Można kupić zestaw w pakietem Flowcode i pięcioma pojazdami przeznaczony dla jednej ( angielskiej) klasy szkolnej. W realiach polskiej szkoły 5 sztuk na klasę to trochę mało.
Można tez kupić sam moduł elektroniki ( 2 płytki) bez układu jezdnego i pojemnika na baterie. Ta opcja jest przeznaczona do sterowania innymi pojazdami na przykład 4 kołowymi.

Rysunek 9. Program sterujący jazdą robota po wyznaczonej trasie

Po czasie spędzonym na poznawaniu i próbach z pojazdem żałuję, że w moich czasach szkolnych nie było możliwości nauki z wykorzystaniem takich lub podobnych pomocy lekcyjnych. Oczywiście nie można zakwalifikować  robota Formula Flowcode tylko jako pomocy szkolnej. Na to ma zbyt duże możliwości. Na pewno kompletną platformę mechaniczno- elektroniczną  i rewelacyjny sposób programowania też docenią bardziej zaawansowani entuzjaści robotyki.

Tomasz Jabłoński
t.jablonski@easy-soft.net.pl

http://www.tomaszbogusz.blox.pl/

Odpowiedzi

flowcode

bardzo przydatny artykuł....

Dodaj nowy komentarz

Zawartość pola nie będzie udostępniana publicznie.
Type the characters you see in this picture. (odsłuchaj)
Przepisz kod z obrazka. Jeżeli nie możesz go odczytać prześlij formularz pozostawiając pole puste - zostanie wygenerowany nowy kod. Wielkość liter nie ma znaczenia.