4 alternatywy dla monitora portu szeregowego Arduino

4 alternatywy dla monitora portu szeregowego Arduino

Komunikacja Arduino z komputer przez UART to jedna z częściej wybieranych metod. Opcja ta jest wygodna, szczególnie biorąc pod uwagę, że w środowisko Arduino wbudowano monitor portu szeregowego (terminal).

Pora poznać 4 alternatywne terminale, które dają większe możliwości i są jeszcze wygodniejsze.

Opisywane zewnętrzne terminale mogą działać nawet, jeśli na komputerze nie ma Arduino IDE. Gdy zbudowane przez nas urządzenie ma być używane przez innych, "nietechnicznych" użytkowników to taki program będzie dla nich na pewno wygodniejszy (nie będą musieli instalować IDE). Co więcej programy te oferują czasami więcej funkcji jak np.: zapis odebranych danych do pliku lub wysyłanie danych z wczytanego pliku.

Opisywane programy zastępują tekstowy monitor portu szeregowego, jeśli szukasz programu, który może zastąpić kreślarkę, czyli narzędzie do rysowania wykresów to koniecznie sprawdź ten artykuł:

Jak rysować rozbudowane wykresy na żywo?
Jak rysować rozbudowane wykresy na żywo?

Bardzo wygodnym dodatkiem do Arduino IDE jest narzędzie, która przedstawia… Czytaj dalej »

Program testujący UART na Arduino

Do testu programów można wykorzystać np. lekko zmodyfikowany program z kursu Arduino, w którym Arduino czeka na przesłanie imienia użytkownika, a następnie odsyła powitanie. Modyfikacja polegała jedynie na dodaniu linijki w funkcji setup(), która na początku jednorazowo wysyła wiadomość do PC. Dzięki temu od razu będzie wiadomo czy odbieranie danych działa poprawnie.

Efekt działania w praktyce w domyślnym monitorze portu szeregowego:

Efekt działania programu w monitorze portu szeregowego.

1) Współpraca TeraTerm z Arduino

TeraTerm to bardzo prosty i darmowy (open-source) terminal. Oprócz komunikacji przez UART pozwala on również na łączność m.in. przez SSH. Można więc go wykorzystać do połączenia z Raspberry Pi. Najnowszą wersję programu znajdziemy na stronie producenta.

Po włączeniu programu pojawia się okno, w którym wybieramy parametry połączenia. W przypadku Arduino klikamy na opcję Serial i wybieramy port COM (do sprawdzenia w menedżerze urządzeń). Po uruchomieniu testowego programu nie zobaczymy jednak spodziewanego komunikatu. Wszystko za sprawą błędnie ustawionej prędkości komunikacji. Możemy ją zmienić na właściwą (w tym przypadku 115200) dopiero po nawiązaniu połączenia przechodząc do zakładki Setup > Serial Port.

Od razu warto też skonfigurować odpowiednio znaki końca linii wysyłane po naciśnięciu Enter. Robimy to w ustawieniach Setup > Terminal Setup, gdzie w menu New-line wybieramy w obu przypadkach wartość LF. Jak od razu widać w programie tym nie ma nigdzie osobnego pola do wysyłania danych. To dlatego, że możemy pisać cały czas, a to co napisaliśmy zostanie wysłane po wciśnięciu Enter. Domyślnie brak jest podglądu wpisywanych danych, co widać na poniższej animacji:

Brak podglądu wpisywanych znaków.

Aby działanie programu było wygodniejsze można włączyć opcję "Local echo", która znajduje się w menu Setup > Terminal. Po jej zaznaczeniu każdy wpisywany znak będzie pokazywany na ekranie:

Działanie programu po włączeniu funkcji echo.

Program ten ma znacznie więcej opcji, które warto sprawdzić. Bardziej zaawansowani użytkownicy na pewno ucieszą się z możliwości pisania makr, które mogą automatyzować pewne czynności. Więcej informacji na ten temat znaleźć można w dokumentacji programu.

2) Współpraca PuTTy z Arduino

Drugim programem, który można wykorzystać do łączności z Arduino jest niesamowicie popularny PuTTy, program ten powinien znaleźć się na komputerze wszystkich elektroników majsterkowiczów.

Najnowszą wersję tego darmowego programu znajdziemy na stronie producenta. Chcąc połączyć się z Arduino musimy w głównym oknie wybrać typ połączenia na Serial, wpisać ręcznie nasz port COM oraz prędkość.

Konfiguracja PuTTy.

Wysyłanie w przypadku PuTTy odbywa się jednak trochę inaczej. W internecie znaleźć można wiele pytań o konfigurację znaków linii dla PuTTy. Nie jest to intuicyjne. W przypadku prostych programów najlepiej wpisywać dane bez naciskania klawisza enter - wysyłają się one "same". Wciskanie Enter sprawia, że wysłane są dodatkowe znaki końca linii, nad którymi "nie można zapanować".

