Contrôle de la vitesse du moteur Arduino DC via GSM

DC Motor Speed Control Using GSM

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.

Tous les composants requis pour le contrôle de la vitesse du moteur à courant continu à l'aide du projet GSM Arduino : Arduino Uno, module GSM SIM800L, pilote de moteur L298N, levier de niveau logique, moteur à courant continu, planche à pain et câbles de raccordement.
Schéma de circuit complet pour le contrôle de la vitesse du moteur à courant continu à l'aide de GSM - Arduino Uno connecté au SIM800L via un levier de niveau bidirectionnel et un pilote de moteur à pont en H L298N pour la direction basée sur SMS et le contrôle de la vitesse PWM

∗ 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

Configuration matérielle en temps réel du contrôle de la vitesse du moteur à courant continu à l'aide du GSM - Arduino Uno, module GSM SIM800L, pilote de moteur L298N, levier de niveau logique et moteur à courant continu connectés sur une planche à pain avec une alimentation externe

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.

Contrôle de la vitesse du moteur à courant continu à l'aide du code et des schémas GSM0pVcmIAAAAGSURBVAMAyugGFqrt9sMAAAAASUVORK5CYII=

Contrôle de la vitesse du moteur Arduino DC à l'aide d'un transistor MOSFETInterface du pilote de moteur à courant continu MX1508 avec Arduino

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

Youtube video