SMS-controller gebaseerd op SIM800L

SMS-controller gebaseerd op SIM800L

SIM800L V2.0 GSM/GPRS is een quad-band GSM/GPRS-module die compatibel is met Arduino. De module wordt gebruikt om GSM (bellen en SMS) en GPRS-functies te implementeren. Het voordeel van deze module is de TTL-interface, deze heeft een spanning van 5V, waardoor je hem direct kunt aansluiten op Arduino of ieder ander systeem met een voedingsspanning van 5V. De meeste GSM/GPRS-modules op de markt vereisen regelaarverbindingen of niveauconversie, terwijl bij SIM800L V.2 GSM/GPRS geen extra conversiecircuits op interfaceniveau vereist.

Laten we een voorbeeld geven van een project dat SIM800L V.2 GSM/GPRS gebruikt. Het doel van het project is om schakelaars te bedienen met behulp van een SMS-controller. De meeste huishoudelijke apparaten in huis, zoals een lama, een ventilator, enzovoort, kunt u eenvoudig aan- en uitzetten.

Kenmerken van de SIM800L V.2 GSM/GPRS-module


Hieronder staan ​​alle technische kenmerken van de SIM800L V.2 GSM/GPRS-module:
  • TTL seriële interface compatibel met 3,3V en 5V Arduino-compatibele microcontrollers.
  • De SIM800L-module heeft een TTL-seriële interface.
  • Antenne-aansluitstekker.
  • Netwerkondersteuning: vier banden 850/900/1800/1900 MHz, geschikt voor bellen, sms'en en gegevensoverdracht met een aanzienlijk lager batterijverbruik.
  • VDD TTL UART-interface, zodat u direct MCU zoals 51MCU, ARM of MSP430 kunt aansluiten.De VDD-stekker wordt gebruikt om de TTL-spanning aan te passen.
  • Model: SIMCOM SIM800L
  • Bedrijfsspanning: van 3,7 V tot 5 V;
  • afmetingen: 40 mm x 28 mm x 3 mm
  • GPRS-multislot klasse 12/10
  • GPRS-pakketdienst klasse B
  • Voldoet aan GSM fase 2/2+
  • Klasse 4 (2 Watt @ 850/900 MHz)
  • Klasse 1 (1Watt @ 1800/1900MHz)


Benodigde materialen


SMS-controller gebaseerd op SIM800L


Je hebt nodig:


1. SIM800L V.2 GSM/GPRS-module.
2. Arduino Uno.
3. 4-kanaals 5V relaismodule.
4. Draden - jumpers.
5. Voeding 5V.
(Links actief naar de winkel voor aankoop)

Montage en configuratie


SMS-controller gebaseerd op SIM800L


Nadat je alle componenten hebt aangesloten, maak je een programma en upload je dit naar je Arduino. Maar eerst moet u de GPRS-bibliotheek installeren, die u kunt downloaden:

gprs.zip [28.02 Kb] (downloads: 887)


Programmacode voor Arduino


SMS-controller gebaseerd op SIM800L


Nadat u uw SIM800L, 4-kanaals relaismodule en Arduino op uw computer hebt aangesloten, voert u de onderstaande code in en bent u klaar.



#erbij betrekken 

#erbij betrekken

#define TIME-OUT 5000

#define ACTIEF LAAG

#define UIT HOOG



byterelais[] = {A0,A1,A2,A3};

byte StatRelais[4];

char buffNummer[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = false;

String antwoordnummer = "089510863958";

GPRS-gprs;



ongeldige setup() {

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

pinMode(Relais[i] , UITGANG);

digitalWrite(Relais[i], MATI);

StatRelais[i] = MATI;

}



Serieel.begin(9600);

terwijl(!Serieel);

Serial.println("Activeer SIM800L V2 >>> SMS automatisch lezen");

gprs.preInit();

vertraging(1000);

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

vertraging(1000);

Serial.print("initfoutrn");

}



// Beheer bericht in ASCII-modus

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

FOUT("FOUT:CNMI");

opbrengst;

}

// Lees inkomende sms

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

FOUT("FOUT:CNMI");

opbrengst;

}

int pjg = antwoordnummer.lengte() + 1;

buffNummer[pjg];

antwoordNumber.toCharArray(buffNumber,pjg);

Serial.print("Verzend antwoord naar nummer => ");

Serieel.println(buffNumber);

Serial.println("Initialisatie voltooid");

Serial.println("=========================================== =============== =================================================================================================================================== ===

}



lege lus() {

// Status wijzigen Relais AAN / UIT

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

digitalWrite(Relais[i], StatRelais[i]);

}



// Als er invoergegevens van SIM800 zijn

als (gprs.serialSIM800.beschikbaar()) {

char lastCharRead = gprs.serialSIM800.read();



// Bewaar alle gegevens op lastCharRead, en als er r of n is, als eindsignaal van een inkomend bericht

als (laatsteCharRead == 'r' || laatsteCharRead == 'n') {

String laatsteLijn = String(huidigeLijn);



// Als het laatste bericht +CMT aangeeft dat er een nieuw bericht is aangekomen

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

Serieel.println(laatsteregel);

nextLineIsMessage = waar;

} anders als (lastLine.length() > 0) {

als (nextLineIsMessage) {

Serieel.println(laatsteregel);



// =============================================== ==== ================>> Functie van relaiscontroller



//Relais 1-controller



if (lastLine.indexOf("Relais 1 AAN") >= 0) {

StatRelais[0] = AKTIF;

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

Serial.println("Status relais 1 actief");

gprs.sendSMS(buffNumber, "Status relais 1 actief");

}



else if (lastLine.indexOf("Relais 1 UIT") >= 0) {

StatRelais[0] = MATI;

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

Serial.println("Status relais 1 uit");

gprs.sendSMS(buffNumber, "Relais 1 Status Uit");

}



//Relais 2-controller



if (lastLine.indexOf("Relais 2 AAN") >= 0) {

StatRelais[1] = AKTIF;

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

Serial.println("Relais 2-status actief");

gprs.sendSMS(buffNumber, "Status relais 2 actief");

}

else if (lastLine.indexOf("Relais 2 UIT") >= 0) {

StatRelais[1] = MATI;

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

Serial.println("Status relais 2 uit");

gprs.sendSMS(buffNumber, "Relais 2 Status Uit");

}



//Relais 3-controller

if (lastLine.indexOf("Relais 3 AAN") >= 0) {

StatRelais[2] = AKTIF;

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

Serial.println("Status relais 3 actief");

gprs.sendSMS(buffNumber, "Status relais 3 actief");

}

else if (lastLine.indexOf("Relais 3 UIT") >= 0) {

StatRelais[2] = MATI;

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

Serial.println("Status relais 3 uit");

gprs.sendSMS(buffNumber, "Status relais 3 uit");

}



//Relais 4-controller

if (lastLine.indexOf("Relais 4 AAN") >= 0) {

StatRelais[3] = AKTIF;

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

Serial.println("Status relais 4 actief");

gprs.sendSMS(buffNumber, "Status relais 1 actief");

}

else if (lastLine.indexOf("Relais 4 UIT") >= 0) {

StatRelais[3] = MATI;

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

Serial.println("Status relais 4 uit");

gprs.sendSMS(buffNumber, "Relais 4 Status Uit");

}

nextLineIsMessage = false;

}



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



}

// Wis de char-array voor de volgende leesregel

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

huidigeLijn[i] = (char)0;

}

currentLineIndex = 0;

}

anders {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Apparaatcontrole


SMS-controller gebaseerd op SIM800L


De tool werkt door een sms naar de SIM800L te sturen met een specifieke reeks tekens. Om bijvoorbeeld relais 1 in te schakelen, gebruikt u het commando “Relais 1 AAN” en om het uit te schakelen gebruikt u het commando “Relais 1 UIT”. Voor de overige relais zijn de opdrachten vrijwel hetzelfde, behalve het volgnummer van elk relais dat u wilt beïnvloeden. Nadat het bericht automatisch is verzonden, stuurt SIM800 een reactie in de vorm van een bericht over de status van elke simkaart.

Video van montage, configuratie en testen van het apparaat



Origineel artikel in het Engels
terugkomen
Opmerking
  • vlinderdasglimlachlachendblozensmileyontspannen ontspannengrijns
    hart ogenkussend hartkussende_gesloten_ogengespoeldopgeluchttevredengrijns
    knipoogvastgezette_uit_tong_knipogende_ooguitgestoken tong gesloten ogengrijnzendkussenvastzittende_uit_tongslapen
    bezorgdfronsengekweldopen mondgrimmigverwardstil
    uitdrukkingsloosniet geamuseerdzweet_glimlachzweetteleurgesteld_opgeluchtvermoeidheidpassief
    teleurgesteldverwardangstigkoud zweetvolhoudenschreeuwsnik
    vreugdeverbaasdschreeuwvermoeid gezichtbooswoedetriomf
    slaperigjammiemaskerzonnebrilduizelig gezichtimpglimlachend_imp
    neutraal_gezichtgeen_mondonschuldig
3+drie=
Opmerkingen (4)
  1. qeeq
    #1 qeeq Gasten 26 augustus 2017 23:50
    0
    Wauw! Zoals ze zeggen, alles wat ingenieus is, is eenvoudig. Ik hoefde niet eens iets te kopen, waarschijnlijk heeft iedereen thuis wel een stapel van zulke rotzooi
  2. Alexei
    #2 Alexei Gasten 16 december 2017 16:53
    0
    Werkt niet. Bij het compileren staat er "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:"Arduino/Genuino Uno"
    1. Dennis
      #3 Dennis Gasten 17 december 2017 08:11
      0
      U moet een pad zonder Russische letters naar het project gebruiken.
  3. Andrej
    #4 Andrej Gasten 10 februari 2019 11:54
    2
    Er zitten veel fouten in de schets. Het zal niet werken.