1 2 3 4 5 6 7 8 9 10 10/10 9,94оценок: 33

Arduino Mega. Контроллер теплицы. Хроники

Тема в разделе "Теплицы и парники", создана пользователем DIYMan, 05.01.16.

Статус темы:
Закрыта.
  1. Voron74
    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227

    Voron74

    Живу здесь

    Voron74

    Живу здесь

    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227
    Адрес:
    Магнитогорск
    @DIYMan, можете показать как у Вас подключается М590? желательно с фото. Т. к. приехала вот такая железка https://ru.aliexpress.com/item/DIY-KIT-GSM-GPRS-M590-gsm-module-Short-Message-Service-SMS-module-for-project-for-Arduino/32465149398.html хотелось бы потестить её.
     
  2. Old-Admiral
    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153

    Old-Admiral

    Живу здесь

    Old-Admiral

    Живу здесь

    Регистрация:
    30.03.16
    Сообщения:
    191
    Благодарности:
    153
    Судя по комментарию к модулю, простыми манипуляциями можно снизить пиковое потребление. Стало быть, просадок по питанию можно избежать.

    "У модуля нет HTTP, нет синхронизации часов по сети оператора, 3,3В логика, но работает с логикой 5В Ардуино. Надо припаять на входе между диодом и GND конденсатор 6,3В 1000мкФ, с ним пиковое потребление снизится с 2А до 0,6А. Для включения модуля пришлось припаять резистор 10кОм между ON/OFF и GND (19 и 20 пин)".
     
  3. Voron74
    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227

    Voron74

    Живу здесь

    Voron74

    Живу здесь

    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227
    Адрес:
    Магнитогорск
  4. Voron74
    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227

    Voron74

    Живу здесь

    Voron74

    Живу здесь

    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227
    Адрес:
    Магнитогорск
    Последнее редактирование: 26.04.16
  5. rapidshe
    Регистрация:
    19.01.16
    Сообщения:
    23
    Благодарности:
    12

    rapidshe

    Участник

    rapidshe

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    23
    Благодарности:
    12
    вот. фотки открыть в новом окне и увеличить
    вот smd резистор между указанными выше ногами
    gAQIxz2ltBc[1].jpg
    вот сюда паять кондер 3
    WvobiGuQVJI[1].jpg
    я припаял такой вот кондер со старой материнки
    P3tO1f1s7GI[1].jpg
     
  6. rapidshe
    Регистрация:
    19.01.16
    Сообщения:
    23
    Благодарности:
    12

    rapidshe

    Участник

    rapidshe

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    23
    Благодарности:
    12
    Я наконец то почти добил свою смс розетку. даже совершенно случайно в ашане "удлинитель" подходящий нашел.
    CR9cx1D1kEA[1].jpg
    места внутри полным полно. и жуть как не терпится доделать и перейти к следующей идее (3д принтер в голову пришел...)

    Иииии... Я тоже извиняюсь что поднимаю тему M590...
    не могу добиться чтоб стабильно отсылались длинные смски. иногда приходили вплоть до 160символов, но чаще приходят пустые... не пойму почему...
    кодировка текстовая.

    коме не лень читать много текста:
    короткие смс отправляются без проблем, а вот с длинными проблема...
    в кратце о скетче: смс розетка с различными режимами работаты...
    начальная настройка модуля
    Код:
     //настройка М590
      gsm.begin(9600);
      delay(200);
      gsm.println("AT+CSQ");          //вывести в терминал уровень сигнала (если 99, то связи нет)
      delay(200);
      gsm.println("AT+CMGD=0,3");
      delay(200);
      gsm.println("AT+CLIP=1");  //включаем АОН
      delay(200);
      gsm.println("AT+CMGF=1");  //режим кодировки СМС - обычный (для англ.)
      delay(200);
      gsm.println("AT+CSCS=\"GSM\"");  //режим кодировки текста
      delay(200);
      gsm.println("AT+CNMI=2,2");
      delay(200);
    функция отправки смс:
    Код:
    void smssend(String text, String phone) { //процедура отправки СМС
      Serial.println("SMS send started");
      gsm.println("AT+CMGS=\"" + phone + "\"");
      delay(500);
      gsm.print(text);
      delay(500);
      gsm.print((char)26);
      delay(5000);
      Serial.println("SMS send complete");
    }
    и формирование самого сообщения:
    прибавляем к строке, отправленной потом в модуль, кусок текста с поятоянной проверкой на длину сообщения. и если длина сообщения достигает указанного предела, сообщение отправляется, строка обнуляется и опять начинает заполнятся для следующей смски. опять же с проверкой на кол-во символов
    Код:
    void FullStatus() {
    sms = "";
      for(int i = 0; i <= numPins -1; i++) {
       val3 = "R";
       val3 += (i+1);
       switch (relayMode[i]) {
          case 1:{
                val3 += " manual ";
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                if (PinStatus[i]==ON) {val3 += "ON"; val3 +='\n';}
                else {val3 += "OFF"; val3 +='\n';}
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                }
          break;
          case 2:{
                 val3 += " heat ";
                 if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                 if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 val3 += ttarget1[i];
                 val3 += " ";
                 val3 += ttarget2[i];
                 val3 +='\n';
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                  }
          break;
          case 3:{
                 val3 += " cool ";
                 if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                 if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 val3 += ttarget1[i];
                 val3 += " ";
                 val3 += ttarget2[i];
                 val3 +='\n';
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                }
          break;
          case 4:{
                 val3 += " sign" ;
                 if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                 if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 val3 += "Ch";
                 val3 += signin[i];
                 val3 += " Lvl";
                 val3 += signlvl[i];
                 val3 +='\n';
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 }
          break;
          case 5:{
                 val3 += " time\n";
                 if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                 if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 val3 += "Int1";
                 for (int n = 0; n <= 6; n++)
                     {
                     if (dayon1[i][n] == true) val3 += "+";
                     else  val3 += "-";
                     }
                 val3 += " on ";
                 val3 += h1on[i];
                 val3 += ":";
                 val3 += m1on[i];
                 val3 += " off ";
                 val3 += h1off[i];
                 val3 += ":";
                 val3 += m1off[i];
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
    
                 val3 += "\nInt2";
                 for (int n = 0; n <= 6; n++)
                     {
                     if (dayon2[i][n] == true) val3 += "+";
                     else  val3 += "-";
                     }
                 val3 += " on ";
                 val3 += h2on[i];
                 val3 += ":";
                 val3 += m2on[i];
                 val3 += " off ";
                 val3 += h2off[i];
                 val3 += ":";
                 val3 += m2off[i];
                 val3 +='\n';
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 }
          break;
          case 6:{
                 val3 += " timer ";
                 if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                 if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 val3 += ((timerval[i]-rtc.getUnixTime(t))/60);
                 val3 += " min\n";
                if ((sms.length() + val3.length()) <= 130) {sms += val3; val3=""; }
                if ((sms.length() + val3.length()) > 130) { Serial.println(sms); smssend(sms, String("+79161112219")); sms = ""; sms += val3; val3=""; }
                 }
          break;
          }
      }
    Serial.println(sms);
    
    smssend(sms, String("+79161112219"));
    sms = "";
    }
    в монитор прилетает:
    Код:
    R1 cool 12 24 // этот кусок не приходит. приходит пустая смс
    R2 time
    Int1+++++++ on 9:29 off 9:30
    Int2+++++++ on 13:56 off 13:40
    R3 manual OFF
    R4 heat 14 28
    R5 timer 6762 min
    
    SMS send started
    SMS send complete
    R6 signCh1 Lvl1 //этот кусок приходит
    R7 signCh2 Lvl1
    
    SMS send started
    SMS send complete
    AAT+CMGS="+79161112219"
    >
    +CMGS: 3
    
    OK
    
    изначально пробовал отправлять смски длиной вплоть до 160символов и они приходили. далее происходили глюки...
    как видно в коде при формировании сообщения я снизил длину сообщения до 130символов и всёравно приходит пустое смс. короткая часть статуса приходит нормально. примечательно что изначально (при ограничении на длину сообщения в 155 символов) сообщения отправлялись нормально, а потом начали приходить пустые сообщения. я уменьшил ограничение до 145 символов и сообщения приходили нормально. потом опять начали приходить пустые сообщения. такое ощущение что где то забивается память. уже всячески пытался удалить смски с модуля...
    подскажите где копать?

    модуль доработан кондером 6.3в 3300
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    В коде. Строго говоря, вы не проверяете результат отработки команды, а просто ждёте полсекунды. Также и с отсылкой смс - просто ждёте полсекунды. Так не пойдёт, ибо вы не видите, чем занят модуль. Есть ситуации, когда он не может сразу отправить смс, соответственно, в этом может и быть затык. Вариант вижу один: переписывать код на конечные автоматы.
     
  9. rapidshe
    Регистрация:
    19.01.16
    Сообщения:
    23
    Благодарности:
    12

    rapidshe

    Участник

    rapidshe

    Участник

    Регистрация:
    19.01.16
    Сообщения:
    23
    Благодарности:
    12
    так то я хотел сделать ожидание "ОК" и потом только продолжать, но чтото не получилось с ходу и ставил задержку аш 10сек... и смс приходила пустая
     
  10. Voron74
    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227

    Voron74

    Живу здесь

    Voron74

    Живу здесь

    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227
    Адрес:
    Магнитогорск
    Т. е. исползуются ноги на зелененькой плате, I - мы не трогаем, T - это Тх, к 18му пину меги, R- это Rx через резисторы к земле и к 19му, V - VCCIO, к 10му пину и через резистор к земле, К - это на кнопку вкл/выкл, G- это на землю. И дополнительно конденсатор повесить для снижение пиковых нагрузок на 1,2 ноги самого м590го.
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Докладываю: проверил схему увлажнителя - работает. Опять наступил на детские грабли с разделёнными шинами питания на макетке - когда ж наконец я не буду в это вступать :mad: Перещупал всё, сто раз обозвал себя дубиной, потом сообразил переткнуть всё питание на одну половину и - вуаля.

    Дабы не курочить парогенератор и его БП вот так вот сходу, не проверив - решил протестировать на двух вентиляторах 12В, запитав их от компьютерного многострадального БП. Думаю, и на 24В должно взлететь, так что если кто попробует - буду рад отзывам.

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

    З. Ы. Кто разведёт платку? ;) Чую - пора мне ЛУТ осваивать, но сходу плату не разведу, хотя она реально простая вроде. Так что, вспоминая Шпака - жду :)]:aga:
     

    Вложения:

  12. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    В этой версии схемы вентилятор будет включаться (надеюсь просто включаться, а не ШИМ) вместе с увлажнителем ?
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Да, тупо вместе, и работать тоже, до прекращения подачи сигнала. На макетке проверил - управляется сигналом 5В, оба вентилятора стартуют и останавливаются, на другой стороне оптопары - 12В подавал. Думаю, и с 24В должно работать так же, во всяком случае - очень на это надеюсь :)
     
  14. Voron74
    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227

    Voron74

    Живу здесь

    Voron74

    Живу здесь

    Регистрация:
    29.01.16
    Сообщения:
    411
    Благодарности:
    227
    Адрес:
    Магнитогорск
    LM317 и КТ`шки в каком корпусе у вас? ТО-220
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

    Любопытный рукосуй :)

    DIYMan

    Любопытный рукосуй :)

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Сложный вопрос :) LM и 815-й - трёхногие здоровые, 315-й - рыжий трёхногий :) Звучит по-идиотски, конечно :) В общем, LM и 815-й - выглядят как на схеме нарисован LM.
     
Статус темы:
Закрыта.