Changement de relais avec SMS

Un client français a attiré notre attention sur un projet intéressant aujourd’hui. Nous avons déjà eu des contributions traitant de SmartHome, par exemple le siège smartHome de Gerald Lechner ou OpenHAB que nous avons déjà installé avec vous pour la préparation. Aujourd’hui, nous présentons un simple stand-allproject pour votre SmartHome. Nous passons un relais par SMS ON/OFF. 

Nous avons besoin de :

UnoR3 /MEGA
Bouclier SIM900 GSM
Module relais
alimentation externe
Carte SIM (activée et sans NIP)

Tout d’abord, nous mettons notre GSM-Shield en service, c’est-à-dire les en-têtes d’épingles ingescentes de soudeur, brancher l’antenne, insérer la carte SIM. La portée de la livraison de notre bouclier comprend des cartes d’adaptateur pour les différents formats SIM :-)

Si les en-têtes de broche sont soudés, mettez votre couleur de bouclier sur votre Arduino, comme on le voit dans l’image :

Pour l’essai, il convient à notre E-book de s’assurer que tout fonctionne comme il se doit. Nous avons mis les deux cavaliers plus de sorte que le bouclier fonctionne via Software Serial et notre série matérielle reste libre pour le moniteur de série de l’ArduinoIDE.

Veuillez également noter que vous avez besoin d’une alimentation externe pour notre bouclier car il peut tirer jusqu’à 2A.

Pour allumer le bouclier, vous devez appuyer sur le bouton marqué PAR PWR, les deux LED s’allument de l’autre côté. Le bouclier se réserve alors dans le filet.
L’attribution de broches est rapidement expliquée, la broche 6-9 sont occupées par le bouclier, les autres broches de l’UnoR3 sont acheminées. Tout comme Pin12 pour notre module relais de haut niveau. 

Voici notre code:

 

Inclure software Serial library pour communiquer avec GSM
#include <LogicielsSerial.H (en)>

Configurer le port en série de logiciels
LogicielsSerial SIM900(7, 8);

Variable pour stocker le message texte
String textMessage;

Créer une variable pour stocker l’état de relais
String lampState = "HAUT";

relais connecté à la broche 12
Const Int Relais = 12;

Vide Configuration() {   Activez automatiquement le bouclier   digitalWrite (en)(9, Haute);   Retard(1000);   digitalWrite (en)(9, Faible);   Retard(3000);      Définir relais comme OUTPUT   pinMode(Relais, Sortie);   Par défaut, le relais est éteint   digitalWrite (en)(Relais, Faible);      Initialiser la commmunication en série   Série.Commencer(9600);    SIM900.Commencer(2400);   Donnez du temps à votre connexion de bouclier GSM sur le réseau   Retard(20000);   Série.Imprimer("SIM900 prêt...");   Retard(100);   AT commande de définir SIM900 en mode SMS   SIM900.Imprimer("AT-CMGF-1"r");    Retard(100);   Module de jeu pour envoyer des données SMS en série à la réception    SIM900.Imprimer(" AT-CNMI 2,2,0,0,0"r");   Retard(100);
}

Vide Boucle(){   Si(SIM900.Disponible()>0){     textMessage = SIM900.Lirestring();     Série.Imprimer(textMessage);         Retard(10);   }    Si(textMessage.Indexof("SUR")>=0){     Activer le relais et sauver l’état actuel     digitalWrite (en)(Relais, Haute);     lampState = "sur";     Série.println("relais réglé sur ON");       textMessage = "";      }   Si(textMessage.Indexof("OFF")>=0){     Éteignez le relais et sauvez l’état actuel     digitalWrite (en)(Relais, Faible);     lampState = "off";      Série.println("relais prêt à OFF");     textMessage = "";    }   Si(textMessage.Indexof("ETAT")>=0){     String Message = "Relais est " + lampState;     Sendsms(Message);     Série.println("Relais resquest");     textMessage = "";   }
}   Fonction qui envoie DES SMS
Vide Sendsms(String Message){   AT commande de définir SIM900 en mode SMS   SIM900.Imprimer("AT-CMGF-1"r");    Retard(100);   REPLACE THE X's WITH THE RECIPIENT'S MOBILE NUMBER   USE INTERNATIONAL FORMAT CODE FOR MOBILE NUMBERS 49 est l’Allemagne   SIM900.println("À CMGS ET "49XXXXXXXXXXXXXXXXXXXX");    Retard(100);   Envoyer le SMS   SIM900.println(Message);    Retard(100);   Terminez la commande AT avec un code ASCII 'Z' 26   SIM900.println((Char Char)26);    Retard(100);   SIM900.println();   Donner au module le temps d’envoyer des SMS   Retard(5000);   }

 

Si l’Allemagne est le pays de l’UE avec les frais de téléphonie mobile les plus élevés, cette solution n’est pas destinée à une panacée, comme selon le contrat, un SMS facture jusqu’à 10ct de votre compte. Pour ma pompe de jardin dans le petit jardin dans le village suivant, cependant, la solution est idéale, au cas où je ne peux pas réussir à l’eau.

Amusez-vous à l’artisanat ;-)

Pour arduinoProjets pour les débutantsMaison intelligente

10 commentaires

HansiEdi

HansiEdi

Noch eine kleine info, haltet euch bitte immer an das Datenblatt, das gilt auch für die Spannungsversorgung.
Wenn Ihr das Modul mit einem Akku betreibt ist ein Kondensator mit 100µF empfehlenswert, wenn Ihr aber stattdessen eine andere geregelte Spannungsquelle verwendet, verwendet doch wie im Datenblatt empfohlen einen Low ESR 1000µF Elko, damit gibt es keine Probleme mit Spannungseinbrüchen die einen ungewollten Reset des Moduls auslösen.
Ich habe meinen 1000µF Kondensator direkt an das Modul gelötet und mit einem Oszilloskop überprüft.

LG

HansiEdi

HansiEdi

Guten Tag,

ich finde es sehr schade dass der Autor den Programmcode mit Fehler anbietet.
1. der Charakter String muss auf GSM gesetzt werden.
SIM900.println(“AT+CSCS=\”GSM\"");
delay(100);

der Befehl wird nach (“AT+CMGF=1\r”) übermittelt

2. wie bereits schon Ernst geschrieben hat müssen beim übergeben der Empfängernummer die Leerzeichen aus dem Code entfernt werden.
SIM900.println(“AT+CMGS=\”+43XXXXXXXXXX\"");

Ich habe zudem alle Timings erhöht, erst mal für Probezwecke.

Nun funktioniert der Programmcode mit meinem Neoway M590E Modul.

Lg Hans

michael

michael

Hallo
Habe die Schaltung mit SIM800 nachgebaut, funktioniert soweit gut, sendet aber keine SMS. Vielleicht gibts doch kleine Unterschiede und könnte mir dabei helfen.

Ernst

Ernst

Vielen Dank, hat mir sehr geholfen!
Das Senden der SMS hat bei mir aber erst funktioniert, nachdem ich die Leerzeichen aus dem String herausgenommen habe:
Also statt
SIM900.println(“AT + CMGS = \”49XXXXXXXX\"");
Jetzt
SIM900.println("ATCMGS=\“+49XXXXXXXX\”");

Viele Grüße

Horst

Horst

Hallo,

vielen Dank für den Hinweis und die gute Beschreibung. Leider ist das PDF nicht mehr verfügbar (https://bibliothek.az-delivery.de/wp-content/uploads/2018/01/16-AZ-Delivery_GPRS-Shield_Startertutorial-deutsch.pdf). Hat jemand zu das noch zufällig?

Beste Grüße

Christos

Christos

Guten Morgen zusammen!
Ich würde gerne um Euren Support bzw Eure Meinung bitten.
Ich würde gerne das obere Projekt nachbauen allerdings müsste ich 8 Schaltkreise per SMS einzeln Ein-, bzw Ausschalten. Die Schaltkreise werden zur Ohm Messung zwecks Fehlersuche in Kunststoff-Mantel-Rohre gebraucht.
Würde mich über Eure Antworten freuen!

Mit freundlichem Gruß
Chris

Christian Zittier

Christian Zittier

Super Sache funktioniert eigentlich ohne Probleme,
aber ich musste die delay von 100 auf 1000 erhöhen vorher ging es nicht und der on pin (9) schaltet sich zwar auf high aber Sim900 startet nicht der reset pin (6) funktioniert.

Es sollte sich bei Stromausfall durch die Konfiguration mit pin 9 doch auf on gehen ?
Ist dieses Problem bekannt? Oder bin ich nur zu Blöd?

Wolfgang Noel

Wolfgang Noel

Eine Frage an die Spezialisten: Wenn ich den Arduino Uno mit SIM900 laut E-Book https://bibliothek.az-delivery.de/wp-content/uploads/2018/01/16-AZ-Delivery_GPRS-Shield_Startertutorial-deutsch.pdf in Betrieb nehme, funktioniert alles super. Wenn ich den obigen Code nehme (natürlich mit geänderter Rufnummer), läuft das Programm ohne Fehlermeldung durch, es wird aber keine SMS gesendet bzw. empfangen. Natürlich tut sich beim Relais auch nichts. Muss hierfür eine andere Bibliothek verwendet werden. Ich nutze die https://github.com/MarcoMartines/GSM-GPRS-GPS-Shield
SIM900 und Uno sind laut E-Book verbunden. Über einen Tip wäre ich dankbar. VG Wolfgang

Maik

Maik

Interessant Wäre ja noch den Status im EPROM zu speichern falls stom mal aus ist oder ein Resett ausgelöst wird !

Thomas

Thomas

Klasse. Besten Dank für die Veröffentlichung

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi