PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Модемы GSM (http://pccar.ru/forumdisplay.php?f=168)
-   -   Arduino + GSM (http://pccar.ru/showthread.php?t=25719)

Xellow 14.02.2017 23:48

Спасибо за наводки - буду курить). Кое что из этого уже видел. Sim800 заказал 2-й версии с питанием 5В. С нетерпением жду подарков от братьев-китайцев)), чтоб начать экскрименты..

defed 25.02.2017 18:46

Xellow. Привет.Как успехи? Пришел модуль? Заказал тоже 5 вольтовый sim800l хочу запускать webasto по звонку с нужного номера. Очень интересует вопрос перехода в спящий режим с минимальным энергопотреблением.

skanch 25.02.2017 19:08

Цитата:

Сообщение от defed (Сообщение 382959)
Очень интересует вопрос перехода в спящий режим с минимальным энергопотреблением.

Вот же выше lti1 выкладывал ссылку... Готовое решение, только подставить свои параметры.
PHP код:

/*   arduino       SIM800L
       D2           RING
       D4            TX
       D5            RX
       D6           DTR     */

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
#include "call.h"
#include <avr/sleep.h>
#include <avr/power.h>
 
int pin 2// подключается к ring пину gsm модуля
int relay 9// реле
byte stat=0;

SMSGSM sms;
CallGSM call;

void setup(){
set_sleep_mode(SLEEP_MODE_STANDBY); //Определяем режим сна
pinMode(pinINPUT);
digitalWrite(pin,HIGH);

     
pinMode(6OUTPUT); // к DTR пину GSM модуля
     
digitalWrite(6,LOW); // пробуждаем GSM модуль
     
     
pinMode(relayOUTPUT);
     
digitalWrite(relay,HIGH);

     
Serial.begin(115200);
     
Serial.println("GSM test.");
      
     if (
gsm.begin(2400)) {
          
Serial.println("\nstatus=READY");
          
     } else 
Serial.println("\nstatus=IDLE");
     
     
delay(300);

     
gsm.SimpleWrite(F("AT+CSCLK=1"));
     
gsm.SimpleWriteln("");

}

void loop(){

stat=call.CallStatus();
      
    if(
stat==CALL_INCOM_VOICE) {
 
//     Serial.println("CALL!!!");
    //  sms.SendSMS("+79371662772", "Vipolneno!");
      
digitalWrite(relay,LOW);
      
delay(2000);
      
digitalWrite(relay,HIGH);
      
call.HangUp(); // Кладем трубку
    
}

  
digitalWrite(6,HIGH); // вырубаем GSM модуль
  
EnterSleep(); //Пора спать
    
}

void wakeUp()
{
  
Serial.println("WakeUp"); //Проснулись
  
detachInterrupt(0); //Отключаем прерывания 
  
digitalWrite(6,LOW); // пробуждаем GSM модуль
  
delay(500);
}

void EnterSleep()
{
  
attachInterrupt(0wakeUpLOW); //Если на 0-вом прерываниии - ноль, то просыпаемся.
  
delay(100);
 
  
sleep_enable(); //Разрешаем спящий режим
  
sleep_mode(); //Спим (Прерывания продолжают работать.) Программа останавливается.
  
sleep_disable(); //Запрещаем спящий режим



Xellow 26.02.2017 18:58

Нет пока не приехал SIM800(( жду. Приведённый выше скетч, рассматриваю как базовый, для последующего допиливания.

Xellow 26.02.2017 22:04

Со спящим режимом SIM 800 v2 пролёт - 5ти вольтовая версия его похоже не поддерживает - нет пина DTR(((

defed 27.02.2017 06:16

Вот это пролет... Может напрямую к модулю можно подключиться. Даташит нужно изучить.

skanch 27.02.2017 15:25

Во второй версии спящий режим реализован немного по другому (это одно из отличий от предыдущей версии и можно обойтись без DTR).
Ниже выдержка-перевод из даташита.

"4.3.4.
Спящий режим 2 (Sleep Mode 2) (команда "AT+CSCLK=2") (это новый режим и его нет в V1.0)
В этом режиме, SIM800H&SIM800L будет постоянно отслеживать последовательный порт данных сигнала. При отсутствии передачи данных в течение 5 секунд на (пине)RXD или нет сигнала и нет в эфире аппаратных прерываний (например, GPIO interrupt), SIM800H&SIM800L переходит в режим сна 2 автоматически. В этом режиме SIM800H/L по-прежнему может получать оповещения или SMS из сети .


4.3.5.
Пробуждение SIM800H&SIM800L из спящего режима 2.

Когда SIM800H&SIM800L находится в спящем режиме 2 (Sleep Mode 2) (команда "AT+CSCLK=2"), следующие методы могут разбудить модуль:

: Отправить данные на SIM800H&SIM800L через основной последовательный порт .
: Входящий звонок или передача данных из сети.
: Входящее SMS из сети."

Сам не проверял - нужно пробовать.

defed 27.02.2017 19:18

skanch,спасибо будем побывать по приезду. отпишемся по результату))

Xellow 02.03.2017 19:39

skanch, Присоединяюсь, спасибо огромное - появилась надежда)))

Xellow 11.03.2017 12:37

Добрый день. Не могу найти как сформулировать условие выполнения команды по СМС только от одного заданного номера, код из примера - как хотелось бы видеть...

void getsms()
{
sms.GetSMS(pos,n,20,smsbuffer,160);
//Serial.println(n); //номер входящей СМС
//Serial.println(smsbuffer); //текст сМС
input_string =String(smsbuffer);
if ((n) != (n1)) - //Если номер входящей СМС не соответствует заданному (char n1[] = "+79XXXXXXXXX";)
{
sms.DeleteSMS(pos); - //Удаляем эту СМС
delay(1000);
}


Собственно вопрос - как правильно сформулировать выделенное цветом условие?


Часовой пояс GMT +4, время: 00:04.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot