Le téléphone mobile est une invention révolutionnaire du siècle. Il a été principalement conçu pour passer et recevoir des appels et des messages texte, mais il est devenu le monde entier après que le téléphone intelligent est entré en scène. Dans ce projet, nous construisons un système domotique, où l'on peut contrôler les appareils ménagers, en utilisant le simple téléphone GSM, simplement en envoyant des SMS via son téléphone. Dans ce projet, aucun téléphone intelligent n'est nécessaire, seul l'ancien téléphone GSM fonctionnera pour allumer et éteindre tous les appareils électroniques domestiques, de n'importe où. Vous pouvez également consulter d'autres projets de domotique sans fil ici: Domotique télécommandée IR utilisant Arduino, Domotique contrôlée par Bluetooth avec Domotique basée sur DTMF, Domotique contrôlée par PC utilisant Arduino.
Explication de travail
Dans ce projet, Arduino est utilisé pour contrôler l'ensemble du processus. Ici, nous avons utilisé la communication sans fil GSM pour contrôler les appareils ménagers. Nous envoyons des commandes telles que «# A.light on *», «# A.light off *» et ainsi de suite pour contrôler les appareils électroménagers AC. Après avoir reçu des commandes données par Arduino via GSM, Arduino envoie un signal aux relais, pour allumer ou éteindre les appareils ménagers à l'aide d'un pilote de relais.
Composants du circuit:
- Arduino UNO
- Module GSM
- ULN2003
- Relais 5 volts
- Ampoule avec support
- Fils de connexion
- Planche à pain
- Écran LCD 16x2
- Source de courant
- Téléphone portable
Ici, nous avons utilisé un préfixe dans la chaîne de commande qui est «#A». Ce préfixe est utilisé pour identifier que la commande principale arrive à côté et * à la fin de la chaîne indique que le message est terminé.
Lorsque nous envoyons des SMS au module GSM par Mobile, GSM reçoit ce SMS et l'envoie à Arduino. Maintenant, Arduino lit ce SMS et extrait la commande principale de la chaîne reçue et stocke dans une variable. Après cela, Arduino compare cette chaîne avec une chaîne prédéfinie. En cas de correspondance, Arduino envoie un signal au relais via le pilote de relais pour allumer et éteindre les appareils ménagers. Et le résultat relatif s'imprime également sur un écran LCD 16x2 en utilisant les commandes appropriées.
Ici, dans ce projet, nous avons utilisé 3 ampoules de zéro watt pour la démonstration qui indiquent le ventilateur, la lumière et la télévision.
Vous trouverez ci-dessous la liste des messages que nous envoyons par SMS pour allumer et éteindre le ventilateur, la lumière et la télévision:
S.no. |
Message |
Opération |
1 |
# A.fan sur * |
Ventilateur activé |
2 |
# A.fan off * |
Ventilateur OFF |
3 |
# A. allumé * |
Lumière allumée |
4 |
# A. éteindre * |
Lumière éteinte |
5 |
# A.tv sur * |
TV ON |
6 |
# A.tv désactivé * |
TV éteint |
sept |
# A. all on * |
Tout ON |
8 |
# A. tout éteint * |
Tout OFF |
Module GSM:
Le module GSM est utilisé dans de nombreux appareils de communication basés sur la technologie GSM (Global System for Mobile Communications). Il est utilisé pour interagir avec le réseau GSM à l'aide d'un ordinateur. Le module GSM ne comprend que les commandes AT et peut répondre en conséquence. La commande la plus basique est «AT», si le GSM répond OK alors il fonctionne bien sinon il répond par «ERREUR». Il existe diverses commandes AT comme ATA pour répondre à un appel, ATD pour composer un appel, AT + CMGR pour lire le message, AT + CMGS pour envoyer les sms, etc. Les commandes AT doivent être suivies par Carriage return ie \ r (0D en hexadécimal), comme «AT + CMGS \ r». Nous pouvons utiliser le module GSM en utilisant ces commandes:
ATE0 - Pour la désactivation de l'écho
AT + CNMI = 2,2,0,0,0
ATD
À + CMGF = 1
AT + CMGS = "Numéro de mobile"
>> Maintenant, nous pouvons écrire notre message
>> Après avoir rédigé le message
Commande d'envoi de message Ctrl + Z (26 en décimal).
ENTRÉE = 0x0d dans HEX
Le SIM900 est un module GSM / GPRS quadri-bande complet qui offre des performances GSM / GPRS 850/900/1800 / 1900MHz pour la voix, les SMS et les données avec une faible consommation d'énergie.
Description du circuit
Les connexions de ce circuit domotique basé sur GSM sont assez simples, ici un affichage à cristaux liquides est utilisé pour afficher l'état des appareils ménagers qui est directement connecté à arduino en mode 4 bits. Les broches de données de l'écran LCD, à savoir RS, EN, D4, D5, D6, D7, sont connectées aux broches numériques arduino 6, 7, 8, 9, 10, 11. Et les broches Rx et Tx du module GSM sont directement connectées à Tx et Rx broche d'Arduino respectivement. Et le module GSM est alimenté à l'aide d'un adaptateur 12 volts. Les relais SPDT 3 5 volts sont utilisés pour contrôler la LUMIÈRE, le VENTILATEUR et la TV. Et les relais sont connectés aux broches arduino numéros 3, 4 et 5 via le pilote de relais ULN2003 pour contrôler respectivement LIGHT, FAN et TV.
Description du code
Dans la programmation d'une partie de ce projet, tout d'abord dans la programmation, nous incluons une bibliothèque pour l'affichage à cristaux liquides, puis nous définissons des données et des broches de contrôle pour les appareils LCD et ménagers.
#comprendre
Après que cette communication série est initialisée à 9600 bps et donne la direction à la broche utilisée.
void setup () {lcd.begin (16,2); Serial.begin (9600); pinMode (led, sortie); pinMode (ventilateur, sortie); pinMode (lumière, sortie); pinMode (TV, SORTIE);
Pour recevoir des données en série, nous avons utilisé deux fonctions, l'une est Serial.available qui vérifie si des données série arrivent et l'autre est Serial.read qui lit les données qui arrivent en série.
while (Serial.available ()) {char inChar = Serial.read ();
Après avoir reçu les données en série, nous les avons stockées dans une chaîne, puis nous avons attendu Enter.
void serialEvent () {while (Serial.available ()) {if (Serial.find ("# A.")) {digitalWrite (led, HIGH); retard (1000); digitalWrite (led, LOW); while (Serial.available ()) {char inChar = Serial.read (); str = inChar; if (inChar == '*') {temp = 1; revenir; }
Lorsque Enter arrive, le programme commence à comparer la chaîne reçue avec la chaîne déjà définie et si la chaîne correspond, une opération relative est effectuée en utilisant la commande appropriée qui est donnée dans le code.
void check () {if (! (strncmp (str, "tv on", 5))) {digitalWrite (TV, HIGH); lcd.setCursor (13,1); lcd.print ("ON"); retard (200); } else if (! (strncmp (str, "tv off", 6))) {digitalWrite (TV, LOW); lcd.setCursor (13,1); lcd.print ("OFF"); retard (200); }