Aperçu rapide – Ce que fait ce système de contrôle de moteur GSM
- Reçoit les commandes SMS (FWD, REV, STOP + valeur de vitesse) via le module GSM SIM800L
- Arduino Uno analyse chaque commande et détermine l’action moteur requise
- Le pilote de moteur L298N contrôle la direction via les niveaux logiques IN1/IN2 et la vitesse via PWM sur ENA
- Applicable à l’agriculture, à l’automatisation industrielle, à la domotique et aux systèmes de sécurité
| S.non | Composant | Quantité | But |
| 1. | Arduino Uno | 1 | Agit en tant que contrôleur principal du système. Il traite les commandes SMS et génère des signaux de contrôle pour la vitesse et la direction du moteur. |
| 2. | Moteur à courant continu | 1 | Convertit l’énergie électrique en mouvement mécanique. Sa vitesse et sa direction sont contrôlées en fonction des commandes reçues. |
| 3. | Câble USB | 1 | Utilisé pour télécharger le programme sur l’Arduino Uno. Il fournit également l’alimentation et la communication série pendant les tests. |
| 4. | Changement de niveau | 1 | Correspond aux niveaux de tension entre l’Arduino et le module GSM. Il garantit une communication série sûre et fiable. |
| 5. | Pilote de moteur L298N | 1 | Entraîne le moteur à courant continu en fournissant suffisamment de courant. Il permet de contrôler la direction et la vitesse du moteur. |
| 6. | Sim800L | 1 | Reçoit les commandes SMS du téléphone mobile de l’utilisateur. Envoie les données de commande à l’Arduino pour traitement. |
| 7. | Planche à pain | 1 | Fournit une plate-forme temporaire pour les connexions de circuits. Permet une modification facile sans soudure. |
| 8. | Batteries externes/adaptateur d’alimentation | 1 | Fournit l’énergie requise au moteur et au module GSM. Assure un fonctionnement stable du système |
| 9. | Fils de liaison | – | Utilisé pour connecter électriquement divers composants. Permet le transfert de signal et de puissance entre les modules. |
| 10. | EDI Arduino | – | Utilisé pour écrire et compiler le programme Arduino. Télécharge le code sur l’Arduino Uno. |


