Arduino UNO R4 Minima - wydajna i nowoczesna, ale...

Arduino UNO R4 Minima - wydajna i nowoczesna, ale...

Na krótko przed wakacjami zespół Arduino wprowadził na rynek nową płytkę, a w zasadzie dwie wersje płytki zawierające ten sam procesor, są to Arduino UNO R4 Minima i Arduino UNO R4 WiFi. Obie bazują na układzie produkowanym przez Renesasa – 32-bitowym procesorze z rdzeniem ARM Cortex-M4 z rodziny RA4M1.

W założeniach płytka ma zastąpić Arduino UNO R3. Jak zwykle materiały marketingowe obiecują polepszenie wszystkich parametrów, co więcej, R4 to wręcz wprowadzenie „nowego wymiaru prototypowania”, a producent deklaruje zgodność (przynajmniej teoretyczną) zarówno sprzętową, jak i programową z większością aplikacji R3. Dla porównania w tabeli 1 zestawiono podstawowe parametry UNO R4 i UNO R3. Celowo porównuję wersję R4 Minima, a nie wersję R4 WiFi, gdyż po pierwsze UNO R3 także nie ma żadnych opcji komunikacji bezprzewodowej, a po drugie zakup jej wydawał się rozsądniejszy (była tańsza…).

Mikrokontroler

Wersja UNO R4 WiFi wydaje mi się dosyć nietypowym zestawieniem i przed zakupem wymaga dłuższego zastanowienia. W wersji WiFi do procesora RA4M1 podłączono ESP32, aby zapewnić komunikację bezprzewodową. Takie zestawienie to temat na odrębne opracowanie, ale już można znaleźć w sieci wiele niezbyt pochlebnych opinii o tym rozwiązaniu. Sytuacja jest tym bardziej zaskakująca, że krótko po premierze R4 WiFi udostępniona została płytka Nano ESP32 (S3).

Arduino UNO R4 Minima zachowuje zgodność mechaniczną z UNO R3. Zastosowany procesor R7FA4M1AB3CFM, co nie dziwi w dzisiejszych czasach, jest wlutowany bezpośrednio w płytkę, gdyż oczywiście nie jest oferowany w obudowach DIP, a tylko w obudowach LGA, LQFP i QFN o różnej, w zależności od podtypu, liczbie wyprowadzeń (40 do 100). Nie jest to dobra informacja dla konstruktorów, którym czasem udaje się uszkodzić procesor, tym razem nie obejdzie się bez wylutowania lub zakupu następnej sztuki.

UNO R4 zawiera R7FA4M1AB3CFM w obudowie LQFP64, budowę wewnętrzną procesora pokazano na rysunku 1. Z racji przemysłowej i motoryzacyjnej specjalizacji Renesas oferuje procesor zakwalifikowany do przemysłowego lub motoryzacyjnego zakresu temperatur, co zawsze gwarantuje większą stabilność rozwiązania, o ile inne komponenty nie zawiodą przy –40°C lub +85°C.

Rysunek 1. Budowa procesora rodziny R4M1 (za notą Renesasa)

Po szybkim sprawdzeniu dostępności procesora u największych dystrybutorów dowiadujemy się, że u niektórych procesory są dostępne, ale niepokojący jest termin 80 tygodni na dostawę większych ilości. Aktualnie w sklepie Arduino wersja Minima jest dostępna, a Wi-Fi niestety nie i nie jest znany termin ponownego pojawienia się w dystrybucji.

Złącza

Oprócz mikrokontrolera najbardziej widoczną zmianą jest zastosowanie współczesnego złącza USB-C, służącego zarówno do zasilania, jak i komunikacji. Zewnętrzny zasilacz w dalszym ciągu połączony jest poprzez złącze DCIN z typowym wtykiem 5,5/2,1 mm. Wysokie złącze zasilania wraz z niestandardowym rozstawem złączy GPIO utrudnia zarówno prototypowanie na płytkach stykowych, jak i kanapkowe łączenie nakładek – opierają się o złącze zasilania. Tutaj bez litości można przytoczyć powiedzenie o tym, że „mylić się jest rzeczą ludzką, ale tkwić w błędzie to już…”. Przynajmniej problem złącza DCIN można było rozwiązać inaczej, tym bardziej że UNO R4 i tak będzie wymagało nowej obudowy, ze względu na złącze USB-C.

W temacie obudowy pozostaje też kwestia podstawki z tworzywa, która jest dołączona do zestawu (fotografia 1). Być może w niektórych zastosowaniach będzie przydatna ale w większości przypadków wyląduje w koszu, ponieważ płytka Arduino trafi do obudowy docelowego urządzenia.

Fotografia 1. Arduino UNO R4 Minima w podstawce z tworzywa

Zasilanie

W przypadku układu zasilania poprawiono zakres napięć, dla których poprawnie pracuje wbudowana przetwornica i w UNO R4 sięga on 24 V, choć sama przetwornica może pracować w jeszcze szerszym zakresie. Problemem może być jednak sposób kluczowania zasilania z USB-C i wbudowanej przetwornicy poprzez dwie diody PMEG6020.

W przypadku poprawnego napięcia z USB-C, wynoszącego 5 V, do zasilania płytki doprowadzone jest napięcie obniżone o spadek napięcia na D3, co pokazano na rysunku 2. Nawet gdy UNO R4 zasilane jest z przyzwoitego zasilacza dla Raspberry Pi, z podniesionym napięciem wyjściowym do 5,1 V, napięcie zasilania R4 wynosi ok. 4,8 V i jest na granicy tolerancji niektórych układów i to bez obciążenia GPIO.

Rysunek 2. Schemat obwodu zasilania płytki UNO R4

Nie jest to jedyny problem obwodu zasilania UNO R4. W przypadku obecności zasilania z USB-C i braku zasilania z gniazda DC, przetwornica U2 jest zasilana tylko od strony wyjścia. W zasilaczu zastosowano układ ISL854102, także produkcji Renesasa, który zgodnie z kartą katalogową jest w stanie pochłaniać prąd ze strony wyjściowej, ale po co ma to robić i dodatkowo obciążać zasilanie USB-C, tym bardziej że niepotrzebnie steruje wtedy cewką L3, co pokazuje przebieg z rysunku 3 zaobserwowany na wyprowadzeniu PHASE. Można to uznać za klasyczny przypadek back-feedingu, czyli niepożądanego wstecznego przepływu zasilania, który powoduje zakłócenia w działaniu układu, a w skrajnych przypadkach może doprowadzić do jego uszkodzenia. Pobór prądu nie jest duży, ale zupełnie niepotrzebny i generuje dodatkowe zakłócenia na szynach zasilania, które naprawdę są zbędne w przypadku zasilania procesora z rozbudowanym blokiem analogowym, tym bardziej że napięcie 5 V jest używane także jako napięcie odniesienia dla ADC.

Rysunek 3. Przebiegi w przetwornicy zasilanej z USB-C

Problem można było rozwiązać kluczami MOSFET, zmniejszając spadek napięcia zasilania oraz eliminując niepotrzebne oscylacje w przetwornicy lub zmieniając miejsce kluczowania napięć z „za” na „przed” przetwornicą i stosując przetwornicę podwyższająco-obniżającą, zapewniającą stabilne zasilanie. Dodatkowo umożliwiłoby to zasilanie układu z akumulatora litowego lub zestawu baterii 3...4×LR4, jak to ma miejsce w przypadku innych płytek. W skrajnym wypadku można zastosować rozwiązanie zupełnie budżetowe polegające na wstawieniu diody PMEG6020 w miejsce R11, przy równoczesnym podniesieniu napięcia wyjściowego przetwornicy, w celu kompensacji spadku na diodzie.

Sama płytka UNO R4 bez problemu mogłaby pracować też z zasilaniem 3,3 V, bo procesory R4M1 mają bardzo szeroki zakres zasilania 1,6...5,5 V, szkoda że nie przewidziano takiej możliwości i za wszelką cenę zapewniono zgodność tylko z logiką 5 V.

