Je travaille dans un labo, et pour diverses raisons je me retrouve à devoir automatiser des opérations sur des thermorégulateurs et des pompes à vide.
En tout j'ai 3 appareils à contrôler dans un premier temps, 2 thermorégulateurs de marque Huber et 1 pompe à vide de marque Vacuubrand. Ces trois appareils peuvent communiquer en série via un port rs232.
Mon idée est donc d'utiliser un Arduino GIGA et ses 4 ports série pour cela.
Je possède les bibliothèques pour les commandes à envoyer.
J'ai tenté un premier bricolage à l'aide de mon Uno R4 pour faire une preuve de concept.
Cela à consisté à envoyer une simple commande de température à 101°C.
Ce fut un échec.
Niveau hardware j'utilise un arduino couplé à un convertisseur TTL - RS232.
Voici mon code :
#include <SoftwareSerial.h>
int rxPin = 10; // Connecté au TX du convertisseur
int txPin = 11; // Connecté au RX du convertisseur
SoftwareSerial mySerial(rxPin, txPin);
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
void loop() {
// Envoyer la commande pour régler la température à 101 degrés Celsius
mySerial.print("{M00vSP2714\r\n");
delay(3000);
}
sur votre Giga vous avez 4 port UART matériels, n'utilisez pas SoftwareSerial
Pin
Function
Notes
0
TX
Serial communication émission
1
RX
Serial communication réception
14
TX3
Serial communication émission
15
RX3
Serial communication réception
16
TX2
Serial communication émission
17
RX2
Serial communication réception
18
TX1
Serial communication émission
19
RX1
Serial communication réception
et pour le begin() c'est
Serial.begin(9600); //initialize serial communication over USB
Serial1.begin(9600); //initialize serial communication on RX0/TX0
Serial2.begin(9600); //initialize serial communication on RX1/TX1
Serial3.begin(9600); //initialize serial communication on RX2/TX2
Serial4.begin(9600); //initialize serial communication on RX3/TX3
Eh oui
Pas bien grave, il manquait une accolade en fin de setup()
J'ai, un peu, réarrangé ton programme:
#include <SoftwareSerial.h>
int rxPin = 10; // Connecté au TX du convertisseur
int txPin = 11; // Connecté au RX du convertisseur
SoftwareSerial mySerial(rxPin, txPin);
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
// Envoyer la commande pour régler la température à 101 degrés Celsius
mySerial.print("{M00vSP2714\r\n");
delay(3000);
}
Oui la vitesse est bien réglée des deux cotés
L'appareil à un mode de test ou il envoie toutes les 5 secondes un message, je l'ai activé et essayé de l'écouter avec l'arduino, sans succès la encore
void setup()
{
Serial.begin(9600);
Serial1.begin(9600); // D1 = Tx à connecter sur Tx du convertisseur TTLRS232
}
void loop()
{
// Envoyer la commande pour régler la température à 101 degrés Celsius
Serial1.print("{M00vSP2714\r\n");
delay(3000);
}
Sur l'Arduino GIGA, tu multiplies les ports série avec Serial2 et Serial3.
Attention., dans mon programme, j'ai mis une c......e
Ce n'est pas: Serial1.begin(9600); // D1 = Tx à connecter sur Rx du convertisseur TTLRS232
mais Serial1.begin(9600); // D1 = Tx à connecter sur Tx du convertisseur TTLRS232