Arduino UNO Q - RS485

Verwenden Sie RS485-Serienkommunikation mit dem Arduino UNO Q und einem TTL-zu-RS485-Modul. RS485 unterstützt Fernkommunikation (bis zu 1200 m), hohe Störunempfindlichkeit und Multi-Device-Bus-Topologien – was es ideal für Industrie- und Automatisierungsprojekte macht. Mit Bridge und Telegram können Sie RS485-Daten remote von Python oder Ihrem Telefon aus senden und empfangen.

In diesem Tutorial lernen Sie:

Arduino UNO Q RS485

Erforderliche Hardware

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×TTL zu RS485 Modul
1×Jumper-Drähte
1×(Optional) USB zu RS485 Konverter
1×(Optional) USB zu RS485 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 RS485 Modul

Die Arduino UNO Q MCU kommuniziert über UART mit TTL-Logikpegeln (3,3 V). TTL-Signale sind in der Reichweite begrenzt. Um über lange Entfernungen mit RS485-kompatiblen Geräten (Sensoren, Antrieben, Messgeräten, Industriereglern) zu kommunizieren, müssen Sie TTL-Signale in den differenziellen RS485-Standard konvertieren. Das TTL-zu-RS485-Modul führt diese Konvertierung in beide Richtungen durch.

RS485 Hauptvorteile:

  • Lange Entfernung: bis zu 1200 Meter
  • Hohe Störunempfindlichkeit
  • Multi-Drop-Bus: bis zu 32 Geräte auf einem einzelnen Bus
RS485 Modul Pinbelegung

Pinbelegung

  • TTL-Schnittstelle (Verbindung zu Arduino UNO Q MCU):
    • VCC: Stromversorgung — verbinden Sie mit 3,3 V
    • GND: Masse
    • RXD: Dateneingabe — verbinden Sie mit MCU TX Pin (D6)
    • TXD: Datenausgabe — verbinden Sie mit MCU RX Pin (D7)
  • RS485-Schnittstelle:
    • D+ (A oder TR+): Differenzielle Datenleitung A
    • D- (B oder TR-): Differenzielle Datenleitung B
    • GND: Optional — verbinden Sie zur Rauschreduzierung

Verdrahtungsdiagramm

Arduino UNO Q TTL zu RS485 Modul Verdrahtungsdiagramm

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

TTL-zu-RS485 Modul Pin Arduino UNO Q MCU Pin Notiz
VCC 3.3V
GND GND
RXD D6 (MCU TX)
TXD D7 (MCU RX)

Verbinden Sie D+ und D- mit dem RS485-Bus. Beim Testen mit einem PC verbinden Sie diese mit einem USB-zu-RS485-Adapter.

Programmierung für RS485

  • Include SoftwareSerial und erstellen Sie ein RS485-Serialobjekt:
#include <SoftwareSerial.h> SoftwareSerial rs485(7, 6); // RX: D7, TX: D6
  • Lesen Sie eingehende RS485-Daten:
if (rs485.available()) { char data = rs485.read(); }
  • Senden Sie Daten über RS485:
rs485.print("Hello from Arduino UNO Q"); rs485.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-rs485 */ #include <SoftwareSerial.h> SoftwareSerial rs485(7, 6); // RX: D7, TX: D6 void setup() { Monitor.begin(9600); // USB serial for debug output rs485.begin(9600); // RS485 module serial delay(100); } void loop() { // Forward data from RS485 to Monitor if (rs485.available()) { char data = rs485.read(); Monitor.print(data); rs485.print(data); // echo back to sender } // Forward data from Monitor to RS485 if (Monitor.available()) { char data = Monitor.read(); rs485.print(data); } }

Schnelle Schritte

Erste Schritte mit Arduino UNO Q? Folgen Sie zunächst dem Tutorial Erste Schritte mit Arduino UNO Q.

  • Verdrahten Sie: Verbinden Sie das TTL-zu-RS485-Modul mit dem Arduino UNO Q MCU wie im Verdrahtungsdiagramm gezeigt.
  • Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis Ihr Arduino UNO Q erkannt wird.
  • Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Neue App erstellen.
