Arduino RS485 vers WiFi

Dans ce guide, nous allons explorer l'utilisation de l'Arduino Uno R4 WiFi pour construire un convertisseur série RS485 en WiFi. Avec cette configuration, l'Arduino lira les données provenant d'une interface série RS485 et les transmettra à un serveur TCP, soit au sein du même réseau local (LAN), soit à distance via Internet. Il peut également recevoir des données du serveur TCP et les renvoyer via l'interface série RS485.

Ces étapes vous permettront d'établir des ponts de communication polyvalents entre des appareils série RS-485 et un serveur TCP/IP en utilisant Arduino.

Convertisseur Arduino RS485 vers WiFi

Préparation du matériel

1×Arduino UNO R4 WiFi
1×USB Cable Type-C
1×TTL to RS485 Module
1×Jumper Wires
1×(Optional) RS485 to USB Cable
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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 de RS485 et TCP

Si vous ne savez pas comment utiliser la communication RS485 et TCP avec Arduino, apprenez-en davantage dans les tutoriels suivants :

Comment fonctionne le convertisseur RS485 vers WiFi.

  • Arduino se connecte à un dispositif série via l'interface série RS485
  • Arduino fonctionne comme un client TCP qui se connecte à un serveur TCP (peut être un logiciel serveur TCP sur votre PC ou un autre Arduino programmé comme un serveur TCP)
  • Arduino lit des données de l'interface série RS485 et les envoie au serveur TCP
  • Arduino lit des données de la connexion TCP et les envoie à l'interface série RS485

Diagramme de câblage

  • Schéma de câblage si utilisation de la liaison série matérielle
Schéma de câblage d'Arduino TTL vers RS485

This image is created using Fritzing. Click to enlarge image

  • Schéma de câblage pour l'utilisation d'une liaison série logicielle
Schéma de câblage Arduino RS-485 à TTL

This image is created using Fritzing. Click to enlarge image

Code Arduino pour le port série matériel

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-rs485-to-wifi */ #include <WiFiS3.h> const char* WIFI_SSID = "YOUR_WIFI_SSID"; // CHANGE TO YOUR WIFI SSID const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // CHANGE TO YOUR WIFI PASSWORD const char* TCP_SERVER_ADDR = "192.168.0.26"; // CHANGE TO TCP SERVER'S IP ADDRESS const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); Serial.println("Arduino: TCP CLIENT"); // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // don't continue while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } Serial.print("Attempting to connect to SSID: "); Serial.println(WIFI_SSID); // attempt to connect to WiFi network: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // wait 10 seconds for connection: } Serial.print("Connected to WiFi "); Serial.println(WIFI_SSID); // connect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("Connected to TCP server"); else Serial.println("Failed to connect to TCP server"); } void loop() { if (TCP_client.connected()) { // read data from TCP and send them to RS485 interface if (TCP_client.available()) { char c = TCP_client.read(); Serial.write(c); } // read data from RS485 interface and send them to TCP if (Serial.available()) { char c = Serial.read(); TCP_client.write(c); } } else { Serial.println("Connection is disconnected"); TCP_client.stop(); // reconnect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("Reconnected to TCP server"); } else { Serial.println("Failed to reconnect to TCP server"); delay(1000); } } }

