SMS-controller gebaseerd op SIM800L
SIM800L V2.0 GSM/GPRS is een quad-band GSM/GPRS-module die compatibel is met Arduino. De module wordt gebruikt om GSM (bellen en SMS) en GPRS-functies te implementeren. Het voordeel van deze module is de TTL-interface, deze heeft een spanning van 5V, waardoor je hem direct kunt aansluiten op Arduino of ieder ander systeem met een voedingsspanning van 5V. De meeste GSM/GPRS-modules op de markt vereisen regelaarverbindingen of niveauconversie, terwijl bij SIM800L V.2 GSM/GPRS geen extra conversiecircuits op interfaceniveau vereist.
Laten we een voorbeeld geven van een project dat SIM800L V.2 GSM/GPRS gebruikt. Het doel van het project is om schakelaars te bedienen met behulp van een SMS-controller. De meeste huishoudelijke apparaten in huis, zoals een lama, een ventilator, enzovoort, kunt u eenvoudig aan- en uitzetten.
Kenmerken van de SIM800L V.2 GSM/GPRS-module
Hieronder staan alle technische kenmerken van de SIM800L V.2 GSM/GPRS-module:
- TTL seriële interface compatibel met 3,3V en 5V Arduino-compatibele microcontrollers.
- De SIM800L-module heeft een TTL-seriële interface.
- Antenne-aansluitstekker.
- Netwerkondersteuning: vier banden 850/900/1800/1900 MHz, geschikt voor bellen, sms'en en gegevensoverdracht met een aanzienlijk lager batterijverbruik.
- VDD TTL UART-interface, zodat u direct MCU zoals 51MCU, ARM of MSP430 kunt aansluiten.De VDD-stekker wordt gebruikt om de TTL-spanning aan te passen.
- Model: SIMCOM SIM800L
- Bedrijfsspanning: van 3,7 V tot 5 V;
- afmetingen: 40 mm x 28 mm x 3 mm
- GPRS-multislot klasse 12/10
- GPRS-pakketdienst klasse B
- Voldoet aan GSM fase 2/2+
- Klasse 4 (2 Watt @ 850/900 MHz)
- Klasse 1 (1Watt @ 1800/1900MHz)
Benodigde materialen
Je hebt nodig:
1. SIM800L V.2 GSM/GPRS-module.
2. Arduino Uno.
3. 4-kanaals 5V relaismodule.
4. Draden - jumpers.
5. Voeding 5V.
(Links actief naar de winkel voor aankoop)
Montage en configuratie
Nadat je alle componenten hebt aangesloten, maak je een programma en upload je dit naar je Arduino. Maar eerst moet u de GPRS-bibliotheek installeren, die u kunt downloaden:
gprs.zip
[28.02 Kb] (downloads: 887)
Programmacode voor Arduino
Nadat u uw SIM800L, 4-kanaals relaismodule en Arduino op uw computer hebt aangesloten, voert u de onderstaande code in en bent u klaar.
#erbij betrekken
#erbij betrekken
#define TIME-OUT 5000
#define ACTIEF LAAG
#define UIT HOOG
byterelais[] = {A0,A1,A2,A3};
byte StatRelais[4];
char buffNummer[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
String antwoordnummer = "089510863958";
GPRS-gprs;
ongeldige setup() {
for(int i=0; ik < 4; ik++) {
pinMode(Relais[i] , UITGANG);
digitalWrite(Relais[i], MATI);
StatRelais[i] = MATI;
}
Serieel.begin(9600);
terwijl(!Serieel);
Serial.println("Activeer SIM800L V2 >>> SMS automatisch lezen");
gprs.preInit();
vertraging(1000);
terwijl (0 != gprs.init()) {
vertraging(1000);
Serial.print("initfoutrn");
}
// Beheer bericht in ASCII-modus
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIME-OUT)) {
FOUT("FOUT:CNMI");
opbrengst;
}
// Lees inkomende sms
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIME-OUT)) {
FOUT("FOUT:CNMI");
opbrengst;
}
int pjg = antwoordnummer.lengte() + 1;
buffNummer[pjg];
antwoordNumber.toCharArray(buffNumber,pjg);
Serial.print("Verzend antwoord naar nummer => ");
Serieel.println(buffNumber);
Serial.println("Initialisatie voltooid");
Serial.println("=========================================== =============== =================================================================================================================================== ===
}
lege lus() {
// Status wijzigen Relais AAN / UIT
for(int i=0; ik < 4; ik++) {
digitalWrite(Relais[i], StatRelais[i]);
}
// Als er invoergegevens van SIM800 zijn
als (gprs.serialSIM800.beschikbaar()) {
char lastCharRead = gprs.serialSIM800.read();
// Bewaar alle gegevens op lastCharRead, en als er r of n is, als eindsignaal van een inkomend bericht
als (laatsteCharRead == 'r' || laatsteCharRead == 'n') {
String laatsteLijn = String(huidigeLijn);
// Als het laatste bericht +CMT aangeeft dat er een nieuw bericht is aangekomen
if (lastLine.startsWith("+CMT:")) {
Serieel.println(laatsteregel);
nextLineIsMessage = waar;
} anders als (lastLine.length() > 0) {
als (nextLineIsMessage) {
Serieel.println(laatsteregel);
// =============================================== ==== ================>> Functie van relaiscontroller
//Relais 1-controller
if (lastLine.indexOf("Relais 1 AAN") >= 0) {
StatRelais[0] = AKTIF;
Serial.print("Antwoord====>>>> ");
Serial.println("Status relais 1 actief");
gprs.sendSMS(buffNumber, "Status relais 1 actief");
}
else if (lastLine.indexOf("Relais 1 UIT") >= 0) {
StatRelais[0] = MATI;
Serial.print("Antwoord====>>>> ");
Serial.println("Status relais 1 uit");
gprs.sendSMS(buffNumber, "Relais 1 Status Uit");
}
//Relais 2-controller
if (lastLine.indexOf("Relais 2 AAN") >= 0) {
StatRelais[1] = AKTIF;
Serial.print("Antwoord====>>>> ");
Serial.println("Relais 2-status actief");
gprs.sendSMS(buffNumber, "Status relais 2 actief");
}
else if (lastLine.indexOf("Relais 2 UIT") >= 0) {
StatRelais[1] = MATI;
Serial.print("Antwoord====>>>> ");
Serial.println("Status relais 2 uit");
gprs.sendSMS(buffNumber, "Relais 2 Status Uit");
}
//Relais 3-controller
if (lastLine.indexOf("Relais 3 AAN") >= 0) {
StatRelais[2] = AKTIF;
Serial.print("Antwoord====>>>> ");
Serial.println("Status relais 3 actief");
gprs.sendSMS(buffNumber, "Status relais 3 actief");
}
else if (lastLine.indexOf("Relais 3 UIT") >= 0) {
StatRelais[2] = MATI;
Serial.print("Antwoord====>>>> ");
Serial.println("Status relais 3 uit");
gprs.sendSMS(buffNumber, "Status relais 3 uit");
}
//Relais 4-controller
if (lastLine.indexOf("Relais 4 AAN") >= 0) {
StatRelais[3] = AKTIF;
Serial.print("Antwoord====>>>> ");
Serial.println("Status relais 4 actief");
gprs.sendSMS(buffNumber, "Status relais 1 actief");
}
else if (lastLine.indexOf("Relais 4 UIT") >= 0) {
StatRelais[3] = MATI;
Serial.print("Antwoord====>>>> ");
Serial.println("Status relais 4 uit");
gprs.sendSMS(buffNumber, "Relais 4 Status Uit");
}
nextLineIsMessage = false;
}
// =============================================== ==== ===================>>
}
// Wis de char-array voor de volgende leesregel
for ( int i = 0; i < sizeof(currentLine); ++i ) {
huidigeLijn[i] = (char)0;
}
currentLineIndex = 0;
}
anders {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Apparaatcontrole
De tool werkt door een sms naar de SIM800L te sturen met een specifieke reeks tekens. Om bijvoorbeeld relais 1 in te schakelen, gebruikt u het commando “Relais 1 AAN” en om het uit te schakelen gebruikt u het commando “Relais 1 UIT”. Voor de overige relais zijn de opdrachten vrijwel hetzelfde, behalve het volgnummer van elk relais dat u wilt beïnvloeden. Nadat het bericht automatisch is verzonden, stuurt SIM800 een reactie in de vorm van een bericht over de status van elke simkaart.
Video van montage, configuratie en testen van het apparaat
Origineel artikel in het Engels
Soortgelijke masterclasses
Bijzonder interessant
Een oud muziekcentrum met uw eigen handen opwaarderen naar een nieuw
Hoe de batterij van een schroevendraaier te herstellen
Zo installeer je zelf Bluetooth in elke autoradio
De eenvoudigste doe-het-zelf-elektrische fiets
Gooi uw oude cartridge niet weg, maar verander hem in een powerbank
Batterijen van schroevendraaiers vervangen
Opmerkingen (4)