Neue App in Arduino App Lab auf Arduino UNO Q erstellen
  • Geben Sie der App einen Namen, zum Beispiel: RS485
  • Klicken Sie auf Erstellen, um zu bestätigen.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Fügen Sie die Skizze ein: Kopieren Sie den MCU-Code oben und fügen Sie ihn in sketch/sketch.ino ein.
  • Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q

Testen

So testen Sie die RS485-Kommunikation:

  • Verbinden Sie die D+ und D- Pins mit einem USB-zu-RS485-Adapter:
Arduino UNO Q RS485 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-Port.
  • Geben Sie beliebigen Text ein und senden Sie ihn. Der Arduino UNO Q gibt ihn zurück — Sie sollten die echten Daten im Terminal sehen.

Bridge: Linux + MCU

Dieser Abschnitt zeigt, wie Sie RS485-Daten von der Linux-Seite (Python) über Bridge senden und empfangen:

  • Das TTL-zu-RS485-Modul ist über SoftwareSerial mit dem MCU verbunden — der MCU verwaltet alle seriellen E/A
  • Die MPU kann SoftwareSerial nicht direkt verwenden — sie ruft Bridge-Funktionen auf, um RS485-Daten zu senden/empfangen
  • Die MPU hat Wi-Fi — sie führt vollständige Debian Linux aus und kann RS485-Daten an Telegram oder Webdienste weiterleiten
  • Arduino_RouterBridge ermöglicht RPC-Kommunikation zwischen den beiden Prozessoren
  • ⚠️ /dev/ttyHS1 (Linux) und Serial1 (MCU) sind RESERVIERT vom Router — öffnen Sie sie niemals im 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-rs485 */ #include "Arduino_RouterBridge.h" #include <SoftwareSerial.h> SoftwareSerial rs485(7, 6); // RX: D7, TX: D6 String received_data = ""; String send_rs485(String arg) { rs485.println(arg); Monitor.print("Sent via RS485: "); 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(); rs485.begin(9600); delay(100); Bridge.provide_safe("send_rs485", send_rs485); Bridge.provide("get_received", get_received); Monitor.println("Arduino UNO Q RS485 Bridge ready"); } void loop() { while (rs485.available()) { char c = rs485.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-rs485 */ from arduino.app_utils import * import time def loop(): print("Sending message via RS485...") result = Bridge.call("send_rs485", "Hello from Arduino UNO Q!") print(f"Result: {result}") time.sleep(1) data = Bridge.call("get_received") if data: print(f"Received via RS485: {data}") else: print("No data received") time.sleep(2) App.run(user_loop=loop)

Schnelle Schritte

  • Verdrahten Sie: Verbinden Sie das TTL-zu-RS485-Modul mit dem Arduino UNO Q wie oben gezeigt.
  • Öffnen Sie Arduino App Lab und erstellen Sie eine neue App mit dem Namen RS485Bridge.
  • Fügen Sie die MCU-Skizze 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 Schaltfläche Ausführen. Python sendet eine Nachricht über RS485 und liest alle echten Daten zurück.
Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q

App Lab Konsolenausgabe

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 RS485 Bridge ready [2026-04-29 09:00:06] Sent via RS485: 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 RS485... [2026-04-29 09:00:06] Result: ok:sent [2026-04-29 09:00:07] Received via RS485: Hello from Arduino UNO Q!

Telegram

Senden und empfangen Sie RS485-Daten über Telegram — leiten Sie Nachrichten von Industriesensoren auf Ihr Telefon weiter oder senden Sie Befehle von Telegram an ein RS485-Gerät.

