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
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
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
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
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
Lignende mesterklasser
Særlig interessant
Kommentarer (4)