Spis treści:
- 1 Arduino - ogólny zarys wyprowadzeń
- 2 Arduino - zasilanie
- 3 Arduino - piny analogowe
- 4 Arduino - piny cyfrowe
- 5 Arduino - piny cyfrowe z funkcją generowania przebiegu PWM
- 6 Arduino - piny komunikacyjne - interfejs UART
- 7 Arduino - piny komunikacyjne - interfejs SPI
- 8 Arduino - piny komunikacyjne - interfejs I2C
- 9 Arduino - piny przerwań
- 10 Złącze ICSP w Arduino UNO R3
- 11 Arduino - co jeszcze warto wiedzieć o wyprowadzeniach w Arduino?
Minikomputery Arduino oferują swoim użytkownikom wiele wypowadzeń do użytku, i właśnie to sprawia, że idealnie nadają się to wielu różnych i ciekawych projektów. Niniejszy artykuł przedstawia opis i funkcje poszczególnych wyprowadzeń płytki Arduino UNO R3 opartej na 8-bitowym mikrokontrolerze AVR ATmega328P.
Arduino - ogólny zarys wyprowadzeń
Większość modeli Arduino, w tym ten najbardziej popularny, który jest znany pod nazwą Arduino UNO R3, jest wyposażony w 8-bitowy mikrokontroler AVR ATmega328P. Ścieżki na płytce PCB zostały poprowadzone tak, aby tworzyły połączenia pomiędzy wyprowadzeniami mikrokontrolera, a listwami wyprowadzeń, dzięki którym możemy połączyć płytkę Arduino z urządzeniami zewnętrznymi, do których należą m.in. moduły Arduino Shield (np. moduły komunikacyjne), a także elementy pojedyncze, takie jak diody LED, tranzystory, czujniki, potencjometry i inne. W skład wyprowadzeń Arduino UNO R3, wchodzi 14 pinów cyfrowych, 6 pinów analogowych, a także złącza zasilające, złącze USB oraz złącze dla opcjonalnego zewnętrznego programatora USB-ASP. Pinout płytki Arduino UNO R3, został przedstawiony na rys. 1.
Rys. 1 – rozmieszczenie wyprowadzeń (pinout) na oryginalnej płytce Arduino UNO R3
Arduino - zasilanie
Tak jak każde inne urządzenie elektroniczne, aby płytka Arduino mogła funkcjonować, konieczne jest podłączenie napięcia zasilającego. Zasilanie do Arduino UNO R3 można dostarczyć na trzy sposoby.
Pierwszy sposób polega na podłączeniu zewnętrznego zasilacza sieciowego do gniazda 5,5mm/2,1mm. Rekomendowana wartość napięcia wyjściowego z zasilacza sieciowego, zawiera się w przedziale od 7V do 12V napięcia stałego. Napięcie zasilające o takim samym zakresie, można także dostarczyć z zasilacza do płytek stykowych lub innego podobnego modułu, podłączając je do pinu “VIN”. Zasilanie można także dostarczyć poprzez pokładowe złącze USB typu B – zarówno, kiedy Arduino jest połączone z komputerem nadrzędnym lub zasilane przez ładowarkę sieciową do smartfona.
Rodzaj zasilania należy dobrać odpowiednio do zapotrzebowania energetycznego aplikacji, którą tworzymy w oparciu o płytkę Arduino. Pin “VIN” jest połączony z plusem zasilania poprzez diodę prostowniczą, która zapobiega uszkodzeniu modułu w przypadku podłączenia napięcia o wstecznej biegunowości. Natomiast zasilanie z USB dostarcza maksymalnej wydajności prądowej na poziomie 500mA. Piny Arduino mogą operować na napięciu 3,3V lub 5,0V (piny odpowiednio “3V3” i “5V”), zgodnie ze specyfikacją osprzętu zewnętrznego.
Niezależnie od wybranego źródła zasilania, obwód musi się zamknąć poprzez masę – na płytce Arduino jest umieszczonych pięć wyprowadzeń “GND”, które są ze sobą galwanicznie połączone. Natomiast pin “RESET” po zwarciu do masy (np. za pomocą pokładowego przycisku), powoduje chwilowe odłączenie zasilania i ponowne uruchomienie Arduino. Na płytce znajdziemy także pin “IOREF”, na który jest podawane napięcie referencyjne, z którym ma pracować mikrokontroler.
Arduino - piny analogowe
Piny analogowe w Arduino (“A0” – “A5”) są połączone poprzez multiplekser z wejściem przetwornika analogowo-cyfrowego, który jest integralną częścią mikrokontrolera ATmega328P. Przetwornik analogowo-cyfrowy (ADC) pozwala na zamianę napięć (sygnału analogowego) z przedziału 0V-5V na postać cyfrową wyrażaną bitowo. Rozdzielczość przetwornika ADC w Arduino wynosi 10 bitów. Oznacza to, że liczba poziomów kwantyzacji napięcia na wejściu przetwornika wynosi 1024 (przyjmuje wartości 0-1023), a pomiar napięcia jest dokonywany z rozdzielczością 4,89mV.
Rozdzielczość możemy także rozszerzyć, doprowadzając napięcie niższe niż 5V do pinu “AREF”, na który należy podać napięcie referencyjne, względem którego przetwornik mierzy napięcie na wejściach do niego doprowadzonych. Natomiast częstotliwość próbkowania przetwornika ADC, wynosi ok. 9600Hz, co oznacza, że na wejście przetwornika możemy podać sygnał, który będzie bezbłędnie przetworzony na postać cyfrową, dopóki najwyższa częstotliwość zawarta w jego widmie nie przekroczy połowy częstotliwości próbkowania przetwornika ADC w Arduino, tj. nie więcej niż 4800Hz. Typowe zastosowania przetwornika ADC a Arduino, obejmują m.in. czujniki analogowe, potencjometry, a także sterowanie komendami głosowymi poprzez mikrofon (VoIP), które mogą być wysłane zdalnie do innego urządzenia poprzez internet.
Arduino - piny cyfrowe
Arduino Uno ma 14 pinów cyfrowych (“D0” – “D13”), które mogą zostać skonfigurowane jako wejścia lub wyjścia, przy czym pin cyfrowy “D13” jest połączony z pokładową diodą LED, która umożliwia sprawdzenie prawidłowości działania płytki, np. za pomocą krótkiego kodu programu, który steruje cyklicznym miganiem diody LED. Maksymalna wydajność prądowa pojedynczego pinu cyfrowego wynosi 20mA. Piny cyfrowe operują na stanach logicznych, które odwzorowują wartość bitową – stan niski oznacza bit zerowy, a stan wysoki – bit jedynkowy.
Typowo, kiedy piny cyfrowe w Arduino są ustawione jako wyjścia, napięcie dla stanu niskiego wynosi 0V, a dla stanu wysokiego 5V. Natomiast jeśli piny cyfrowe zostaną skonfigurowane jako wejścia odbierające sygnały z urządzeń zewnętrznych, poszczególne poziomy logiczne są określone przedziałami napięć. I tak, Arduino interpretuje napięcie wejściowe z przedziału 0,0V – 0,8V jako stan niski (“0”), a od 2,0V do 5,0V – stan wysoki (“1”). Natomiast przedział 0,8V – 2,0V oznacza stan zabroniony, w którym nie ma prawa dojść do zmiany stanu logicznego.
Arduino - piny cyfrowe z funkcją generowania przebiegu PWM
Oprócz swojej standardowej funkcjonalności, piny cyfrowe “D3”, “D5”, “D6”, D9”, “D10” i “D11” mogą być wykorzystane do generowania przebiegu PWM (przebieg prostokątny o zmiennym współczynniku wypełnienia). Domyślnie, częstotliwość sygnału PWM w Arduino jest ustawiona na ok. 490Hz. Natomiast współczynnik wypełnienia, określa przez jaką część trwania pojedynczego okresu, na pinie cyfrowym w trybie PWM pojawia się stan niski oraz określa wartość średnią całookresową sygnału.
Przykładowo, jeśli współczynnik wypełnienia sygnału PWM generowanego na pinie “D3” wynosi 40%, to przy wartości szczytowej napięcia wynoszącej 5V, wartość średnia całookresowa napięcia takiego sygnału będzie wynosiła 2V. Odpowiednio, im większa wartość współczynnika wypełnienia, tym wyższa wartość średnia całookresowa przebiegu PWM. Typowymi aplikacjami sygnału PWM w Arduino są sterowniki prędkości silników elektrycznych, sterowniki jasności oświetlenia LED, a także syntezatory muzyczne.
Arduino - piny komunikacyjne - interfejs UART
Do komunikacji z urządzeniami zewnętrznymi, Arduino wykorzystuje kilka różnych protokołów komunikacyjnych. Jednym z nich, jest protokół UART (ang. Universal Asynchronous Receiver-Transmitter). Jest to protokół szeregowy, który jest realizowany za pomocą pinów cyfrowych “D0” (“RX” – odbiornik – odbiera sygnał z urządzenia zewnętrznego) i “D1” (“TX” – nadajnik – wysyła sygnał do urządzenia zewnętrznego). Ten interfejs umożliwia komunikację z modułami zewnętrznymi, a także z komputerem – jest on połączony z wyprowadzeniami dla portu USB.
Arduino - piny komunikacyjne - interfejs SPI
Innym interfejsem, który Arduino wykorzystuje do komunikacji z urządzeniami zewnętrznymi, jest SPI (ang. Serial Peripheral Interface) – jest to protokół szeregowy, który umożliwia komunikację mikrokontrolera z jednym i więcej urządzeniami, a także umożliwia komunikację synchroniczną z innym mikrokontrolerem, w topologii Master-Slave, gdzie Master to urządzenie nadrzędne, a Slave – urządzenie podrzędne, przy czym w standardowej topologii, mikrokontroler stanowi urządzenie nadrzędne. W Arduino UNO R3, w skład pinów interfejsu SPI wchodzą:
- SS (ang. Slave Select) – pin “D10” – wybór adresu urządzenia podrzędnego, z którym ma komunikować się mikrokontroler;
- SCK (ang. Serial Clock) – pin “D13” – sygnał zegarowy synchronizujący transmisję danych w obu kierunkach;
- MISO (ang. Master Input Slave Output) – pin “D12” – linia wysyłająca informacje z urządzeń podrzędnych do urządzenia nadrzędnego
- MOSI (ang. Master Output Slave Input) – pin “D11” – linia wysyłająca informacje z urządzenia nadrzędnego do urządzeń podrzędnych.
Arduino - piny komunikacyjne - interfejs I2C
Arduino jest także wyposażone w magistralę I2C, który umożliwia komunikację pomiędzy dwoma komponentami poprzez pojedynczą płytkę PCB. Dla płytki UNO R3, komunikacja przez I2C jest realizowana za pomocą dwóch pinów:
- SDA (ang. Seria Data) – pin transmisji danych po magistrali I2C;
- SCL (ang. Serial Clock) – pin sygnału zegarowego synchronizującego transmisję danych po magistrali I2C w obu kierunkach
Każde urządzenie zewnętrzne komunikujące się z Arduino poprzez magistralę I2C ma swój unikalny adres (np. 0x23 w zapisie szesnastkowym), a do tej samej magistrali można podłączyć maksymalnie do 255 urządzeń jednocześnie. W Arduino UNO R3, Piny “SDA” i “SCL” znajdują się na pinach analogowych, odpowiednio “A4” i “A5”.
Arduino - piny przerwań
W mikrokontrolerach, w tym takich jak ATmega238P wbudowany w Arduino, można zainicjonwać procedurą przerwania zewnętrznego. Przerwanie zewnętrzne jest przerwaniem systemowym, które pod wpływem wystąpienia zakłóceń na zewnątrz mikrokontrolera zostaje zainicjowane automatycznie z poziomu urządzenia współpracującego lub ręcznie z poziomu użytkownika.
Typowym, najprostszym przykładem zastosowań w Arduino, jest zliczanie ilości impulsów i odczyt częstotliwości z zewnętrznego źródła sygnału prostokątnego lub zakończenie procedury przerwania w celu kontynuowania normalnego obiegu programu wgranego do pamięci mikrokontrolera. W Arduino UNO R3, piny przerwań “INT0” i “INT1”, są dostępne pod pinami cyfrowymi, odpowiednio “D2” i “D3”, a aktywacja i dezaktywacja każdego z przerwań może być ustawiona w programie indywidualnie dla rodzaju zmiany poziomu logicznego i obejmuje zarówno wyzwalanie zboczem opadającym i narastającym jak i stanem niskim i wysokim.
Złącze ICSP w Arduino UNO R3
ICSP (ang. In-Circuit Serial Programming) to 6-pinowe złącze umożliwiające podłączenie zewnętrznego programatora USB-ASP. Rozwiązanie to, zostało zaimplementowane z myślą o użytkownikach, którzy preferują ,,tradycyjne” programowanie w językach C i Assembler i chcą zaoszczędzić dodatkowe 5kB pamięci mikrokontrolera, która jest zajmowana przez bootloader Arduino (oprogramowanie rozruchowe niezbędne do funkcjonowania programów pisanych z nakładką składniową Arduino na języki C/C++). Wyprowadzenia ICSP pełnią następujące funkcje:
- SCK (ang. Serial Clock) – sygnał zegarowy synchronizujący transmisję danych pomiędzy pamięcią mikrokontrolera a komputerem zewnętrznym;
- MISO (ang. Master Input Slave Output) – linia wysyłająca informacje z urządzeń podrzędnych do urządzenia nadrzędnego (komputera zewnętrznego)
- MOSI (ang. Master Output Slave Input) – linia wysyłająca informacje z urządzenia nadrzędnego (komputera zewnętrznego) do urządzeń podrzędnych.
- VCC – linia zasilania pomocniczego napięciem 5V;
- GND – masa zasilania pomocniczego;
- RESET – reset mikrokontrolera.
Arduino - co jeszcze warto wiedzieć o wyprowadzeniach w Arduino?
Płytka Arduino UNO R3 to obecnie jedna z najbardziej popularnych płytek do prototypowania. Przedstawiony opis wyprowadzeń dotyczy ich podstawowych funkcjonalności. W zależności od specyfiki aplikacji docelowej, w tym specjalizowanych bibliotek obsługujących konkretny osprzęt zewnętrzny, ich zakres funkcjonalny może zostać odpowiednio rozszerzony w bardziej zaawansowanym ujęciu.
Wybierając płytkę Arduino do naszego projektu, należy być świadomym jej ograniczeń i maksymalnych możliwości, ale także faktu, że stosując odpowiednie sztuczki i dodatkowy osprzęt, możliwości Arduino możemy dodatkowo rozszerzyć, np. poprzez multipleksowanie pinów, nasz pokładowy pinout znacznie zyskuje na wszechstronności i pozwala na podłączenie np. większej ilości przycisków sterujących – prawdziwa gratka dla pasjonatów klawiatury komputerowej i muzycznej!
Jak oceniasz ten wpis blogowy?
Kliknij gwiazdkę, aby go ocenić!
Średnia ocena: 4.7 / 5. Liczba głosów: 17
Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.