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

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

Тема в разделе "Теплицы и парники", создана пользователем Анкор Плюс, 19.05.18.

Статус темы:
Закрыта.
  1. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.963
    Благодарности:
    1.959

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.963
    Благодарности:
    1.959
    Адрес:
    г. Москва, Зеленоград.
    Для определения необходимого положения солнечной установки сначала нужно вычислить текущее положение Солнца относительно Ваших географических координат. Для Москвы это
    float Longitude = 37.12; /enter longitude here
    float Latitude = 55.59; /enter latitude here

    Также необходимо вычислить текущее время.

    Есть несколько программ вычисления положения Солнца на Ардуино. Можно найти в интернете.
    В результате мы получаем данные в градусах по горизонту и угла наклона относительно Солнца.

    Для контроля положения солнечной установки применяем электронный компас HMC5883L и гироскоп GY-521.(или GY-61 нужно уточнить, у меня подключены оба).

    Сравниваем расчетные данные положения Солнца и текущие данные солнечной установки. При расхождении вращаем солнечную установку до тех пор пока данные не совпадут. Естественно закладываем некоторую дельту что бы постоянно не вращать установку. Ну и как приложение дополнительно обвешиваем различными датчиками температуры и засветки для регулирования и анализа работы системы
     
  2. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    473
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    473
    Благодарности:
    46
    Модуль wifi датчиков зарботл. 85 исчезла их сколько может быть на один контроллер ?
    а почему в правилах нельзя управлять поливом ? только по расписанию. ?
    Просто вот мысль если температура резко упала, а полив стоит по расписанию. то что пипец всему ?
     
  3. id10960627
    Регистрация:
    09.05.18
    Сообщения:
    76
    Благодарности:
    8

    id10960627

    Живу здесь

    id10960627

    Живу здесь

    Регистрация:
    09.05.18
    Сообщения:
    76
    Благодарности:
    8
    Кажись заработало, даже с json разобрался как слать в брокер)
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891
    Адрес:
    80 км от Краснодара
    Любое разумное количество.
    Потому что модуль полива делает то же самое, плюс предоставляет возможность рулить поливом по влажности почвы, плюс - раздельное управление каналами, плюс - защитник полива.
    Для этого есть защитник полива - пины, за которыми следит модуль полива. Делаете правило: если температура упала ниже нужного значения, то выставить на пине 111 (например) - высокий уровень. Делаете второе правило: если температура выше какого-то значения - выставить на пине 111 низкий уровень. Включаете настройку USE_WATERING_GUARD. В WATERING_GUARD_PINS прописываете пин 111, в настройку срабатывания - высокий уровень. Всё - теперь если полив включен по расписанию, и на пине 111 будет высокий уровень (неважно, кто его установил) - полив тут же выключится.
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891
    Адрес:
    80 км от Краснодара
    Ну слава богу ;)
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891
    Адрес:
    80 км от Краснодара
    @promavto - Саш, с цифровой линейкой я в первом приближении разобрался, даже умудрился ничего не сжечь :)]:aga:

    Если ты готов принять участие в тестировании модуля контроля солнечной установки - то с завтрашнего дня приступаем. Алгоритм такой: за основу беру прошивку модуля метеостанции, nRF и RS-485 пока опускаем, делаем на LoRa - поскольку я таки подумал, что солнечная установка может стоять чёрт те где в стороне. Первой задачей с моей стороны - будет написать код отправки пока пустого пакета с данными с модуля на контроллер, а в контроллере, при включенной LORA_DEBUG - просто выводить в монитор порта, что пакет с данными от солнечной установки - принят. Далее - этот пакет надо будет наполнять данными, естественно. Далее - надо будет слать пакет с настройками с контроллера на модуль, при изменении настроек - это третий большой этап работ, который будет делаться после второго большого этапа работ - отображение настроек на TFT-экране.

    По каждому этапу от тебя потребуется тестирование, инструкции я, естественно, буду предоставлять. Твои вводные по кол-ву датчиков у меня на почте, если я правильно помню - оттуда и буду отталкиваться. Если все данные с датчиков вместятся в 23 байта полезной нагрузки пакета - будет вообще чудесно, не надо будет плясок с множеством пакетов. Но это я уже буду анализировать по кол-ву и типу данных, которые надо отсылать с модуля на контроллер.

    Короче: если готов приступить и плотно тестировать - то начинаем. Но надо иметь в виду - на это дело надо выделить неразрывную полосу времени, чтобы не скакать, как ужи на сковородке - если занимается этим функционалом - то надо его добивать и добивать. Это значит, что если я попросил тебя протестировать, ходят ли пакеты от модуля к контроллеру - ты должен постараться это сделать за короткое время.

    В общем, готовь стенд с подключенными LoRa, в ближайшее время я отпишусь по факту начала работ ;)

    Готов?
     
  7. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    @DIYMan, правку можно? При случаи добавить в веб "Время работы" сутки.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891
    Адрес:
    80 км от Краснодара
    Еси не забуду - прикручу ;)
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891
    Адрес:
    80 км от Краснодара
    Обновил на гитхабе, проверяй ;) Достаточно перекачать файл WEB/js/common.js
     
  10. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.963
    Благодарности:
    1.959

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.963
    Благодарности:
    1.959
    Адрес:
    г. Москва, Зеленоград.
    Ну удивил! Признаюсь, я решил пока не беспокоить тебя по этой теме, учитывая, что тебя постоянно дергают до озверения. :)]

    Итак по делу! Сегодня постараюсь собрать макет устройства. Впереди 12 дней "выходных" (за это время мне нужно собрать 10 контроллеров теплицы). Так что сможем протестировать. Я вчера заказал в Китае 5 плат модуля датчиков солнечной установки. На "халяву", новому клиенту первый заказ бесплатно, оплатить только пересылку. Руки чешутся, как бы еще пяток раз побыть "новым" клиентом.

    Постоянно звучит эта фраза. Вот что думаю по этому поводу. В контроллере теплицы, конечно, менять что то не имеет смысла. Но в последующих проектах протокол нужно немного модернизировать.
    За основу можно взять протокол XBee (IEEE 802.15.4. ZigBee и IEEE 802.15.4) или MODBUS.
    Идея в том что в начале пакета добавить пару байт количества пакетов в сообщении и номер текущего пакета. В связи с тем что пакеты могут передаваться по радио и возможны помехи при передачи, последним байтом должна быть контрольная сумма пакета. Если, к примеру, 5 пакетов не подтвердили контрольную сумму - значит связь плохая. Такая структура пакета немного уменьшит количество байт в пакете, но позволит передавать сообщения любой длины. Конечно, лучше применять какой либо стандартный протокол (много устройств сторонних производителей используют MODBUS). Это позволит подключать к нашей системе изделия сторонних производителей. Коды MODBUS для Ардуино у меня есть (применял в других приборах).
    Но я отвлекся. Готов на выходные поработать. :pioner:
     
  11. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.963
    Благодарности:
    1.959

    promavto

    Разработка контроллеров

    promavto

    Разработка контроллеров

    Регистрация:
    27.02.16
    Сообщения:
    1.963
    Благодарности:
    1.959
    Адрес:
    г. Москва, Зеленоград.
    Привет всем! Продолжу немного о программировании SIM800. Часто бывает что схема собрана вроде бы правильно, но подключаться к провайдеру не хочет. В этом случае имеет смысл проверить видит ли модуль СИМ карту. Фрагмент программы из библиотеки SIM800 чтения номера СИМ карты.
    Уточнение. Библиотека переработана мной под модуль SIM800. Кому нужна, пишите в личку.

    Код:
    bool CGPRS_SIM800::getSIMCCID()
    {
        if (sendCommandS(F("AT+CCID")) == 1)             // (sendCommand("AT+CCID", "OK\r", "ERROR\r") == 1)
        {     
            char *p = strstr(buffer, "\r");              //Функция strstr() возвращает указатель на первое вхождение в строку,
                                                         //Если совпадений не обнаружено, возвращается NULL.
            if (p)
            {
                p += 2;
                char *s = strchr(p, '\r');          // Функция strchr() возвращает указатель на первое вхождение символа ch в строку,
                                                    //на которую указывает str. Если символ ch не найден,
                                                    //возвращается NULL.
                if (s) *s = 0;   strcpy(buffer, p);
                int i=0;
    
                for (i=0;i<120;i++)
                {
                    if (buffer[i] == 'f')  break;
                    if (buffer[i] >= '0'&&buffer[i] <= '9') // если цифру найдено - то выводим ее
                    {
                        buffer1[i] = buffer[i];
                        Serial.print(buffer1[i]);
                    }
                }
                return true;
            }
        }
        return false;
    }
    
    Ну и дополнительно. Может кому пригодится. Каждый модуль SIM800 имеет свой уникальный номер IMEI. Получить его можно программой из библиотеки.

    Код:
    bool CGPRS_SIM800::getIMEI()
    {
      if (sendCommandS(F("AT+GSN")) == 1)               // (sendCommand("AT+GSN", "OK\r", "ERROR\r") == 1)
      {
        char *p = strstr(buffer, "\r");                 //Функция strstr() возвращает указатель на первое вхождение в строку,
                                                        //на которую указывает str1, строки, указанной str2 (исключая завершающий нулевой символ).
                                                        //Если совпадений не обнаружено, возвращается NULL.
          if (p)
          {
            p += 2;
             char *s = strchr(p, '\r');                 // Функция strchr() возвращает указатель на первое вхождение символа ch в строку,
                                                        //на которую указывает str. Если символ ch не найден,
                                                        //возвращается NULL.
             if (s) *s = 0;   strcpy(buffer, p);
             return true;
          }
      }
      return false;
    }
     
  12. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    473
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    473
    Благодарности:
    46
    Попробывал на живую работу с nrf. участок 8 соток дом с основным контроллером - посредине примерно, деревянный - работает в радиусе 5-8 метров. полное г... .Ну по крайней мере те что были у меня. Даже не знаю имеет ли смысл пробывать те, что с антенной.
    Очень конечно не хватает исполнительного модуля на wifi /
    Дмитрий попутный вопрос про wifi - если поднять роутер как репитер точки teplica чтобы расширить зону покрытия. Должно работать ? Ну хотя бу в теории ?
     
  13. evgeny1241
    Регистрация:
    07.07.16
    Сообщения:
    473
    Благодарности:
    46

    evgeny1241

    Живу здесь

    evgeny1241

    Живу здесь

    Регистрация:
    07.07.16
    Сообщения:
    473
    Благодарности:
    46
    Начал настраивать правила. Выяснил что данные с датчиков от wifi модуля в веб морде в температуре видны. Один оставил с индексом, второй переименовал. Так вот в правилах они не доступны.
    Дим если надо дам доступ к веб морде

    Или это у меня старая веб морда ?

    p/s обновил вебморду. датчики с вай фая не доступны для выбора в правилах.
    в конфигураторе вроде все есть и работает.
    если создать правило в конфигураторе - срабатывает. смотриш через веб морду поле индекс датчика пустое
     
    Последнее редактирование: 29.04.19
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.891
    Адрес:
    80 км от Краснодара
    Будет работать, почему нет. Это стандартный метод расширения зоны покрытия.
    А я предупреждал ;) Лучше LoRa, пмсм.
    Так просто исполнительный модуль на Wi-Fi - не сделать, из-за особенностей протокола Wi-Fi - там надо держать постоянный коннект, что недопустимо из-за ограниченного кол-ва слотов для клиентов у ESP. Я думаю над этим вопросом, но он - сложный.
    Возможно, там стоит проверка на кол-во датчиков - дело в том, что датчики с Wi-Fi модуля добавляются динамически, и нигде не фигурируют как имеющиеся в контроллере (такое происходит при регистрации модуля с датчиками в системе, а модуль Wi-Fi с датчиками - не нуждается в регистрации). Я посмотрю веб-морду, и если поправить можно будет быстро - поправлю.
     
  15. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    Будет, как-то на 40км линк кидал, с одной промежуточной. Но 2.4 очень от метео условий зависит, бывало в тумане 10 метров в прямой видимости не пробивает, для стабильности лучше на лору перейти.
     
Статус темы:
Закрыта.