Arduino UNO Q - RS422

Verwenden Sie RS422-Serienkommunikation mit dem Arduino UNO Q und einem TTL-zu-RS422-Modul. RS422 verwendet differentielle Signalisierung über zwei verdrillte Adernpaare — ein Paar zum Senden, eines zum Empfangen — und ermöglicht Vollduplexkommunikation auf lange Distanzen bis zu 1200 m mit hoher Störfestigkeit. Mit Bridge und Telegram können Sie RS422-Daten remote aus Python oder Ihrem Telefon senden und empfangen.

In diesem Tutorial lernen Sie:

Arduino UNO Q RS422

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino UNO Q
1×TTL zu RS422 Modul
1×Verbindungskabel
1×(Optional) RS422 zu USB-Kabel
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das TTL zu RS422 Modul

Die Arduino UNO Q MCU kommuniziert über UART mit TTL-Logikpegeln (3,3 V). Um mit RS422-kompatiblen Industriegeräten, Kameras oder CNC-Steuerungen über lange Distanzen zu kommunizieren, müssen Sie TTL in den RS422-Differenzialstandard umwandeln. Das TTL-zu-RS422-Modul führt diese Konvertierung in beide Richtungen durch.

RS422-Schlüsselmerkmale:

  • Vollduplexkommunikation (separate TX und RX Paare)
  • Lange Distanz: bis zu 1200 Meter
  • Hohe Störfestigkeit durch differentielle Signalisierung
  • Punkt-zu-Punkt oder begrenzte Multi-Drop (bis zu 10 Empfänger pro Treiber)
RS422 Modul Pinbelegung

Pinbelegung

  • TTL-Schnittstelle (verbunden mit Arduino UNO Q MCU):
    • VCC: Stromversorgung — mit 3,3 V verbinden
    • GND: Masse
    • RXD: Dateneingabe — mit MCU TX-Anschluss (D6) verbinden
    • TXD: Datenausgabe — mit MCU RX-Anschluss (D7) verbinden
  • RS422-Schnittstelle:
    • A (R+): RX+ — mit Remote TX+ (T+/Y Anschluss) verbinden
    • B (R-): RX− — mit Remote TX- (T-/Z Anschluss) verbinden
    • Y (T+): TX+ — mit Remote RX+ (R+/A Anschluss) verbinden
    • Z (T-): TX− — mit Remote RX- (R-/B Anschluss) verbinden

Verdrahtungsdiagramm

Arduino UNO Q TTL zu RS422 Modul Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

TTL-zu-RS422 Modul Anschluss Arduino UNO Q MCU Anschluss Bemerkung
VCC 3,3V
GND GND
RXD D6 (MCU TX)
TXD D7 (MCU RX)

Verbinden Sie A/B (R+/R-) und Y/Z (T+/T-) mit den entsprechenden Anschlüssen Ihres RS422-Geräts oder eines USB-zu-RS422-Adapters zum Testen am PC.

Programmierung für RS422

  • Fügen Sie SoftwareSerial ein und erstellen Sie ein RS422-Serialobjekt:
#include <SoftwareSerial.h> SoftwareSerial rs422(7, 6); // RX: D7, TX: D6
  • Lesen Sie eingehende RS422-Daten:
if (rs422.available()) { char data = rs422.read(); }
  • Senden Sie Daten über RS422:
rs422.print("Hello from Arduino UNO Q"); rs422.println("With newline");

Arduino UNO Q Code

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rs422 */ #include <SoftwareSerial.h> SoftwareSerial rs422(7, 6); // RX: D7, TX: D6 void setup() { Monitor.begin(9600); // USB serial for debug output rs422.begin(9600); // RS422 module serial delay(100); } void loop() { // Forward data from RS422 to Monitor if (rs422.available()) { char data = rs422.read(); Monitor.print(data); rs422.print(data); // echo back to sender } // Forward data from Monitor to RS422 if (Monitor.available()) { char data = Monitor.read(); rs422.print(data); } }

Schnelle Schritte

Zum ersten Mal mit Arduino UNO Q? Folgen Sie zuerst dem Tutorial Erste Schritte mit Arduino UNO Q.

  • Verbinden: Verdrahten Sie das TTL-zu-RS422-Modul mit der Arduino UNO Q MCU wie im Verdrahtungsdiagramm gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Create New App (Neue App erstellen).
Neue App in Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, zum Beispiel: RS422
  • Klicken Sie auf Create (Erstellen), um zu bestätigen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Fügen Sie den Sketch ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Hochladen: Klicken Sie auf die Run-Schaltfläche in Arduino App Lab.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q

Testen

So testen Sie RS422-Kommunikation:

  • Verbinden Sie die T+/T- und R+/R- Anschlüsse mit einem USB-zu-RS422-Adapter:
