Doe het zelf
Masterclasses, instructies, nuttige tips, recepten.
» » »SMS-controller op basis van SIM800L
Op SIM800L gebaseerde SMS-controller

SIM800L V2.0 GSM / GPRS is een quad-band GSM / GPRS-module compatibel met Arduino. De module wordt gebruikt om de functies van GSM (oproepen en SMS) en GPRS te implementeren. Het voordeel van deze module is de TTL-interface met een spanning van 5V, waardoor u deze rechtstreeks kunt aansluiten op een Arduino of een ander systeem met een 5V-voeding. De meeste GSM / GPRS-modules op de markt vereisen regulatorverbindingen of niveauconversie, terwijl in SIM800L V.2 GSM / GPRS geen extra interfaceniveauconversiecircuits vereist.

Hier is een voorbeeldproject met SIM800L V.2 GSM / GPRS. De betekenis van het project is om de schakelaars te bedienen met behulp van de SMS-controller. U kunt de meeste huishoudelijke apparaten in huis gemakkelijk in- en uitschakelen, zoals een lama, een ventilator, enzovoort.

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


Hieronder staan ​​alle technische specificaties van de SIM800L V.2 GSM / GPRS-module:
  • TTL seriële interface compatibel met 3.3V en 5V microcontrollers compatibel met Arduino.
  • De SIM800L-module heeft een TTL seriële interface.
  • Antennestekker
  • Netwerkondersteuning: vier banden 850/900/1800/1900 MHz, geschikt voor bellen, sms'en en gegevensoverdracht met aanzienlijk lager batterijverbruik.
  • VDD TTL UART-interface, zodat u rechtstreeks een MCU zoals 51MCU, ARM of MSP430 kunt aansluiten. VDD-stekker gebruikt om TTL-spanning te matchen.
  • Model: SIMCOM SIM800L
  • Werkspanning: van 3,7 V tot 5 V;
  • afmetingen: 40 mm x 28 mm x 3 mm
  • GPRS multislot-klasse 12/10
  • GPRS Batch Service Klasse B
  • Komt overeen met GSM-fase 2/2 +
  • Klasse 4 (2 Watts bij 850/900 MHz)
  • Klasse 1 (1 Wat @ 1800/1900 MHz)


Benodigde materialen


Op SIM800L gebaseerde SMS-controller


Je hebt nodig:


1. .
2. .
3. .
4. .
5. .
(Actieve links naar de winkel om te kopen)

Montage en configuratie


Op SIM800L gebaseerde SMS-controller


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

[28.02 Kb] (downloads: 481)


Programmacode voor Arduino


Op SIM800L gebaseerde SMS-controller


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


#include
#include
#define TIMEOUT 5000
#define ACTIEF LAAG
#define UIT HOOG