Code Arduino pour la liaison série logicielle

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-rs485-to-wifi */ #include <WiFiS3.h> #include <SoftwareSerial.h> // define the SoftwareSerial object and their pins SoftwareSerial rs485(6, 7); // RX: 6, TX: 7 const char* WIFI_SSID = "YOUR_WIFI_SSID"; // CHANGE TO YOUR WIFI SSID const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; // CHANGE TO YOUR WIFI PASSWORD const char* TCP_SERVER_ADDR = "192.168.0.26"; // CHANGE TO TCP SERVER'S IP ADDRESS const int TCP_SERVER_PORT = 1470; WiFiClient TCP_client; void setup() { Serial.begin(9600); rs485.begin(9600); Serial.println("Arduino: TCP CLIENT"); // check for the WiFi module: if (WiFi.status() == WL_NO_MODULE) { Serial.println("Communication with WiFi module failed!"); // don't continue while (true) ; } String fv = WiFi.firmwareVersion(); if (fv < WIFI_FIRMWARE_LATEST_VERSION) { Serial.println("Please upgrade the firmware"); } Serial.print("Attempting to connect to SSID: "); Serial.println(WIFI_SSID); // attempt to connect to WiFi network: while (WiFi.begin(WIFI_SSID, WIFI_PASSWORD) != WL_CONNECTED) { delay(10000); // wait 10 seconds for connection: } Serial.print("Connected to WiFi "); Serial.println(WIFI_SSID); // connect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) Serial.println("Connected to TCP server"); else Serial.println("Failed to connect to TCP server"); } void loop() { if (TCP_client.connected()) { // read data from TCP and send them to RS485 interface if (TCP_client.available()) { char c = TCP_client.read(); rs485.write(c); } // read data from RS485 interface and send them to TCP if (rs485.available()) { char c = rs485.read(); TCP_client.write(c); } } else { Serial.println("Connection is disconnected"); TCP_client.stop(); // reconnect to TCP server if (TCP_client.connect(TCP_SERVER_ADDR, TCP_SERVER_PORT)) { Serial.println("Reconnected to TCP server"); } else { Serial.println("Failed to reconnect to TCP server"); delay(1000); } } }

Test

Vous pouvez effectuer un test en envoyant des données dans les flux suivants :

  • Logiciel série (sur votre PC) → RS-485 → Arduino → WiFi → Logiciel serveur TCP (sur votre PC).
  • Logiciel serveur TCP (sur votre PC) → WiFi → Arduino → RS-485 → Logiciel série (sur votre PC).
Communication Arduino RS485 vers PC

Pour ce faire, suivez les étapes ci-dessous :

  • Si c'est la première fois que vous utilisez Arduino Uno R4, consultez comment configurer l'environnement pour Arduino Uno R4 sur Arduino IDE.
  • Connectez l'Arduino Uno R4 WiFi à votre PC en utilisant un module TTL-vers-RS485 et un câble RS485-vers-USB comme le montre le schéma de câblage ci-dessus.
  • Installez un programme de terminal série tel que Tera Term ou PuTTY
  • Installez un logiciel serveur TCP comme ezTerm
  • Ouvrez le programme série et configurez les paramètres série (port COM, débit en bauds...)
  • Ouvrez le programme serveur TCP et configurez-le en tant que serveur TCP, puis cliquez sur le bouton Écouter.
Serveur TCP ezTerm
  • Ouvrez l'invite de commande sur votre PC.
  • Trouvez l'adresse IP de votre PC en exécutant la commande ci-dessous :
ipconfig
  • La sortie ressemble à ce qui suit :
Command Prompt
C:\WINDOWS\system32>ipconfig Windows IP Configuration Ethernet adapter: Subnet Mask . . . . . . . . . . . : 255.0.0.0 IPv4 Address. . . . . . . . . . . : 192.168.0.26 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . :
  • Mettez à jour l'adresse IP du serveur TCP (Votre PC) dans le code Arduino. Dans l'exemple ci-dessus : 192.168.0.26
  • Compilez et téléchargez le code sur la carte Arduino en cliquant sur le bouton Upload de l'IDE Arduino
  • Tapez des données depuis le programme Série pour les envoyer à l'Arduino via Série.
  • Si cela réussit, vous verrez les données en écho sur le logiciel du serveur TCP.
  • Tapez des données depuis le programme du serveur TCP pour les envoyer à l'Arduino via TCP.
  • Si cela réussit, vous verrez les données en écho sur le programme Série.
Arduino série vers TCP

Si vous souhaitez utiliser un convertisseur commercial RS485 vers Ethernet, vous pouvez acheter le Convertisseur série vers Ethernet CSE-H55N2

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!