Arduino Uno to moduł wygodny w użyciu w fazie prototypu, jednak ze względu na gabaryty mało przydatny do zamontowania w modelu, szczególnie w przypadku modeli latających. Na szczęście istnieją wersje o znacznie mniejszych wymiarach – „Nano” i „Pro Mini”.
Arduino Nano może być wyposażone w procesor taki jak Uno (ATMega 328) - tyle, że miniaturowej obudowie SMD, co oczywiście wpływa na wymiary całego układu (procesor na fotce jest wylutowany). Płytka funkcjonalnie zawiera poza tym te same elementy co UNO – interfejs USB (na bazie układu FTDI FT232RL ze złączem „mini” i stabilizator napięcia 5V (zalecane zewnętrzne zasilanie 7-12V). Napięcie 3,3V pochodzi z układu FTDI, więc należy pamiętać, że występuje tylko wtedy, gdy Nano jest podłączone do portu USB, gdyż to z niego jest zasilany scalak FTDI. Poza tym piny wejścia/wyjścia - zarówno analogowe jak i cyfrowe - odpowiadają numeracji z UNO, na płytce są naniesione odpowiednie oznaczenia. Wlutowane fabrycznie goldpiny umożliwiają włożenie Nano do płytki stykowej typu „breadboard” i używanie jej do prototypów podobnie jak Uno. A gdyby planować wykorzystanie jej w modelu, to trzeba byłoby użyć dodatkowej płytki z gniazdami do włożenia Nano, co powoduje, ze takie rozwiązanie choć gabarytowo mniejsze niż Uno - nie jest już takie miniaturowe.
Sensowniejszym wyjściem wydaje się użycie Arduino Pro Mini. Jest to bardzo podobna do Nano płytka, tylko pozbawiona interfejsu USB, który prawdę powiedziawszy w modelu i tak stanowi zbędny ciężar. Moduł występuje w wersji z zasilaniem 3,3V (i ta jest sporo droższa) oraz w wersji 5V (a ta dla odmiany to najtańsza ze wszystkich dostępnych wersji Arduino). Jest tu zamontowany stabilizator 5V o mniejszej mocy niż w Uno i Nano (zalecane napięcia zasilania zewnętrznego to 7-12V) i brak jest stabilizatora 3,3V. Fabrycznie nie lutuje się także goldpinów, co zostawia użytkownikowi swobodę wykorzystania zarówno na płytkach stykowych (po wlutowaniu pinów) jak i na kabelkach – i to wydaje się być najkorzystniejszy wariant z punktu widzenia modeli latających.
O ile komunikacja między środowiskiem Arduino w przypadku Nano jest taka sama jak przy Uno (trzeba tylko w menu wybrać odpowiedni typ płytki i numer portu COM, na którym jest zainstalowany interfejs USB), to Pro Mini wymaga więcej zachodu. Pierwsza możliwość to dokupienie dodatkowej płytki z interfejsem FTDI. Ma ona wyprowadzone piny zgodnie z tym jak są one umieszczone na bocznej (krótszej) krawędzi płytki Pro Mini, można tu albo wlutować goldpiny i założyć na nie FTDI lub podłączyć się za pośrednictwem przejściówki na kabelkach lutowanych do Arduino. Taki zestaw w teorii działa analogicznie do Nano czy Uno, wcześniej oczywiście należy pamiętać (i to dotyczy również Nano) o zainstalowaniu w systemie sterowników FTDI (dostępne w podfolderach ze sterownikami zainstalowanego środowiska Arduino).
Drugi wariant, to programowanie za pomocą programatora ISP do procesorów ATMega, najwygodniej takiego, który jest obsługiwany przez środowisko Arduino, bo to bardzo upraszcza proces ładowania programu. Ja używam popularnego i taniego programatora USBasp.
Jeśli ktoś nie chce wydawać pieniędzy na fabryczny programator, to łatwo polutować bardzo proste urządzenie (kilka rezystorów i złącze) pracujące na porcie równoległym LPT, lub użyć jako programatora modułu Uno. We wszystkich przypadkach należy pamiętać o zainstalowaniu w systemie Windows odpowiednich sterowników, dedykowanych do poszczególnych urządzeń. A z kolei w środowisku Arduino należy z menu „Tools” wybrać odpowiedni programator i port COM na którym został zainstalowany sterownik (o ile sterownik używa portu COM).
To co opisałem powyżej wygląda na dość proste i oczywiste, w praktyce jednak zaprogramowanie Nano i Mini Pro nie poszło mi gładko, a po przeszukaniu Internetu okazało się, że wielu innym osobom zdarzyły się podobne problemy. Postanowiłem więc je opisać, aby ułatwić ich rozwiązanie, gdyby się przytrafiły czytelnikom naszego cyklu o Arduino.
Pierwszy kłopot pojawił się z komunikacją Nano ze środowiskiem Arduino przez port USB. Po rozpoznaniu okazało się, że azjatyckim producentom tych układów zdarza się nieprawidłowo zaprogramować bootlader. Procesor wprawdzie działa, wykonując program demo, ale nie komunikuje się ze środowiskiem przez port USB, a do tego m.in. jest potrzebny bootoader. Należy więc zaprogramować go samemu właśnie za pomocą programatora ISP. Podłączamy programator do portu USB i płytki Arduino, wybieramy z menu „Tools” typ pytki i następnie polecenie „burn bootlader”. Po zaprogramowaniu odłączamy programator od portu USB, podłączamy płytkę i komunikacja powinna zostać przywrócona. Tak przynajmniej było w moim przypadku.
Przy opisanym przeprogramowaniu bootloadera pojawił się również dodatkowy kłopot, okazało się bowiem, że mój programator USBasp również nie działa ze środowiskiem Arduino. Podpowiedź co zrobić znalazłem w Internecie, tu przyczyną była niekompatybilność nowej wersji oprogramowania USBasp z Arduino. Po załadowaniu starszej wersji (zdaje się że z roku 2009) programator zaczął się komunikować poprawnie. Do operacji przeprogramowania potrzebny był oczywiście inny działający programator. Miałem na szczęście taki i problem udało się rozwiązać, jednak w świetle opisanych przypadków, wygląda, że najsensowniejszym wyjściem jest chyba użycie płytki Uno jako programatora ISP. Ja wprawdzie tego nie próbowałem, bo zadziałał mi USBasp, ale podejrzewam, że w przypadku tej samej rodziny produktów nie powinno być takich kłopotów.
Podobne problemy pojawiły się przy próbie podłączenia Pro Mini przez płytkę FTDI. Mimo że w tym przypadku również przeprogramowałem bootloader przy pomocy USBasp, to potem komunikacja przez USB nie do końca zadziałała poprawnie, programowanie się wprawdzie rozpoczynało, ale nie zakończyło poprawnym komunikatem. Odpuściłem drążenie tematu, skoro procesor daje się zaprogramować przez ISP, a w zastosowaniach które przewiduję dla płytki Pro Mini nie mam potrzeby komunikacji przez USB. Szkoda mi więc tracić czas na poszukiwanie rozwiązania, za mało mam wiedzy na ten temat.
Płytkę Pro Mini łączy się z programatorem za pomocą 6-przewodowego kabla. Zrobiłem odpowiednią przejściówkę, która łączy gniazdo w standardzie miniISP od strony programatora z odpowiednimi pinami płytki Arduino. Ładowanie programu z poziomu środowiska Arduino przebiega bez problemów. W tym wypadku należy użyć z menu „File” polecenia „Upload using Programmer”.
Jeśli Pro Mini ma być użyte z płytką stykową lub w gniazdach, to w otwory, do których podłącza się programator, warto wlutować długie (przelotowe) goldpiny, co pozwala na programowanie układu bez wyjmowania go z gniazd - tak jak na fotce poniżej (układ zamontowany w bocznokołowcu BArd).
Podsumowanie
Wydaje się, że najlepszy zestaw zarówno do eksperymentów jak i realizacji różnych praktycznych gadżetów, które można zamontować w modelu, to dwie wersje Arduino - Uno i Pro Mini. Płytka Uno jest bardzo wygodna w fazie projektowania, a także może zostać użyta jako programator dla mniejszych „sióstr”, natomiast płytka Pro Mini jest idealna jako baza dla miniaturowych urządzeń pokładowych - zarówno ze względu na gabaryty jak i cenę. Właśnie na tej wersji Arduino będą się opierać moje przyszłe projekty „pokładowe”. Płytka Nano dla mnie okazała się w praktyce mało poręczna w konstrukcji kompaktowego modułu, a w dodatku z nieznanych mi przyczyn dość szybko uległa uszkodzeniu, chociaż przez krótki czas pracowała poprawnie w bocznokołowcu BArd.
Aktualizacja 2015-08-10
Od pewnego czasu w sprzedaży jest dostępna nowa wersja Nano. Skrytykowałem poprzednio ten moduł, ale ta wersja ma dwie cechy, które powodują, że warto się nią zainteresować.
Po pierwsze jest o wiele tańszy od pierwszej wersji Nano, cena jest zbliżona do MiniPro, jeśli nie przeszkadzają trochę większe wymiary, a potrzebujemy często przeprogramowywać nasz układ, to będzie to dobry wybór. Po drugie jest on sprzedawany bez wlutowanych pinów, co pozwala użytkownikowi samodzielnie zdecydować co i w jaki sposób będzie lutowane, możliwe jest stosowanie modułu w urządzeniach o małej wysokości. Niższa cena wynika prawdopodobnie z zastosowania zamiast FTDI innego układu do komunikacji szeregowej po USB , jest to chip CH340 i wymaga zainstalowania w systemie dedykowanych sterowników (do pobrania ze strony producenta).
Na płytce znajduje się także stabilizator napięcia 3,3V, co pozwala sądzić, że w przeciwieństwie do oryginalnego Nano, napięcie to będzie dostępne na wyprowadzeniu 3,3V, kiedy układ jest zasilany z 5V poza złączem USB (ale tego jeszcze nie sprawdziłem).
Drugim ciekawym modułem jest miniaturowy klon Leonardo o nazwie Micro Pro, opracowany przez firmę Sparkfun. Tu również konieczne jest zainstalowanie sterowników (do pobrania z repozytorium Github).
Do typowych zastosowań moduł może wydawać się mało ciekawy (bo jego cena jest 2x wyższa niż cena MiniPro), ale w pewnych zastosowaniach może się okazać niezastąpiony. Dzięki temu, że procesor ATmega32u4 jest wyposażony bezpośrednio w obsługę portu USB, Micro Pro (tak jak Leonardo) umożliwia budowę urządzeń tzw. HID - czyli wirtualnej klawiatury, myszki i joysticka, a funkcjonalność ta jest obsługiwana przez standardowe środowisko IDE od wersji 1.0.1. Prócz tego układ ma drugi („normalny” - D0, D1) port szeregowy. W modułach opartych na procesorze 328 port jest jeden i obsługuje albo transmisję do PC albo do urządzenia zewnętrznego.
Komentarze
:)