Historia
Cała historia projektu Arduino zaczęła się od pracy magisterskiej Hernando Barragána, który był wówczas studentem włoskiej szkoły wyższej Interaction Design Institute w mieście Ivrea. Celem jego pracy było umożliwienie artystom stosowania urządzeń elektronicznych i programowania podczas realizacji różnych instalacji artystycznych. W 2003 r. Barragán rozpoczął projekt Wiring, który był tak naprawdę protoplastą całej rodziny Arduino. Założeniem platformy Wiring było ułatwienie programowania i tworzenia urządzeń elektronicznych osobom, które nie mają wykształcenia inżynierskiego ani praktycznego doświadczenia w projektowaniu i budowie układów.
Najważniejsze zasady projektu Wiring – proste środowisko IDE i przyjazny język programowania
Hernando Barragán sformułował dla swojego projektu kilka kluczowych zasad. Pierwsza z nich głosi, że ma to być proste, zintegrowane środowisko programistyczne (IDE), bazujące na projekcie Processing. Swoją drogą, platforma Processing, która do dzisiaj znana jest na świecie i nadal się rozwija, zapoczątkowana została przez jednego z wykładowców IDII (a jednocześnie promotora pracy Barragána). Środowisko Processing działa na wszystkich kluczowych systemach operacyjnych, czyli na Windowsie, Mac OS X i na Linuksie, w związku z czym umożliwia tworzenie szkiców (więc także kodów źródłowych do Arduino) na dowolnej z tych platform. Takie podejście otworzyło drogę do Arduino, a wcześniej do modułu Wiring, użytkownikom różnych systemów operacyjnych.
Oprócz środowiska programistycznego, prosty jest także język programowania, czyli swego rodzaju framework dla mikrokontrolerów Arduino. Język ten wykazuje daleko idące podobieństwa do C++. Tak naprawdę widać w nim tylko pewne pojedyncze modyfikacje względem klasycznych programów C++, np. brak obecności funkcji głównej programu, czyli main(). Program sam dokonuje pewnych zmian w kodzie, zanim jeszcze zostanie on właściwie skompilowany przez klasyczny kompilator C(++) dla mikrokontrolerów AVR.
Zintegrowany toolchain oraz wgrany wstępnie bootloader
Trzecią zasadą przyjętą przez twórcę Arduino jest całkowita integracja toolchaina. Toolchain w dosłownym tłumaczeniu oznacza „łańcuch narzędziowy” – to zestaw programów koniecznych do przygotowania programu dla mikrokontrolera. Do programów tych należy oczywiście m.in. kompilator i linker, czyli dwie główne aplikacje służące do przetwarzania kodu źródłowego (zapisanego tekstowo) na kod maszynowy zrozumiały dla mikrokontrolera i przesyłany bezpośrednio do pamięci flash. Oprócz tego bardzo ważne było także, aby w mikrokontrolerach nowej platformy – nazywanej wtedy jeszcze Wiring – znajdował się wstępnie wgrany bootloader, czyli malutki program, znajdujący się w pamięci flash mikrokontrolera obok programu napisanego przez użytkownika. Zasada działania bootloadera polega na wgrywaniu kodu maszynowego programu do pamięci mikrokontrolera, bez konieczności angażowania do tego celu zewnętrznego programatora. Programiście wystarczy sam interfejs, w tym przypadku UART, co zdecydowanie ułatwia konstrukcję modułu i zmniejsza koszt całości, a przy tym czyni moduł niejako samowystarczalnym.
Monitor portu szeregowego i oprogramowanie open source
W środowisku Arduino IDE, a tak naprawdę we wcześniejszym Wiring miał – zgodnie z intencjami twórcy – znaleźć się także monitor portu szeregowego. Służył on do komunikacji z mikrokontrolerem, odczytywania płynących z niego danych oraz wysyłania komend sterujących. Hernando Barragán, jako zwolennik idei open source, kładł nacisk na to, by narzędzia tworzone były na bazie oprogramowania otwartoźródłowego.
Atmel i baza wiedzy on-line
Kolejne, siódme już z kluczowych założeń głosiło, że platforma Wiring ma opierać się na mikrokontrolerze firmy Atmel. Wprawdzie w toku prac nad prototypami przez dłuższy czas testowane były także płytki z mikrokontrolerami innych producentów, pochodzące z innych rodzin, ale żadne z konkurencyjnych rozwiązań nie dorównało mikokontrolerowi AVR. Idea dzielenia się kodem źródłowym programu (towarzysząca projektowi Arduino do dziś) szła w parze z ideą dzielenia się wiedzą. Stąd pomysł utworzenia obszernej bazy informacji on-line. Miała ona zawierać opis używanych w bibliotekach programistycznych funkcji, a także gotowe przykłady programów, tutoriale, forum i przykładowe projekty stworzone z użyciem Wiring.
Trudne początki Arduino
Historia platformy Arduino, a tak naprawdę na samym początku platformy Wiring, jest długa i burzliwa. Oprócz różnego rodzaju problemów, które zawsze towarzyszą pracom nad nowymi wynalazkami, tutaj pojawiały się także pewne problemy personalne pomiędzy głównymi twórcami projektu. Spory (nawet sądowe) dotyczyły zarówno własności nazwy Arduino, jak i udziału w poszczególnych firmach zajmujących się rozwojem tego środowiska. Na szczęście dla użytkowników i z pożytkiem dla wszystkich, którzy używają Arduino, okazało się, że konkurencja między współtwórcami nie wpłynęła negatywnie na rozwój platformy Arduino.
W internecie dostępna jest oryginalna praca magisterska, która stworzyła podwaliny pod rozwój platformy Wiring, chociaż w rzeczywistości droga do stworzenia np. Arduino Uno czy Arduino Leonardo była znacznie dłuższa, niż wynika to z samej tylko pracy dyplomowej złożonej w 2004 roku. Wówczas autor opisał wersję płytki poprzedzającej znane nam dzisiaj Arduino. W czasie testów i prototypowania Hernando Barragán używał m.in. płytki Javelin Stamp firmy Parallax, jednak okazała się ona niezbyt dobrym wyborem, ponieważ wymagała korzystania z własnościowych narzędzi Parallax. Takie ograniczenie stało w sprzeczności z ideą open source, której wierny był twórca Arduino. Drugi prototyp bazował na wydajnym mikrokontrolerze ARM, ale i tu pojawiały się prozaiczne problemy, m.in. z lutowaniem ręcznym procesora. Obudowa LQFP powodowała, że mniej wprawni elektronicy nie mieliby szansy samodzielnie zmontować płytki lub – w razie potrzeby – wymienić uszkodzonego układu.
Płytka Wiring i początek światowej kariery
Trzeci prototyp wykorzystywał już płytkę z mikrokontrolerem ATmega128 i bazował na kultowym zestawie Atmel STK500. Kolejne wersje bazowały np. na płytce MARVIC, komunikującej się z komputerem przez konwerter USB-UART. Na tym etapie całość była testowana i mocno rozwijana szczególnie we współpracy ze wspomnianym wcześniej oprogramowaniem bazującym na środowisku Processing. Cały proces projektowania doprowadził wreszcie do stworzenia płytki Wiring, szeroko opisanej we wspomnianej pracy magisterskiej. Jej forma zbliżała się już do znanego nam dzisiaj Arduino, choć nie miała jeszcze ani kształtu obecnie stosowanych płytek, ani też nie była w pełni kompatybilna pod względem ułożenia pinów GPIO w złączach systemowych. Mimo to już w 2004 roku Wiring rozpoczął światową karierę. Rok później, dzięki podpisaniu kontraktu z firmą Advanced Circuits, wytworzonych zostało pierwszych 200 płytek. Ich produkcja odbywała się już poza Włochami – w Kolumbii, do której przeprowadził się w międzyczasie Barragán. Płytka Wiring zaczęła trafiać do odbiorców na całym świecie.
Coraz bliżej Arduino
Swego rodzaju protoplastą Arduino była płytka Wiring Lite, bliska znanemu nam obecnie formatowi. Korzystała ona z popularnego i taniego już wtedy mikrokontrolera ATmega8 w obudowie do montażu przewlekanego. W tym wydaniu wprowadzona została także charakterystyczna numeracja pinów, która ucieka od klasycznej nomenklatury portów. Zamiast określeń typu „port A” czy „port B”, Wiring Lite korzystała z prostej numeracji z podziałem na wejścia/wyjścia cyfrowe oraz wejścia analogowe. Drugą produkcyjną wersją płytki było Arduino Extreme v3, tym razem wyposażone w interfejs USB i przywodzące na myśl znane wielu elektronikom z ich warsztatowej praktyki Arduino Uno.
Epoka Shieldów i premierowe moduły główne
Już wkrótce do Arduino zaczęły powstawać pierwsze nakładki, z których później rozwinęła się rodzina rozszerzeń zwanych Arduino Shield. Pierwsze dwie nakładki służyły do obsługi modułu Bluetooth oraz do sterowania silnikami. W 2010 r. pojawiło się pierwsze Arduino Uno, które tak naprawdę do dzisiaj (obecnie w trzeciej odsłonie) jest bodaj najpopularniejszą wersją płytki. Także w 2010 r. światło dzienne ujrzało Arduino Mega 2560, również popularne do dziś. Tu płytka jest znacznie większa i udostępnia kilka razy więcej linii GPIO. Istotną wersją, zaprezentowaną jeszcze przed Arduino Mega 2560, było Arduino Mega – wprowadzone w 2009 roku i bazujące na nieco mniejszym mikrokontrolerze ATmega1280. Nie można także zapomnieć o wersji Arduino Due, stworzonej w 2012 roku i korzystającej z potężnego procesora ARM, który mógł już pracować z częstotliwością 84MHz i oferował 32-bitową architekturę, 512 kB pamięci flash oraz 96 kB pamięci SRAM.
Arduino Leonardo również pojawiło się w 2012 roku i korzystało z procesora ATmega32U4 z wbudowanym interfejsem USB, co pozwoliło na usunięcie konwertera USB-UART znanego z innych wersji płytki. Wcześniej, w 2011 roku, użytkownicy otrzymali nowość: moduł Arduino Ethernet, który można uznać za protoplastę młodszej wersji Arduno Yún, obsługującej zarówno interfejs Ethernet, jak i sieć radiową WiFi. Samo Arduino Yún natomiast dostępne jest na rynku od 2013 r. i stanowi kombinację płytki Arduino Leonardo oraz modułów do obsługi sieci internetowej.
Znane nam dzisiaj Arduino Nano jest za to kolejną wersją płytki, która swoją premierę miała 15.05.2008 roku. Niektórzy elektronicy korzystają także z niewielkich, okrągłych płytek o stosunkowo prostej konstrukcji, dostosowanych do wbudowywania w inteligentne ubrania – chodzi tutaj oczywiście o rodzinę LilyPad. Warto wiedzieć, że rodzina ta swoją premierę miała w 2007 roku, czyli stosunkowo wcześnie, bo zaledwie 4 lata od rozpoczęcia prac nad pierwszą wersją platformy Wiring. Pierwsze Arduino Micro pojawiło się za to w 2012 roku.
Podsumowanie
W miarę rozwoju rynku mikrokontrolerów cały czas pojawiają się nowe wersje modułów głównych Arduino, które często zaskakują parametrami technicznymi, wydajnością procesora czy też ilością pamięci RAM i Flash. Dzisiaj coraz więcej płytek z rodziny Arduino w ogóle nie przypomina już oryginalnych protoplastów, czyli np. poczciwego Arduino Uno czy Arduino Mega. Wprowadzane obecnie płytki to najczęściej bardzo małe urządzenia z wbudowanymi modułami radiowymi, dedykowane do projektów z kategorii internetu rzeczy (IoT), dysponujące np. wbudowanym interfejsem WiFi, Bluetooth czy slotami kart pamięci.
Długa i burzliwa historia Arduino doprowadziła do pozytywnej rewolucji. Obecnie na rynku mamy bardzo szeroki wybór uniwersalnych modułów głównych, jak i potężną liczbę nakładek typu Shield, które otwierają niespotykane wcześniej możliwości rozbudowy urządzeń bazujących na Arduino. Warto zauważyć, że tak naprawdę cała platforma powstała na bazie jednej tylko pracy magisterskiej i środowiska przygotowanego przez promotora tej pracy. Jak zwykle bywa w przemyśle i w biznesie, kluczową kwestią okazał się dobry pomysł i samozaparcie w jego realizacji.
Jeżeli jesteś ciekaw dodatkowych informacji o historii Arduino, sprawdź bloga Botland.