Le contrôle d’un relais par réception d’une chaine de caractères sur le port série est une technique très pratique pour contrôler des appareils électroniques à distance. Cette méthode permet de contrôler un relais à l’aide d’un ordinateur ou d’un autre appareil électronique, sans avoir à se déplacer physiquement. Elle est très utile pour les applications qui nécessitent un contrôle à distance, telles que les systèmes de sécurité, les systèmes de surveillance et les systèmes de contrôle industriel. Dans cet article, nous allons examiner en détail comment contrôler un relais par réception d’une chaine de caractères sur le port série.
Contrôler un relais par réception d’une chaine de caractères sur le port série

1. Présentation
Le programme écoute le port série.
Lorsque la chaine relaisON est reçue, le relais est activé (travail)
Lorsque la chaine relaisOFF est reçue, le relais est désactivé (repos)
Ce programme utilise les fonctionnalités suivantes :
- Utilise la connexion série vers le PC
Ressources utiles associées à ce programme :
- La librairie Serial – pour les communications séries entre la carte Arduino et l’ordinateur ou d’autres composants
2. Matériel Nécessaire
2.1 L’espace de développement Arduino
- … pour éditer, compiler le programme et programmer la carte Arduino.

2.2 Le matériel suivant pour réaliser le montage associé

3. Instructions de montage
- La connexion série vers le PC utilise les broches 0 et 1 (via le câble USB)
- Broche 2 : Broche de commande du relais 5V
4. Le schéma théorique du montage
Le schéma théorique du montage (cliquer pour agrandir)
5. Le circuit du montage
Le schéma du montage à réaliser (cliquer pour agrandir)
6. Explication du programme
- Le programme écoute le port série.
- Lorsque la chaine relaisON est reçue, le relais est activé (travail)
- Lorsque la chaine relaisOFF est reçue, le relais est désactivé (repos)
7. Mise en oeuvre du programme
7.1 Préparation du montage et programmation de la carte Arduino :
- Commencer par réaliser le montage indiqué sur plaque d’expérimentation
- Ensuite, programmer la carte Arduino avec ce programme (en bas de page) selon la procédure habituelle
7.2 Préparation du Terminal côté PC dans le logiciel Arduino
- Côté PC, il faut ouvrir la fenêtre terminal de l’IDE Arduino : pour ce faire, un simple clic sur le bouton « Sérial Monitor ».

- La fenêtre « Terminal » s’ouvre alors :

- Il faut alors régler le débit de communication sur la même valeur que celle utilisée par le programme avec lequel nous allons programmer la carte Arduino :

