Arduino jest idealną platformą testową do szybkiego sprawdzenia pomysłów w praktyce. Co jednak zrobić, gdy nasz genialny pomysł okaże się rzeczywiście użyteczny? Możemy oczywiście korzystać z Arduino Uno, czy Arduino Mega w naszym nowym rozwiązaniu wykorzystując pytkę stykową i masę przewodów połączeniowych. Lepszym rozwiązaniem jest jednak zbudowanie urządzenia docelowego zamkniętego w obudowie z połączeniami, które nie rozpadną się przy byle podmuchu wiatru... Jednym z możliwych rozwiązań jest zastosowanie układu Arduino Pro Mini.

Jest to kompletne Arduino z portem RS zamiast USB. Posiada zwartą minimalistyczną konstrukcję co ułatwia jego zastosowanie w małych gabarytowo projektach. Jedyną wadą tego układu jest brak możliwości bezpośredniego jego zaprogramowania z pakietu ArduinoIDE poprzez port USB. Ta mała płytka (wielkości pudełka zapałek) posiada wyprowadzenia wszystkich dostępnych w Arduino Uno portów. Dzięki temu możliwe jest testowanie projektu na Arduino Uno, a następnie wykorzystanie Arduino Pro Mini w gotowym układzie. W tym momencie przejdziemy do meritum sprawy. W jaki sposób zaprogramować Arduino Pro Mini, jeżeli nie dysponuje on wyjściem USB. Wbrew pozorom rozwiązanie jest bardzo proste i uniwersalne. Wystarczy dysponować konwerterem USB - RS, który w odpowiedni sposób podłączymy do naszego Arduino i można zaprogramować układ.

UWAGA!!! Arduino Pro Mini występuje w dwóch odmianach: z zasilaniem 5V i z zasilaniem 3,3V. Schemat podłączenia dotyczy układów zasilanych napięciem 5V.

 

Arduino Pro mini Konwerter USB-RS TTL
GND GND
VCC 5V
RX TX
TX RX

 

W trakcie programowania zasilamy Arduino Pro Mini z konwertera USB-RS. Masy obu układów łączymy ze sobą, +5V z konwertera łączymy z VCC Arduino. Ważne, aby odpowiednio podłączyć linie sygnałowe RX i TX. TX konwertera łączymy z wyprowadzeniem RX Arduino, a RX konwertera z wyprowadzeniem TX Arduino. Zarówno w Arduino jak i w konwerterze sygnały opisane są prawidłowo. TX to linia wysyłająca dane, RX linia odbierająca dane. Właściwa komunikacja nastąpi, gdy nadajnik jednego urządzenia podłączymy do odbiornika drugiego. 

Tak podłączony układ gotowy jest do zaprogramowania. Jedyną niedogodnością podczas programowania jest konieczność naciśnięcia przycisku reset w Arduino w momencie, gdy rozpoczyna się proces przesyłania danych do układu. Wyczucie odpowiedniego momentu jest dosyć proste. Ja proponuję nacisnąć reset w momencie, gdy zaczyna się kompilować program, a puścić przycisk zaraz po pojawieniu się komunikatu w pakiecie: "Ładowanie...". W przypadku, gdy pakiet ArduinoIDE wyświetli jakiekolwiek błędy (najczęściej problemy z synchronizacją) proces przesyłania danych należy powtórzyć.

Co zrobić w przypadku, gdy nie dysponujemy konwerterem USB-RS TTL? Do zaprogramowania Arduino Pro Mini możemy wykorzystać Arduino UNO, Arduino MEGA, lub jakąkolwiek inną odmianę Arduino, która posiada interfejs USB (Wyjątkiem jest Arduino Leonardo). Poniżej przedstawiam sposób podłączenia Arduino Pro Mini do Arduino UNO jako konwertera USB-RS.

 

Arduino Pro mini Arduino UNO
GND GND
VCC 5V
RX RX
TX TX

 Dodatkowo należy podłączyć sygnał RESET w Arduino UNO do GND.

 

Jak to działa? Arduino UNO składa się z dwóch części: konwertera USB-RS TTL oraz głównego procesora. Podłączenie sygnału RESET głównego procesora do masy spowoduje jego wyłączenie. Sygnały TX i RX mogą zostać wykorzystane do przeprowadzenia transmisji z Arduino Pro Mini. Porównując podłączenie dwóch układów Arduino z połączeniem Arduino Pro Mini z konwerterem USB-RS można zauważyć jedną zasadniczą różnicę: w przypadku konwertera łączymy TX->RX, w przypadku dwóch Arduino łączymy TX->TX, RX->RX. To nie jest błąd. Sygnały na płytce Arduino UNO opisane zostały tak jak są podłączone do głównego procesora, a nie tak jak wychodzą z konwertera  znajdującego się na płytce.

Przedstawione powyżej sposoby programowania Arduino Pro Mini mają wspólną wadę - wymagają ręcznego korzystania z przycisku RESET podczas każdego wgrywania programu. Można temu zaradzić i programować układy Arduino Pro Mini tak, jak inne Arduino - czyli automatycznie. Wymaga to jednak pewnych działań. Najprostszym i najlepszym sposobem jest zaopatrzyć się w konwerter USB-RS TTL z wyprowadzonym sygnałem RESET, który podłączymy do RST Arduino Pro MIni. Jest to rozwiązanie, które zdecydowanie polecam, jeżeli ktoś chciałby zająć się programowaniem "na poważnie".

Innym prostym rozwiązaniem dla posiadaczy układu Arduino UNO jest wyjęcie z podstawki głównego procesora. W ten sposób otrzymamy pełnowartościowy programator. Modyfikacja połączeń ze schematu powyżej będzie się ograniczała do połączenia sygnału RESET Arduino UNO nie do masy układu, ale do RST układu Arduino Pro Mini. Tego rozwiązania nie polecam, ponieważ kilkukrotne wyjmowanie procesora doprowadzi do jego uszkodzenia, a koszt Arduino UNO jest dużo wyższy niż zakup dedykowanego konwertera.

W kolejnym artykule opiszę, jak przygotować czyste układy ATmega328 by można je było programować z pakietu ArduinoIDE - czyli jak zwykłe ARDUINO.