MCU-Skizze: Behalten Sie die gleiche MCU-Skizze 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-rs485 */ 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 RS485 Bot\n" "/send <message> - Send a message via RS485\n" "/read - Read data received from RS485") elif text.startswith("/send"): parts = text.split(" ", 1) if len(parts) < 2: send_message(chat_id, "Usage: /send <message>") else: result = Bridge.call("send_rs485", parts[1]) send_message(chat_id, f"Sent via RS485: {parts[1]}") elif text == "/read": data = Bridge.call("get_received") if data: send_message(chat_id, f"Received via RS485:\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 Ihren echten 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 die gleiche MCU-Skizze).
  • Klicken Sie auf die Schaltfläche Ausführen — senden Sie /send Hello in Telegram, um Daten über RS485 zu übertragen.

App Lab Konsolenausgabe

DIYables_Apps
Stop
sketch.ino
1#include "Arduino_RouterBridge.h"
Serial Monitor
Python
[2026-04-29 09:10:05] Received: /send Hello RS485 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 RS485 device!
10:15 AM ✓✓
Sent via RS485: Hello RS485 device!
10:16 AM
/read
10:17 AM ✓✓
Received via RS485: Hello RS485 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 RS485-Kommunikation und Arduino UNO Q erstellen:

  • Industrielles Sensornetzwerk: Verbinden Sie mehrere RS485-Sensoren (Temperatur, Luftfeuchtigkeit, Durchfluss) auf einem einzelnen Bus; der MCU fragt jedes Gerät nach Adresse ab, sammelt Messwerte ein und Python sendet regelmäßig Zusammenfassungen an Telegram
  • Modbus RTU Datenlogger: Verwenden Sie den RS485-Bus, um Modbus RTU Register von einem Energiemessgerät oder VFD zu lesen; Python protokolliert die Daten in einer Datei und sendet Warnungen, wenn Werte Schwellwerte überschreiten
  • Ferngesteuerte Relaissteuerung: Führen Sie RS485-Draht über 100 m zu einem Remote-Relaismodul; senden Sie /send RELAY_ON von Telegram aus und der Arduino UNO Q leitet den Befehl über RS485 weiter, um das Relais auszulösen
  • Zugangskontrollpanel: Verbinden Sie einen RS485-Zugangsregler mit dem Modul; der MCU liest Türereignisse und Python leitet sie als Telegram-Benachrichtigungen weiter — zeigt, welche Tür sich öffnete und wann
  • Building Automation Gateway: Verbinden Sie RS485 HVAC oder Beleuchtungsregler mit dem Internet; Python übersetzt Telegram-Befehle in RS485-Befehlszeichenfolgen und sendet sie über die send_rs485 Bridge-Funktion

Fordern Sie sich selbst heraus

Bereit, mit RS485 auf Arduino UNO Q noch weiter zu gehen? Probieren Sie diese Herausforderungen:

  • Leicht: Erweitern Sie die Bridge-Skizze, um empfangene Bytes in Zeilen zu sammeln (using \n as delimiter) und die letzte vollständige Zeile über get_last_line bereitzustellen — verhindert Teillesevorgänge, wenn RS485-Daten in Chunks ankommen.
  • Mittel: Implementieren Sie einen Modbus-Style-Adressfilter: ändern Sie die MCU-Empfangsschleife so, dass sie nur Nachrichten akzeptiert, die mit einem bestimmten Geräteadressbyte beginnen (z. B. 0x01), Puffering nur gültige Frames — und stellen Sie die gefilterte Payload über get_received bereit.
  • Erweitert: Erstellen Sie ein Multi-Device-Abfragsystem: speichern Sie eine Liste mit RS485-Geräteadressen in einer Python-JSON-Konfiguration; Python sendet sequenziell eine Abfrageanweisung an jede Adresse über send_rs485, wartet auf eine Antwort über get_received und protokolliert jede Antwort in einer zeitgestempelten CSV-Datei — erstellt einen leichten RS485-Datenlogger, der vollständig auf der Linux-Seite von Arduino UNO Q läuft.

※ 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!