Управление отоплением в загородном доме (GSM)

Тема в разделе "Глядите, что я сделал", создана пользователем Вячеслав, 6 дек 2012.

  1. scort

    scort Нерд

    Да при мониторе порта похоже происходит сброс, но после добавления в код
    void setup()
    {
    pinMode(powerGSM, OUTPUT);
    digitalWrite(powerGSM, LOW);
    delay(1000);
    //Включаю GSM Модуль
    digitalWrite(powerGSM, HIGH);
    delay(6000);
    .....

    опять заводится, я это и имел ввиду когда написал что надо в другой последовательности делать хай лоу т.к у меня тоже шилд по выложенному скечу все время отключался.

    [​IMG]
     
  2. rull

    rull Нерд

    А если так делать, то нужно инициализировать заново шилд! Тут вопрос наверное нужно решать с питанием, чтоб от одного источника запускался и шилд и мега. А немного выше, когда я писал про светодиод в коде есть косячек, если разорвать периметр приходит 1 раз смс. Далее нужно передергивать питание. Чтоб этого не происходило нужно перевести флаг в false, то есть логический 0.
    // Контроль периметра!!!
    if (isPerimetr) { //Проверка Включен ли контроль периметра
    digitalWrite(greenLed, HIGH);
    sostPerimetr = digitalRead(perimetr);
    if (sostPerimetr==LOW) { //Проверка на разомкнутый периметр
    digitalWrite(greenLed, LOW);
    delay(200);
    digitalWrite(greenLed, HIGH);
    delay(200);
    //и отсылаем СМС
    if (sendSMS==false){
    sendTextMessage("WARNING! The perimeter of the broken!");
    sendSMS=true;
    }
    }
    } else {
    digitalWrite(greenLed, LOW);
    sendSMS=False; // Вот этот флаг
    }
    При таком раскладе если сработал периметр, придется включать и выключать охрану периметра. Просто мне так удобней. С целью экономии денег на смс исли что то заглючит.
    Я чуть позже выложу steward, там я дописал прослушку устройства и проверка баланса устройства. И надписи переделал под себя. Да и еще баланс будет работать только в столичном регионе, точнее с номерами из столичного региона.
     
  3. wmweb

    wmweb Нуб

    Здравствуйте!
    Пишу второй раз может поможете
    Обнаружил один недостаток в работе, при отправке любого смс на это устройство с любого другого
    телефона, даже при пополнении баланса сим карты приходит смс, включаются все нагрузки и охрана периметра.
    Подскажите пожалуйста как доработать скетч чтобы этого не происходило
     
  4. rull

    rull Нерд

    Проверял на своем шилде, такого у меня не происходит. Может инициализация не успевает проходить, попробуйте delay увеличить 200 мили секунд.
     
  5. scort

    scort Нерд

    Попробуй поменять "код" начала строки управляющей sms т.к это слишком частое описание для начала строки.
    например
    else if (currStr.startsWith("0")||currStr.startsWith("1")) {
    ParseSMS(currStr);
    заменить на
    else if (currStr.startsWith("#todo#") {
    ParseSMS(currStr);

    и управляющую строку смс отправлять начиная с "#todo# 1;20;0;1;1;1;1"

    а может и напряжения питания не хватает, и после нагрузки ввиде смс идет ресет
     
    svkn нравится это.
  6. wmweb

    wmweb Нуб

    Спасибо что откликнулись на мою просьбу
    Самопроизвольное включение всех нагрузок и периметра
    происходит не сразу а после того как сам несколько раз
    включишь и выключишь нагрузку и периметр
    я заметил что в этом случае приходят смс типа

    58;24;1;1;1;1;1;1;0;-13520;STEWARD
    58;24;1;1;1;1;1;1;0;-9661;STEWARD

    А вот если я сам включаю

    58;24;1;1;1;1;1;1;0;0;STEWARD

    Обратите внимание на последнее число перед STEWARD
     
  7. scort

    scort Нерд

    А смс`ки в ручную на устройство отсылаются или через STEWARD ?
    Похоже не глюк STEWARDа при формировании смс.
    Или по 1 варианту что дуина берет информацию из левых смс типа MMS или шилд неправильно инициализируется и не читает нормально смс
     
  8. wmweb

    wmweb Нуб


    Когда происходит самопроизвольное включение я отправляю смс с любым текстом с другого номера и с другого оператора

    а когда отправляю через STEWARD то все нормально
    в этом и вся загвоздка , если например я поставлю это устройство на
    управление отоплением и прийдет случайное смс типа рекламы или спама или уведомление о
    пополнении баланса, самопроизвольно могут включится все отопители
     
  9. scort

    scort Нерд

    ну точно надо менять "устанавливать" контрольное слово в начале управляющей СМС, скеч вылавливает управляющую строку в мусоре.
     
  10. wmweb

    wmweb Нуб

    Тогда придется переделывать и скеч и steward?
     
  11. scort

    scort Нерд

    конечно
     
  12. wmweb

    wmweb Нуб

    Может можно изменить скетч чтобы он реагировал
    только на определенный номер телефона а другие
    просто игнорировал бы? И не трогать steward
    а то я в програмировании 0.
     
  13. scort

    scort Нерд

    самое простое изменить скеч как я показывал и не пользоваться steward, формировать управляющую строку вручную.
    Я даже примерно не знаю что менять в steward т.к не устанавливал его, просто переделал скеч на реакцию на осмысленные СМС, типа "status" "alarm on" "heating off" и т.д
    Но с 0 уровнем наверное будет сложно.
     
  14. rull

    rull Нерд

    Еще раз все проверил у себя, включал отключал нагрузки и периметр, такого у меня не происходит!!! Судя по смс которое к вам приходит, впечатление падает, что в буфере появляется какой то глюк. Попробуйте мегу заменить. Если она на панельке трудов много не составит. А если инициализация шилда не проходила то он вообще не реагировал бы на смс.
     
  15. scort

    scort Нерд

    Да нее, мега все это из левых смс считывает в которых почему-то содержатся ";"

    В скече четкое условие если строка начинается с 1 и 0 то парсим СМС на управляющую строку
    else if (currStr.startsWith("0")||currStr.startsWith("1")) {
    ParseSMS(currStr);

    А что он там напарсит из рекламы или ммски большой вопрос ; )
     
  16. Purumpumpum

    Purumpumpum Нуб

    Наконец-то приехали все детальки, собирал пол дня =)
    GSM шилд отказывался стартовать по этому скетчу, было выяснено, что мой шилд скорей всего включается по 8 ноге и ребутится по 9-ой. Также странное реле, в покое на нём должна быть 1, а для включения меняем на 0. Не пойму этой логики, из-за этого путаница с лампочками.

    И ещё у меня вопрос по контролю периметра, на ногу заводить +5 или +3,3?
     
  17. flyteran

    flyteran Нерд

    Вячеслав,добрый день!!!!У меня есть вопрос по автоответу этого девайса http://www.aliexpress.com/snapshot/235137396.html не берет трубку!!!Запускаю монитор порта в программе ардуино пробегает на автопрокрутке краказябра типо y и все.Плата не понимает её.Наверное должно писать RING чтобы выполнить автоподнятие? перемычки установленны с завода SW_RX, SW_TX. Слышна мелодия и все,так постоянно.Автоподнятие не работает. Не пойму где ошибка- железо или программа не подходит для этого шилда.
     
  18. rull

    rull Нерд

    В скетче нет команды в инициализации модема поднять трубку ! Чтоб дописать нужно добавить команду ATS0=6 в строку инициализации , 6 это число гудков, после которых автоматически снимется трубка.
    // Настраиваем приём сообщений с других устройств
    // Между командами даём время на их обработку
    gprsSerial.print("AT+CMGF=1\r");
    delay(300);
    gprsSerial.print("AT+IFC=1, 1\r");
    delay(300);
    gprsSerial.print("AT+CPBS=\"SM\"\r");
    delay(300);
    gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
    delay(500);
    gprsSerial.print("ATS0=6\r");
    delay(300);
     
    Последнее редактирование: 22 янв 2014
  19. lerik2703

    lerik2703 Гик

    проверти скорость соединения шилд => ардуино , ардуино => сериал монитор !
    тогда модем не привяжешь к конкретному номеру!
     
  20. rull

    rull Нерд

    А зачем его привязывать, люди которые звонят очень долго трубку не держат думаю 8 гудков будет достаточно. Да и номер кроме Вас ни кто не знает.