Tymczasem pozostaje wersja wysyłania danych bez wciskania Enter (podgląd na poniższej animacji):

Wysyłanie danych przez PuTTy bez wciskania Enter.

Na koniec bardzo wygodna uwaga: aby zmieniać ustawienia połączenia w PuTTY nie trzeba restartować programu. Faktycznie brak tam menu z ustawieniami, ale wystarczy kliknąć prawym przyciskiem myszy na górnej belce programu - znajdziemy tam odesłanie do opcji.

3) Współpraca RealTerm z Arduino

RealTerm to zdecydowanie mój faworyt tego zestawienia. Używam go od bardzo dawna i jeszcze nigdy mnie nie zawiódł. Jego główną zaletą (w tym zastosowaniu) jest mnogość opcji dostępnych z poziomu wygodnego menu na dole programu. W przypadku standardowej komunikacji na pierwszej karcie Display wybieramy sposób wyświetlania danych jako Ansi. Na karcie Port wybieramy parametry komunikacji, czyli prędkość oraz portu COM (wybieramy go z dostępnej listy rozwijanej).

Główne okno programu RealTerm.

Bardzo przyjemne jest wysyłanie danych, którego dokonujemy na karcie Send. Szczególnie wygodne są dla mnie rozbudowane opcje kontroli znaków końca linii. Dzięki temu korzystanie z tego terminala jest bardzo wygodne:

Wysyłanie danych przez RealTerm.

Wygodne są również kontrolki opisane jako Status (po prawej stronie okna). Dzięki nim możemy łatwo sprawdzić czy coś jest nadawane lub odbierane. Często przydaje się również możliwość pokazywania danych w inny sposób np. jako liczby HEX, a jeśli ustawimy wyświetlanie jako ASCII to będziemy również widzieć jawnie znaki końca linii:

Podgląd znaków końca linii.

Wysyłanie danych z pliku do Arduino przez UART

Program ten pozwala również na wysyłanie danych z pliku. Gdzie może się to przydać? Jaki czas temu opisywałem to rozwiązanie na naszym forum, gdy jeden z użytkowników szukał sposobu, aby wysłać dane z pliku przez UART, które miały określać kolejne pozycje serwomechanizmu.

Program był analogiczny:

Do tego potrzebny był plik tekstowy z kolejnymi liczbami (umieszczonymi jedna pod drugą). Taki plik można wczytać w pole Dump File to Port i wysłać go do Arduino.

Wysyłanie pliku do Arduino.

4) Własny terminal

Na koniec ostatnia "metoda". Terminale do komunikacji szeregowej to dość proste programy. Zupełnie poważnie należy więc traktować możliwość samodzielnego napisania takiej aplikacji. Nie jest to nic trudnego, a daje wiele możliwości.

Przykład budowy własnego terminala.

Przykładowo samodzielnie napisany program wcale nie musi wygląda tak jak powyższe. Odebrane dane mogą być przetwarzane i wizualizowane na różnych wskaźnikach, a wysyłanie danych może odbywać się np. po wciśnięciu odpowiedniego przycisku. Na przykład: użytkownik wciska przycisk LED ON, a w praktyce w tle wysyłany jest zwyczajnie tekstowy komunikat typu "led:on" i diody podłączone do naszego Arduino się włączają. Z punktu widzenia użytkownika wygląda to już znacznie bardziej przyjaźnie i profesjonalnie względem takiego "gołego" terminala.

Przykład tworzenia własnego programu tego typu został dobrze opisany w osobnej serii artykułów:

Port szeregowy i interfejs USART, czyli komunikacja z PC
Port szeregowy i interfejs USART, czyli komunikacja z PC

Zauważyłem, że problem komunikacji z komputerem za pomocą portu szeregowego… Czytaj dalej »

Podsumowanie

Jak widać alternatyw jest kilka, niektóre różnią się bardziej, inne mniej. Podczas używania zewnętrznych programów możemy natrafić głównie na dwa problemy. Pierwszy, odpowiedzialny za większości błędów to złe ustawienie prędkości (prędkość musi być taka sama jak w programie na Arduino). Drugi typ problemów może dotyczyć różnego kodowania znaków końca linii. Tutaj pozostaje testowanie różnych ustawień po stronie PC lub dostosowanie programu po stronie Arduino.

Osobiście zdecydowanie polecam ostatnie 2 alternatywne metody. Dajcie znać w komentarzach, jeśli znacie jakieś inne ciekawe programy tego typu lub wiecie jak poradzić sobie lepiej z ustawieniami znaków końca linii w PuTTy.

Autor: Damian Szymański

arduino, putty, realterm, teraterm, terminal, uart