DIY gör det själv
Masterklasser, instruktioner, användbara tips, recept.
» » »SMS-controller baserad på SIM800L
SIM800L-baserad SMS-controller

SIM800L V2.0 GSM / GPRS är en fyrbands GSM / GPRS-modul kompatibel med Arduino. Modulen används för att implementera funktionerna för GSM (samtal och SMS) och GPRS. Fördelen med denna modul är TTL-gränssnittet med en spänning på 5V, vilket gör att du direkt kan ansluta den till en Arduino eller något annat system med en 5V-strömförsörjning. De flesta GSM / GPRS-moduler på marknaden kräver regulatoranslutningar eller nivåkonvertering, medan GSM / GPRS i SIM800L V.2 inte kräver ytterligare konverteringskretsar för gränssnitt.

Här är ett exempelprojekt med SIM800L V.2 GSM / GPRS. Projektets betydelse är att styra omkopplarna med SMS-styrenheten. Du kan enkelt slå av och på de flesta hushållsapparater i huset, till exempel en lama, en fläkt och så vidare.

Egenskaper för SIM800L V.2 GSM / GPRS-modulen


Nedan visas alla tekniska specifikationer för SIM800L V.2 GSM / GPRS-modulen:
  • TTL seriellt gränssnitt kompatibelt med 3,3V och 5V mikrokontroller kompatibelt med Arduino.
  • SIM800L-modulen har ett seriellt TTL-gränssnitt.
  • Antennkontakt
  • Nätverksstöd: fyra band 850/900/1800/1900 MHz, som kan ringa samtal, SMS och dataöverföring med betydligt reducerad batteriförbrukning.
  • VDD TTL UART-gränssnitt, så att du direkt kan ansluta en MCU som 51MCU, ARM eller MSP430. VDD-plugg som används för att matcha TTL-spänning.
  • Modell: SIMCOM SIM800L
  • Arbetsspänning: från 3,7V till 5V;
  • mått: 40 mm x 28 mm x 3 mm
  • GPRS multislot klass 12/10
  • GPRS Batch Service Class B
  • Motsvarar GSM-fas 2/2 +
  • Klass 4 (2 watt @ 850/900 MHz)
  • Klass 1 (1 Wat @ 1800/1900 MHz)


Nödvändigt material


SIM800L-baserad SMS-controller


Du behöver:


1. .
2. .
3. .
4. .
5. .
(Aktiva länkar till butiken för köp)

Montering och konfiguration


SIM800L-baserad SMS-controller


När du har anslutit alla komponenter skapar du ett program och laddar ner det till din Arduino. Men först måste du installera GPRS-biblioteket, som du kan ladda ner:

[28.02 Kb] (nedladdningar: 481)


Programkod för Arduino


SIM800L-baserad SMS-controller


När du har anslutit din SIM800L, 4-kanals relämodul och Arduino till din dator, ange koden nedan så är du klar.


#include
#include
# definiera TIMEOUT 5000
#definier AKTIV LÅG
# definiera AV HÖG

byte Relä [] = {A0, A1, A2, A3};
byte StatRelay [4];
char buffNumber [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = falsk;
String replyNumber = "089510863958";
GPRS gprs;

ogiltig installation () {
för (int i = 0; i <4; i ++) {
pinMode (Relä [i], UTGÅNG);
digitalWrite (Relä [i], MATI);
StatRelay [i] = MATI;
}

Serial.begin (9600);
medan (! seriell);
Serial.println ("Aktivera SIM800L V2 >>> automatiskt läsa SMS");
gprs.preInit ();
fördröjning (1000);
medan (0! = gprs.init ()) {
fördröjning (1000);
Serial.print ("init errorrn");
}

// Hantera meddelande till läge ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
återvända;
}
// Läs inkommande SMS
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
återvända;
}
int pjg = svarNummer.längd () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Skicka svar till nummer =>");
Serial.println (buffNumber);
Serial.println ("Initialisering klar");
Serial.println ("============================================= ================= ");
}

void loop () {
// Ändra status Relä PÅ / AV
för (int i = 0; i <4; i ++) {
digitalWrite (Relä [i], StatRelay [i]);
}

// Om det finns inmatningsdata från SIM800
if (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();

// Spara all data på lastCharRead, sedan om det finns r eller n, som en slutlig signal om inkommande meddelande
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String (currentLine);

// Om det sista meddelandet + CMT indikerar att nytt meddelande kommer
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} annat om (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

// ================================================= ================== >> Funktion för reläkontroller

// Relä 1-styrenhet

if (lastLine.indexOf ("Relä 1 PÅ")> = 0) {
StatRelay [0] = AKTIF;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 1 Status Active");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}

annars om (lastLine.indexOf ("Relä 1 AV")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 1 Status Off");
gprs.sendSMS (buffNumber, "Relay 1 Status Off");
}

// Relä 2-styrenhet

if (lastLine.indexOf ("Relä 2 ON")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 2 Status Active");
gprs.sendSMS (buffNumber, "Relay 2 Status Active");
}
annars om (lastLine.indexOf ("Relä 2 AV")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 2 Status Off");
gprs.sendSMS (buffNumber, "Relay 2 Status Off");
}

// Relä 3-styrenhet
if (lastLine.indexOf ("Relä 3 PÅ")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 3 Status Active");
gprs.sendSMS (buffNumber, "Relay 3 Status Active");
}
annars om (lastLine.indexOf ("Relä 3 OFF")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 3 Status Off");
gprs.sendSMS (buffNumber, "Relay 3 Status Off");
}

// Relä 4-styrenhet
if (lastLine.indexOf ("Relä 4 ON")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 4 Status Active");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
annars om (lastLine.indexOf ("Relä 4 AV")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Svar ==== >>>>");
Serial.println ("Relay 4 Status Off");
gprs.sendSMS (buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = falsk;
}

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

}
// Rensa char-array för nästa rad av läst
för (int i = 0; i 


Enhetskontroll


SIM800L-baserad SMS-controller


Verktyget fungerar genom att skicka SMS till SIM800L med en specifik sekvens av tecken. Till exempel, för att slå på relä 1, använd kommandot "Relä 1 PÅ", och för att stänga av använder du kommandot "Relä 1 AV". Resten av reläerna har nästan samma kommandon, med undantag för serienumret för varje relä som du vill agera på. När du automatiskt har skickat ett meddelande skickar SIM800 ett svar i form av ett statusmeddelande för varje SIM-kort.

Videomontering, konfiguration och enhetsverifiering



Kommentarer (4)
  1. qeeeq
    #1 qeeeq gäster 26 augusti 2017 23:50
    0
    Wow! Som de säger är allt genialt enkelt. Jag behövde inte ens köpa någonting, förmodligen på varje sådant skräp hemma i stort
  2. Alexey
    #2 Alexey gäster 16 december 2017 16:53
    0
    Det fungerar inte. Vid sammanställningen skriver det "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), styrelse:" Arduino / Genuino Uno "
    1. Denis
      #3 Denis gäster 17 december 2017 08:11
      0
      Du måste använda en sökväg utan ryska bokstäver till projektet.
  3. Andrew
    #4 Andrew gäster 10 februari 2019 11:54
    0
    Det finns många misstag i skissen. Fungerar inte.