byte-relais [] = {A0, A1, A2, A3};
byte StatRelay [4];
char buffNummer [20];
char currentLine [500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String replyNumber = "089510863958";
GPRS gprs;

void setup () {
voor (int i = 0; i <4; i ++) {
pinMode (Relais [i], UITGANG);
digitalWrite (Relay [i], MATI);
StatRelay [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 ("init errorrn");
}

// Beheer bericht naar modus ASCII
if (0! = gprs.sendCmdAndWaitForResp ("AT + CMGF = 1rn", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
terug te keren;
}
// Lees inkomende sms
if (0! = gprs.sendCmdAndWaitForResp ("AT + CNMI = 1,2,0,0,0rn", "OK", TIMEOUT)) {
ERROR ("ERROR: CNMI");
terug te keren;
}
int pjg = replyNumber.length () + 1;
buffNumber [pjg];
replyNumber.toCharArray (buffNumber, pjg);
Serial.print ("Antwoord verzenden naar nummer =>");
Serial.println (buffNumber);
Serial.println ("Initialization Done");
Serial.println ("============================================= ================= ");
}

void loop () {
// Status wijzigen Relais AAN / UIT
voor (int i = 0; i <4; i ++) {
digitalWrite (Relay [i], StatRelay [i]);
}

// Als er invoergegevens van de SIM800 zijn
if (gprs.serialSIM800.available ()) {
char lastCharRead = gprs.serialSIM800.read ();

// Sla alle gegevens op lastCharRead op, en vervolgens als er r of n is, als laatste signaal van inkomend bericht
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String (currentLine);

// Als het laatste bericht + CMT aangeeft dat er een nieuw bericht is aangekomen
if (lastLine.startsWith ("+ CMT:")) {
Serial.println (lastLine);
nextLineIsMessage = true;
} anders if (lastLine.length ()> 0) {
if (nextLineIsMessage) {
Serial.println (lastLine);

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

// Relais 1 controller

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

anders if (lastLine.indexOf ("Relay 1 OFF")> = 0) {
StatRelay [0] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relay 1 Status Off");
gprs.sendSMS (buffNumber, "Relay 1 Status Off");
}

// Relais 2 controller

if (lastLine.indexOf ("Relay 2 ON")> = 0) {
StatRelay [1] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relay 2 Status Active");
gprs.sendSMS (buffNumber, "Relay 2 Status Active");
}
anders if (lastLine.indexOf ("Relay 2 OFF")> = 0) {
StatRelay [1] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relay 2 Status Off");
gprs.sendSMS (buffNumber, "Relay 2 Status Off");
}

// Relais 3 controller
if (lastLine.indexOf ("Relay 3 ON")> = 0) {
StatRelay [2] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relay 3 Status Active");
gprs.sendSMS (buffNumber, "Relay 3 Status Active");
}
anders if (lastLine.indexOf ("Relay 3 OFF")> = 0) {
StatRelay [2] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relay 3 Status Off");
gprs.sendSMS (buffNumber, "Relay 3 Status Off");
}

// Relais 4 controller
if (lastLine.indexOf ("Relay 4 ON")> = 0) {
StatRelay [3] = AKTIF;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relay 4 Status Active");
gprs.sendSMS (buffNumber, "Relay 1 Status Active");
}
anders if (lastLine.indexOf ("Relay 4 OFF")> = 0) {
StatRelay [3] = MATI;
Serial.print ("Reply ==== >>>>");
Serial.println ("Relay 4 Status Off");
gprs.sendSMS (buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = false;
}

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

}
// Clear char array voor de volgende leesregel
voor (int i = 0; i 


Apparaatcontrole


Op SIM800L gebaseerde SMS-controller


De tool werkt door een sms naar SIM800L te verzenden met een specifieke reeks tekens. Om bijvoorbeeld relais 1 in te schakelen, gebruikt u de opdracht "Relais 1 AAN" en om het uit te schakelen gebruikt u de opdracht "Relais 1 UIT". De rest van de relais hebben bijna dezelfde opdrachten, met uitzondering van het serienummer van elk relais waarop u wilt reageren. Nadat automatisch een bericht is verzonden, verzendt de SIM800 een antwoord in de vorm van een statusbericht voor elke SIM-kaart.

Video-assemblage, configuratie en apparaatverificatie



Ga terug
Opmerkingen (4)
  1. qeeeq
    #1 qeeeq gasten 26 augustus 2017 23:50
    0
    Wow! Zoals ze zeggen, is alles geniaal eenvoudig. Ik hoefde zelfs niets te kopen, waarschijnlijk bij elk dergelijk onzin thuis in bulk
  2. Alexey
    #2 Alexey gasten 16 december 2017 16:53
    0
    Het lukt niet. Bij het compileren schrijft het "Arduino: 1.8.5 Hourly Build 2017/08/28 06:33 (Windows 7), Board:" Arduino / Genuino Uno "
    1. Denis
      #3 Denis gasten 17 december 2017 08:11
      0
      U moet een pad gebruiken zonder Russische letters naar het project.
  3. Andrew
    #4 Andrew gasten 10 februari 2019 11:54
    0
    Er zijn veel fouten in de schets. Zal niet werken.