SMS-kontroller baserad på SIM800L
SIM800L V2.0 GSM/GPRS är en fyrbands GSM/GPRS-modul kompatibel med Arduino. Modulen används för att implementera GSM (samtal och SMS) och GPRS-funktioner. Fördelen med denna modul är TTL-gränssnittet, som har en spänning på 5V, vilket gör att du kan ansluta den direkt till Arduino eller något annat system med en 5V matningsspänning. De flesta GSM/GPRS-moduler på marknaden kräver regulatoranslutningar eller nivåkonvertering, medan GSM/GPRS i SIM800L V.2 inte kräver ytterligare gränssnittsnivåkonverteringskretsar.
Låt oss ge ett exempel på ett projekt som använder SIM800L V.2 GSM/GPRS. Poängen med projektet är att styra switchar med en SMS-styrenhet. Du kan enkelt sätta på och stänga av de flesta hushållsapparater i huset, som ett lamadjur, en fläkt och så vidare.
Egenskaper för SIM800L V.2 GSM/GPRS-modulen
Nedan är alla tekniska egenskaper hos SIM800L V.2 GSM/GPRS-modulen:
- TTL seriellt gränssnitt kompatibelt med 3,3V och 5V Arduino-kompatibla mikrokontroller.
- SIM800L-modulen har ett TTL seriellt gränssnitt.
- Antennanslutningskontakt.
- Nätverksstöd: fyra band 850/900/1800/1900 MHz, kapabel att ringa samtal, SMS och dataöverföringar med avsevärt reducerad batteriförbrukning.
- VDD TTL UART-gränssnitt, så att du kan ansluta MCU direkt som 51MCU, ARM eller MSP430.VDD-kontakten används för att matcha TTL-spänningen.
- Modell: SIMCOM SIM800L
- Driftspänning: från 3,7V till 5V;
- mått: 40mm x 28mm x 3mm
- GPRS multislot klass 12/10
- GPRS-pakettjänst klass B
- Överensstämmer med GSM fas 2/2+
- Klass 4 (2 Watt @ 850/900 MHz)
- Klass 1 (1 Watt @ 1800/1900MHz)
Nödvändigt material
Du kommer att behöva:
1. SIM800L V.2 GSM/GPRS-modul.
2. Arduino Uno.
3. 4-kanals 5V relämodul.
4. Trådar - byglar.
5. Strömförsörjning 5V.
(Länkar aktiva till butiken för köp)
Montering och konfiguration
När du har anslutit alla komponenter, skapa ett program och ladda sedan upp det till din Arduino. Men först måste du installera GPRS-biblioteket, som du kan ladda ner:
gprs.zip
[28,02 Kb] (nedladdningar: 887)
Programkod för Arduino
När du har anslutit din SIM800L, 4-kanals relämodul och Arduino till din dator, skriv in koden nedan och du är klar.
#omfatta
#omfatta
#define TIMEOUT 5000
#define ACTIVE LOW
#define AV HÖG
byte Relä[] = {A0,A1,A2,A3};
byte StatRelay[4];
röding buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
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("Aktivera SIM800L V2 >>> Läs SMS automatiskt");
gprs.preInit();
fördröjning(1000);
while (0 != gprs.init()) {
fördröjning(1000);
Serial.print("init errorrn");
}
// Hantera meddelande till läge ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
ERROR("FEL:CNMI");
lämna tillbaka;
}
// Läs inkommande SMS
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
ERROR("FEL:CNMI");
lämna tillbaka;
}
int pjg = replyNumber.length() + 1;
buffNumber[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Skicka svar till nummer => ");
Serial.println(buffNumber);
Serial.println("Initiering klar");
Serial.println("============================================== =================================");
}
void loop() {
// Ändra status Relä PÅ / AV
for(int i=0; i < 4; i++) {
digitalWrite(Relay[i], StatRelay[i]);
}
// Om det finns indata från SIM800
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Spara all data på lastCharRead, sedan om det finns r eller n, som en slutsignal för inkommande meddelande
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String(currentLine);
// Om det sista meddelandet +CMT indikerar kommer nytt meddelande
if (lastLine.startsWith("+CMT:")) {
Serial.println(lastline);
nextLineIsMessage = sant;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(lastline);
// ================================================ ==== =================>> Funktion för reläkontroller
//Relay 1 Controller
if (lastLine.indexOf("Relä 1 PÅ") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Svara====>>>> ");
Serial.println("Relä 1 status aktiv");
gprs.sendSMS(buffNumber, "Relä 1 Status Aktiv");
}
else if (lastLine.indexOf("Relä 1 AV") >= 0) {
StatRelay[0] = MATI;
Serial.print("Svara====>>>> ");
Serial.println("Relä 1 Status Av");
gprs.sendSMS(buffNumber, "Relä 1 Status Av");
}
//Relay 2 Controller
if (lastLine.indexOf("Relay 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Svara====>>>> ");
Serial.println("Relä 2 Status aktiv");
gprs.sendSMS(buffNumber, "Relay 2 Status Active");
}
else if (lastLine.indexOf("Relay 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Svara====>>>> ");
Serial.println("Relä 2 Status Av");
gprs.sendSMS(buffNumber, "Relay 2 Status Off");
}
//Relay 3 Controller
if (lastLine.indexOf("Relay 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Svara====>>>> ");
Serial.println("Relä 3 status aktiv");
gprs.sendSMS(buffNumber, "Relay 3 Status Active");
}
else if (lastLine.indexOf("Relay 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Svara====>>>> ");
Serial.println("Relä 3 Status Av");
gprs.sendSMS(buffNumber, "Relay 3 Status Off");
}
//Relay 4 Controller
if (lastLine.indexOf("Relay 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Svara====>>>> ");
Serial.println("Relä 4 status aktiv");
gprs.sendSMS(buffNumber, "Relä 1 Status Aktiv");
}
else if (lastLine.indexOf("Relay 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Svara====>>>> ");
Serial.println("Relä 4 Status Av");
gprs.sendSMS(buffNumber, "Relay 4 Status Off");
}
nextLineIsMessage = false;
}
// ================================================ ==== ====================>>
}
//Rensa char array för nästa rad av läsning
for ( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
}
annat {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Enhetskontroll
Verktyget fungerar genom att skicka ett SMS till SIM800L med en specifik teckensekvens. Till exempel, för att slå på relä 1, använd kommandot "Relay 1 ON" och för att stänga av det, använd kommandot "Relay 1 OFF". För de återstående reläerna är kommandona nästan desamma, förutom sekvensnumret för varje relä som du vill påverka. Efter att ha skickat meddelandet automatiskt kommer SIM800 att skicka ett svar i form av ett meddelande om status för varje SIM-kort.
Video av montering, konfiguration och testning av enheten
Originalartikel på engelska
Liknande mästarklasser
Särskilt intressant
Kommentarer (4)