Własne Arduino

Arduino to nie tylko oprogramowanie komputerowe, biblioteki i bootloader, to także cały szereg zestawów uruchomieniowych, które pozwalają w pełni wykorzystać całe oprogramowanie. Niestety te zestawy mają stosunkowo wysoką cenę, a ich możliwości nigdy nie będę dopasowane idealnie do naszych potrzeb. W tym artykule przedstawię, jak wykonać podstawowy zestaw do pracy z Arduino, który może posłużyć do budowy bardziej skomplikowanych projektów. Przedstawię jak ma wyglądać elektronika, jak wgrać bootloader i jak napisać przykładowy program.

Elektronika:

Elektronika musi być oczywiście zbudowana z kontrolera, w tym przypadku jest to atmega8 i jej pochodne (atmega48/88/168,328). Dodatkowo, aby płyta była kompatybilna z oprogramowaniem Arduino IDE wymagany jest konwerter transmisji ft232, który zamienia sygnał USB na standardową transmisję szeregową. Poniżej przedstawiam podstawowy schemat.

Schemat można podzielić na trzy części: zasilanie, konwerter ft232 i atmega8. Zasilanie, to standardowy układ na LM7805, a zworka JP1 służy do wyboru zasilanie (USB czy zewnętrzne). Układ ft232 dokonuje zamiany transmisji z USB na transmisje typu UART. Jeżeli nie zależy nam na transmisji po USB, a mamy możliwość wykorzystania RS232, to w miejsce tego bloku wztawiamy układ MAX232, lub jego zmienniki(zamienniki są sporo tańsze).

Schemat dla MAX232:

Rezystory R1 i R2 pełnią funkcję zabezpieczającą i powinny przyjmować wartość około 100 omów. Należy pamiętać o tym, że linie konwertera RXT i TXD, mają być zamienione względem tych linii w mikrokontrolerze. Tak aby linia TXD układu ft232 (MAX232) nadawała na linię RXD kontrolera , a linia TXD kontrolera nadawała na linie RXD układu ft232 lib MAX232.

Część zawierająca mikrokontroler atmega8 to standardowy układ, który szczegółowo omawiałem w trzeciej części kursu AVR. Należy pamiętać, aby podłączyć przycisk, umożliwiający reset. Może to być także zworka, ale z przyciskiem jest łatwiej. Przycisk ten będzie potrzebny, aby restartować kontroler (no w sumie to oczywiste), po restarcie zaczyna się wykonywać program bootloadera i w tedy możemy załadować nasz program. Częstotliwość rezonatora kwarcowego powinna wynosić 16 MHz.

Ja zdecydowałem się na wersję z przejściówką na USB, którą kupiłem już gotową za niecałe 30 zł, a kontroler mam osadzony w na płytce, którą kiedyś sobie zaprojektowałem. To wszystko osadziłem na płytce prototypowej, więc pracuje się łatwo i przyjemnie.

    

 

Bootloader:

Bootloader, to program służący do odbierania programu po jakimś interfejsie z zewnątrz i wgrywania go do pamięci flash kontrolera. Mikrokontrolery avr pozwalają na to, aby część pamięci programu mogła być modyfikowana przez inną część programu. Dzięki czemu możemy załadować program bez używania specjalnego programatora. Dane dla bootloadera mogą być przesyłane poprzez różny interfejs, to zależy od nas, może to być na przykład USB, RS232, SPI, itp. Można także pobrać program z karty pamięci. To zależy tylko od nasze fantazji i potrzeb.W przypadku Arduino przesył danych jest realizowany poprzez transmisje szeregową, czyli USB albo RS232.

Bootloader do arduino jest dostarczany razem z programem Arduino IDE. W Debianie/Linux można go znaleźć pod ścieżką: /usr/share/arduino/hardware/arduino/bootloaders/atmega8. I interesuje nas plik ATmegaBOOT.hex, który należy wgrać do kontrolera. W tym celu niestety będzie potrzebny programator, ale to tylko ten jeden raz. Kolejnym krokiem będzie ustawienie fusebitów na wartości: low fuses=0xdf i high fuses=0xca.

