SMS контролер базиран на SIM800L
SIM800L V2.0 GSM/GPRS е четирибандов GSM/GPRS модул, съвместим с Arduino. Модулът се използва за реализиране на GSM (разговори и SMS) и GPRS функции. Предимството на този модул е TTL интерфейсът, който има напрежение от 5V, което ви позволява директно да го свържете към Arduino или всяка друга система с 5V захранващо напрежение. Повечето GSM/GPRS модули на пазара изискват регулаторни връзки или преобразуване на ниво, докато в SIM800L V.2 GSM/GPRS не изисква допълнителни схеми за преобразуване на ниво интерфейс.
Нека дадем пример за проект, използващ SIM800L V.2 GSM/GPRS. Целта на проекта е да се управляват превключватели с помощта на SMS контролер. Можете лесно да включвате и изключвате повечето домакински уреди в къщата, като лама, вентилатор и т.н.
Характеристики на SIM800L V.2 GSM/GPRS модул
По-долу са всички технически характеристики на SIM800L V.2 GSM/GPRS модул:
- TTL сериен интерфейс, съвместим с 3.3V и 5V Arduino съвместими микроконтролери.
- Модулът SIM800L има TTL сериен интерфейс.
- Щепсел за свързване на антената.
- Мрежова поддръжка: четири ленти 850/900/1800/1900 MHz, способни да извършват разговори, SMS и трансфер на данни със значително намалена консумация на батерия.
- VDD TTL UART интерфейс, така че можете директно да свържете MCU като 51MCU, ARM или MSP430.Щепселът VDD се използва за съпоставяне на TTL напрежението.
- Модел: SIMCOM SIM800L
- Работно напрежение: от 3.7V до 5V;
- размери: 40mm x 28mm x 3mm
- GPRS мултислот клас 12/10
- GPRS пакетна услуга клас B
- Съответства на GSM фаза 2/2+
- Клас 4 (2 вата при 850/900 MHz)
- Клас 1 (1Watt @ 1800/1900MHz)
Необходими материали
Ще имаш нужда:
1. SIM800L V.2 GSM/GPRS модул.
2. Ардуино Уно.
3. 4-канален 5V релеен модул.
4. Проводници - джъмпери.
5. Захранване 5V.
(Активни връзки към магазина за покупка)
Монтаж и конфигурация
След като свържете всички компоненти, създайте програма и след това я качете на вашия Arduino. Но първо трябва да инсталирате GPRS библиотеката, която можете да изтеглите:
gprs.zip
[28.02 Kb] (изтегляния: 887)
Програмен код за Arduino
След като свържете своя SIM800L, 4-канален релеен модул и Arduino към вашия компютър, въведете кода по-долу и сте готови.
#включи
#включи
#define TIMEOUT 5000
#define АКТИВНО НИСКО
#define OFF HIGH
байт реле[] = {A0,A1,A2,A3};
байт StatRelay[4];
char buffNumber[20];
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = невярно;
String replyNumber = "089510863958";
GPRS gprs;
void setup() {
for(int i=0; i < 4; i++) {
pinMode(Реле[i], ИЗХОД);
digitalWrite(Реле[i], MATI);
StatRelay[i] = MATI;
}
Serial.begin(9600);
докато (!Сериен);
Serial.println("Активиране на SIM800L V2 >>> Автоматично четене на SMS");
gprs.preInit();
забавяне (1000);
докато (0 != gprs.init()) {
забавяне (1000);
Serial.print("инициална грешкаrn");
}
// Управление на съобщение в режим ASCII
if (0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1rn", "OK", TIMEOUT)) {
ГРЕШКА("ГРЕШКА:CNMI");
връщане;
}
// Прочетете входящите SMS
if (0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0rn", "OK", TIMEOUT)) {
ГРЕШКА("ГРЕШКА:CNMI");
връщане;
}
int pjg = replyNumber.length() + 1;
buffNumber[pjg];
replyNumber.toCharArray(buffNumber,pjg);
Serial.print("Изпрати отговор на номер => ");
Serial.println(buffNumber);
Serial.println("Инициализацията е извършена");
Serial.println("=============================================== =============== =================");
}
void loop() {
// Промяна на статуса Реле ВКЛ./ИЗКЛ
for(int i=0; i < 4; i++) {
digitalWrite(Реле[i], StatRelay[i]);
}
// Ако има входни данни от SIM800
if (gprs.serialSIM800.available()) {
char lastCharRead = gprs.serialSIM800.read();
// Запазване на всички данни на lastCharRead, след това, ако има r или n, като последен сигнал за входящо съобщение
if (lastCharRead == 'r' || lastCharRead == 'n') {
String lastLine = String(currentLine);
// Ако последното съобщение +CMT показва пристигане на ново съобщение
if (lastLine.startsWith("+CMT:")) {
Serial.println(последен ред);
nextLineIsMessage = вярно;
} else if (lastLine.length() > 0) {
if (nextLineIsMessage) {
Serial.println(последен ред);
// ================================================== ==== ================>> Функция на релейния контролер
// Контролер на реле 1
if (lastLine.indexOf("Relay 1 ON") >= 0) {
StatRelay[0] = AKTIF;
Serial.print("Отговор====>>>> ");
Serial.println("Състоянието на реле 1 е активно");
gprs.sendSMS(buffNumber, "Състояние на реле 1 активно");
}
else if (lastLine.indexOf("Relay 1 OFF") >= 0) {
StatRelay[0] = MATI;
Serial.print("Отговор====>>>> ");
Serial.println("Състоянието на реле 1 е изключено");
gprs.sendSMS(buffNumber, "Състояние на реле 1 изключено");
}
// Контролер на реле 2
if (lastLine.indexOf("Relay 2 ON") >= 0) {
StatRelay[1] = AKTIF;
Serial.print("Отговор====>>>> ");
Serial.println("Състоянието на реле 2 е активно");
gprs.sendSMS(buffNumber, "Състояние на реле 2 активно");
}
else if (lastLine.indexOf("Relay 2 OFF") >= 0) {
StatRelay[1] = MATI;
Serial.print("Отговор====>>>> ");
Serial.println("Състоянието на реле 2 е изключено");
gprs.sendSMS(buffNumber, "Състояние на реле 2 изключено");
}
// Контролер на реле 3
if (lastLine.indexOf("Relay 3 ON") >= 0) {
StatRelay[2] = AKTIF;
Serial.print("Отговор====>>>> ");
Serial.println("Състоянието на реле 3 е активно");
gprs.sendSMS(buffNumber, "Състояние на реле 3 активно");
}
else if (lastLine.indexOf("Relay 3 OFF") >= 0) {
StatRelay[2] = MATI;
Serial.print("Отговор====>>>> ");
Serial.println("Състоянието на реле 3 е изключено");
gprs.sendSMS(buffNumber, "Състояние на реле 3 изключено");
}
// Контролер на реле 4
if (lastLine.indexOf("Relay 4 ON") >= 0) {
StatRelay[3] = AKTIF;
Serial.print("Отговор====>>>> ");
Serial.println("Състояние на реле 4 активно");
gprs.sendSMS(buffNumber, "Състояние на реле 1 активно");
}
else if (lastLine.indexOf("Relay 4 OFF") >= 0) {
StatRelay[3] = MATI;
Serial.print("Отговор====>>>> ");
Serial.println("Състоянието на реле 4 е изключено");
gprs.sendSMS(buffNumber, "Състояние на реле 4 изключено");
}
nextLineIsMessage = невярно;
}
// ================================================== ==== ===================>>
}
//Изчистване на масив от символи за следващ ред за четене
for ( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
}
иначе {
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
Проверка на устройството
Инструментът работи чрез изпращане на SMS до SIM800L с определена последователност от знаци. Например, за да включите реле 1, използвайте командата „Реле 1 ВКЛ.“, а за да го изключите, използвайте командата „Реле 1 ИЗКЛ.“. За останалите релета командите са почти същите, с изключение на поредния номер на всяко реле, на което искате да повлияете. След автоматично изпращане на съобщението, SIM800 ще изпрати отговор под формата на съобщение за състоянието на всяка SIM карта.
Видео за сглобяване, конфигуриране и тестване на устройството
Оригинална статия на английски език
Подобни майсторски класове
Особено интересно
Надграждане на стар музикален център в нов със собствените си ръце
Как да възстановите батерията на отвертка
Как сами да инсталирате Bluetooth във всяко радио за кола
Най-простият електрически велосипед „направи си сам“.
Не изхвърляйте старата си касета - превърнете я в power bank
Смяна на батериите на винтоверта
Коментари (4)