Выход сигнала датчика на D4
Растяжка D2 - GND
D7 - TX GSM
D8 - RX GSM
GND Arduino - GND GSM
BOOT GSM - GND GSM
Код: Выделить всё
При включении модем выдает
MODEM:STARTUP
через 10-15 секунд
+PBREADY // телефонная книга готова
at // проверка работы модуля
OK
AT+CCID // id приемника
+CCID: 89701011150364160697
AT+cops? // оператор
+COPS: 0,0,"MTS-RUS"
AT+CREG?
+CREG: 0,1 // Зарегистрирован в домашней сети
OK
AT+CSQ // качество сети
+CSQ: 20,1
AT+CLIP=1 // вкл определитель номера
OK
AT+IPR=<скорость предачи> : 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/сек
AT+CMGR=2 // читать 2 смс
+CMGR: "REC UNREAD","+79151911150","","19/01/05,14:54:47+18"
Privet
AT+CSCS="GSM" // выставить кодировку
OK
AT+CMGF=1 // текстовый формат
AT+CPWROFF // выключить модем
ATD*100# // баланс
ATD+79630749105; // позвонить
*111*0887# // узнать номер телефона МТС
Код: Выделить всё
#include <SoftwareSerial.h>
SoftwareSerial gsm(7, 8); // RX, TX
void modemOFF(){
digitalWrite(5, HIGH);
delay(10);
gsm.println("AT+CPWROFF");
}
void modemON(){
digitalWrite(5, LOW);
delay(10);
//while(!gsm.find("+PBREADY"));
}
void setup(){
Serial.begin(9600);
Serial.println("Arduino ON");
gsm.begin(9600); /// незабываем указать скорость работы UART модема
pinMode(5, OUTPUT); /// нога BOOT на модеме
pinMode(2, INPUT_PULLUP); /// нога на растяжку
pinMode(4, INPUT); /// нога на датчик
digitalWrite(5, LOW); /// включаем модем, для проверки.
/// !!! при подачи питания, нужно надавить на ресет ардуины,
/// !!! модем при включении может просадить питание и ардуина не стартанет
while(!gsm.find("+PBREADY")); /// при включении ждем готовность модема
Serial.println("M590E ON");
//modemOFF(); /// и выключаем модем
}
void loop() {
if (digitalRead(2) || digitalRead(4)){ /// если оборвали растяжку
if (digitalRead(2)) Serial.println("OPEN_door_alarm");
if (digitalRead(4)) Serial.println("RIP_sensor_alarm");
modemON(); /// включаем модема
/* while(1){ // ждем подключение модема к сети
Serial.println("AT+COPS?");
gsm.println("AT+COPS?");
if (gsm.find("0")) break;
delay(500);
}*/
/////////////////////// звоним по указаному номеру
Serial.println("call");
gsm.println("ATD+79151911110;");
delay(100);
if (gsm.find("OK")) Serial.println("ATD+OK!");
while(1){ // проверяем готовность модема, ждем сброс вызова
gsm.println("AT+CPAS");
if (gsm.find("0")) break;
delay(100);
}
/////////////////// и\или отправляем SMS
/* gsm.println("AT+CMGF=1");
delay(100);
gsm.println("AT+CSCS=\"GSM\"");
delay(100);
gsm.println("AT+CMGS=\"79991112233\"");
// даем команду на отправку смс delay(100);
gsm.print("111"); // отправляем текст
gsm.print((char)26); // символ завершающий передачу
Serial.println("SMS ok");
delay(100);
while(1){ // проверяем готовность модема
gsm.println("AT+CPAS");
if (gsm.find("0")) break;
delay(100);
} */
delay(10000);
Serial.println("FULL_OFF!");
//modemOFF(); /// выключаем модем,
while(digitalRead(2)); /// останавливаем прогу
delay(1000);
Serial.println("Alarm_ON!"); //
}
if (gsm.available())
Serial.write(gsm.read());
if (Serial.available())
gsm.write(Serial.read());
}