Тема: Arduino + GSM
Показать сообщение отдельно
Старый 25.02.2017, 19:08   #13
skanch
Модератор
 
Аватар для skanch
 
Регистрация: 19.01.2010
Возраст: 58
Город: Санкт-Петербург
Регион: 78, 98
Сообщений: 2,608
skanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant futureskanch has a brilliant future
По умолчанию

Цитата:
Сообщение от defed Посмотреть сообщение
Очень интересует вопрос перехода в спящий режим с минимальным энергопотреблением.
Вот же выше 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(); //Запрещаем спящий режим

skanch вне форума   Ответить с цитированием