Arduino UNO Q RS422 zu PC-Kommunikation
  • Öffnen Sie ein serielles Terminal (z. B. Tera Term oder PuTTY) auf Ihrem PC.
  • Stellen Sie die Baudrate auf 9600 ein und wählen Sie den richtigen COM-Anschluss.
  • Geben Sie einen beliebigen Text ein und senden Sie ihn. Der Arduino UNO Q wird ihn zurückgeben — Sie sollten die zurückgegebenen Daten im Terminal sehen.

Bridge: Linux + MCU

In diesem Abschnitt erfahren Sie, wie Sie RS422-Daten von der Linux-Seite (Python) über Bridge senden und empfangen:

  • Das TTL-zu-RS422-Modul ist über SoftwareSerial mit der MCU verbunden — die MCU verwaltet alle seriellen Ein-/Ausgaben
  • Die MPU kann SoftwareSerial nicht direkt verwenden — sie ruft Bridge-Funktionen auf, um RS422-Daten zu senden/empfangen
  • Die MPU hat Wi-Fi — mit vollständiger Debian Linux können Sie RS422-Daten an Telegram oder Web-Services weiterleiten
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie nie in Benutzercode

MCU-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rs422 */ #include "Arduino_RouterBridge.h" #include <SoftwareSerial.h> SoftwareSerial rs422(7, 6); // RX: D7, TX: D6 String received_data = ""; String send_rs422(String arg) { rs422.println(arg); Monitor.print("Sent via RS422: "); Monitor.println(arg); return "ok:sent"; } String get_received(String arg) { String result = received_data; received_data = ""; return result; } void setup() { Bridge.begin(); Monitor.begin(); rs422.begin(9600); delay(100); Bridge.provide_safe("send_rs422", send_rs422); Bridge.provide("get_received", get_received); Monitor.println("Arduino UNO Q RS422 Bridge ready"); } void loop() { while (rs422.available()) { char c = rs422.read(); received_data += c; } }

Python-Code (Bridge)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rs422 */ from arduino.app_utils import * import time def loop(): print("Sending message via RS422...") result = Bridge.call("send_rs422", "Hello from Arduino UNO Q!") print(f"Result: {result}") time.sleep(1) data = Bridge.call("get_received") if data: print(f"Received via RS422: {data}") else: print("No data received") time.sleep(2) App.run(user_loop=loop)

Schnelle Schritte

  • Verbinden: Verdrahten Sie das TTL-zu-RS422-Modul mit dem Arduino UNO Q wie oben gezeigt.
  • Öffnen Sie Arduino App Lab und erstellen Sie eine neue App mit dem Namen RS422Bridge.
  • Fügen Sie den MCU-Sketch in sketch/sketch.ino ein.
  • Fügen Sie den Python-Code in die Python-Datei ein.
  • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
Add sketch library in Arduino App Lab on Arduino UNO Q
  • Search for Arduino_RouterBridge created by Arduino and click the Install button.
My Apps / DIYables Apps
Run
Bricks
No bricks added...
Sketch Libraries
No sketch libra...
Files
python
sketch
.gitignore
README.md
app.yaml
sketch.ino
Add sketch library
Arduino_RouterBridge Arduino

This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

0.4.1
Install
More Info
  • Hochladen: Klicken Sie auf die Run-Schaltfläche. Python sendet eine Nachricht über RS422 und liest alle zurückgegebenen Daten.
Klicken Sie auf die Run-Schaltfläche in Arduino App Lab auf Arduino UNO Q

App Lab Konsole Ausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
Message (Enter to send a message to "Newbiely" on usb(2820070321))
New Line
9600 baud
[2026-04-29 09:00:01] Arduino UNO Q RS422 Bridge ready [2026-04-29 09:00:06] Sent via RS422: Hello from Arduino UNO Q!
DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:00:06] Sending message via RS422... [2026-04-29 09:00:06] Result: ok:sent [2026-04-29 09:00:07] Received via RS422: Hello from Arduino UNO Q!

Telegram

Senden und empfangen Sie RS422-Daten über Telegram — leiten Sie Nachrichten von Präzisions-Industrieausrüstung an Ihr Telefon weiter oder senden Sie Befehle von Telegram an ein RS422-Gerät.

MCU-Sketch: Behalten Sie den gleichen MCU-Sketch aus dem vorherigen Bridge-Abschnitt.

Python-Code (Telegram)

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-rs422 */ from arduino.app_utils import * import requests import time TELEGRAM_BOT_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN" CHAT_ID = "YOUR_CHAT_ID" last_update_id = 0 def get_updates(): global last_update_id url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates" params = {"offset": last_update_id + 1, "timeout": 5} try: response = requests.get(url, params=params, timeout=10) data = response.json() if data["ok"]: return data["result"] except Exception as e: print(f"Error getting updates: {e}") return [] def send_message(chat_id, text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = {"chat_id": chat_id, "text": text} try: requests.post(url, data=payload, timeout=10) except Exception as e: print(f"Error sending message: {e}") def loop(): updates = get_updates() for update in updates: last_update_id = update["update_id"] if "message" not in update: continue message = update["message"] chat_id = message["chat"]["id"] text = message.get("text", "").strip() print(f"Received: {text}") if text == "/start": send_message(chat_id, "Arduino UNO Q RS422 Bot\n" "/send <message> - Send a message via RS422\n" "/read - Read data received from RS422") elif text.startswith("/send"): parts = text.split(" ", 1) if len(parts) < 2: send_message(chat_id, "Usage: /send <message>") else: result = Bridge.call("send_rs422", parts[1]) send_message(chat_id, f"Sent via RS422: {parts[1]}") elif text == "/read": data = Bridge.call("get_received") if data: send_message(chat_id, f"Received via RS422:\n{data}") else: send_message(chat_id, "No data received yet.") else: send_message(chat_id, "Unknown command. Send /start for help.") time.sleep(0.3) App.run(user_loop=loop)

Schnelle Schritte

  • Ersetzen Sie YOUR_TELEGRAM_BOT_TOKEN durch Ihr tatsächliches Bot-Token von BotFather.
  • Ersetzen Sie YOUR_CHAT_ID durch Ihre Telegram-Chat-ID.
  • Fügen Sie den Python-Code in die Python-Datei Ihrer App ein (behalten Sie den gleichen MCU-Sketch).
  • Klicken Sie auf die Run-Schaltfläche — senden Sie /send Hello in Telegram, um Daten über RS422 zu übertragen.

App Lab Konsole Ausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:05] Received: /send Hello RS422 device! [2026-04-29 09:10:09] Received: /read
Telegram
Telegram 12:45
Welcome to Telegram!
ArduinoBot 10:19
Chatting with Arduino...
telegram-botfather
BotFather Yesterday
Your bot has been created.

ArduinoBot

bot
Today
/send Hello RS422 device!
10:15 AM ✓✓
Sent via RS422: Hello RS422 device!
10:16 AM
/read
10:17 AM ✓✓
Received via RS422: Hello RS422 device!
10:18 AM

OpenClaw

You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino Uno Q - OpenClaw Tutorial

Projektideen

Sie können viele nützliche Projekte mit RS422-Kommunikation und Arduino UNO Q erstellen:

  • CNC-Maschinenmonitor: Verbinden Sie den Arduino UNO Q über RS422 mit einer CNC-Steuerung; die MCU liest Positions- und Statusmeldungen, und Python sendet Echtzeit-Updates an Telegram, wenn das Fräsen startet, pausiert oder abgeschlossen wird
  • Hochgeschwindigkeits-Kameratrigger: Verwenden Sie RS422, um präzise Triggersignale an Industriekameras zu senden; Python bestimmt den Trigger-Zeitpunkt über Bridge und sendet den Befehl an die MCU, die den Trigger-Impuls über das RS422-Differenzialpaar überträgt
  • Sensor-Array über lange Distanz: Verdrahten Sie RS422 über 500 m zu einer ferngesteuerten Umweltsensorstation; die MCU liest Sensordaten über RS422, und Python protokolliert Messwerte und sendet Telegram-Warnungen, wenn Werte Schwellenwerte überschreiten
  • SPS-Status-Dashboard: Verbinden Sie sich mit dem RS422-Programmierport einer SPS, um Diagnosedaten zu lesen; Python formatiert die Daten als Statusbericht und sendet sie in regelmäßigen Abständen an Telegram
  • Präzisions-Motion-Controller: Senden Sie Positionsbefehle von Telegram über Bridge an die MCU, die diese über RS422 an einen Servo-Treiber weiterleitet — ermöglicht Remote-Steuerung mit vollem Duplex einer Präzisions-Aktuator

Schließe dich selbst heraus

Fordern Sie sich selbst heraus

Bereit, RS422 auf Arduino UNO Q weiter auszuprobieren? Versuchen Sie diese Herausforderungen:

  • Einfach: Fügen Sie einen /ping Telegram-Befehl hinzu, der eine feste Zeichenkette PING\n über RS422 sendet und die Antwort sofort mit get_received liest — nützlich zum Testen, ob das verbundene RS422-Gerät reaktiv ist.
  • Mittel: Implementieren Sie ein Nachrichtenprotokoll: Python speichert die letzten 10 empfangenen RS422-Nachrichten in einer Python-Liste; ein /history Telegram-Befehl gibt alle gespeicherten Nachrichten als nummerierte Liste zurück — gibt Ihnen eine aktuelle Kommunikationshistorie von Ihrem Telefon.
  • Fortgeschritten: Erstellen Sie ein vollständiges RS422-Duplex-Relais: Python verwaltet eine Schleife, die jeden 10 Sekunden eine Herzschlag-Zeichenkette über send_rs422 sendet, alle eingehenden Daten mit get_received liest und sie an Telegram weiterleitet — während Sie auch auf Telegram-Befehle hören, um benutzerdefinierte Nachrichten zu senden, erstellen Sie ein vollständiges bidirektionales RS422-zu-Telegram-Gateway.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!