Arduino Due to płytka z 32-bitowym mikrokontrolerem SAM3X8E ARM Cortex-M3 taktowanym zegarem 84 MHz. Ma 54 cyfrowe piny I/O, 12 wejść analogowych, 2 wyjścia DAC, 4 sprzętowe UART-y, USB OTG, CAN, SPI, TWI/I2C, 512 KB pamięci Flash i 96 KB SRAM.
Najważniejsza różnica względem klasycznych płytek Arduino Uno i Mega to przejście z 8-bitowego AVR na 32-bitowy układ ARM oraz praca z logiką 3,3 V. Arduino Due jest znacznie mocniejsze sprzętowo, ale wymaga większej uwagi przy modułach, shieldach i bibliotekach pisanych z myślą o AVR.
Co to jest Arduino Due?
Arduino Due to oficjalna płytka z rodziny Arduino, oparta na mikrokontrolerze Atmel/Microchip SAM3X8E. Układ należy do rodziny SAM3X/SAM3A i wykorzystuje rdzeń ARM Cortex-M3, czyli architekturę inną niż 8-bitowe AVR znane z Arduino Uno i części starszych płytek.
Due jest płytką mikrokontrolerową, nie małym komputerem jednopłytkowym. Nie uruchamia systemu Linux i nie działa jak Raspberry Pi. Program wykonywany jest bezpośrednio na mikrokontrolerze, a kod steruje peryferiami, przerwaniami, timerami, pamięcią i interfejsami komunikacyjnymi.
W środowisku Arduino płytka zachowuje znany model pracy: szkic, funkcje setup() i loop(), biblioteki oraz programowanie przez USB. Różnica zaczyna się niżej: w architekturze procesora, rejestrach, poziomach napięć, dostępnych peryferiach i zgodności kodu zależnego od konkretnego mikrokontrolera.
Arduino Due a Arduino Uno i Mega
Arduino Due najlepiej rozumieć przez porównanie z Uno i Mega. Mechanicznie może przypominać większe płytki Arduino, ale elektrycznie i architektonicznie jest inną klasą sprzętu.
| Cecha | Arduino Due | Arduino Uno / Mega |
|---|---|---|
| Mikrokontroler | SAM3X8E / AT91SAM3X8E | ATmega328P w Uno, ATmega2560 w Mega |
| Rdzeń | ARM Cortex-M3, 32-bit | AVR, 8-bit |
| Taktowanie | 84 MHz | Zwykle 16 MHz |
| Logika I/O | 3,3 V | Zwykle 5 V |
| Piny cyfrowe | 54 I/O, w tym 12 PWM | Uno: 14 I/O, Mega: 54 I/O |
| Wejścia analogowe | 12 | Uno: 6, Mega: 16 |
| DAC | 2 prawdziwe wyjścia analogowe | Brak prawdziwego DAC |
| UART | 4 sprzętowe porty szeregowe | Uno: 1, Mega: 4 |
| Pamięć Flash | 512 KB | Uno: 32 KB, Mega: 256 KB |
| SRAM | 96 KB | Uno: 2 KB, Mega: 8 KB |
| USB | Programowanie + USB OTG | Głównie programowanie/komunikacja przez konwerter USB-serial |
| CAN | Dostępny w mikrokontrolerze | Brak natywnego CAN w klasycznych AVR Arduino |
| Biblioteki | Muszą wspierać ARM/SAM3X | Bardzo szeroka zgodność ze światem AVR |
Ta tabela pokazuje główną różnicę: Due nie jest tylko „większym Uno”. To płytka z inną architekturą, większą pamięcią, szybszym rdzeniem i bardziej rozbudowanymi peryferiami, ale z mniejszą bezpośrednią zgodnością z częścią starszego ekosystemu AVR.
Co daje rdzeń ARM Cortex-M3?
ARM Cortex-M3 w Arduino Due daje 32-bitową architekturę, szybsze taktowanie i większy komfort pracy z danymi niż w 8-bitowych AVR. Ma to znaczenie przy obliczeniach na większych liczbach, buforowaniu ramek, obsłudze kilku interfejsów, sterowaniu czasowym i bardziej rozbudowanych strukturach programu.
Większa pamięć SRAM jest równie ważna jak sam zegar. W projektach embedded ograniczeniem często nie jest liczba pinów, lecz RAM na bufory komunikacyjne, tablice pomiarowe, dane z czujników, kolejki, parsery protokołów i biblioteki. 96 KB SRAM w Due daje znacznie większy margines niż 2 KB w Arduino Uno.
Różnica architektury ma też konsekwencje programistyczne. Kod napisany wysoko poziomowo w Arduino API zwykle łatwiej przenieść. Kod dotykający bezpośrednio rejestrów AVR, timerów, masek portów albo specyficznych przerwań wymaga sprawdzenia albo przepisania pod SAM3X8E.
Arduino Due a logika 3,3 V
Arduino Due pracuje z logiką 3,3 V. Piny I/O nie są wejściami 5 V tolerant, więc podanie sygnału 5 V na pin cyfrowy lub analogowy może uszkodzić mikrokontroler.
To ograniczenie dotyczy nie tylko prostych wejść i wyjść, ale też magistral UART, SPI, I2C, sygnałów z enkoderów, modułów radiowych, czujników, wyświetlaczy i układów wykonawczych. Jeżeli druga strona układu pracuje na innym poziomie logicznym, potrzebny jest poprawny konwerter poziomów, bufor, dzielnik napięcia albo moduł zgodny z 3,3 V.
Przy wejściach analogowych zakres pomiaru również trzeba odnosić do 3,3 V. Sygnał z czujnika napięciowego, dzielnika, przetwornika albo modułu wyjściowego nie może przekraczać dopuszczalnego zakresu wejścia ADC. W tym miejscu ważne jest nie samo „podłączenie przewodu”, ale realne napięcie elektryczne, które pojawia się na pinie.
Peryferia Arduino Due
Największą przewagą Due nad prostszymi płytkami Arduino jest zestaw peryferiów. Cztery sprzętowe UART-y pozwalają obsługiwać kilka urządzeń szeregowych bez uciekania w programowe emulowanie portu. Przy takiej komunikacji znaczenie ma poprawny baud rate, format ramki i zgodność poziomów logicznych.
SPI oraz TWI/I2C służą do komunikacji z czujnikami, pamięciami, wyświetlaczami, przetwornikami i ekspanderami. CAN jest przydatny w systemach sterowania, automatyce, projektach pojazdowych i urządzeniach, które mają wymieniać komunikaty w magistrali odpornej na zakłócenia. USB OTG daje więcej możliwości niż zwykłe programowanie przez port USB, bo mikrokontroler może pracować w bardziej elastycznych scenariuszach komunikacyjnych.
Dwa wyjścia DAC są jedną z najbardziej konkretnych różnic względem Uno i Mega. PWM może zostać przefiltrowany i wykorzystany jako przybliżenie sygnału analogowego, ale DAC generuje rzeczywiste napięcie analogowe z przetwornika cyfrowo-analogowego. To ma znaczenie przy prostych generatorach, sygnałach odniesienia, testach układów pomiarowych, sterowaniu analogowym i eksperymentach z audio.
Shieldy, moduły i biblioteki
Shield zgodny kształtem z większym Arduino nie musi być zgodny z Arduino Due. Różnice mogą dotyczyć poziomów sygnałów, timerów, pinów przerwań, sposobu obsługi portów, mapowania rejestrów i zależności bibliotek.
Najwięcej problemów sprawiają biblioteki, które nie korzystają wyłącznie z Arduino API, lecz przyspieszają działanie przez bezpośredni dostęp do sprzętu. Kod typu PORTB, rejestry timerów AVR, specyficzne wektory przerwań albo założenia o 8-bitowej architekturze nie są neutralne między AVR i SAM3X.
Przy prototypowaniu samo połączenie przewodem nie mówi nic o zgodności układu. Jumper wire może przenieść sygnał między pinami, ale nie rozwiązuje kwestii poziomu logicznego, kierunku magistrali, obciążenia linii, pull-upów ani zgodności biblioteki z architekturą ARM.
Gdzie Arduino Due ma sens?
Arduino Due warto rozważyć wtedy, gdy projekt potrzebuje większej wydajności niż typowy AVR, kilku portów szeregowych, większej pamięci, prawdziwego DAC, USB OTG, CAN albo bardziej rozbudowanego sterowania czasowego. To nadal środowisko Arduino, ale z mikrokontrolerem bliższym większym projektom embedded.
Due nie jest najlepszym wyborem do każdego prostego projektu. Przy pojedynczym czujniku, LED-ach, przyciskach albo tutorialach pisanych pod Uno prostsza płytka bywa wygodniejsza. Przy projektach wymagających Wi-Fi, Bluetooth albo dużej liczby gotowych bibliotek sieciowych często bardziej naturalny będzie ESP32 lub nowsza płytka z wbudowaną łącznością bezprzewodową.
Najlepszy scenariusz dla Due to projekt, w którym potrzebna jest wydajniejsza platforma mikrokontrolerowa, ale nadal bez systemu operacyjnego i bez przechodzenia na komputer jednopłytkowy. To płytka do sterowania, pomiarów, komunikacji i buforowania danych, a nie zamiennik Raspberry Pi.
Arduino Due – co trzeba zapamiętać?
Arduino Due to 32-bitowa płytka Arduino z mikrokontrolerem SAM3X8E ARM Cortex-M3, zegarem 84 MHz, dużą liczbą pinów, kilkoma UART-ami, USB OTG, CAN, dwoma wyjściami DAC oraz znacznie większą pamięcią niż klasyczne Arduino Uno.
Najważniejsze hasła przy tej płytce to: ARM zamiast AVR, 3,3 V zamiast klasycznego świata 5 V, więcej pamięci, więcej peryferiów i konieczność sprawdzenia zgodności bibliotek oraz modułów przed przeniesieniem projektu z Uno albo Mega.