Ostatnim elementem obwodu zasilania jest źródło napięcia 3,3 V, które oczywiście zostało potraktowane oszczędnościowo i pochodzi z wbudowanego w procesor LDO, maksymalna obciążalność zgodnie z kartą katalogową to 100 mA. Czy źródło jest odporne na przeciążenia i zwarcia, karta nie wspomina, więc zalecam daleko idącą ostrożność.

Debugowanie… a raczej jego brak

Kolejnym widocznym elementem jest złącze SWD, służące do debugowania, którego płytka UNO R4 jest... pozbawiona. Początkujący konstruktor raczej nie ma dostępu do programatora/debuggera J-Link, a miganie diodą LED sprawdzi się tylko w najprostszych projektach. Dla bardziej złożonych zadań, dla których polecane jest UNO R4, to chyba słabe rozwiązanie i marna propozycja nabywania poprawnych nawyków podczas prototypowania. W pewnym sensie rozumiem, że programowanie Arduino polega przede wszystkim na znalezieniu właściwej biblioteki, ale za każdym razem, gdy udostępniana jest nowa płytka, ignorowana jest możliwość zmiany takiego podejścia. Tym bardziej, że da się opracować prosty debbuger, co udowodniła fundacja Raspberry, projektując zewnętrzną płytkę Raspberry Pi Debug Probe dla przecież ekstremalnie budżetowego Pi Pico.

Jest też coś dla wyznawców minimalizmu, czyli niewielka płytka MIKROE RA4M1 Clicker, także z procesorem R7FA4M1AB3CFM i wbudowanym debuggerem oraz złączem rozszerzeń MikroBUS dla ClickBoardów. I oczywiście sam Renesas dla fabrycznej płytki EK-RA4M1, która nie dość, że ma wbudowany programator/debugger, to jeszcze wyposażona jest w procesor z pełną 100-pinową obudową, z wyprowadzonymi wszystkimi pinami GPIO i jest obsługiwana w darmowym E2Studio. Jedyne, do czego można mieć zastrzeżenia, to brak nowego złącza – USB-C. Jej cena jest tylko dwukrotnie wyższa od R4 Minima.

Kompatybilność

Arduino deklaruje zgodność z oferowanymi dla R3 nakładkami i to nie tylko polegającą na zgodności poziomów napięciowych 5 V dla GPIO, ale na pełnej funkcjonalności programowej. Sprawdzone zostało działanie nakładek 4Relays, Motor3, Ethernet, Edu i 9Axis Motion Shield. Zgodność z nakładkami innych producentów można sprawdzić na stronie https://docs.arduino.cc/tutorials/uno-r4-minima/shield-compatibility, niestety te ciekawsze nie są zgodne, m.in. Adafruit Neopixel, NFC, TFT, część niezgodności dotyczy sprzętu, część oprogramowania, zapewne z czasem sytuacja się poprawi. Zatem każdorazowo we własnym zakresie należy sprawdzić zgodność posiadanych rozszerzeń z płytką UNO R4.

USB

Procesor R4M1 ma wbudowaną obsługę portu USB, która jest używana do komunikacji i programowania pamięci programu poprzez środowisko Arduino. Wspierany jest także tryb USB-HID, który umożliwia emulację klawiatur i myszy, co jest dużą zaletą. W przypadku problemów z wgrywaniem aplikacji należy sprawdzić poprawność instalacji urządzenia DFU-RT Port i odpowiadającego mu urządzenia szeregowego USB(COMxx) – rysunek 4. W przypadku problemów w moim przypadku pomogła ponowna instalacja w trybie administratora.

Rysunek 4. Poprawna instalacja DFU

Do wgrania Bootloadera służy tryb BOOT, który jest aktywowany poprzez zwarcie wyprowadzenia BOOT z masą na złączu POWER i ponowne podłączenie UNO R4 do komputera. Bootloader można wgrać, za pomocą Arduino lub oprogramowania Renesas Flash Programmer (RFP) – rysunek 5. Pozostaje mieć jednak nadzieję, że w większości przypadków nie będzie to konieczne.

