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

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

  1. Третья, это файл для редактирования приложения в ап инверторе, там нужно написать свой номер телефона
     
  2. kadr142

    kadr142 Нуб

    Именно свой №, не шилдовский? И название устройств я там тоже поменяю? Я правильно понял? Буду стараться осилить, огромное спасибо!!!!
     
  3. В приложении номер, который стоит в GSM, а в коде, номер телефона. Можно все поменять в ап инверторе для приложения
     
  4. kadr142

    kadr142 Нуб

    Баба Вера, как говорит молодёжь, респект тебе и уважуха! У меня всё в ап инверторе получилось на ура ! Не хочу показаться назойливым , но если появятся вопросы, можно ли будет обращаться?
     
  5. Чем смогу, тем помогу
     
  6. kadr142

    kadr142 Нуб

    ОК
     
  7. Что то вышло?
     
  8. kadr142

    kadr142 Нуб

    Пока туго. Не доходит до меня куда на ардуинке RX и TX от GSM модуля втыкать то ли пины 1,2 то ли 7,8... Код читал ничего не понял пока. И потом на 9 пине включение GSM , что это? У меня два модуля SIM800L и SIM808, пытаюсь использовать более простой 800, куда на него включение загонять не пойму. Вывод из спящего режима? Знаний маловато конечно, но я стараюсь...
     

    Вложения:

  9. Все ж ясно по рисунку, 7пин ардуино на тх модуля, а 8 пин на рх модуля. 9 пин это программное включение модуля, не кнопкой вручную, а программно, его нужно подать на вцц (плюс) модуля, гнд (минус) пин ардуино подать на гнд модуля. Скачать библиотеку на сим 800 и поставить в ардуино папку. В коде поменять на сим 800.
     
  10. kadr142

    kadr142 Нуб

    Благодарю, буду дерзать...
     
  11. Что то вышло?
     
  12. kadr142

    kadr142 Нуб

    Пока со временем напряжёнка, постепенно продвигаюсь.. 9 пин с ардуино получается будет питать модуль? А по току потянет?На питание ардуино подал 12 вольт 2А. Модуль ведь потребляет прилично и потом он когда включается не пойму, ведь он должен находиться в режиме ожидания смс. У 800 в цепи питания стоит стабилизатор ещё, диапазон питания у него от 3,8 до 4,2 вольта, выставил 4,0 вольта. Сейчас разбираюсь с библиотекой. Я ведь могу добавить её через импорт библиотек, либо забросить непосредственно в папку, правильно? Есть у меня подозрение, что ардуино тупит. Датчик 22 у меня один всего, думаю в случае оживления, он выдаст параметры на соответствующий пин. Пробовал задействовать его с кодом температуры и LCD, всё работает t и влажность показывает. Задал вопрос автору блога на 47 странице, он пишет, что модуль модулю рознь (это понятно) вообщем надо разобраться и подумать... Чуть не поздравил тебя с 8 марта, согласись ник необычный..... Как только к чему то приду обязательно отпишусь...
     
  13. сделал я баланс на валдай, показывает в приложении, трудностей с разными операторами никаких нет
     
  14. У меня ответ оператора такой
    +CUSD: 0,"Stan konta: 4.03 zl. Konto wazne do 05-03-2019 +1 miesiac na odbiera nie Ekstra zlotowki 0.0 zl", ниже код для отображения счета в приложении, у меня показывает между двойным пробелом перед 4.03 и между словом Konto, что указал в коде. В валдае старый код проверки счета закоментил и убрал в условии Запрос, туда вписал следующее
    Код (C++):

    if (gprsSerial.available()) {
        char currSymb = gprsSerial.read();


        Serial.print(currSymb);

        //  return;
        //  char currSymb = gprsSerial.read();
        //  Serial.println(gprsSerial.read());



        if ('\r' == currSymb) {

          if (isStringMessage) {
            //если текущая строка - SMS-сообщение,
            //отреагируем на него соответствующим образом
            if (!currStr.compareTo("Zapros"))
            {
             gprsSerial.print("ATD*101#\r"); // делаем запрос баланса (мтс), а ответ ловится в блоке ниже...

              GetDatchik();
            }
            else if (currStr.startsWith("Ardu")) {
              ParseSMS(currStr);
            }
     
            isStringMessage = false;
          } else {
            if (currStr.startsWith("+CMT")) {
              //если текущая строка начинается с "+CMT",
              //то следующая строка является сообщением
              isStringMessage = true;
            }
            if(currStr.startsWith("+CUSD: 0,")) // этот блок отлавливает ответ на запрос баланса и отправляет его смской
                        {
                          bal = currStr.substring(currStr.indexOf("  "),currStr.indexOf(" Konto"));// именно здесь ловим то, что хотим для отображения
                   
                 
                           Serial.println();
                   
                        }
          }

          currStr = "";

        } else if ('\n' != currSymb) {
          currStr += String(currSymb);
        }
      }
    //само сообщение отправляется в воид гет датчик
      statusHome = String("Valdai") + String(";") + int(u1st) + String(";") + float(t1) + String(";") + float(h1) + String(";") + int(u2st) + String(";") + float(t2) + String(";") + float(h2) + String(";") + int(u3st) + String(";") + float(t3) + String(";") + float(h3) + String(";") + int(u4st) + String(";") + float(t4) + String(";") + float(h4) + String(";") +  int(unit5status) + String(";") + int(isPerimetr) + String(";") + int(autoTemp) + String(";") + String(bal) + String(";") + float(t5) + String(";") + int(svetsost);
    delay(3000);//дал задержку для успевания ловли счета
      sendTextMessage(statusHome);
     
    поменял все инт на флоат, теперь температура и влажность отображается более точно. И еще пришлось программно корректировать датчик, так как врал на 1,4 градуса, сверял со ртутным float t1 = dht1.readTemperature()-1.4; Показывает счет со второго раза, потом все стабильно, не знаю, может с задержкой поиграться надо. Еще опрос состояния питания сделал в прерывании, можно и в основном коде, но прерыванием полезнее, смс шлется при отключении раз и при включении раз
    Код (C++):

    void setup()
    {


      TCCR1A = 0;
      TCCR1B =  (1 << WGM12) | (1 << CS10) | (1 << CS12); // предделитель 1024
      TIMSK1 |= (1 << OCIE1A);
      OCR1A = 0x4E;

      sei();}
    ISR (TIMER1_COMPA_vect)
    {sostPower = digitalRead(power);
    }
    void loop()
    {
    if (sostPower == HIGH) { //Проверка включения внешнего питания
        if (sendSMSPow == LOW) {
          sendTextMessage("POWER ON!");
          delay(100);
          sendSMSPow = HIGH;


        }
      }

      else {

        sendSMSPow = LOW;
      }
       // Контроль внешнего питания

      if (sostPower == LOW) { //Проверка отключения внешнего питания
        if (sendSMSPow == LOW) {
          sendTextMessage("POWER OFF!");
          delay(100);
          sendSMSPow = HIGH;

        }
      }

      else {

        sendSMSPow = LOW;
      }
    }
     
    5в на проверку питания нужно дать на соответсвующий вход и подтянуть к минусу через 300Ом, работает как надо. Все что касается периметра, и проверки включенности модуля, закоментил, не использую. Исправил код с дельтой, теперь при температуре равной и выше установленой, нагрузка отключается, а не, как в валдае и в стиварте, при выше 2 градусов от установленой выключается, ну здесь кому как удобно
    Код (C++):
     else if  (t1 >= autoTemp)
          {
            digitalWrite(unit1, LOW);
            us1 = 1;

          }
    вот ответы в смс при первом включении приходит смс Power On, далее включил нагрузку, далее запрос, первый раз счета нет, при втором запросе есть, проверка выключения и включения питания и в самом приложении, пока все на макетке, но все работает. В самом приложении в апп инверторе поменял только телефон и кнопки Вкл. Screenshot_2018-03-26-21-55-00-1.png Screenshot_2018-03-26-21-13-18-1.png Screenshot_2018-03-26-21-10-29.png Screenshot_2018-03-26-21-10-59.png Screenshot_2018-03-26-21-11-22.png
     
    Последнее редактирование: 26 мар 2018
  15. GSM73

    GSM73 Нуб

    Вот что получилось у меня!
     

    Вложения:

  16. GSM73

    GSM73 Нуб

    Вот доделал! В следующие выходные на дачу поеду ставить!
     

    Вложения:

  17. YanTV

    YanTV Нерд

    Оригинально! Пины на GSM модуле смажь токопроводящей смазкой! Иначе очень быстро окислятся и пропадет контакт! Проверено на своих проектах.
     
  18. IvanUA

    IvanUA Гуру

    Я стараюсь колодки для подключения к реле поворачивать как можно ближе к краю платы, да и не только реле, вообще все колодки стараюсь выносить край (ребро) устройства и в идеале на один край. Тогда и внешние провода будет легче крепить и плата не будет похожа на паука в паутине))))))))))
     
  19. Все красиво, вижу аккумы, бесперебойник? Если да, то как работает, без перегруза ардуино?
     
  20. Alba

    Alba Нерд

    Всем привет! Вопрос есть такой!!! Хочу переделать ВАЛДАЙ на Теплицу. Что бы реле включалось при авто температуры свыше заданного порога,а не наоборт как тут на обогрев. Что тут меняем?
    Подскажите пожалуйста! Благодарность гарантирую!
     

    Вложения: