SMS-controller baseret på SIM800L

SMS-controller baseret på SIM800L

SIM800L V2.0 GSM/GPRS er et quad-band GSM/GPRS-modul, der er kompatibelt med Arduino. Modulet bruges til at implementere GSM (opkald og SMS) og GPRS funktioner. Fordelen ved dette modul er TTL-interfacet, som har en spænding på 5V, som giver dig mulighed for direkte at forbinde det til Arduino eller et hvilket som helst andet system med en 5V-forsyningsspænding. De fleste GSM/GPRS-moduler på markedet kræver regulatorforbindelser eller niveaukonvertering, mens GSM/GPRS i SIM800L V.2 ikke kræver yderligere interfaceniveaukonverteringskredsløb.

Lad os give et eksempel på et projekt, der bruger SIM800L V.2 GSM/GPRS. Formålet med projektet er at styre switches ved hjælp af en SMS-controller. Du kan nemt tænde og slukke for de fleste husholdningsapparater i huset, såsom en lama, en ventilator og så videre.

Karakteristika for SIM800L V.2 GSM/GPRS-modulet


Nedenfor er alle de tekniske karakteristika for SIM800L V.2 GSM/GPRS-modulet:
  • TTL seriel interface kompatibel med 3,3V og 5V Arduino kompatible mikrocontrollere.
  • SIM800L-modulet har en TTL seriel grænseflade.
  • Antennetilslutningsstik.
  • Netværksunderstøttelse: fire bånd 850/900/1800/1900 MHz, i stand til at foretage opkald, SMS og dataoverførsler med væsentligt reduceret batteriforbrug.
  • VDD TTL UART interface, så du direkte kan tilslutte MCU såsom 51MCU, ARM eller MSP430.VDD-stikket bruges til at matche TTL-spændingen.
  • Model: SIMCOM SIM800L
  • Driftsspænding: fra 3,7V til 5V;
  • mål: 40mm x 28mm x 3mm
  • GPRS multislot klasse 12/10
  • GPRS-pakketjeneste klasse B
  • Overholder GSM fase 2/2+
  • Klasse 4 (2 Watt @ 850/900 MHz)
  • Klasse 1 (1 Watt @ 1800/1900MHz)


Nødvendige materialer


SMS-controller baseret på SIM800L


Du skal bruge:


1. SIM800L V.2 GSM/GPRS-modul.
2. Arduino Uno.
3. 4 kanals 5V relæmodul.
4. Ledninger - jumpere.
5. Strømforsyning 5V.
(Links aktive til butikken for køb)

Montering og konfiguration


SMS-controller baseret på SIM800L


Når du har tilsluttet alle komponenterne, skal du oprette et program og derefter uploade det til din Arduino. Men først skal du installere GPRS-biblioteket, som du kan downloade:

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


Programkode til Arduino


SMS-controller baseret på SIM800L


Når du har tilsluttet dit SIM800L, 4-kanals relæmodul og Arduino til din computer, skal du indtaste koden nedenfor, og du er færdig.



#omfatte 

#omfatte

#define TIMEOUT 5000

#define AKTIV LAV

#define FRA HØJ



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;



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("Aktiver SIM800L V2 >>> Læs automatisk SMS");

gprs.preInit();

forsinkelse(1000);

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

forsinkelse(1000);

Serial.print("init errorrn");

}



// Administrer besked til tilstand ASCII

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

FEJL("FEJL:CNMI");

Vend tilbage;

}

// Læs indgående SMS

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

FEJL("FEJL:CNMI");

Vend tilbage;

}

int pjg = replyNumber.length() + 1;

buffNumber[pjg];

replyNumber.toCharArray(buffNumber,pjg);

Serial.print("Send svar til nummer => ");

Serial.println(buffNumber);

Serial.println("Initialisering udført");

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

}



void loop() {

// Skift status Relæ ON / OFF

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

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

}



// Hvis der er inputdata fra SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Gem alle data på lastCharRead, hvis der er r eller n, som et endeligt signal om indgående besked

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

String lastLine = String(currentLine);



// Hvis den sidste besked +CMT indikerer ny besked ankommer

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

Serial.println(lastLine);

nextLineIsMessage = sand;

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

if (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================ ==== =================>> Funktion af relæcontroller



//Relæ 1 controller



if (lastLine.indexOf("Relæ 1 ON") >= 0) {

StatRelay[0] = AKTIF;

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

Serial.println("Relæ 1 Status aktiv");

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

}



else if (lastLine.indexOf("Relæ 1 OFF") >= 0) {

StatRelay[0] = MATI;

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

Serial.println("Relæ 1 Status Fra");

gprs.sendSMS(buffNumber, "Relæ 1 Status Fra");

}



//Relæ 2 controller



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

StatRelay[1] = AKTIF;

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

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

gprs.sendSMS(buffNumber, "Relæ 2 Status Aktiv");

}

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

StatRelay[1] = MATI;

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

Serial.println("Relæ 2 Status Fra");

gprs.sendSMS(buffNumber, "Relæ 2 Status Fra");

}



//Relæ 3 controller

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

StatRelay[2] = AKTIF;

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

Serial.println("Relæ 3 Status aktiv");

gprs.sendSMS(buffNumber, "Relæ 3 Status Aktiv");

}

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

StatRelay[2] = MATI;

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

Serial.println("Relæ 3 Status Fra");

gprs.sendSMS(buffNumber, "Relæ 3 Status Fra");

}



//Relæ 4 controller

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

StatRelay[3] = AKTIF;

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

Serial.println("Relæ 4 Status aktiv");

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

}

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

StatRelay[3] = MATI;

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

Serial.println("Relæ 4 Status Fra");

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

}

nextLineIsMessage = falsk;

}



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



}

//Ryd char-array for næste læselinje

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

nuværendeLine[i] = (char)0;

}

currentLineIndex = 0;

}

andet {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Enhedstjek


SMS-controller baseret på SIM800L


Værktøjet fungerer ved at sende en SMS til SIM800L med en bestemt rækkefølge af tegn. For at tænde for relæ 1 skal du f.eks. bruge kommandoen "Relay 1 ON", og for at slukke for det, brug kommandoen "Relay 1 OFF". For de resterende relæer er kommandoerne næsten de samme, bortset fra sekvensnummeret for hvert relæ, som du ønsker at påvirke. Efter automatisk afsendelse af beskeden, sender SIM800 et svar i form af en besked om status for hvert SIM-kort.

Video af montering, konfiguration og test af enheden



Originalartikel på engelsk
kom tilbage
Kommentar
  • butterflysmilgrinerrødmesmileyafslappet afslappetsmile
    hjerteøjneKyssende hjertekysse_lukkede_øjneskylletlettettilfredsgrin
    blinkestak_ud_tunge_blinkende_øjestak_ud_tunge_lukkede_øjnegrinendekyssestak_ud_tungesover
    bekymretrynker pandenfortvivletåben mundgrimasserforvirrettysset
    udtryksløsuforskammetsved_smilsvedskuffet_lettelsetrættepassiv
    skuffetforvirretbangekoldsvedholde udskrighulke
    glædeforbløffetskrigetræt_ansigtvredraseritriumf
    søvnignammaskesolbrillersvimmel_ansigtimpsmilende_imp
    neutralt_ansigtingen_munduskyldig
3+tre=
Kommentarer (4)
  1. qeeeq
    #1 qeeeq Gæster 26. august 2017 23:50
    0
    Wow! Som de siger, er alt genialt enkelt. Jeg behøvede ikke engang at købe noget, sikkert har alle en bunke sådan noget affald derhjemme
  2. Alexei
    #2 Alexei Gæster 16. december 2017 16:53
    0
    Virker ikke. Ved kompilering står der "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 skal bruge en sti uden russiske bogstaver til projektet.
  3. Andrey
    #4 Andrey Gæster 10. februar 2019 11:54
    2
    Der er mange fejl i skitsen. Det vil ikke virke.