SMS-kontroller basert på SIM800L

SMS-kontroller basert på SIM800L

SIM800L V2.0 GSM/GPRS er en quad-band GSM/GPRS-modul som er kompatibel med Arduino. Modulen brukes til å implementere GSM (samtaler og SMS) og GPRS-funksjoner. Fordelen med denne modulen er TTL-grensesnittet, som har en spenning på 5V, som lar deg koble den direkte til Arduino eller et hvilket som helst annet system med 5V forsyningsspenning. De fleste GSM/GPRS-moduler på markedet krever regulatortilkoblinger eller nivåkonvertering, mens GSM/GPRS i SIM800L V.2 ikke krever ekstra grensesnittnivåkonverteringskretser.

La oss gi et eksempel på et prosjekt som bruker SIM800L V.2 GSM/GPRS. Poenget med prosjektet er å styre brytere ved hjelp av en SMS-kontroller. Du kan enkelt slå av og på de fleste husholdningsapparater i huset, for eksempel en lama, en vifte og så videre.

Kjennetegn på SIM800L V.2 GSM/GPRS-modulen


Nedenfor er alle de tekniske egenskapene til SIM800L V.2 GSM/GPRS-modulen:
  • TTL seriell grensesnitt kompatibel med 3,3V og 5V Arduino-kompatible mikrokontrollere.
  • SIM800L-modulen har et TTL seriell grensesnitt.
  • Antennetilkoblingsplugg.
  • Nettverksstøtte: fire bånd 850/900/1800/1900 MHz, i stand til å ringe, SMS og dataoverføring med betydelig redusert batteriforbruk.
  • VDD TTL UART-grensesnitt, slik at du kan koble direkte til MCU som 51MCU, ARM eller MSP430.VDD-pluggen brukes til å matche TTL-spenningen.
  • Modell: SIMCOM SIM800L
  • Driftsspenning: fra 3,7V til 5V;
  • dimensjoner: 40mm x 28mm x 3mm
  • GPRS multislot klasse 12/10
  • GPRS-pakketjeneste klasse B
  • Samsvarer med GSM fase 2/2+
  • Klasse 4 (2 Watt @ 850/900 MHz)
  • Klasse 1 (1 Watt @ 1800/1900MHz)


Nødvendige materialer


SMS-kontroller basert på SIM800L


Du vil trenge:


1. SIM800L V.2 GSM/GPRS-modul.
2. Arduino Uno.
3. 4-kanals 5V relémodul.
4. Ledninger - jumpere.
5. Strømforsyning 5V.
(Lenker aktive til butikken for kjøp)

Montering og konfigurasjon


SMS-kontroller basert på SIM800L


Når du har koblet til alle komponentene, lag et program og last det deretter opp til din Arduino. Men først må du installere GPRS-biblioteket, som du kan laste ned:

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


Programkode for Arduino


SMS-kontroller basert på SIM800L


Når du har koblet SIM800L, 4-kanals relémodul og Arduino til datamaskinen, skriv inn koden nedenfor og du er ferdig.



#inkludere 

#inkludere

#define TIMEOUT 5000

#define AKTIV LAV

#define AV HØY



byte relé[] = {A0,A1,A2,A3};

byte StatRelay[4];

røyebuffNummer[20];

char currentLine[500] = "";

int currentLineIndex = 0;

bool nextLineIsMessage = usann;

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 >>> Les SMS automatisk");

gprs.preInit();

forsinkelse(1000);

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

forsinkelse(1000);

Serial.print("init errorrn");

}



// Administrer melding til modus ASCII

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

FEIL("FEIL:CNMI");

komme tilbake;

}

// Les innkommende SMS

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

FEIL("FEIL:CNMI");

komme tilbake;

}

int pjg = replyNumber.length() + 1;

buffNummer[pjg];

replyNumber.toCharArray(buffNumber,pjg);

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

Serial.println(buffNumber);

Serial.println("Initialisering ferdig");

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

}



void loop() {

// Endre status Relé PÅ / AV

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

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

}



// Hvis det er inndata fra SIM800

if (gprs.serialSIM800.available()) {

char lastCharRead = gprs.serialSIM800.read();



// Lagre alle data på lastCharRead, hvis det er r eller n, som et sluttsignal for innkommende melding

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

String lastLine = String(currentLine);



// Hvis den siste meldingen +CMT indikerer at ny melding kommer

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

Serial.println(lastLine);

nextLineIsMessage = sant;

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

if (nextLineIsMessage) {

Serial.println(lastLine);



// ================================================ ==== =================>> Funksjon til relékontrolleren



//Relé 1-kontroller



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

StatRelay[0] = AKTIF;

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

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

gprs.sendSMS(buffNumber, "Rele 1 Status Active");

}



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

StatRelay[0] = MATI;

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

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

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

}



//Relé 2-kontroller



if (lastLine.indexOf("Relé 2 PÅ") >= 0) {

StatRelay[1] = AKTIF;

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

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

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

}

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

StatRelay[1] = MATI;

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

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

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

}



//Relé 3-kontroller

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

StatRelay[2] = AKTIF;

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

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

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

}

else if (lastLine.indexOf("Relé 3 AV") >= 0) {

StatRelay[2] = MATI;

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

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

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

}



//Relé 4-kontroller

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

StatRelay[3] = AKTIF;

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

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

gprs.sendSMS(buffNumber, "Rele 1 Status Active");

}

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

StatRelay[3] = MATI;

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

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

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

}

nextLineIsMessage = usann;

}



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



}

//Tøm char array for neste leselinje

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

gjeldendeLine[i] = (char)0;

}

currentLineIndex = 0;

}

annet {

currentLine[currentLineIndex++] = lastCharRead;

}

}

}



Enhetssjekk


SMS-kontroller basert på SIM800L


Verktøyet fungerer ved å sende en SMS til SIM800L med en bestemt sekvens av tegn. For å slå på relé 1, bruk for eksempel kommandoen "Relé 1 PÅ", og for å slå den av, bruk kommandoen "Relé 1 AV". For de resterende reléene er kommandoene nesten de samme, bortsett fra sekvensnummeret til hvert relé du ønsker å påvirke. Etter automatisk sending av meldingen vil SIM800 sende et svar i form av en melding om statusen til hvert SIM-kort.

Video av montering, konfigurasjon og testing av enheten



Originalartikkel på engelsk
kom tilbake
Kommentar
  • sløyfesmillerrødmesmileyavslappet avslappettåpelig flir
    hjerteøynekyssende hjertekysser_lukkede_øynespyltlettetfornøydglise
    blunkestakk_ut_tunge_blinkende_øyestakk_ut_tunge_lukkede_øynegliserkyssingstakk_ut_tungesover
    bekymretrynker pannenfortviletåpne munnengrimasererforvirretstille
    uttrykksløstuforskammetsvette_smilsvetteskuffet_lettslitenpassiv
    skuffetforvirretengsteligkaldsvetteholde utgråtehulke
    gledeoverraskethylesliten_ansiktsintraseritriumf
    søvnignammaskesolbrillersvimmel_ansiktimpsmiling_imp
    nøytralt_ansiktno_mouthuskyldig
3+tre=
Kommentarer (4)
  1. qeeeq
    #1 qeeeq Gjester 26. august 2017 23:50
    0
    Wow! Som de sier, alt genialt er enkelt. Jeg trengte ikke engang å kjøpe noe, sannsynligvis har alle en haug med slikt søppel hjemme
  2. Alexei
    #2 Alexei Gjester 16. desember 2017 16:53
    0
    Virker ikke. Ved 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 Gjester 17. desember 2017 08:11
      0
      Du må bruke en sti uten russiske bokstaver til prosjektet.
  3. Andrey
    #4 Andrey Gjester 10. februar 2019 11:54
    2
    Det er mange feil i skissen. Det vil ikke fungere.