SMS-Controller basierend auf SIM800L

SMS-Controller basierend auf SIM800L

SIM800L V2.0 GSM/GPRS ist ein Quadband-GSM/GPRS-Modul, das mit Arduino kompatibel ist. Das Modul dient zur Umsetzung von GSM- (Anrufe und SMS) und GPRS-Funktionen. Der Vorteil dieses Moduls ist die TTL-Schnittstelle mit einer Spannung von 5 V, die den direkten Anschluss an Arduino oder jedes andere System mit 5 V Versorgungsspannung ermöglicht. Die meisten auf dem Markt erhältlichen GSM/GPRS-Module erfordern Reglerverbindungen oder Pegelumwandlung, während GSM/GPRS in SIM800L V.2 keine zusätzlichen Schaltungen zur Schnittstellenpegelumwandlung erfordert.

Lassen Sie uns ein Beispiel für ein Projekt mit SIM800L V.2 GSM/GPRS geben. Ziel des Projekts ist die Steuerung von Schaltern mithilfe eines SMS-Controllers. Sie können die meisten Haushaltsgeräte im Haus, wie zum Beispiel ein Lama, einen Ventilator usw., problemlos ein- und ausschalten.

Eigenschaften des SIM800L V.2 GSM/GPRS-Moduls


Nachfolgend finden Sie alle technischen Eigenschaften des SIM800L V.2 GSM/GPRS-Moduls:
  • Serielle TTL-Schnittstelle, kompatibel mit 3,3 V und 5 V Arduino-kompatiblen Mikrocontrollern.
  • Das SIM800L-Modul verfügt über eine serielle TTL-Schnittstelle.
  • Antennenanschlussstecker.
  • Netzwerkunterstützung: vier Bänder 850/900/1800/1900 MHz, ermöglicht Anrufe, SMS und Datenübertragungen bei deutlich reduziertem Batterieverbrauch.
  • VDD TTL UART-Schnittstelle, sodass Sie MCU wie 51MCU, ARM oder MSP430 direkt anschließen können.Der VDD-Stecker dient zur Anpassung der TTL-Spannung.
  • Modell: SIMCOM SIM800L
  • Betriebsspannung: von 3,7 V bis 5 V;
  • Abmessungen: 40 mm x 28 mm x 3 mm
  • GPRS-Multislot-Klasse 12/10
  • GPRS-Paketdienstklasse B
  • Entspricht GSM Phase 2/2+
  • Klasse 4 (2 Watt bei 850/900 MHz)
  • Klasse 1 (1 Watt bei 1800/1900 MHz)


Notwendige Materialien


SMS-Controller basierend auf SIM800L


Du brauchst:


1. SIM800L V.2 GSM/GPRS-Modul.
2. Arduino Uno.
3. 4-Kanal-5-V-Relaismodul.
4. Drähte - Jumper.
5. Stromversorgung 5V.
(Aktive Links zum Shop zum Kauf)

Montage und Konfiguration


SMS-Controller basierend auf SIM800L


Sobald Sie alle Komponenten angeschlossen haben, erstellen Sie ein Programm und laden es dann auf Ihren Arduino hoch. Zunächst müssen Sie jedoch die GPRS-Bibliothek installieren, die Sie herunterladen können:

gprs.zip [28,02 Kb] (Downloads: 887)


Programmcode für Arduino


SMS-Controller basierend auf SIM800L


Sobald Sie Ihr SIM800L, das 4-Kanal-Relaismodul und Arduino an Ihren Computer angeschlossen haben, geben Sie den untenstehenden Code ein und schon sind Sie fertig.



#enthalten 

#enthalten

#define TIMEOUT 5000

#Aktiv-Niedrig definieren

#define AUS HOCH



Byte Relay[] = {A0,A1,A2,A3};

Byte StatRelay[4];

