Relais mit SMS schalten - AZ-Delivery

Un cliente della Francia oggi ha richiamato l'attenzione su un progetto interessante. Abbiamo gia 'avuto dei contributi su SmartHome, z.b., la SmartHome Centrale di Gerald Lechner, e anche OpenHAB, che abbiamo gia' installato con te per prepararla. Oggi, stiamo per creare un semplice progetto per lo smartbook. Stiamo per spegnere un relè per SMS. 

Abbiamo bisogno di:

UnoR3 /MEGA
SIM900 GSM - Shield
Modulo Relè
Alimentatore esterno
Scheda SIM (abilitata e senza PIN)

Prima di tutto, prendiamo il nostro sistema GSM - Shield, che ha spinto le penne, ispezionati le antenne, isfissia la carta SIM. Le schede dell'adattatore per i diversi formati SIM sono fornite con la nostra Shields: -)

Quando le barre della penna sono attivate, mettete a galla la Shield sul suo Arduino, come si vede nella foto:

Per l'analisi del campione, si tratta di un sistema di E - Book lavorare per garantire che tutto funzioni come dovrebbe. I due Jumper ci sono per fare in modo che la Shield sia sul software seriale e il nostro hardware rimanga libero per il monitoraggio seriale dell'ArduinoIDE.

Si noti anche che per il nostro Shield è necessaria una fonte di energia esterna, che può essere trascinata fino a 2A.

Per accendere lo shield, premere il tasto contrassegnato con PWR e entrambi i LED sono accesi sul lato opposto. Shield si sta prenotando in rete.
L'utilizzo di Pin è rapido, Pin 6 - 9 è occupato da Shield, mentre gli altri Pins dell'UnoR3 sono in grado di attraversare. Anche il Pin12 per il nostro modulo di High-Level Relais. 

Ecco il nostro codice:

 

// Include software Serial Library to communicate with GSM
" #include " <Seriale.h>

// Configure software serial port
Seriale SIM900(7, 8);

// la variabile to store text message
String textMessage;

// Create a variable to store Relais state
String Lampadina = "HIGH";

// relais connected to pin 12
const int relais = 12;

void Impostazione() {   // Automatically turn on the shield   scrittura digitale(9, ALTO);   delay(1000);   scrittura digitale(9, LOW);   delay(3000);      // Set relais as OUTPUT   pinMode(relais, OUTPUT);   // By default the relais is off   scrittura digitale(relais, LOW);      // Initializing serial commmunication   Seriale.begin(9600);    SIM900.begin(2400);   // Give time to your GSM shield log on to network   delay(20000);   Seriale.print("SIM900 ready ...");   delay(100);   // AT command to set SIM900 to SMS mode   SIM900.print("AT + CMGF=1\r");    delay(100);   // Set module to send SMS data to serial out upon receipt    SIM900.print("AT + CNMI=2,2,0,0,0\r");   delay(100);
}

void loop(){   if(SIM900.available()>0){     textMessage = SIM900.readString();     Seriale.print(textMessage);         delay(10);   }    if(textMessage.indexOf("ON")>=0){     // Turn on relais and save current state     scrittura digitale(relais, ALTO);     Lampadina = "on";     Seriale.println("relais set to ON");       textMessage = "";      }   if(textMessage.indexOf("OFF")>=0){     // Turn off relais and save current state     scrittura digitale(relais, LOW);     Lampadina = "off";      Seriale.println("relais set to OFF");     textMessage = "";    }   if(textMessage.indexOf("STATE")>=0){     String messaggio = "Relais is" + Lampadina;     messaggio di invio(messaggio);     Seriale.println("Relais resquest");     textMessage = "";   }
}   // Function tha sends SMS
void messaggio di invio(String messaggio){   // AT command to set SIM900 to SMS mode   SIM900.print("AT + CMGF=1\r");    delay(100);   // REPLACE THE X's WITH THE RECIPIENT ' S MOBILE NUMBER   // USE INTERNATIONAL FORMAT CODE CODE FOR MOBILE NUMBERS +49 is Germany   SIM900.println("AT + CMGS = \" +49XXXXXXXX \"");    delay(100);   // Send the SMS   SIM900.println(messaggio);    delay(100);   // End AT command with a ^ Z, ASCII codice 26   SIM900.println((char)26);    delay(100);   SIM900.println();   // Give module time to send SMS   delay(5000);   }

 

Se la Germania è il paese dell'Unione europea con i più alti pedaggi di telefonia mobile, questa soluzione non è considerata una panacea, dal momento che, a seconda del contratto, un SMS con un massimo di 10ct è vincolato al suo conto. Ma per la mia pompa da giardino nel prossimo villaggio, la soluzione è ideale, se non riuscirò a farla girare una volta per un momento.

Goditi il bastardo; -)

Für arduinoProjekte für anfängerSmart home

10 commenti

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

Lascia un commento

Tutti i commenti vengono moderati prima della pubblicazione