RS232 i Arduino – jak połączyć?

Czasem ktoś z naszych przyjaciół pyta jak połączyć Arduino z RS232. Oto odpowiedź.

Arduino ma cały niezbędny hardware do obsługi protokołu. Różnice ze standardem polegają tylko na poziomach stanów logicznych. Port szeregowy w Arduino pracuje najczęściej w standardzie TTL czyli ma napięcia 5 V dla stanu wysokiego, lub 0 V dla stanu niskiego.

W standardzie RS232 informacje przesyła się za pomocą stanów logicznych +12 V dla stanu wysokiego i -12 V dla stanu niskiego. Do pogodzenia tych dwóch światów służy adapter konwertera MAX3232.

Jest to mała płytka do której podłącza się z jednej strony urządzenie szeregowe TTL 5V lub 3.3V, a z drugiej wtyczkę RS232 standardu +/-12V.

Wyprowadzenia płytki są następujące

  • 3V-5.5V – wejście zasilania
  • GND – masa
  • T1OUT – pierwsze wyjście standardu RS232
  • T2OUT – drugie wyjście standardu RS232
  • R1IN – pierwsze wejście standardu RS232
  • R2IN – drugie wejście standardu RS232
  • T1IN – pierwsze wejście standardu TTL
  • T2IN – drugie wejście standardu TTL
  • R1OUT – pierwsze wyjście standardu TTL
  • R2OUT – drugie wyjście standardu TTL

Wejścia i wyjścia różnych standardów połączone są w następujący sposób:

  • T1IN [TTL] -> T1OUT [RS232]
  • T2IN [TTL] -> T2OUT [RS232]
  • R1IN [RS232] -> R1OUT [TTL]
  • R2IN [RS232] -> R2OUT [TTL]

W Arduino występują 2 główne sygnały RS232. Są to:

  • DIGITAL Pin 0 <RX – Odbieranie danych szeregowych
  • DIGITAL Pin 1 >TX – Wysyłanie danych szeregowych

Podłączenie do Arduino jest proste. Użyłem jednego wejścia do wysyłania danych i jednego do odbierania danych.

  • RX <- R1OUT
  • TX -> T1IN

Do wtyczki RS232 podłączam sygnały:

  • T1OUT do TxD
  • R1IN do RxD
  • GND do GND

Do komunikacji w programie poprzez RS232 na Arduino używa się standardowo obiektu Serial.

Należy uważać na to, że w Arduino UNO sygnały RX i TX podłączone są też ze złączem USB. Dlatego nie zalcam używać na raz adapteru i łącza USB. Może dość do kolizji sygnałów i błędnych odczytów.

Jeśli potrzebujesz niezależnego USB i portu szeregowego, kup Arduino Leonardo, albo Arduino Mega. Tam niezależy port szeregowy używa obiektu Serial1.