Rysunek 5. Oprogramowanie Renesas RFP

GPIO

Chwilę uwagi należy poświęcić wyprowadzeniom GPIO, a dokładnie ich obciążalności prądowej, która jest ponad 2 razy mniejsza niż w UNO R3. Każdy z pinów może zostać obciążony maksymalnym prądem 8 mA, a prąd sumaryczny wszystkich portów nie może przekraczać 60 mA. To znaczące ograniczenie, szczególnie gdy bezpośrednio sterujemy diodami LED lub multipleksowanymi wyświetlaczami LED, które bez dodatkowego drivera już nie zadziałają prawidłowo.

W przypadku GPIO nasuwa się także pytanie, dlaczego procesor ma 64 wyprowadzenia, a na złączach dostępne jest tylko 20, nie licząc interfejsu SWD, ICSP i wbudowanych LED? Aż 16 wyprowadzeń GPIO pozostało niepodłączonych. A przecież R4M1 dostępne są też w tańszych obudowach o 40 i 48 wyprowadzeniach, które zapewne bez większych konsekwencji mogły być użyte w projekcie.

Analizując budowę wewnętrzną procesora, można zauważyć znaczącą rozbudowę sekcji analogowej. Poprawione zostały osiągi przetwornika ADC, jego maksymalna rozdzielczość to 14 bitów, co razem z 32-bitowym rdzeniem ułatwia tworzenie złożonych aplikacji pomiarowych. Obsługa zwiększonej rozdzielczości odbywa się poprzez nowe funkcje analogReadResolution(10), analogReadResolution(12), analogReadResolution(14), a domyślną rozdzielczością pozostaje 10 bitów. Ciekawe, jak będzie w praktyce wyglądała możliwość używania 14-bitowej rozdzielczości. Filtracja zasilania w UNO R4 jest bardzo oszczędna, a sam obwód drukowany jest zaprojektowany dosyć chaotycznie, np. wejście A1 przetwornika ADC zaznaczone kolorem na sporej długości sąsiaduje ze ścieżkami I²C i SPI/CAN, co pokazano na rysunku 6. Ścieżki części analogowej mogły być poprowadzone przy zmianie lokalizacji elementów, tak aby zachować minimalną długość, przecież przypisanie pinów można zmienić programowo.

Rysunek 6. Ścieżka wejścia analogowego A1

Równie chaotycznie jest zaprojektowane zasilanie 5 V, pokazane na rysunku 7. Pomimo sporej wylewki 5 V przy przetwornicy całe zasilanie przeprowadzone jest jedną przelotką i dosyć chaotyczną siecią ścieżek o przypadkowych szerokościach. Z kolei ścieżka 3 V, o maksymalnej wydajności źródła 100 mA, jest relatywnie gruba, przynajmniej na części trasy, a przecież te 3 V bierze się z 5 V.

Rysunek 7. Ścieżka zasilania 5 V

Nowości

Nowością w R4 jest wbudowany wzmacniacz operacyjny, dostępny na wyprowadzeniach analogowych A1, A2, A3. Nie jest to nic szczególnego, ponieważ takie rozwiązania są dostępne nawet w niektórych procesorach 8-bitowych. Dodatkowo Arduino słabo dokumentuje jego użytkowanie i trzeba studiować dokumentację procesora.
Dużym plusem jest wbudowany 12-bitowy DAC, którego wyjście dostępne jest na wyprowadzeniu A0. Będzie alternatywą dla wyjścia PWM w wielu zastosowaniach takich, jak generacja sygnału analogowego. Niestety cyfrowy interfejs audio SSIE dostępny jest tylko dla obudowy 100-wyprowadzeniowej.