char buffNumber[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = false;

String replyNumber = "089510863958";

GPRS GPRS;



void setup() {

for(int i=0; i < 4; i++) {

pinMode(Relay[i] , OUTPUT);

digitalWrite(Relay[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

while(!Serial);

Serial.println("SIM800L V2 aktivieren >>> SMS automatisch lesen");

gprs.preInit();

Verzögerung (1000);

while (0 != gprs.init()) {

Verzögerung (1000);

Serial.print("init errorrn");

}



// Nachricht im ASCII-Modus verwalten

if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

zurückkehren;

}

// Eingehende SMS lesen

if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {

ERROR("ERROR:CNMI");

zurückkehren;

}

int pjg = ReplyNumber.length() + 1;

buffNumber[pjg];

ReplyNumber.toCharArray(buffNumber,pjg);

Serial.print("Antwort an Nummer senden => ");

Serial.println(buffNumber);

Serial.println("Initialisierung abgeschlossen");

Serial.println("=========================================== =============== ================");

}



void loop() {

// Status ändern Relais EIN / AUS

for(int i=0; i < 4; i++) {

digitalWrite(Relay[i], StatRelay[i]);

}



// Wenn Eingabedaten von SIM800 vorhanden sind

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Alle Daten auf lastCharRead speichern, wenn es r oder n gibt, als letztes Signal der eingehenden Nachricht

if (lastCharRead == 'r' || lastCharRead == 'n') {

String lastLine = String(currentLine);



// Wenn die letzte Nachricht +CMT anzeigt, dass eine neue Nachricht eintrifft

if (lastLine.startsWith("+CMT:")) {

Serial.println(lastLine);

nextLineIsMessage = true;

} else if (lastLine.length() > 0) {

if (nextLineIsMessage) {

Serial.println(lastLine);



// ============================================= ==== ================>> Funktion des Relais-Controllers



//Relais 1 Controller



if (lastLine.indexOf("Relay 1 ON") >= 0) {

StatRelay[0] = AKTIF;

Serial.print("Reply====>>>>");

Serial.println("Relais 1 Status aktiv");

gprs.sendSMS(buffNumber, „Relais 1 Status aktiv“);

}



else if (lastLine.indexOf("Relay 1 OFF") >= 0) {

StatRelay[0] = MATI;

Serial.print("Reply====>>>>");

Serial.println("Relais 1 Status Aus");

gprs.sendSMS(buffNumber, „Relais 1 Status Aus“);

}



//Relais 2-Controller



if (lastLine.indexOf("Relay 2 ON") >= 0) {

StatRelay[1] = AKTIF;

Serial.print("Reply====>>>>");

Serial.println("Relais 2 Status aktiv");

gprs.sendSMS(buffNumber, „Relais 2 Status aktiv“);

}

else if (lastLine.indexOf("Relay 2 OFF") >= 0) {

StatRelay[1] = MATI;

Serial.print("Reply====>>>>");

Serial.println("Relais 2 Status Aus");

gprs.sendSMS(buffNumber, „Relais 2 Status Aus“);

}



//Relais 3 Controller

if (lastLine.indexOf("Relay 3 ON") >= 0) {

StatRelay[2] = AKTIF;

Serial.print("Reply====>>>>");

Serial.println("Relais 3 Status aktiv");

gprs.sendSMS(buffNumber, „Relais 3 Status aktiv“);

}

else if (lastLine.indexOf("Relay 3 OFF") >= 0) {

StatRelay[2] = MATI;

Serial.print("Reply====>>>>");

Serial.println("Relais 3 Status Aus");

gprs.sendSMS(buffNumber, „Relais 3 Status Aus“);

}



//Relais 4-Controller

if (lastLine.indexOf("Relay 4 ON") >= 0) {

StatRelay[3] = AKTIF;

Serial.print("Reply====>>>>");

Serial.println("Relais 4 Status aktiv");

gprs.sendSMS(buffNumber, „Relais 1 Status aktiv“);

}

else if (lastLine.indexOf("Relay 4 OFF") >= 0) {

StatRelay[3] = MATI;

Serial.print("Reply====>>>>");

Serial.println("Relais 4 Status Aus");

gprs.sendSMS(buffNumber, „Relais 4 Status Aus“);

}

nextLineIsMessage = false;

}



// ============================================= ==== ===================>>



}

//Char-Array für die nächste Lesezeile löschen

for ( int i = 0; i < sizeof(currentLine); ++i ) {

currentLine[i] = (char)0;

}

currentLineIndex = 0;

}

anders {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Geräteprüfung


SMS-Controller basierend auf SIM800L


Das Tool funktioniert, indem es eine SMS mit einer bestimmten Zeichenfolge an den SIM800L sendet. Um beispielsweise Relais 1 einzuschalten, verwenden Sie den Befehl „Relais 1 EIN“ und zum Ausschalten verwenden Sie den Befehl „Relais 1 AUS“. Für die übrigen Relais sind die Befehle nahezu identisch, mit Ausnahme der Sequenznummer jedes Relais, das Sie beeinflussen möchten. Nach dem automatischen Senden der Nachricht sendet SIM800 eine Antwort in Form einer Nachricht über den Status jeder SIM-Karte.

Video der Montage, Konfiguration und Prüfung des Geräts



Originalartikel auf Englisch
Kommentar
  • KrawattelächelnLachenerrötenSmileyentspannt entspanntGrinsen
    Herz Augenkissing_heartkissing_closed_eyesgespülterleichtertbefriedigtGrinsen
    zwinkernstick_out_tongue_winking_eyestick_out_tongue_closed_eyesgrinsendküssenstick_out_tongueSchlafen
    besorgtrunzelt die Stirngequältoffener Mundverzog das Gesichtverwirrtverstummte
    ausdruckslosunbeeindrucktschweiß_smileSchweißenttäuscht_erleichtertmüdepassiv
    enttäuschtverwirrtängstlichkalter SchweißdurchhaltenweinenSchluchzen
    FreudeerstauntSchreimüdes GesichtwütendWutTriumph
    schläfrigleckerMaskeSonnenbrilledizzy_faceKoboldlächelnd_imp
    neutral_faceno_mouthunschuldig
3+drei=
Kommentare (4)
  1. qeeeq
    #1 qeeeq Gäste 26. August 2017 23:50
    0
    Wow! Wie man so schön sagt: Alles Geniale ist einfach. Ich musste nicht einmal etwas kaufen, wahrscheinlich hat jeder einen Haufen solchen Mülls zu Hause
  2. Alexei
    #2 Alexei Gäste 16. Dezember 2017 16:53
    0
    Klappt nicht. Beim Kompilieren heißt es: „Arduino: 1.8.5 Hourly Build 28.08.2017 06:33 (Windows 7), Board: „Arduino/Genuino Uno“
    1. Denis
      #3 Denis Gäste 17. Dezember 2017 08:11
      0
      Sie müssen für das Projekt einen Pfad ohne russische Buchstaben verwenden.
  3. Andrey
    #4 Andrey Gäste 10. Februar 2019 11:54
    2
    Die Skizze enthält viele Fehler. Es wird nicht funktionieren.