Arduino UNO Q - RS485

Utilisez la communication série RS485 avec l'Arduino UNO Q et un module TTL vers RS485. Le RS485 prend en charge la communication longue distance (jusqu'à 1200m), une grande immunité au bruit et des topologies de bus multi-appareils — ce qui le rend idéal pour les projets industriels et d'automatisation. Avec Bridge et Telegram, vous pouvez envoyer et recevoir des données RS485 à distance depuis Python ou votre téléphone.

Dans ce tutoriel, vous apprendrez :

Arduino UNO Q RS485

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×Module convertisseur TTL vers RS485
1×Fils de connexion
1×Optionnel: Convertisseur USB vers RS485
1×Optionnel: USB to RS485 Cable
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Module TTL vers RS485

Le MCU de l'Arduino UNO Q communique via UART en utilisant des niveaux logiques TTL (3,3V). Les signaux TTL ont une portée limitée. Pour communiquer sur de longues distances avec des appareils compatibles RS485 (capteurs, variateurs, compteurs, contrôleurs industriels), vous devez convertir les signaux TTL vers le standard différentiel RS485. Le module TTL vers RS485 effectue cette conversion dans les deux sens.

Avantages clés du RS485 :

  • Longue distance : jusqu'à 1200 mètres
  • Grande immunité au bruit
  • Bus multi-drop : jusqu'à 32 appareils sur un seul bus
Brochage du Module RS485

Brochage

  • Interface TTL (connecte à l'Arduino UNO Q MCU) :
    • VCC : Alimentation — connecter à 3,3V
    • GND : Masse
    • RXD : Entrée de données — connecter à la broche TX du MCU (D6)
    • TXD : Sortie de données — connecter à la broche RX du MCU (D7)
  • Interface RS485 :
    • D+ (A ou TR+) : Ligne de données différentielle A
    • D- (B ou TR-) : Ligne de données différentielle B
    • GND : Optionnel — connecter pour réduire le bruit

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Module TTL vers RS485

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche Module TTL-vers-RS485 Broche MCU Arduino UNO Q Remarque
VCC 3,3V
GND GND
RXD D6 (MCU TX)
TXD D7 (MCU RX)

Connectez D+ et D- au bus RS485. Pour les tests avec un PC, connectez-les à un adaptateur USB vers RS485.

Comment Programmer pour RS485

  • Inclure SoftwareSerial et créer un objet série RS485 :
#include <SoftwareSerial.h> SoftwareSerial rs485(7, 6); // RX: D7, TX: D6
  • Lire les données RS485 entrantes :
if (rs485.available()) { char data = rs485.read(); }
  • Envoyer des données via RS485 :
rs485.print("Hello from Arduino UNO Q"); rs485.println("With newline");

Code Arduino UNO Q

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); } }

Étapes Rapides

Première utilisation d'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q avant de continuer.

  • Connecter : Câblez le module TTL vers RS485 sur le MCU de l'Arduino UNO Q comme indiqué dans le schéma de câblage.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Créer une nouvelle application.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : RS485
  • Cliquez sur Créer pour confirmer.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Coller le sketch : Copiez le code MCU ci-dessus et collez-le dans sketch/sketch.ino.
  • Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab.
Cliquez sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q

Test

Pour tester la communication RS485 :

  • Connectez les broches D+ et D- à un adaptateur USB vers RS485 :
Communication RS485 de l'Arduino UNO Q vers PC
  • Ouvrez un terminal série (tel que Tera Term ou PuTTY) sur votre PC.
  • Réglez le débit en bauds sur 9600, sélectionnez le bon port COM.
  • Tapez n'importe quel texte et envoyez-le. L'Arduino UNO Q le renverra en écho — vous devriez voir les données en écho dans le terminal.

Bridge : Linux + MCU

Cette section montre comment envoyer et recevoir des données RS485 depuis le côté Linux (Python) via Bridge :

  • Le module TTL vers RS485 est connecté au MCU via SoftwareSerial — le MCU gère toutes les entrées/sorties série
  • Le MPU ne peut pas utiliser SoftwareSerial directement — il appelle des fonctions Bridge pour envoyer/recevoir des données RS485
  • Le MPU dispose du Wi-Fi — exécutant Debian Linux complet, il peut relayer les données RS485 vers Telegram ou des services web
  • Arduino_RouterBridge permet la communication RPC entre les deux processeurs
  • ⚠️ /dev/ttyHS1 (Linux) et Serial1 (MCU) sont RÉSERVÉS par le routeur — ne les ouvrez jamais dans le code utilisateur