Absurdem części analogowej w przypadku UNO R4 jest współdzielenie wyprowadzeń I²C z dwoma kanałami ADC. Gdy chcemy użyć magistrali I²C, wyjścia DAC i wzmacniacza operacyjnego, nie pozostaje nam już wolne wejście ADC, a 4 wyprowadzenia ADC procesora pozostają niepodłączone – naprawdę można rozwiązać to lepiej, tym bardziej że drugi kanał I²C dostępny na wyprowadzeniach 1 i 2 procesora pozostaje niepodłączony.

Procesor RA4M1 wyposażony jest w wewnętrzny czujnik temperatury TSN, ale Arduino nie wspomina niestety o możliwości jego użycia.

Uno R4 wyposażono w dwa interfejsy komunikacyjne UART, pierwszy realizowany przez USB, drugi sprzętowy dostępny na wyprowadzeniach RX, TX. Kuriozum stanowią diody sygnalizacyjne RX, TX – które niczego nie sygnalizują. Zarówno podczas transmisji USB (Serial), jak i poprzez piny RX, TX (Serial1) pozostają zgaszone. Po szybkiej analizie schematu okazuje się, że są podłączone do wyprowadzeń P012, P013, które nie mają nic wspólnego z transmisją szeregową. Aby było zabawniej, nie są wspierane przez Arduino. Aby je zaświecić, należy zastosować definicję podaną przez użytkownika susan-parker z forum arduino: https://forum.arduino.cc/t/do-rx-tx-
leds-glow/1146115/4 zgodnie z listingiem 1 i wysterować diody we własnym zakresie jak w listingu 2.

Listing 1. Modyfikacje kodu dla użycia diod LED RX, TX

#define PORTBASE 0x40040000 /* Port Base */
#define PFS_P012PFS_BY ((volatile unsigned char  *)(PORTBASE + 0x0803 + (12 * 4))) // TxLED - VREFH
#define PFS_P013PFS_BY ((volatile unsigned char  *)(PORTBASE + 0x0803 + (13 * 4))) // RxLED - VREFL

void code_function_fragment(void){
  *PFS_P012PFS_BY = 0x04;        // OnBoard TxLED on  
  *PFS_P012PFS_BY = 0x05;        // OnBoard TxLED off  

  *PFS_P013PFS_BY = 0x04;        // OnBoard RxLED on  
  *PFS_P013PFS_BY = 0x05;        // OnBoard RxLED off  
}
Listing 2. Sterowanie diodami LED RX, TX

void loop() {
  *PFS_P012PFS_BY = 0x04; // OnBoard TxLED on
  delay(100);
  *PFS_P013PFS_BY = 0x04; // OnBoard RxLED on
  delay(100);
  *PFS_P012PFS_BY = 0x05; // OnBoard TxLED off
  *PFS_P013PFS_BY = 0x05; // OnBoard RxLED off
  delay(1000);
}

Diody oznaczone są na płytce RX, TX tylko po to, żeby zachować zgodność opisów z R3, chyba lepiej było je opisać P012, P013. Dzięki własnej definicji przynajmniej można ich do czegoś użyć.

Magistrala I²C jest zgodna z 5 V, płytka nie posiada rezystorów podciągających, sygnały SDA, SCL wyprowadzone są na złącza Analog A4, A5 i powielone na złączu DIGITAL. Drugi interfejs I²C pozostaje nieobecny, chociaż w UNO R4 WiFi podłączony jest do złącza QWIIC, więc po drobnych modyfikacjach mógłby zostać wyprowadzony. Osobiście wolałbym drugi interfejs I²C w miejsce niezbyt praktycznego rozwiązania (żartu projektanta), jakim jest pin dotykowy w kształcie serca i ścieżka z jego pulsem do wyprowadzenia BOOT, pokazane na rysunku 8. Tym bardziej że pin dotykowy blokuje wyprowadzenie, na które można było przełączyć SCL0. Można było użyć do obsługi dotyku jednego z kilkunastu wolnych wyprowadzeń procesora. Im dłużej obcuję z płytką R4, tym mniej mam ochoty na żarty, może więc projektant nie poświęcił jej zbyt dużo czasu…

Rysunek 8. Pole dotykowe w kształcie serca

Płytka obsługuje także interfejs CAN dostępny na wyprowadzeniach D5/CANRX0 (RX), D4/CANTX0 (TX), wymaga tylko dodania drivera magistrali np. SN65HVD230 i dołączenia biblioteki Arduino_CAN.h. Niestety nie mam jak sprawdzić działania, więc pozostaje mieć nadzieję, że obsługa CAN obędzie się bez niespodzianek.

Ostatnim interfejsem szeregowym jest SPI, które powinno działać, skoro Arduino deklaruje zgodność z Ethernet Shield2 korzystającym z SPI. W sieci jednak można doszukać się informacji o słabej przepustowości SPI, ale wymaga to pewnie dopracowania bibliotek.

Procesor RA4M1 ma wbudowany zegar RTC, wspierany przez biblioteki Arduino. Niestety zasilanie podtrzymujące działanie RTC przy wyłączonym zasilaniu UNO R4 nie zostało zaimplementowane. Może to sposób na zmuszenie użytkowników do zakupu droższej wersji UNO R4 WiFi, gdzie znalazło się miejsce na pin BATT do podłączenia zewnętrznej baterii? Co prawda przeróbka płytki jest banalna, ale wiąże się z utratą gwarancji i koniecznością wylutowania procesora, aby przeciąć zaznaczoną na rysunku 9 ścieżkę. Zasilanie z baterii CR2032 umieszczonej w pojemniku, np. 1086 KEYSTONE, należy podlutować bezpośrednio do wyprowadzeń kondensatora C10, zachowując polaryzację. Można użyć oczywiście superkondensatora podładowanego z napięcia 5 V przez diodę i rezystor ograniczający prąd. Przy okazji do sąsiadujących wyprowadzeń 1 i 2 można dolutować złącze z wyprowadzoną drugą magistralą I²C.

Rysunek 9. Modyfikacja zasilania RTC

Podsumowanie

Podsumowując – płytka UNO R4 Minima w aktualnej wersji ze względu na założenia projektowe nie pozwala korzystać z pełnych możliwości nieco egzotycznego w naszych warunkach procesora RA4M1. Myślę, że jednak należy ją uznać za kolejny falstart w promowaniu procesorów Renesasa w formacie Arduino, po płytce GR-Sakura z procesorem RX63N. Jeżeli najważniejszym kryterium przy projektowaniu była cena, to można było zastosować tańszy procesor w obudowie QFN40 lub zrezygnować z formatu UNO na rzecz wygodniejszych i tańszych w produkcji płytek w formacie Nano lub nawet MKR oraz nie trzymać się kurczowo standardu 5 V, który powoli wymiera, a działający konwerter 3/5 V nie jest ani drogi, ani trudno osiągalny. Byłoby to sensowne nawet, gdyby konwerter wymagał zastosowania dodatkowej płytki bazowej dla zapewnienia mechanicznej zgodności z formatem UNO – takie przejściówki mechaniczne są przecież bez problemu dostępne także w opracowaniach EP.

Pozostawienie na płytce niewlutowanych, ale przewidzianych złącz, a nawet gołych padów dla baterii RTC, drugiej magistrali I²C i kilku dodatkowych analogowych GPIO także nie zwiększyłoby kosztu UNO R4, a poprawiłoby jego funkcjonalność. I chociaż braki uzupełnione są w wersji UNO R4 WiFi, to jest ona zbyt rozbudowana, aby zastępować nią R4 Minima. Jeżeli jednak chcemy faktycznie zapoznać się z procesorami RA4M, a nie tylko migać diodą LED, to rozsądniejszym wyborem jest fabryczny zestaw uruchomieniowy lub płytka MIKROE RA4M1 Clicker. Można też cierpliwie poczekać na następną wersję R4, chociaż bardziej realne wydaje się powolne zniknięcie płytki z rynku, tak jak to stało się z GR-Sakura, Arduino 101, M0 i podobnymi dużo lepiej zaprojektowanymi.

Adam Tatuś, EP

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2023

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio maj - czerwiec 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje kwiecień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich maj 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów