wtorek, 25 kwietnia 2017

Arduino czas zacząć cz.2

Program

Na razie powiedzieliśmy sobie o samym Arduino patrząc na nie od strony sprzętu. To co odróżnia mikrontroler (Atmega 328) od np. układu NE555, jest możliwość wykonywania programu, czyli ciągu instrukcji mówiących układowi co robić.
W przypadku naszych przygód z Arduino może zastosować dwa podejścia:

  1. Piszemy program na komputerze i wgrywamy go na mikrokontroler. Od tego momentu nasz układ zaczyna wykonywać instrukcje, nie potrzebując już tak naprawdę komputera.
  2. Na Arduino instalujemy specjalny program słuchający poleceń, zaś nasz program piszemy i wykonujemy na komputerze. Różnica jest taka, że Arduino samo z siebie nie będzie np. zapalać i gasić diody, będzie czekać aż przyjdzie odpowiedni rozkaz z komputera.

Oprogramowanie

Aby rozpocząć zabawę potrzebujemy oprogramowania, w którym będziemy tworzyć nasze programy. Na razie nie ma znaczenia, które podejście zastosujemy,  i tak musimy pobrać i zainstalować tzw. Arduino IDE. W zależności od systemu wybieramy odpowiednią wersję i instalujemy ją na komputerze. Po uruchomieniu, edytor wygląda następująco:



Poza standardowym edytorem dla Arduino, potrzebujemy również czegoś, co pozwoli nam pisać w scratchu :) i jednocześnie używać Arduino. Aplikację można pobrać ze strony projektu Snap4Arduino.
Po zainstalowaniu i uruchomieniu zobaczymy znajomy, choć nieco inny interfejs:

Zostawmy to na razie i wróćmy do Arduino IDE. Zaczniemy od drugiego sposobu "programowania" czy raczej używania Arduino. Aby to było możliwe musimy wgrać na Arduino program, który będzie nasłuchiwać komend wysyłanych ze "scratcha" i wykonywać je na mikrokontrolerze.

W menu "Plik" wybieramy "Przykłady > Firmata > StandardFirmata". Powinniśmy zobaczyć coś w tym stylu:
Na razie jedyne co możemy zrobić to klinąć w przycisk:
co spowoduję weryfikację programu.
Teraz podłączmy Arduino za pomocą przewodu do komputera. W Windows10 nie ma problemu i system wykrywa odpowiednie sterowniki; jeśli wystąpią problemy można spróbować pobrać i zainstalować sterowniki (wkrótce się pojawią ;) )
Jeśli wszystko przebiegło poprawnie, możemy teraz poinformować edytor, z jakiego  Arduino będziemy korzystać i gdzie jest podłączone, W menu "Narzędzia" dla opcji "Płytka" wybieramy "Arduino Nano", opcja |"Procesor" powiinna wskazywać pokazywać "ATmega328", zaś w opcji "Port" wybieramy ten, na którym jest podłączone Arduino, np. COM4:

Jeśli jest kilka portów COM, to odłączmy na chwilę Arduino - ten port który zniknął i pojawi się po ponownym podłączeniu będzie tym właściwym.
Ostatnim krokiem jest wgranie programu do mikrokontrolera, a czynimy to przyciskiem:
Jeśli niczego nie skno... zepsuliśmy, to edytor powinien po kolei informować nas, że trwa:
  • Kompilowanie szkicu....
  • Wgrywanie...
A na końcu ładnie nas powiadomić: "Ładowanie zakończone."
Od tego momentu Arduino słucha komend ze scratcha. Ale o tym w następnym odcinku.
PS. Wyłączcie już Arduino IDE. Chwilowo nie będzie potrzebne.



poniedziałek, 24 kwietnia 2017

Arduino czas zacząć cz.1

Na ostatnich zajęciach chłopcy rozpoczęli swoją przygodę z Arduino, czyli... Właśnie, może na początek parę słów wyjaśnienia, czym owo tajemnicze Arduino jest. Otóż Arduino to tak naprawdę nic innego jak bardzo mały komputer, który można wykorzystać w różnych projektach, urządzeniach które komunikują się z otoczeniem, sterują urządzeniami itd...

Wprowadzenie

Sercem tego komputera jest mikrokontroler Atmega328, który różni się od procesora w przeciętnym laptopie tym, że zawiera w sobie wiele dodatkowych elementów: pamięć, układy do komunikacji z otoczeniem itd. Wszystko w jednym scalaku. Oczywiście moc obliczeniowa jest o wiele mniejsza, ale wystarczy do naszych zastosowań. Aby zaprogramować mikroktroler, z reguły potrzebna była specjalistyczna wiedza, sprzęt - wszystko to utrudniało zaczęcie zabawy z tego typu układami.
Z Arduino jest łatwo, zresztą takie było zamierzenie twórców - wystarczy przewód USB, znajomość programowania i nieskomplikowany edytor kodu, by w zasadzie jednym kliknięciem wgrać program do układu. Chętnych odsyłam do strony projektu (w języku angielskim).

Komunikacja 

Jak już wspomniałem, Arduino komunikuje się z otoczeniem. By to było możliwe, potrzebny jest jakiś kanał do komunikacji. W przypadku tego układu mamy do czynienia z tzw. wejściami i wyjściami:
  • wejścia / wyjścia cyfrowe D1 - D13
  • wejścia analogowe A0 - A7
Czym się różni wejście od wyjścia? Z wejść mikrokontroler odczytuje wartości, a na wyjścia zapisuje. I teraz należy zapamiętać:
  • wejścia / wyjścia cyfrowe mają dwa stany - włączony i wyłączony, 1 i 0, jest napięcie - nie ma napięcia
  • wejścia analogowe pozwalają tak naprawdę na zmierzenie wartości napięcia (0-5V) na danym wejściu i przekształcenie tej wartości na pewną liczbę 

Wejście analogowe

Zrozumienie jak działa wejście analogowe nie jest trudne. Wyobraźmy sobie że mierzymy napięcie w zakresie od 0 do 5V.  Mikrokontroler nie będzie operować np wartością 2.4V, byłoby to niewygodne (mówiąc najogólniej). Zamiast tego sygnał z wejścia trafia na specjalny układ zamieniający sygnał analogowy na cyfrowy (przetwornik A/C). Zobaczmy na wykresie:
Załóżmy, że układ przetwornika może zmierzyć napięcie i zamienić je na liczby od 0 do 7 (dwójkowo na 3 bitach można zapisać właśnie takie liczby). Jeśli teraz na wejściu pojawi się napięcie 2.4 V układ przekaże dalej do mikrokontrolera liczbę 5 (011), zaś 4,9 dałoby wartość 7 (111). 

Wyjście analogowe (udawane)
Arduino nie posiada wyjść analogowych. Nie da się powiedzieć "ustaw na wyjściu X napięcie odpowiadające liczbie 7". Mikrokontroler nie posiada przetwornika cyfrowo-analogowego (C/A). Ale... Skoro jest tu taka sekcja, znaczy się sprawa nie jest beznadziejna. Arduino może nieco oszukać, a wykorzystuje do tego PWM  - sterowanie szerokością impulsu. Na niektórych wyjściach cyfrowych mikrokontroler może generować falę prostokątną (szybko włączać i wyłączać wyjście), z częstotliwością kilkuset Hz. Jeśli popatrzymy na drugi przypadek, sygnał wysoki (5V) pojawia się przez 25% czasu cyklu, kolejne 75% pozostaje w stanie niskim (0V). Gdybyśmy podłączyli miernik to pokazałby napięcie ok 1.25 V (1/4 z 5V).

Takich możliwych przypadków jest 256 (0 - 255), czyli rozdzielczość naszego wyjścia to 8 bit.