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.