7.3 Fonctionnement
- Saisir soit la chaine servoON ou la chaine servoOFF dans la fenêtre du Terminal série puis clic sur <send> : le relais se met dans l’état voulu en conséquence.
8. Le programme complet en langage Arduino
A copier/coller directement dans l’éditeur Arduino
// Trame de code générée par le générateur de code Arduino
// du site www.mon-club-elec.fr
// Auteur du Programme : X. HINAULT – Tous droits réservés
// Programme écrit le : 8/6/2011.
// ——- Licence du code de ce programme —–
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License,
// or any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// //////////////////// PRESENTATION DU PROGRAMME ////////////////////
// ——– Que fait ce programme ? ———
/* Le programme écoute le port série.
Lorsque la chaine relaisON est reçue, le relais est activé (travail)
Lorsque la chaine relaisOFF est reçue, le relais est désactivé (repos) */
// — Fonctionnalités utilisées —
// Utilise la connexion série matérielle vers le PC
// Utilise / fonctionne avec une interface Processing coté PC
// ——– Circuit à réaliser ———
// La connexion série matérielle vers le PC utilise les broches 0 et 1 (via le câble USB)
// Broche 2 : Broche de commande du relais 5V
// /////////////////////////////// 1. Entête déclarative ///////////////////////
// A ce niveau sont déclarées les librairies incluses, les constantes, les variables, les objets utiles…
// — Déclaration des constantes —
// — Inclusion des librairies —
// — Déclaration des constantes utiles —
// — Déclaration des constantes des broches E/S numériques —
const int RELAIS=2; // Constante pour la broche 2
// — Déclaration des constantes des broches analogiques —
// — Déclaration des variables globales —
int octetReception=0; // variable de stockage des valeurs reçues sur le port Série
long nombreReception=0; // variable de stockage du nombre reçu sur le port Série
long nombreReception0=0; // variable de stockage du dernier nombre reçu sur le port Série
String chaineReception=« »; // déclare un objet String vide pour reception chaine
// — Déclaration des objets utiles pour les fonctionnalités utilisées —
// ////////////////////////// 2. FONCTION SETUP = Code d’initialisation //////////////////////////
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() { // debut de la fonction setup()
// — ici instructions à exécuter 1 seule fois au démarrage du programme —
// ——- Initialisation fonctionnalités utilisées ——-
Serial.begin(115200); // initialise connexion série matérielle à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission
// ——- Broches en sorties numériques ——-
pinMode (RELAIS,OUTPUT); // Broche RELAIS configurée en sortie
// ——- Broches en entrées numériques ——-
// ——- Activation si besoin du rappel au + (pullup) des broches en entrées numériques ——-
// ——- Initialisation des variables utilisées ——-
// ——- Codes d’initialisation utile ——-
digitalWrite(RELAIS,LOW); // met le relais au repos par défaut
} // fin de la fonction setup()
// ********************************************************************************
////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme //////////////////
// la fonction loop() s’exécute sans fin en boucle aussi longtemps que l’Arduino est sous tension
void loop(){ // debut de la fonction loop()
// — ici instructions à exécuter par le programme principal —
//—- code type réception valeur sur le port série —
//—- code type réception chaine sur le port série —
while (Serial.available()>0) { // tant qu’un octet en réception
octetReception=Serial.read(); // Lit le 1er octet reçu et le met dans la variable
if (octetReception==10) { // si Octet reçu est le saut de ligne
Serial.println (« Chaine recue= »+chaineReception); // affiche la chaine recue
chaineReception.trim(); // enlève espaces
analyseChaine(chaineReception); // appelle la fonction d’analyse de la chaine en réception
//chaineReception= » »; //RAZ le String de réception
break; // sort de la boucle while
}
else { // si le caractère reçu n’est pas un saut de ligne
chaineReception=chaineReception+char(octetReception); // ajoute le caratère au String
}
} // fin tant que octet réception
//—– une fois que le saut de ligne est reçu et que chaine analysée, on sort du While et on se positionne ici
chaineReception=« »; //RAZ le String de réception
//while(1); // stop loop
} // fin de la fonction loop() – le programme recommence au début de la fonction loop sans fin
// ********************************************************************************
// ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS ////////////////////
// ////////////////////////// AUTRES FONCTIONS DU PROGRAMME ////////////////////
//————- fonction d’analyse de la chaine reçue sur le port série —-
void analyseChaine(String chaineRecue) { // fonction d’analyse de la chaine recue
//— variables locales
int valeur=0; // variable utile
String chaineTest; // objet STring pour analyse chaine recue
if (chaineRecue.startsWith(« relaisON »)) { // si la chaine débute par la chaine servoON
digitalWrite(RELAIS,HIGH); // met le relais en position travail
Serial.println(« Relais mis sur Travail »);
}
if (chaineRecue.startsWith(« relaisOFF »)) { // si la chaine débute par la chaine servoOFF
digitalWrite(RELAIS,LOW); // met le relais en position repos
Serial.println(« Relais mis sur Repos »);
}
} // fin fonction analyse chaine
9. Le programme Processing
9.1 Description
9.2 Ressources utiles
9.3 Le programme complet en langage Processing
A copier/coller directement dans l’éditeur Processing
Articles similaires:
- Saisie d’une chaine de caractère dans Processing sélectionne fichier son
- Allumer une LED à partir d’une chaine avec paramètre reçue sur le port Série
- Recevoir une chaine de caractères depuis le PC via le port série USB
- Allumer/éteindre une LED à partir d’une chaîne reçue sur le port série
- Contrôler un afficheur LCD alpha-numérique à partir du Terminal Série
Articles Liés
- Recevoir une chaine de caractères depuis Processing via le port série USB
L'utilisation du port série USB est un moyen pratique et efficace pour communiquer entre un…
- Réception d'une chaine saisie dans Processing et renvoi vers Processing
Avec l'avènement de l'ère numérique, les technologies de traitement de données sont devenues plus accessibles…
- Allumer/éteindre une LED à partir d'une chaîne reçue sur le port série
L'utilisation des LED est un moyen très pratique pour afficher des informations ou des états.…