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
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
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
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
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
Lignende mesterklasser
Spesielt interessant
Kommentarer (4)