Arduino

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Arduino
Zintegrowane środowisko programistyczne
Arduino Uno logo.png
Logo programu
Arduino IDE - v0011 Alpha.png
Interfejs programu
Producent Arduino Software
System operacyjny wieloplatformowy
Napisane w Java, C, C++
Pierwsze wydanie 2005
Aktualna wersja stabilna 1.0.5-r2 – 8 stycznia 2014[1]
Aktualna wersja testowa 1.5.5-r2 BETA – 10 stycznia 2014[1]
Licencja LGPL lub GPL
http://www.arduino.cc

Arduinoplatforma programistyczna dla systemów wbudowanych oparta na prostym projekcie Open Hardware przeznaczonym dla mikrokontrolerów montowanych w pojedynczym obwodzie drukowanym, z wbudowaną obsługą wejścia/wyjścia oraz standaryzowanym językiem programowania[2]. Język programowania Arduino jest oparty na środowisku Wiring i zasadniczo na języku C/C++ (kilka prostych przekształceń kodu wykonywane przed przejściem do avr-gcc)[3]. Celem projektu Arduino jest przygotowanie narzędzi – ogólnodostępnych, tanich, nie wymagających dużych nakładów finansowych, elastycznych i łatwych w użyciu przez hobbystów. Częściowo Arduino stanowi również alternatywę dla osób, które nie mają dostępu do bardziej zaawansowanych kontrolerów, wymagających bardziej skomplikowanych narzędzi[4].

Arduino może być wykorzystany do tworzenia samodzielnych interaktywnych obiektów lub może być podłączony do komputera-hosta. Typowa płyta Arduino zawiera kontroler, cyfrowe i analogowe linie wejścia/wyjścia, oraz interfejs szeregowy lub USB dla połączeń z komputerem-hostem. Komputer jest wykorzystywany do programowania kontrolera oraz do interakcji w czasie działania z Arduino. Pomimo tego, że płyty Arduino generalnie nie posiadają funkcjonalności sieciowych, częstym rozwiązaniem jest łączenie jednego lub kilku Arduino z hostem sieciowym, gdzie Arduino używa się w roli sprzętowych kontrolerów, a host przyjmuje rolę sieci lub interfejsu użytkownika. Budowanie interfejsu hosta jest proste, ponieważ oprogramowanie hosta może być pisane w różnych językach. Możliwe jest programowanie interfejsu w kilkunastu językach programowania, m.in. w Javie, ActionScript, C/C++, C#, Perl, VBScript[5].

Programowanie odbywa się najczęściej za pośrednictwem Arduino IDE[6] bazującym na projekcie Processing. Sam język programowania Arduino[7] bazuje na Wiring i przypomina język C. Wewnątrz Arduino IDE kod programu jest pośrednio kompilowany przez avr-gcc, a następnie wgrywany do podłączonej płyty Arduino. IDE działa wtedy jako emulator terminala szeregowego, pozwalając na interakcję z pracującym Arduino.

Obecnie układy Arduino bazują na mikrokontrolerach Atmel AVR. Nie jest to formalnym wymogiem i może być rozszerzony, o ile sprzęt i narzędzia będą wspierały język Arduino i zostaną zaakceptowane przez Projekt Arduino[2]. Na rynku istnieje wiele klonów, inspirowanych oryginalnym Arduino, bądź kompatybilne z jego rozszerzeniami, takimi jak karty rozszerzeń, jednak rozprowadzanych pod innymi nazwami.

Obecnie sprzedawane są wstępnie zmontowane układy Arduino, jednak cały czas jest dostępny schemat sprzętowy dla tych którzy chcą zbudować Arduino samodzielnie.

W 2008 roku projekt Arduino otrzymał wyróżnienie w kategorii Digital Communities na Prix Ars Electronica[8][9].

Projekt zapoczątkowany został w 2005 roku we Włoszech w celu zbudowania urządzenia kontrolującego studenckie projekty interakcyjne jako tańsza alternatywa dla innych dostępnych wtedy systemów prototypowania. Do października 2008 roku zostało sprzedanych ponad 50.000 sztuk Arduino[10].

Platforma[edytuj | edytuj kod]

Hardware[edytuj | edytuj kod]