∗ Dispositif de changement de niveau requis : L’interface SIM800L UART se trouve sur un rail logique inférieur à celui du dispositif de connexion ; ainsi, appliquer une alimentation de 5 V directement à la broche RX du SIM800L provoquerait une tension excessive et endommagerait probablement le module. Un décaleur de niveau bidirectionnel facilitera l’échange sûr de signaux entre l’alimentation 5 V (haute tension) et le signal 3,3 V (basse tension).
∗ Systèmes de rails d’alimentation séparés : Le SIM800L et le moteur DC sont alimentés par une source indépendante, l’alimentation externe étant connectée à l’Arduino par une masse commune, empêchant ainsi les pointes de courant à ampérage élevé d’affecter négativement la source d’alimentation de l’Arduino lorsqu’elle est alimentée par le module GSM.
* Signal de modulation de largeur d’impulsion (PWM) sur D9 : La broche D9 de Uno est une sortie analogique PWM ; celle-ci peut être utilisée conjointement avec l’entrée L298N ENA pour réguler la vitesse du moteur à courant continu via un cycle de service (0-255) basé sur la modulation de largeur d’impulsion.
∗ Terrains communs : Chaque appareil du circuit doit se connecter à la même masse électrique de référence (Arduino, Level Shift, L298N, SIM800L et alimentation externe) ; sans GND de référence commune, la fiabilité du signal sera compromise, ce qui entraînera un fonctionnement dangereux de l’appareil.
| Arduino Uno | Traducteur de niveau | Module GSM |
| 5V | HT/VREF(H) | – |
| 3,3 V | BT/VREF(L) | – |
| GND | GND | GND |
| D3(TX) | HT SDA1 -> BT SDA1 | RX |
| D2(réception) | HT SCL1 -> BT SCL1 | Émission |
| Arduino Uno | Pilote de moteur L298N |
| D5 | EN1 |
| D6 | IN2 |
| D9 | ENA |
| 5V | +5V |
| GND | GND |
| Composant | Connexion |
| Moteur à courant continu | SORTIE1 & SORTIE2 |
| Batterie externe | +12V/VIN |
| Batterie externe | GND |
| Broche du module GSM | Connexion |
| VDD/5V | Batterie externe |
| GND | Batterie externe GND |
| Texte SMS | Action motrice |
| FWD[speed] | Rotation vers l’avant à la vitesse donnée |
| TOUR[speed] | Tourner en marche arrière à la vitesse donnée |
| ARRÊT | Arrêtez immédiatement le moteur |
#include
SoftwareSerial gsm(3, 2); // RX, TX
#define ENA 9
#define IN1 5
#define IN2 6
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
stopMotor();
gsm.println("AT");
gsm.println("AT+CMGF=1");
gsm.println("AT+CSCS=\"GSM\"");
gsm.println("AT+CNMI=2,2,0,0,0");
while (gsm.available()) {
char c = gsm.read();
if (c == '\n') {
processLine(line);
line = "";
} else if (c != '\r') {
line += c;
}
}
if (msg.startsWith("FWD")) {
forward(getSpeed(msg));
}
else if (msg.startsWith("REV")) {
reverse(getSpeed(msg));
}
else if (msg.startsWith("STOP")) {
stopMotor();
}
» Contrôle de moteur industriel à distance
Utilisé pour contrôler les moteurs industriels depuis des emplacements éloignés ou dangereux à l’aide de commandes SMS. Réduit le fonctionnement manuel et améliore la sécurité.
» Contrôle des moteurs agricoles
Utile pour contrôler à distance les moteurs d’irrigation et de pompes à eau dans les champs agricoles. Aide les agriculteurs à faire fonctionner des moteurs sans être physiquement présents.
» Sécurité et automatisation des portails
Appliqué dans les portails automatisés, les barrières et les systèmes de sécurité où la direction du moteur et le contrôle de la vitesse sont requis. Le contrôle SMS permet une gestion des accès simple et fiable.
» Systèmes domotiques
Peut être utilisé pour contrôler des appareils motorisés domestiques tels que des rideaux, des volets ou des ventilateurs d’extraction. Permet une opération à distance simple sans dépendance à Internet.
⇥ Pourquoi le module GSM nécessite-t-il une alimentation externe ?
Le module GSM SIM800 consomme un courant élevé (jusqu’à 2A) pendant la transmission réseau. L’Arduino ne peut pas fournir suffisamment de courant, une source d’alimentation externe est donc nécessaire pour un fonctionnement stable.
⇥ Que se passe-t-il si le format du SMS est incorrect ?
Si le SMS ne correspond pas au format de commande prédéfini (FWD, REV, STOP), l’Arduino ignorera le message et aucune action moteur ne se produira.
⇥ Puis-je contrôler plusieurs moteurs à l’aide de ce système ?
Oui. En ajoutant des pilotes de moteur supplémentaires et en modifiant le code Arduino, vous pouvez contrôler plusieurs moteurs à l’aide de différentes commandes SMS.
⇥ Comment la vitesse du moteur est-elle contrôlée ?
La vitesse du moteur est contrôlée à l’aide de PWM (Pulse width Modulation). L’Arduino envoie un signal PWM à la broche ENA du pilote de moteur L298N. En modifiant le rapport cyclique (0–255), la vitesse du moteur augmente ou diminue.
⇥ Comment la direction du moteur est-elle contrôlée ?
La direction du moteur est contrôlée à l’aide de deux broches d’entrée (IN1 et IN2) du pilote de moteur L298N :
- IN1 HIGH, IN2 LOW → Rotation avant
- IN1 LOW, IN2 HIGH → Rotation inversée
⇥ Est-il possible que ce système, basé sur une télécommande GSM, permette le contrôle de plusieurs moteurs à courant continu ?
Oui, des modules de commande de moteur L298N supplémentaires peuvent être connectés à n’importe quel Arduino PWM ou broches de direction gratuits, et chaque moteur peut avoir son propre préfixe de commande SMS unique défini dans le fichier d’esquisse (M1FWD, M2REV et M2STOP comme exemples). L’Arduino lira chaque préfixe et transmettra la commande à ce pilote de moteur. Tous les moteurs utiliseront 1 SIM800L comme SMS entrant.
⇥ Une connexion Internet est-elle requise par le système de commande de moteur GSM ?
Il n’y a pas d’Internet requis. Le système de contrôle du moteur GSM utilise uniquement le réseau cellulaire GSM SMS 2G. Il n’y a pas besoin de Wi-Fi, de forfait de données mobiles ou de haut débit ; tout ce dont vous avez besoin est une carte SIM active avec des capacités SMS. Cela le rend très utile pour les contrôles de pompage à distance dans les environnements agricoles et industriels où il y a peu ou pas de service Internet disponible.
⇥ Comment puis-je déterminer si le SIM800L est enregistré sur le réseau GSM ?
À l’aide du moniteur série Arduino, envoyez la commande « AT+CREG ? » au SIM800L. Si la réponse est : +CREG : 0,1… alors le SIM800L s’est enregistré avec succès sur son réseau domestique. Si les réponses renvoyées sont : 0,0 – inactif et 0,2 – recherche, vérifiez 1) que votre carte SIM est insérée dans le SIM800L et fonctionne, 2) que l’antenne GSM est correctement connectée au SIM800L, et enfin 3) que vous avez reçu une quantité de signal adéquate à votre emplacement pour communiquer avec le réseau GSM.
Référentiel GitHub et fichiers sources
Le code complet et les schémas de circuit du projet DC Motor Speed Control Using GSM sont disponibles dans le lien GitHub ci-dessous.


Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

