![SMS-controller baseret på SIM800L](https://i.washerhouse.com/uploads/posts/2017-08/1502428235_1.jpg)
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](https://i.washerhouse.com/uploads/posts/2017-08/1502428236_2.jpg)
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](https://i.washerhouse.com/uploads/posts/2017-08/1502428303_3.jpg)
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](https://i.washerhouse.com/uploads/posts/2017-08/1502428243_4.jpg)
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](https://i.washerhouse.com/uploads/posts/2017-08/1502428233_5.jpg)
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