Płyta Arduino składa się z 8-bitowego mikrokontrolera Atmel AVR z uzupełniającymi elementami w celu ułatwienia programowania oraz włączenia innych układów. Ważnym aspektem jest standardowy sposób, w jaki wyprowadzone są złącza, pozwalające na podłączenie płyty z mikrokontrolerem do różnych wymiennych modułów dodatkowych (nazywanych shieldami). Oficjalne płyty Arduino wykorzystują układy z serii megaAVR, a konkretnie ATmega8, ATmega168, ATmega328, oraz ATmega1280 i ATmega 2560.[potrzebne źródło] Kilka innych układów jest wykorzystywanych w klonach Arduino. Większość płyt zawiera 5V regulator napięcia, 16 MHz rezonator kwarcowy (w niektórych odmianach rezonator ceramiczny), chociaż niektóre projekty, takie jak LilyPad działają na częstotliwości 8 MHz i rezygnują z regulatora napięcia na płycie ze względu na szczególne ograniczenia wielkości układu. Mikrokontroler Arduino jest wstępnie zaprogramowany z wykorzystaniem programu rozruchowego, co upraszcza przesyłanie programu do pamięci flash układu, w porównaniu do innych urządzeń, gdzie najczęściej potrzebny jest zewnętrzny programator mikrokontrolera.

Na poziomie konceptualnym wszystkie płyty Arduino są programowane za pośrednictwem interfejsu szeregowego RS-232, jednak sprzętowa implementacja jest zależna od konkretnej wersji. Serial Arduino zawierają prosty obwód inwertera do konwersji sygnału pomiędzy RS-232 i TTL. Obecne płyty Arduino są programowane przez USB realizowane przez adapter USB-to-Serial taki jak układ FTDI FT232. Niektóre warianty Arduino, takie jak Arduino Mini i nieoficjalny Boarduino używają odłączanego adaptera USB-to-Serial w formie płyty lub kabla, Bluetooth lub innych metod.

Na płycie Arduino większość pinów wejścia/wyjścia mikrokontrolera jest wyprowadzona do wykorzystania przez inne układy. Dla przykładu, Diecimila, obecnie zastąpiona przez Duemilanove, udostępnia 14 cyfrowych pinów wejścia/wyjścia – 6 które mogą wytwarzać sygnały PWM i 6 wejść analogowych. Wszystkie piny są wyprowadzone na wierzchu płyty za pośrednictwem 0,1-calowych żeńskich styków. Na rynku dostępne są płyty nazywane potocznie shieldami, które po podłączeniu za pośrednictwem wyprowadzonych pinów do płyty Arduino rozszerzają możliwości macierzystego układu o jedną lub kilka funkcjonalności, np. obsługa bezprzewodowej transmisji Bluetooth lub IrDA.

Arduino Nano oraz kompatybilne z Arduino – Barebones i Boarduino, mają dodatkowo, na spodniej stronie płyty wyprowadzone męskie styki, co pozwala na podłączenie układu do płytki prototypowej.

Oprogramowanie[edytuj | edytuj kod]

Arduino IDE jest wieloplatformową aplikacją napisaną w języku Java, wydzieloną z IDE przygotowanego dla języka Processing i projektu Wiring. Środowisko jest zaprojektowane w taki sposób, aby było przyjazne dla hobbystów i osób niezajmujących się tworzeniem oprogramowania. IDE zawiera edytor kodu z takimi funkcjami jak podświetlanie składni czy automatyczne wcięcia w kodzie, oraz pozwala na kompilację i upload programu do płyty Arduino. Zazwyczaj nie ma potrzeby dodatkowej edycji plików Makefile lub uruchamiania programów z linii poleceń.

Standardowo IDE Arduino zawiera bibliotekę C/C++ o nazwie "Wiring" (z projektu o tej samej nazwie), dzięki czemu wykonywanie podstawowych operacji wejścia / wyjścia staje się znacznie łatwiejsze. Programy dla Arduino są napisane głównie w języku C/C++, jednak użytkownicy muszą zdefiniować jedynie dwie funkcje, aby otrzymać gotowy do uruchomienia program:

  • setup() – funkcja wykonywana raz, na początku działania programu, wykorzystywana najczęściej do ładowania ustawień,
  • loop() – funkcja wywoływana wielokrotnie, przez cały okres działania programu, czyli do czasu odłączenia zasilania od układu.

