Mach es selbst
Meisterkurse, Anleitungen, nützliche Tipps, Rezepte.
» » »SMS-Controller basierend auf SIM800L
SIM800L-basierter SMS-Controller

SIM800L V2.0 GSM / GPRS ist ein Quadband-GSM / GPRS-Modul, das mit Arduino kompatibel ist. Das Modul dient zur Implementierung der Funktionen GSM (Anrufe und SMS) und GPRS. Der Vorteil dieses Moduls ist die TTL-Schnittstelle mit einer Spannung von 5V, mit der Sie es direkt an ein Arduino oder ein anderes System mit einer 5V-Stromversorgung anschließen können. Die meisten GSM / GPRS-Module auf dem Markt erfordern Regleranschlüsse oder Pegelumsetzung, während in SIM800L V.2 für GSM / GPRS keine zusätzlichen Schnittstellen-Pegelumsetzungsschaltungen erforderlich sind.

Hier ist ein Beispielprojekt mit SIM800L V.2 GSM / GPRS. Die Bedeutung des Projekts ist die Steuerung der Switches mit dem SMS-Controller. Sie können die meisten Haushaltsgeräte im Haus problemlos ein- und ausschalten, z. B. ein Lama, ein Ventilator usw.

Eigenschaften des SIM800L V.2 GSM / GPRS-Moduls


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


Benötigte Materialien


SIM800L-basierter SMS-Controller


Sie benötigen:


1. .
2. .
3. .
4. .
5. .
(Aktive Links zum Shop zum Kauf)

Montage und Konfiguration


SIM800L-basierter SMS-Controller


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

[28.02 Kb] (downloads: 481)


Programmcode für Arduino


SIM800L-basierter SMS-Controller


Nachdem Sie Ihr SIM800L, 4-Kanal-Relaismodul und Arduino an Ihren Computer angeschlossen haben, geben Sie den folgenden Code ein und Sie sind fertig.


#include
#include
#Definiere TIMEOUT 5000
#define AKTIV NIEDRIG
#define OFF HIGH

Byte Relais [] = {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 () {
für (int i = 0; i <4; i ++) {
PinMode (Relais [i], AUSGANG);
digitalWrite (Relais [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)) {
FEHLER ("FEHLER: CNMI");
zurückkehren
}
// Eingehende SMS lesen
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
FEHLER ("FEHLER: 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 ("Initialization Done");
Serial.println ("============================================ ================ ");
}

void loop () {
// Status Relais EIN / AUS ändern
für (int i = 0; i <4; i ++) {
digitalWrite (Relay [i], StatRelay [i]);
}

// Wenn Eingangsdaten von SIM800 vorliegen
if (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();

// Alle Daten in lastCharRead speichern, dann, wenn es r oder n gibt, als endgültiges Signal für eingehende Nachrichten
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String (currentLine);

// Wenn die letzte Nachricht + CMT anzeigt, dass eine neue Nachricht eingegangen ist
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 Steuerung

if (lastLine.indexOf ("Relais 1 EIN")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 1 Status Aktiv");
gprs.sendSMS (buffNumber, "Relais 1 Status Aktiv");
}

sonst wenn (lastLine.indexOf ("Relais 1 AUS")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 1 Status Off");
gprs.sendSMS (buffNumber, "Relais 1 Status Aus");
}

// Relais 2 Steuerung

if (lastLine.indexOf ("Relais 2 EIN")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 2 Status Aktiv");
gprs.sendSMS (buffNumber, "Relais 2 Status Aktiv");
}
sonst wenn (lastLine.indexOf ("Relais 2 AUS")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 2 Status Off");
gprs.sendSMS (buffNumber, "Relais 2 Status Aus");
}

// Relais 3 Steuerung
if (lastLine.indexOf ("Relais 3 EIN")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 3 Status Aktiv");
gprs.sendSMS (buffNumber, "Relais 3 Status Aktiv");
}
sonst wenn (lastLine.indexOf ("Relais 3 AUS")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 3 Status Off");
gprs.sendSMS (buffNumber, "Relais 3 Status Aus");
}

// Relais 4 Steuerung
if (lastLine.indexOf ("Relais 4 EIN")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 4 Status Aktiv");
gprs.sendSMS (buffNumber, "Relais 1 Status Aktiv");
}
sonst wenn (lastLine.indexOf ("Relais 4 AUS")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relais 4 Status Off");
gprs.sendSMS (buffNumber, "Relais 4 Status Aus");
}
nextLineIsMessage = false;
}

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

}
// Lösche das Zeichen-Array für die nächste Lesezeile
für (int i = 0; i 


Geräteprüfung


SIM800L-basierter SMS-Controller


Das Tool sendet eine SMS mit einer bestimmten Zeichenfolge an SIM800L. Verwenden Sie zum Aktivieren von Relais 1 beispielsweise den Befehl „Relais 1 EIN“ und zum Ausschalten den Befehl „Relais 1 AUS“. Die restlichen Relais haben fast dieselben Befehle, mit Ausnahme der Seriennummer jedes Relais, auf das Sie einwirken möchten. Nach dem automatischen Senden einer Nachricht sendet das SIM800 eine Antwort in Form einer Statusnachricht für jede SIM-Karte.

Videomontage, Konfiguration und Geräteüberprüfung



Kommentare (4)
  1. qeeeq
    #1 qeeeq Gäste 26. August 2017 23:50
    0
    Wow! Wie sie sagen, ist alles Geniale einfach. Ich musste nicht einmal etwas kaufen, wahrscheinlich bei jedem solchen Müll in loser Schüttung
  2. Alexey
    #2 Alexey Gäste 16. Dezember 2017 16:53
    0
    Klappt nicht. Beim Kompilieren wird geschrieben: "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:" Arduino / Genuino Uno "
    1. Denis
      #3 Denis Gäste 17. Dezember 2017 08:11
      0
      Sie müssen einen Pfad ohne russische Buchstaben zum Projekt verwenden.
  3. Andrej
    #4 Andrej Gäste 10. Februar 2019 11:54
    0
    Die Skizze enthält viele Fehler. Wird nicht funktionieren.