Помогите с GSM сигнализацией.

Тема в разделе "Arduino & Shields", создана пользователем Юрий71, 27 янв 2017.

  1. Юрий71

    Юрий71 Нерд

    https://yadi.sk/d/15_arnirzxzds помогите найти ошибку. Скетч не комперируется. Пробовал несколько раз,ну с моим багажом знаний в этой области все без успешно. И как вписать туда ещё 2датчика движения,и датчик удара?
     
  2. Airbus

    Airbus Радиохулиган Модератор

    Скетч в студию!
     
    Юрий71 нравится это.
  3. Юрий71

    Юрий71 Нерд

    Я там в начале ссылку дал. По ссылке нужно зайти.Простите,ну я низнаю как его сюда разместить. Я пишу с планшета,а программа чтоб скетч открыть,открывается у меня только на компьютере
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Ответил в личку.Что собтраетесь использовать?GSM шилд старенький Сименс или Neoway590?
     
  5. Юрий71

    Юрий71 Нерд

    Сим800. Три датчика движения,один геркон,один датчик удара
     
  6. Юрий71

    Юрий71 Нерд

    По возможности если получится чтобы каждый датчик движения посылал смс о зоне срабатывания. Чтоб знать с какой стороны подходить к домику. Датчик удара на стекло,тоже чтоб присылал что имени стекло разбито,и датчик двери. А чтоб ставилась и снималась по звонка. Вот пытался тот скетч примастырить подисвои нужды,а он не компилируется.......
     
  7. Airbus

    Airbus Радиохулиган Модератор

    Ваш Скетч
    Код (C++):

    #include "SIM900.h"
    #include <SoftwareSerial.h>
    #include "sms.h"
    #include "call.h"
    SMSGSM sms;
    CallGSM call;

    //=================Пины 2 и 3 для Подключения GSM модуля

    int sensor1=0;
    int flag1=0;
    boolean started=false;
    char smsbuffer[160];
    char n[20];
    String n1 = "+79170417032";
    String input_string = "";
    String smsContent = "";
    char sirena[] = "Sirena  vkluchena!";
    char PowerOFF[] = "Snyato s ohrani";
    char smsDv[] ="Wnimaniye! Dvijeniye na objekte!";
    char smsW[] ="Postanovka na ohranu!";
    char pos;
    char sendsms[160];

    void setup() {
    pinMode(10, OUTPUT); // Пассивный зумер (сигнал)
    pinMode(7, OUTPUT);

    Serial.begin(9600);
      pinMode(4, INPUT); // датчик движения
    //  digitalWrite(4, HIGH);
      pinMode(5, INPUT); // еще какой-нибудь датчик
    //  digitalWrite(5, HIGH);

           if (gsm.begin(4800)) {
              Serial.println("\nstatus=READY");
              started=true;
         } else Serial.println("\nstatus=IDLE");

    }
    void loop() {

    //===========================Первое срабатывание датчика движения
      if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==0){
        n1.toCharArray(n,20);
        sms.SendSMS(n, smsDv);               // Посылаем СМС о том, что есть движение
        sms.DeleteSMS(1);memset(n,0,20);
        char smsbuffer[160]="";
        flag1++;
        delay(5000); // Ждем 5 секунд
      }
    //===========================Повторное срабатывание датчика движения
      if ((digitalRead(5)==HIGH) && sensor1==1 && flag1==1){
        n1.toCharArray(n,20);
        sms.SendSMS(n, sirena);            // Посылаем СМС о том, что включена сирена
        sms.DeleteSMS(1);memset(n,0,20);
        char smsbuffer[160]="";
        flag1++;
      }

      if (flag1>=2){
        tone(10, 2780, 200); // Сирена
      }


    pos = sms.IsSMSPresent(SMS_UNREAD); // смотрим непрочитанные СМС
          if (pos) {                    // Если непрочитанные СМС есть, то...
         
    getsms(); // получаем непрочитанную СМС

         if (input_string=="0"){Serial.print("Snyato s ohrani!");n1.toCharArray(n,20); sms.SendSMS(n, PowerOFF); sms.DeleteSMS(1);memset(n,0,20); // Команда "0" - снять с охраны
         sensor1=0;digitalWrite(7,LOW);input_string=""; char smsbuffer[160]=""; flag1=0;}
       
         if (input_string=="1"){Serial.print("Postanovka na ohranu!");n1.toCharArray(n,20); sms.SendSMS(n, smsW); sms.DeleteSMS(1); memset(n,0,20); // Команда "1" - Поставить на охрану
         sensor1=1; input_string=""; char smsbuffer[160]=""; flag1=0;}
         
            sms.DeleteSMS(pos); // удаляем СМС  из симки
          }
    }
    void getsms()
    {
    sms.GetSMS(1,n,20,smsbuffer,160);
    input_string =String(smsbuffer);
              }
     
  8. Airbus

    Airbus Радиохулиган Модератор

    У меня скомпилировался. Единственный косяк нашёл:библиотеку под названием GSM-GPRS-GPS-Shield-GSMSHIELD_ переименовать В SIM900 (она по идее так и называется!) и положить её в папку C:\Program Files\Arduino\libraries (или где там у вас установлена Ардуина?) главное в папку libraries. Перед этим естественно надо всё разархивировать.В переименованной папке SIM900 должны быть сишные файлы и папка examples!
     
    Последнее редактирование: 28 янв 2017
  9. Юрий71

    Юрий71 Нерд

    Огромное спасибо! Действительно все компилируется и проблема была лишь в этом. Ковырялся внутри,а все было на поверхности, в этой библиотеке :((
    Я правильно понял,чтобы вписать ещё несколько датчиков движения нужно добавлять сюда -
    Serial.begin(9600);
    pinMode(4, INPUT);// датчик движения
    // digitalWrite(4, HIGH);
    pinMode(5, INPUT);// еще какой-нибудь датчик
    // digitalWrite(5, HIGH);
    то же самое только с другими номерами пинов?

    pinMode(6, INPUT);// датчик движения 3
    // digitalWrite(6, HIGH);
    pinMode(7, INPUT);// датчик удара
    // digitalWrite(7, HIGH);
    Как то так?
     
  10. Airbus

    Airbus Радиохулиган Модератор

    Так точно!Я в железе не проверял проверьте и отпишитесь как работает думаю Народу будет интересно.А Serial.begin(9600); ещё раз зачем?Уже в сетапе есть?
     
  11. Юрий71

    Юрий71 Нерд

    По интернету заказывал запчасти,ещё не все пришли. У меня на руках ардуина и датчики движения,сам модуль сим 800. Как соберу - обязательно отпишусь! Как вписать в программу чтоб смс приходила с уточнением, т.е. когда разобьтется стекло и приходит смс " разбито стекло", или когда сработал один из датчиков движения приходит смс " движение 1" (1- один из определённых датчиков)? И можно ли вообще ставить и снимать сигнализацию по звонку,а не по смс?
     
  12. Юрий71

    Юрий71 Нерд

    Подскажите пожалуйста ответ на дурацкий вопрос. Для автономной работы этой сигнализации хочю её запитать от мотоциклетного акомулятора(там гдето12.8в) можно ли сразу на ардуину ,на пин vin подключить? Или надо какой-то "понижатель" применить? И снизить вольт до 8-9? И можно запитать сим 800 от модуля для зарядки литиевых акомуляторов? Там4,2в он выдаёт. По даташиту это верхний придел для сим800.
     
    Последнее редактирование: 29 янв 2017
  13. Юрий71

    Юрий71 Нерд

    подскажите пожалуйсто будет ли оно работать? я тут переделал скетч под работу нескольких датчиков.
     

    Вложения:

  14. Radius

    Radius Гик

    Проверить это можно только одним способом - зашить скетч и убедиться, что все работает так как вы запрограммировали ;).
     
  15. Юрий71

    Юрий71 Нерд

    доброго времени суток,я имел виду на ошибки посмотреть. Я сейчас немного переделывал скетч, Jedi помогает. Вроде чего-то прорисовывается. Модуль понижающий для сим 800еще не пришол,по этому проверить как работает ни могу. Сейчас пытаюсь выводить данные на экран. Пока ни очень получается... Это мой первый проект,я до этого ни знал даже как ардуино выглядит...