Code MCU (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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; } }

Code Python (Bridge)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Étapes Rapides

  • Connecter : Câblez le module TTL vers RS485 sur l'Arduino UNO Q comme indiqué ci-dessus.
  • Ouvrir Arduino App Lab et créer une nouvelle application nommée RS485Bridge.
  • Coller le sketch MCU dans sketch/sketch.ino.
  • Coller le code Python dans le fichier Python.
  • 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
  • Téléverser : Cliquez sur le bouton Exécuter. Python enverra un message via RS485 et lira les données reçues en écho.
Cliquez sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q

Sortie de la Console App Lab

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

Envoyez et recevez des données RS485 via Telegram — transmettez les messages de capteurs industriels vers votre téléphone ou envoyez des commandes Telegram vers un appareil RS485.

Sketch MCU : Gardez le même sketch MCU de la section Bridge précédente.

Code Python (Telegram)

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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)

Étapes Rapides

  • Remplacez YOUR_TELEGRAM_BOT_TOKEN par votre token de bot réel obtenu auprès de BotFather.
  • Remplacez YOUR_CHAT_ID par votre identifiant de chat Telegram.
  • Collez le code Python dans le fichier Python de votre application (gardez le même sketch MCU).
  • Cliquez sur le bouton Exécuter — envoyez /send Hello dans Telegram pour transmettre des données via RS485.

Sortie de la Console App Lab

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

Intégration d'OpenClaw

Vous pouvez adapter OpenClaw à ce tutoriel en vous référant aux instructions du tutoriel Arduino UNO Q - OpenClaw.

Idées de Projets

Vous pouvez créer de nombreux projets utiles avec la communication RS485 et l'Arduino UNO Q :

  • Réseau de capteurs industriels : Connectez plusieurs capteurs RS485 (température, humidité, débit) sur un seul bus ; le MCU interroge chaque appareil par adresse, collecte les relevés, et Python envoie des résumés périodiques à Telegram
  • Enregistreur de données Modbus RTU : Utilisez le bus RS485 pour lire les registres Modbus RTU depuis un compteur d'énergie ou un variateur de fréquence ; Python enregistre les données dans un fichier et envoie des alertes lorsque les valeurs dépassent les seuils
  • Contrôle de relais longue distance : Faites passer le câble RS485 sur 100m jusqu'à un tableau de relais distant ; envoyez /send RELAY_ON depuis Telegram et l'Arduino UNO Q transmet la commande via RS485 pour activer le relais
  • Panneau de contrôle d'accès : Connectez un contrôleur d'accès RS485 au module ; le MCU lit les événements de porte, et Python les transmet comme notifications Telegram — indiquant quelle porte s'est ouverte et à quelle heure
  • Passerelle d'automatisation du bâtiment : Faites le pont entre les contrôleurs HVAC ou d'éclairage RS485 et Internet ; Python traduit les commandes Telegram en chaînes de commande RS485 et les envoie via la fonction Bridge send_rs485

Défiez-vous

Prêt à aller plus loin avec RS485 sur Arduino UNO Q ? Essayez ces défis :

  • Facile : Étendez le sketch Bridge pour accumuler les octets reçus en lignes (en utilisant \n comme délimiteur) et exposez la dernière ligne complète via get_last_line — évitant les lectures partielles lorsque les données RS485 arrivent par fragments.
  • Moyen : Implémentez un filtre d'adresse de style Modbus : modifiez la boucle de réception MCU pour n'accepter que les messages commençant par un octet d'adresse d'appareil spécifique (ex. 0x01), ne mettant en mémoire tampon que les trames valides — et exposez la charge utile filtrée via get_received.
  • Avancé : Créez un système d'interrogation multi-appareils : stockez une liste d'adresses d'appareils RS485 dans un fichier JSON Python ; Python envoie séquentiellement une commande de requête à chaque adresse via send_rs485, attend une réponse via get_received, et enregistre chaque réponse dans un fichier CSV horodaté — créant un enregistreur de données RS485 léger fonctionnant entièrement du côté Linux de l'Arduino UNO Q.

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !