Jako osoba posiadająca pewną wiedzę elektroniczną z czasów „przedprocesorowych” zawsze czułem duży dyskomfort, że nie potrafię samodzielnie zaprojektować i zbudować układów opartych na mikrokontrolerach, szczególnie dotyczyło to zastosowań modelarskich. Kilka razy w przeszłości robiłem próbę podejścia do tematu, ale zawsze okazywało się, że albo za dużo czasu i determinacji wymaga opanowanie tematu, albo trzeba sporo zapłacić za możliwość użycia prostszych narzędzi. Platforma „Arduino”stanowi przełom, gdyż założeniami twórców był właśnie niski koszt elektroniki a także bezpłatny język programowania wysokiego poziomu, rozwijany jako projekt open-source, zorientowany na obsługę konkretnych standardów i układów elektronicznych, stosowanych masowo w naszym codziennym życiu i hobby, takich jak serwomechanizmy RC, różnorodne czujniki (np. temperatura, wilgotność, położenie, przyspieszenie), kanały komunikacyjne (TCP/IP, Bluetooth itp), silniki elektryczne i wiele wiele innych. Początkowo Arduino wykorzystywano głównie jako pomoc edukacyjną w średnich i wyższych szkołach technicznych, ale bardzo szybko zyskał uznanie wśród hobbystów i w tej chwili przeżywa prawdziwy rozkwit. Dość powiedzieć, że ilość odsłon głównej strony projektu www.arduino.cc idzie w miliony miesięcznie, a wpisanie w wyszukiwarkę praktycznie dowolnego zagadnienia z dziedziny techniki/elektroniki w połączeniu ze słowem „arduino” da wiele wyników.

Ponieważ system jest adresowany również do osób w żaden sposób nie związanych z elektroniką, można w sieci znaleźć wiele stron, na których przy okazji nauki programowania arduino są wyjaśniane „krok po kroku” zasady działania elementów elektronicznych. Jest to więc znakomita okazja aby przybliżyć sobie świat elektroniki, który obecnie całkowicie zawładnął naszym codziennym życiem i hobby.

Ten cykl jest adresowany do osób, które z mikrokontrolerami do tej pory nie miały do czynienia. W trakcie poznawania przez mnie tej dziedziny, będę starał się zamieszczać proste i bardzo proste projekty jakoś związane z modelarstwem. Programy te w większości będą miały zapewne bardziej edukacyjny niż praktyczny charakter, ale mam nadzieję, że to zachęci wiele osób do własnych eksperymentów. Zaawansowani elektronicy-programiści nie znajdą tu nic ciekawego czy odkrywczego. Z drugiej strony opisy nie będą miały charakteru kursu elektroniki czy programowania dla początkujących, ale z pewnością wystarczą, aby osoby bez doświadczenia w tych dziedzinach, potrafiły uruchomić opisywane układy. Język Arduino opiera się o składnię „C”, więc jeśli ktoś wcześniej miał z nim do czynienia, będzie mu oczywiście łatwiej.

Modułów Arduino jest kilka, opisywane tutaj doświadczenia będą bazować na płytce Uno. Inne dostępne obecnie warianty to wersja Mega (mocniejszy procesor, więcej wyjść/wejść) i Nano - zminiaturyzowany odpowiednik Uno. Najlepszym wyborem dla początkujących wydaje się jednak Uno ze względu na łatwość podłączeń, m.i. możliwość używania dedykowanych modułów rozszerzeń (tzw. shield'y) a także umieszczenie procesora w podstawce, co w przypadku jego uszkodzenia podczas eksperymentów pozwala na łatwą i tanią naprawę poprzez wymianę scalaka. Wersje „Mega” i „Nano” mają natomiast lutowane procesory w obudowach SMD.

Arduino Uno jest zbudowany w oparciu o procesor Atmel ATmega328 taktowany zegarem 16Mhz, dysponujący pamięcią programu 32KB, z czego 0,5KB zajmuje tzw. bootloader - kod umożliwiający załadowanie programu użytkownika poprzez złącze szeregowe (2 linie transmisji danych: 1x Tx, 1x Rx). Pamięć danych (SRAM) to 2KB, ilość wejść/wyjść cyfrowych - 14, ilość wejść analogowych - 6. Dokładny opis wszystkich wersji a także komplet dokumentacji tak sprzętowej jak i programistycznej można znaleźć na głównej stronie Arduino.

Środowisko programistyczne Arduino jest dostępne na różne systemy operacyjne, opisany poniżej sposób instalacji dotyczy systemu Windows. Oprogramowanie pobieramy ze strony projektu http://arduino.cc/en/Main/Software (w obecnej wersji jest to plik arduino-1.0.1-windows.zip, 88MB). Plik następnie rozpakowujemy (240MB po) do wybranego folderu np. C:\folder_instalacji\

Zanim uruchomimy program, należy wykonać wcześniej dwie operacje - zainstalować sterowniki portu USB i poprawić plik ustawień Arduino. W tym celu podłączamy płytkę Uno (lub inną) do portu USB i kiedy system zapyta o sterowniki wskazujemy folder sterowników, np: C:\folder_instalacji\arduino-1.0.1\drivers

Po zainstalowaniu sterowników sprawdzamy w [Panel Sterowania --> System --> Sprzęt --> Menedżer Urządzeń --> Porty Com i Lpt] na jakim porcie COM został został zainstalowany interfejs Arduino (w przykładzie COM9):

Następnie odszukujemy plik preferences.txt, znajdujący się w systemowym folderze na dokumenty aplikacji dla danego zalogowanego użytkownika Windows:

  • w systemie WinXP: C:\Documents and Settings\login_użytkownika\Dane aplikacji\Arduino
  • w systemie Win7: C:\uzytkownicy\login_użytkownika\AppData\Roaming\Arduino

Należy otworzyć w edytorze (np. notatnik) plik preferences.txt, znaleźć wiersze: editor.languages.current= oraz serial.port= i wstawić odpowiednie wartości: język --> EN, port --> COMxxx (odczytany z menedżera urządzeń): editor.languages.current=EN, serial.port=COM9

Po zapisaniu pliku, można już uruchomić aplikację: C:\folder_instalacji\arduino-1.0.1\arduino.exe

Środowisko jest gotowe do pracy. Zapisanie programu na dysk powoduje utworzenie we wskazanym folderze zapisu podfoldera z nazwą programu, wewnątrz którego zostaje zapisany plik „nazwa_programu.ino” (nie jest to klasyczny plik tekstowy).

Najprostsze sprawdzenie działania płytki, to uruchomienie z menu [Files-->Examples-->01.Basics-->Blink] (program „Blink”, powodujący miganie diody kontrolnej na stałe podłączonej do Pin13). Program następnie należy załadować do procesora [Files-->Upload] (kompilacja wykonuje się automatycznie, zawsze przed ładowaniem):

Powinien się pojawić ekran jak wyżej, a dioda na płytce powinna rozpocząć miganie. Częstotliwość cyklu można zmieniać (za każdym razem oczywiście należy załadować zmieniony program do procesora) w wierszach delay(xxxx); gdzie xxxx jest liczbą w milisekunadach, przykładowo jeśli dioda ma mignąć krótko 1 raz na sekundę, te wiesze programu powinny wyglądać następująco:

 

digitalWrite(led, HIGH);

delay(200);

digitalWrite(led, LOW);

delay(800);

 

Ogromną zaletą Arduino jest wbudowany port do transmisji szeregowej, dzięki czemu nie ma konieczności używania przez programy użytkowe wyświetlacza do przekazywania komunikatów od strony procesora. A przy uruchamiania programów jest to wręcz nieoceniona możliwość, bardzo ułatwiająca usuwanie błędów a także możliwość przekazywania parametrów programowi wprost z klawiatury komputera. Do obsługi łącza transmisji szeregowej będziemy potrzebowali jakiegoś programu terminalowego, w WinXP jest to HyperTerminal, a instrukcja jego uruchomienia znajduje się poniżej:

Odszukujemy i uruchamiamy program w poniższym folderze (docelowo warto wyciągnąć skrót): C:\Program Files\Windows NT\hypertrm.exe. Otworzy się kreator nowego połączenia, warto mu nadać nazwę kojarzącą się z numerem portu Com a także ustawioną szybkością transmisji, gdyż docelowo mając kilka płytek możemy korzystać zarówno z różnych portów jak i różnych prędkości:

Wybieramy właściwy port i na początek ustawiamy domyślne parametry transmisji (9600,8,N,1) Przy zamknięciu programu potwierdzamy pytanie o zakończenie sesji a także zapisanie na dysk ustawień z wcześniej zadeklarowaną nazwą:

Od tej pory po każdym uruchomieniu terminala możemy otworzyć z menu [Plik-->Otwórz] zdefiniowane wcześniej połączenie:

W systemie Windows 7 nie ma już tego programu, jednak po przegraniu plików hypertrm.dll and hypertrm.exe z komputera z WinXp (można też pobrać z sieci) działa bez problemu.

Warto dodać, że oba programy (środowisko Arduino) i HyperTerminal nie mogą naraz korzystać z dostępu do łącza szeregowego. W czasie ładowania programu do procesora HyperTerminal musi być wyłączony, natomiast już po jego załadowaniu, można uruchomić terminal. Panel programowania nie musi być zamknięty, gdyż po załadowaniu programu nie blokuje dostępu do portu innym aplikacjom PC.

Do sprawdzenia komunikacji szeregowej można użyć jednego z gotowych przykładów (Examples-->04.Communication) lub skorzystać z <tego programu>, który po wciśnięciu klawisza na klawiaturze komputera, zwraca na ekran kod ASCII danego znaku, a w przypadku, kiedy są to cyfry (1-9) miga diodą Led_Pin13 odpowiednią ilość razy.

W kolejnym artykule zamieścimy pozostałe informacje przydatne do rozpoczęcia pracy z płytkami Arduino, będą one dotyczyć przede wszystkim aspektów sprzętowych.

 

Publikując tu informacje i programy dokładamy starań aby były one sprawdzone i działały poprawnie. Nie ponosimy jednak odpowiedzialności za ewentualne błędy i uszkodzenia, użytkownicy korzystają z tych informacji na własne ryzyko.

Nie masz uprawnień aby komentować.

Publikowane tutaj materiały i zdjęcia stanowią własność ich autorów, nie mogą być kopiowane oraz wykorzystywane bez ich zgody.
Strona niekomercyjna.