SMS-kontroller baserad på SIM800L

SMS-kontroller baserad på SIM800L

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

Låt oss ge ett exempel på ett projekt som använder SIM800L V.2 GSM/GPRS. Poängen med projektet är att styra switchar med en SMS-styrenhet. Du kan enkelt sätta på och stänga av de flesta hushållsapparater i huset, som ett lamadjur, en fläkt och så vidare.

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


Nedan är alla tekniska egenskaper hos SIM800L V.2 GSM/GPRS-modulen:
  • TTL seriellt gränssnitt kompatibelt med 3,3V och 5V Arduino-kompatibla mikrokontroller.
  • SIM800L-modulen har ett TTL seriellt gränssnitt.
  • Antennanslutningskontakt.
  • Nätverksstöd: fyra band 850/900/1800/1900 MHz, kapabel att ringa samtal, SMS och dataöverföringar med avsevärt reducerad batteriförbrukning.
  • VDD TTL UART-gränssnitt, så att du kan ansluta MCU direkt som 51MCU, ARM eller MSP430.VDD-kontakten används för att matcha TTL-spänningen.
  • Modell: SIMCOM SIM800L
  • Driftspänning: från 3,7V till 5V;
  • mått: 40mm x 28mm x 3mm
  • GPRS multislot klass 12/10
  • GPRS-pakettjänst klass B
  • Överensstämmer med GSM fas 2/2+
  • Klass 4 (2 Watt @ 850/900 MHz)
  • Klass 1 (1 Watt @ 1800/1900MHz)


Nödvändigt material


SMS-kontroller baserad på SIM800L


Du kommer att behöva:


1. SIM800L V.2 GSM/GPRS-modul.
2. Arduino Uno.
3. 4-kanals 5V relämodul.
4. Trådar - byglar.
5. Strömförsörjning 5V.
(Länkar aktiva till butiken för köp)

Montering och konfiguration


SMS-kontroller baserad på SIM800L


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

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


Programkod för Arduino


SMS-kontroller baserad på SIM800L


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



#omfatta 

#omfatta

#define TIMEOUT 5000

#define ACTIVE LOW

#define AV HÖG



byte Relä[] = {A0,A1,A2,A3};

byte StatRelay[4];

röding 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(Relä[i], OUTPUT);

digitalWrite(Relä[i], MATI);

StatRelay[i] = MATI;

}



Serial.begin(9600);

while(!Serial);

Serial.println("Aktivera SIM800L V2 >>> Läs SMS automatiskt");

gprs.preInit();

fördröjning(1000);

while (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("FEL:CNMI");

lämna tillbaka;

}

// Läs inkommande SMS

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

ERROR("FEL:CNMI");

lämna tillbaka;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Skicka svar till nummer => ");

Serial.println(buffNumber);

Serial.println("Initiering klar");

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

}



void loop() {

// Ändra status Relä PÅ / AV

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

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

}



// Om det finns indata 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 slutsignal för inkommande meddelande

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

String lastLine = String(currentLine);



// Om det sista meddelandet +CMT indikerar kommer nytt meddelande

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

Serial.println(lastline);

nextLineIsMessage = sant;

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

if (nextLineIsMessage) {

Serial.println(lastline);



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



//Relay 1 Controller



if (lastLine.indexOf("Relä 1 PÅ") >= 0) {

StatRelay[0] = AKTIF;

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

Serial.println("Relä 1 status aktiv");

gprs.sendSMS(buffNumber, "Relä 1 Status Aktiv");

}



else if (lastLine.indexOf("Relä 1 AV") >= 0) {

StatRelay[0] = MATI;

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

Serial.println("Relä 1 Status Av");

gprs.sendSMS(buffNumber, "Relä 1 Status Av");

}



//Relay 2 Controller



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

StatRelay[1] = AKTIF;

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

Serial.println("Relä 2 Status aktiv");

gprs.sendSMS(buffNumber, "Relay 2 Status Active");

}

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

StatRelay[1] = MATI;

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

Serial.println("Relä 2 Status Av");

gprs.sendSMS(buffNumber, "Relay 2 Status Off");

}



//Relay 3 Controller

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

StatRelay[2] = AKTIF;

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

Serial.println("Relä 3 status aktiv");

gprs.sendSMS(buffNumber, "Relay 3 Status Active");

}

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

StatRelay[2] = MATI;

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

Serial.println("Relä 3 Status Av");

gprs.sendSMS(buffNumber, "Relay 3 Status Off");

}



//Relay 4 Controller

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

StatRelay[3] = AKTIF;

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

Serial.println("Relä 4 status aktiv");

gprs.sendSMS(buffNumber, "Relä 1 Status Aktiv");

}

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

StatRelay[3] = MATI;

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

Serial.println("Relä 4 Status Av");

gprs.sendSMS(buffNumber, "Relay 4 Status Off");

}

nextLineIsMessage = false;

}



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



}

//Rensa char array för nästa rad av läsning

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

currentLine[i] = (char)0;

}

currentLineIndex = 0;

}

annat {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Enhetskontroll


SMS-kontroller baserad på SIM800L


Verktyget fungerar genom att skicka ett SMS till SIM800L med en specifik teckensekvens. Till exempel, för att slå på relä 1, använd kommandot "Relay 1 ON" och för att stänga av det, använd kommandot "Relay 1 OFF". För de återstående reläerna är kommandona nästan desamma, förutom sekvensnumret för varje relä som du vill påverka. Efter att ha skickat meddelandet automatiskt kommer SIM800 att skicka ett svar i form av ett meddelande om status för varje SIM-kort.

Video av montering, konfiguration och testning av enheten



Originalartikel på engelska
Kommentar
  • flugaleendeskrattanderodnasmileyavslappnad avslappnadflin
    hjärtögonkyssande hjärtakyssa stängda ögonspoladelättadnöjdflin
    blinkningstuck_out_tungue_winking_eyestuck_out_tongue_closed_eyesflinandekyssarstuck_out_tonguesovande
    oroligrynkar pannanplågadöppen mungrimaserandeförvirradtystnad
    uttryckslösinte roadsvett_lesvettasbesviken_lättadtröttapassiv
    besvikenförvirradräddkallsvetthålla utgråtasnyfta
    glädjeförvånadskrikatrött_ansikteargrasatriumf
    sömnigmumsmasksolglasögonyr i ansiktetimpleende_imp
    neutralt_ansikteno_mouthoskyldig
3+tre=
Kommentarer (4)
  1. qeeeq
    #1 qeeeq Gäster 26 augusti 2017 23:50
    0
    Wow! Som de säger, allt genialt är enkelt. Jag behövde inte ens köpa något, förmodligen har alla en hög med sådant skräp hemma
  2. Alexei
    #2 Alexei Gäster 16 december 2017 16:53
    0
    Fungerar inte. Vid kompilering står det "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:"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. Andrey
    #4 Andrey Gäster 10 februari 2019 11:54
    2
    Det finns många fel i skissen. Det kommer inte att fungera.