Typowy pierwszy program dla mikrokontrolera Arduino ma za zadanie spowodować miganie wbudowanej w układ diody LED . W środowisku Arduino, użytkownik może napisać program w następujący sposób:

#define LED_PIN 13
 
void setup () {
    pinMode (LED_PIN, OUTPUT);     // ustawienie pinu 13 jako cyfrowego wyjścia
}
 
void loop () {
    digitalWrite (LED_PIN, HIGH);  // włączenie diody LED
    delay (1000);                  // odczekanie sekundy (1000 milisekund)
    digitalWrite (LED_PIN, LOW);   // wyłaczenie diody LED
    delay (1000);                  // odczekanie sekundy
}

Powyższy kod nie jest widziany przez kompilator jako poprawny program, więc gdy użytkownik kliknie na "Upload to I/O board" w oknie IDE kopia kodu jest zapisywana do pliku tymczasowego, gdzie dodatkowo dołączany jest nagłówek include na początku i prostą funkcją main() na końcu pliku:

#include "WProgram.h"
#define LED_PIN 13
 
void setup () {
    pinMode (LED_PIN, OUTPUT);     // ustawienie pinu 13 jako cyfrowego wyjścia
}
 
void loop () {
    digitalWrite (LED_PIN, HIGH);  // włączenie diody LED
    delay (1000);                  // odczekanie sekundy (1000 milisekund)
    digitalWrite (LED_PIN, LOW);   // wyłączenie diody LED
    delay (1000);                  // odczekanie sekundy
}
int main(void)
{
    init();
 
    setup();
 
    for (;;)
        loop();
 
    return 0;
}

"WProgram.h" jest głównym nagłówkiem włączającym do programu bibliotekę Wiring, a funkcja main() wykonuje tylko trzy wywołania: init(), zdefiniowane przez IDE, oraz setup() i loop() zdefiniowane przez użytkownika

IDE Arduino używa do kompilacji programów zestawu narzędzi GNU Toolchain i biblioteki AVR Libc, natomiast do uploadu programu do płyty Arduino wykorzystywany jest program AVRDude.

Oficjalne układy[edytuj | edytuj kod]

Arduino Diecimila

Oryginalne układy Arduino produkowane są przez włoską firmę Smart Projects. Niektóre układy z rodziny Arduino zaprojektowane przez amerykańską firmę SparkFun Electronics.

Do tej pory wyprodukowano siedemnaście wersji układów Arduino:[11]

  1. Serial Arduino, programowany przez interfejs szeregowy DB9 i korzystający z układu ATmega8
  2. Arduino Extreme, programowany przez interfejs USB i zaopatrzony w układ ATmega8
  3. Arduino Mini, miniaturowa wersja Arduino wykorzystująca montowany powierzchniowo układ ATmega168 lub Atmega328
  4. Arduino Nano, jeszcze mniejsza wersja Arduino, zasilana przez USB zaopatrzona w montowany powierzchniowo układ ATmega168
  5. Arduino LilyPad, minimalistyczny projekt wykorzystujący montowany powierzchniowo układ ATmega168
  6. Arduino NG, programowany przez interfejs USB i korzystający z układu ATmega8
  7. Arduino NG plus, programowany za pośrednictwem interfejsu USB i zaopatrzony w układ ATmega168
  8. Arduino BT, programowana bezprzewodowo przez interfejs Bluetooth korzystająca z układu ATmega168
  9. Arduino Diecimila, z interfejsem USB i układem Atmega168 w obudowie DIL28 (na rysunku obok)
  10. Arduino Duemilanove ("2009"), wykorzystujący Atmega168 (Atmega328 w nowszych wersjach) zasilany z zewnętrznego zasilacza lub przez USB
  11. Arduino Mega, zaopatrzony w montowany powierzchniowo układ ATmega1280, dzięki czemu posiada więcej pamięci i pinów wejścia/wyjścia[12].
  12. Arduino Uno, wersja z programowalnym interfejsem USB i układem Atmega328
  13. Arduino Leonardo, wersja z układem ATmega32u4, który jest sercem Arduino i odpowiada za komunikację USB
  14. Arduino Ethernet, wersja z układem ATmega328, interfejsem Ethernet zamiast USB oraz czytnikiem kart microSD
  15. Arduino Yún, wersja z układem ATmega32u4 oraz wbudowanym układem WiFi
  16. Arduino Esplora, wersja z układem Atmega32U4, płytka zaprojektowana jako baza pod kontroler do konsoli
  17. Arduino Robot, wersja zbudowana z dwóch okrągłych płyt, każda wyposażona w procesor ATmega32u4