Opis dla systemu Linux:

Proponuję skopiować plik ATmegaBOOT.hex w lepiej dostępne miejsce na przykład pulpit.  A następnie uruchomić terminal i przejść do folderu pulpitu. Do zaprogramowania użyjemy programu avrdude z takimi parametrami:

avrdude -c stk200 -p m8 -U flash:w:ATmegaBOOT.hex -U hfuse:w:0xca -U lfuse:w:0xdf

W miejsce stk200 należy wpisać swój programator. szczegóły na temat programowania avr i avrdude opisałem pod adresem www.robotyka.net.pl/linux-i-avr-cz-1

Po takiej operacji nasz kontroler będzie gotowy do pracy.

Pierwszy program:

Podłączamy płytę naszą płytę do komputera i uruchamiamy program Arduino IDE, środowisko jest już praktycznie skonfigurowane, jedynie co musimy wybrać to port oraz rodzaj płyty.

Wyboru porty dokonujemy poprzez wybranie menu Tools->Serial Port i wybieramy port, pod którym wisi nasza płyta, szczegóły opisałem w artykule Debian i Arduino.

Wybór płyty jest bardzo łatwy, wystarczy wybrać opcje Arduino NG or older w/ ATmega8 w menu Tools->Borad.

Teraz już zaczynamy zabawę z programowaniem. Na początek do próby polecam gotowy przykład, jest ich dużo, ale najprostszy jest program Blink. Uruchamiamy go Wybierając File->Examples->Digital->Blink.

Teraz jedyne co pozostaje nam do zrobienia, to kompilacja i wysłanie programu do kontrolera. Więc naciskamy przycisk , a następnie zrestartować kontroler i wcisnąć przycisk Upload .

Program ten powoduje zmianę stanu z niskiego na wysoki na pinie 13. Aby zaobserwować tą zmianę, możemy podłączyć tam miernik, albo bardziej wizualnie, diodę LED w szereg z rezystorem 1kohm.

Na poniższym rysunku jest przedstawione jak się mają nazwy pinów w Arduino do nazw w kontrolerze:

Myślę, że po takim wprowadzeniu elektronik z małą wprawą poradzi sobie już z programowaniem w środowisku Arduino IDE. Zachęcam do własnych eksperymentów i życzą miłego programowania i tworzenia własnych konstrukcji.

Komentarze do „Własne Arduino

  1. A max232 w cudowny sposób otrzymuje zasilanie z nieba? Nie dziwie się, że nikt takich baboli nie czyta.

    • Jest tam przetwornica napięcia, która je podnosi. Dokładnie to podnosi do 10V, bo po prosu podwaja napięcie zasilania, a jeszcze to napięcie mieści się w standardzie. Zapraszam do dokumentacji.

        • Schemat z układem max232 jest tylko wyciekiem i tak jak napisałem jest alternatywą dla ft232. Nie opisuje jak wpiąć każdy przewód bo uważam że to jest podstawowa wiedza. Ale chyba widzę, że jeszcze powinienem tam baterie dorysować ze stabilizatorem napięcia.

          • Zero konsekwencji na 1 schemacie całe zasilanie jest, na drugim nie ma. Ktoś by to ulepił i miał problem, że nie działa.

          • Jak długo zajmuje się elektroniką to jeszcze nie trafiłem na kogoś kto by nie dał zasilania. Poza tym jak wspomniałem to jest wycinek który należy wstawić w miejsce układu ft232, i bardziej potraktowałem to jako ciekawostkę, że nie trzeba używać USB

  2. Laickie pytanie.
    komercyjny Uno ma już załadowanego bootoadera, a do takiego własnej roboty trzeba mu zainicjować jeden raz?

    • W komercyjnym UNO jest już wgrany bootloader. wykonując własną płytkę wykorzystujemy czysty mikrokontroler, a więc aby działał jak arduino należy zaprogramować mu stosowny program bootloadera, a później już możemy korzystać jak ze standardowego arduino.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.