Programowanie Arduino Pro Mini za pomocą USB Mini
Każdy, kto robił projekt oparty na Arduino, wie, że przychodzi taki pomysł do głowy, że chciałoby się, aby Arduino było znacznie mniejsze niż podstawowa płytka.
Szybko powstały różne płytki, które oferują zgodność z Arduino ale są znacznie mniejsze. Jedną z takich jest produkowany przez SparkFun Arduino Pro Mini. Obecnie ma ono na pokładzie ATmega328 a rozmiar całej płytki to 33 mm x 18 mm. Występuje ono w dwóch wersjach. Jedna działa na obniżonym napięciu 3.3V i kosztem niższego taktowania (8 MHz) oferuje mniejsze zużycie prądu. Druga jest kopią funkcjonalną Arduino – działa na 5V i jest taktowana 16 MHz.
Jeśli rozmiar płytki jest taki niewielki to czego brakuje? Otóż brakuje konwertera USB/Serial. Dlatego do programowania musimy mieć dodatkowe urządzenie – konwerter USB/Serial TTL (dla osłody – brak tego układu na płytce oznacza niższą cenę samego Mini).
Jednym z konwerterów USB Serial w ofercie Nettigo jest Arduino Mini USB. Ponieważ połączenie i programowanie Pro Mini sprawia czasem na początku kłopoty – przedstawiam małe HOWTO:
Manualne programowanie
Po resecie urządzenia mniej więcej przez jedną sekundę aktywny jest bootloader Arduino. Oczekuje on na dane na Serialu i jeżeli rozpozna dane binarne – transmisja zostanie zapisana w pamięci Flash i uruchomiona. Dlatego najprostszy sposób to podłączyć Arduino Mini USB i Pro Mini w następujący sposób:
- połączyć masy USB Mini z Pro Mini (GND z GND)
- Zasilanie z USB Mini (+5V) do Vcc na Pro Mini
- RX z USB Mini do RX1 na Pro Mini
- TX z USB Mini do TX0 na Pro Mini
Wyjścia na USB Mini nie są opisane, więc tutaj jest schemat poglądowy wyprowadzeń (gniazdo USB jest z lewej strony rysunku):
Rzeczywiste podłączenie można podejrzeć na tym zdjęciu:
Szkic należy najpierw skompilować (ikonka z trójkącikiem) a następnie nacisnąć przycisk reset na Arduino Pro Mini i jednocześnie przycisk upoloadu w Arduino IDE (trzeba pamiętać o wyborze właściwej płytki w menu Tools/Board) . Diody TX i RX na USB Mini powinny zacząć migotać i szkic po chwili powinien już być na Pro Mini.
Automatyczny reset (Automatic Reset lub Software Reset)
Jednak zwykłe Arduino już od długiego czasu można programować naciskając Upload w IDE bez konieczność ręcznego resetowania płytki. W wypadku płytek Mini, które ze względu na swoje małe rozmiary często są w trudno dostępnych miejscach, takie rozwiązanie ma niewątpliwą przewagę nad ręcznym resetowaniem.
Aby skopiować to zachowanie większego Arduino wystarczy wyjście RTS na USB Mini (oznaczone 3) połączyć z którymś wejść RST na Pro Mini:
Tutaj użyłem sond z Bus Pirate, jako że ani do Pro Mini ani do USB Mini nie miałem przylutowanych goldpinów. Od teraz wystarczy tylko nacisnąć Upload w Arduino IDE i już Pro Mini po krótkiej chwili ma na sobie nowy szkic.
Pro Mini i FTDI Friend
Ponieważ pojawiają się pytania, dla rozwiania wszelkich wątpliwości pokażemy jak korzystamy zwykle z Arduino Pro Mini i FTDI Frienda. Na boku Pro Mini znajduje się miejsce na wlutowanie goldpinów. Jest na nim właśnie interfejs UART + zasilanie i pomocnicze sygnały. Układ pinów jest zgodny ze de facto standardem FTDI cable. Był to chyba pierwszy konwerter USB/Serial w formie przewodu, produkowany przez firmę FTDI. Większość konwerterów USB/Serial stara się zachować tą konwencję i jest tak też w wypadku FTDI Frienda. Spójrzmy na Arduino Pro Mini:
Jeżeli przyjrzycie uważniej z lewej strony złącza można dostrzec napis BLK a z prawej GRN. Oryginalny kabel FTDI do złącza 6-cio pinowego miał podłączone skrajne przewody w kolorach czarnym i zielonym. Dlatego te napisy są dla ułatwienia orientacji. Jednak FTDI Friend ma złącze przylutowane do płytki PCB a nie ma tam przewodów, więc jak wiedzieć która strona jest która?
Wystarczy spojrzeć na krawędzie płytki – już wiecie czemu są na niej napisy BLACK i GREEN. Wystarczy teraz nałożyć FTDI Frienda bezpośrednio na Arduino Pro Mini i będzie można je programować z Arduino IDE, jak „zwykłe” Arduino, przez przycisk Upload (Ctrl+U) w Arduino IDE.
Uwaga – jeżeli korzystasz z Arduino Pro Mini 3.3V nie zapomnij o przelutowaniu zworek na tyle FTDI Frienda, tak by zasilanie i poziomy logiczne pasowały do 3.3V.
Mam bardzo dziwny objaw przy zestawie Mini USB i Arduino Pro Mini. Resetuje mi to komputer.
Wypróbowałem na 3 komputerach, dzieje się to na na maszynie z Win XP (2 pozostałe, współpracujące bez problemu to Win 7, a;e nie wiem czy to ma jakiś związek). Mam ciągle resety komputera. Wystarczy podłączenie zestawu do portu USB, a jeżeli jest już podłączony w momencie uruchomienia komputera – reset następuje przy próbie uruchomienia IDE Arduino…
Sugestie co do ew. przyczyn i środków zaradczych mile widziane… :)
Czy spotkał się ktoś z przypadkiem resetowania komputera przez taki zestaw? (A. Pro Mini + USB Mini). Jeden z moich komputerów najwyraźniej zdecydowanie nie lubi się z USB Mini, Windows XP.
Jeżeli startuje z od razu podłączonym kablem, wywala się przy próbie uruchomienia IDE Arduino. Próba podłączenia układu w trakcie działania komputera to również natychmiastowy reset…
Sugestie, jak sobie z tym poradzić, mile widziane :)
Nie, nigdy z takim czymś się nie spotkałem. Rozumiem, że to przypadłość jednego z komputerów. Znany jest problem, że arduino z podłączonym zewnętrznym zasilaniem i podłączone do wyłączonego komputera uniemożliwia jego zbootowanie się. Ale reset? Nie…
Może tak – czy jak odpalisz z jakiegoś LiveCD Linuxa to masz ten sam objaw?
Ja mam natomiast inny problem. Połączyłem wszystko tak jak trzeba zgodnie ze schematem. Wydaje mi się, że reset dział „prawie” dobrze. Mianowicie przy rozpoczęciu uploadu wygląda to tak, jakby reset był trzymany za długo, ponieważ przy manualnym uploadzie należy nacisnąć (ale tylko nacisnąć i puścić) przycisk w momencie kiedy SDK próbuje wgrać oprogramowanie, jeśli będę go trzymał cały czas podczas wgrywania nic się nie stanie. W moim przypadku auto-reset gasi zieloną diodę (trzyma ciągle reset) i zapala ją dopiero w momencie jak SDK skończy ładować program co oczywiście kończy się niepowodzeniem. Czy ktoś spotkał się z takim problemem ?
Czy komuś udało się zmusić Arduino Mini Pro do współpracy z IDE od numeru 1.0 wzwyż? Nie jestem w stanie załadować programu do płytki przez USB Mini, starsze IDE (np. v. 0.22) nie ma z tym problemu…
Jedna uwaga dla osób używających innego programatora: mam zestaw Arduino Pro Mini i programator USB-TTL-STC (w tym stylu http://goo.gl/lDZl7) to należy odwrotnie podłączyć programator z Arduino, tzn.
TX0 programatora z RXI arduino
RX0 programatora z TX0 arduino.
Bez tego zobaczycie różne błędy związane z brakiem komunikacji z programatorem.
Zestaw Arduino Pro Mini, FTDI Friend. Zrobiłem podłączenie z automatycznym resetem. Próba wgrania programu konczy się komunikatem :
Problem uploading to board…..
Binary sketch size: 1,084 bytes (of a 30,720 byte maximum)
avrdude: stk500_recv(): programmer is not responding
w opcjach IDE wybrany odpowiedni model płytki, programator USB TinyISP, zreszta, proforma, probowalem wszystkie programatory, zawsze konczy sie tak samo :/
Mój problem rozwiązał się po podłączeniu Frienda na stojąco czyli nałożenie go na ProMini zgodnie z uwzględnieniem BLACK i GREEN, natomiast jednokrotnie przytrafiło się że przy uploadzie laptop się zrestartował, przypuszczam że wtedy ktoraś ścieżka ProMini miała kontakt z aluminiową obudową laptopa.