Otwarty sprzęt i otwarte oprogramowanie[edytuj | edytuj kod]

 Osobny artykuł: Open Hardware.

Referencyjny schemat sprzętowy układu Arduino jest rozpowszechniany na licencji Creative Commons Attribution Share-Alike 2.5 i jest dostępny na stronie www projektu Arduino. Dostępne są również dokładne schematy budowy niektórych wersji układów Arduino[11]. Kod źródłowy IDE Arduino i biblioteki sprzętowe dla Arduino są udostępniane i rozpowszechniane na licencji GPLv2[13].

Dodatkowy osprzęt[edytuj | edytuj kod]

Proto-shield, zamontowany na Arduino

Zarówno Arduino jak i jego klony mogą korzystać z płyt rozszerzeń, potocznie nazywanych shieldami, które wpina się w zazwyczaj wyprowadzone złącza głównego układu. Shieldy mogą w ten sposób rozszerzać bazowy układ Arduino o różnorodne funkcje, np. dostarczać interfejs Ethernet lub Bluetooth, kontrolę silników, prototypowanie układów[14].

Przykładowe shieldy:

  • Arduino Ethernet Shield
  • Arduino Motor Shield
  • XBee Shield
  • TouchShield
  • Extender Shield
  • InputShield

Klony[edytuj | edytuj kod]

Od czasu, gdy projekty sprzętu i oprogramowania dla Arduino są dostępne w ramach licencji copyleft, programiści wyrazili pragnienie, aby nazwa "Arduino" (oraz jej pochodne) była używana wyłącznie w odniesieniu do oficjalnych produktów i niewykorzystywana do prac pochodnych bez zezwolenia. Oficjalny dokument dotyczący polityki używania nazwy Arduino podkreśla, że projekt jest otwarty na włączanie prac innych autorów do oficjalnego produktu[15].

W wyniku zastrzeżenia konwencji nazewnictwa Arduino, grupa użytkowników Arduino utworzyła fork projektu w oparciu o układ Arduino Diecimila wydając ekwiwalent oryginału pod nazwą Freeduino. Nazwa Freeduino nie jest zastrzeżona i może być używana w dowolny sposób[16].

Kilka produktów kompatybilnych z Arduino, unikają macierzystej nazwy, używając różnych wariantów nazwy 'duino'. Komercyjne wersje tych produktów są sprzedawane przez innych producentów.

Klony zgodne z shieldami[edytuj | edytuj kod]

Następujące układy są w pełni lub prawie w pełni kompatybilne zarówno ze sprzętem jaki i oprogramowaniem Arduino, w tym są zgodne z shieldami.

  • Freeduino SB, produkowany i sprzedawane jako minizestaw przez Solarbotics Ltd.
  • Freeduino MaxSerial, układ z standardowym interfejsem szeregowym DB9, produkowana i sprzedawana jako gotowy układ lub kit przez Fundamental Logic.
  • Freeduino Through-Hole, układ nie wykorzystujący technologii montażu powierzchniowego, produkowany i sprzedawany jako kit przez NKC Electronics.
  • Illuminato, układ wykorzystujący mikrokontroler ATMega645 zamiast ATMega168. Posiada 64KB pamięci flash, 4KB pamięci RAM i 32 piny wejścia/wyjścia ogólnego przeznaczenia. Sprzęt i oprogramowanie mają otwarty kod źródłowy. Płyta jest zaprojektowana tak, aby miała smukły wygląd. Dodatkowo, posiada 10 diod LED, które mogą być kontrolowane przez "ukryte" komendy. Dystrybuowany przez Liquidware.
  • Metaboard, układ zaprojektowany by charakteryzował się bardzo małą złożonością, a co za tym idzie, niską ceną. Sprzęt i oprogramowanie mają otwarty kod źródłowy. Rozwijany przez Metalab.
  • MMduinoUNO, zgodny z Arduino Duemilanove, produkowany i sprzedawany przez Propox sp. z o.o. Jeden z najtańszych klonów na polskim rynku, w odróżnieniu od oryginału posiada dodatkowo męskie złącza goldpin od spodu płytki.
  • Seeeduino, zbudowany w oparciu o schemat Arduino Diecimila.
  • eJackino, kit dystrybuowany przez CQ Publisher w Japonii.
  • Wiseduino, układ dla mikrokontrolerów kompatybilnych z Arduino, zawierający zegar czasu rzeczywistego DS1307 (RTC) z zapasową baterią, kość EEPROM 24LC256 oraz złącze adaptera XBee do bezprzewodowej komunikacji.
  • SunDuino to polski klon oparty na Arduino PRO, pozbawiony układu FTDI, ale zgodny programowo i sprzętowo z płytkami ARDUINO DECIMILA, rozwijany przez grupę Lothar Team znaną ze świetnych dem na C=64 i AMIGA, której założycielem jest koder grupy SunRiver znany swego czasu jako AndzinSan. Obecnie trwają prace nad SunDuino32, które mają być zgodne ze shieldami Arduino, ale posiadać na pokładzie będą mikrokontrolery STM32F10x. Na stronie jest wzmianka, że już udało się doprowadzić do działania ze środowiskiem ARDUINO płytkę STM32VL Discovery.

Klony zgodne z programem rozruchowym[edytuj | edytuj kod]

Sanguino

Te układy są zgodne z oprogramowaniem dla Arduino, jednak nie są kompatybilne z shieldami. Posiadają inne złącza zasilania i złącza wejścia/wyjścia, takie jak szereg pinów na spodniej stronie płytki do łączenia z płytkami prototypowymi, czy bardziej wyspecjalizowane złącza.

  • "Oak Micros om328p" – kompaktowa wersja Arduino Duemilanove w postaci urządzenia na płytce prototypowej (36 mm x 18 mm), które można umieścić w standardowym złączu 28-pinowym, z obsługą USB, układem ATmega328p oraz 6 diodami LED.
  • "Boarduino" – niedrogi klon układu Diecimila przeznaczony do prototypowania, produkowany przez Adafruit.
  • "Bare Bones Board" (BBB) oraz "Really Bare Bones Board" (RBBB) produkowane przez Modern Device – tanie i kompaktowe klony przeznaczone do prototypowania.
  • "iDuino", płyta z interfejsem USB do prototypowania, produkowana i sprzedawana jako kit przez Fundamental Logic.
  • "Sanguino" – otwarty, wzmocniony klon Arduino wykorzystujący układ ATMega644P zamiast ATMega168. Posiada 64KB pamięci flash, 4KB pamięci RAM i 32 piny wejścia/wyjścia ogólnego przeznaczenia zamknięte w 40-pinowym układzie DIP. Rozwijany w ramach projektu RepRap.
  • "LEDuino", układ z rozszerzoną magistralą I²C, dekoderem DCC oraz interfejsem magistrali CAN. Produkowane z użyciem montażu powierzchniowego, sprzedawane jako kompletne układy przez Siliconrailway.
  • "Stickduino", podobny do klucza USB.
  • "Roboduino", zaprojektowany do zastosowań w robotyce. Wszystkie złącza posiadają sąsiadujące linie zasilający, do których w łatwy sposób mogą być podłączone różnego rodzaju silniki i czujniki. Wyprowadzone są dodatkowe złącza zasilające oraz do komunikacji szeregowej. Układ jest rozwijany przez Curious Inventor, L.L.C.
  • "Wireless Widget", kompaktowy (35 mm × 70 mm), nisko-napięciowy, zasilany bateryjnie klon Arduino zaopatrzony w interfejs komunikacji bezprzewodowej o zasięgu do 120 m.
  • "Crowduino" Oparty na płytce Duemilanove. Układ posiada dodatkowe złącza, które pozwalają na podłączanie modułów XBee.

Zespół projektowy[edytuj | edytuj kod]

Zespół projektowy Arduino składa się z sześciu osób: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis i Nicholas Zambetti.

Zobacz też[edytuj | edytuj kod]

Przypisy

Bibliografia[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]