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

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

Тема в разделе "Умный дом", создана пользователем Анкор Плюс, 27.04.17.

Статус темы:
Закрыта.
  1. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Да - пока с модулем полива не расширял настройки канала в плане старта работы - остались часы по прежнему. Приделаю потихоньку - там и конфигуратор надо пилить, и вебморду, небыстрое дело.
     
  2. YRA26
    Регистрация:
    09.01.16
    Сообщения:
    160
    Благодарности:
    71

    YRA26

    Живу здесь

    YRA26

    Живу здесь

    Регистрация:
    09.01.16
    Сообщения:
    160
    Благодарности:
    71
    Я, понимаю, что это уже слишком, но есть ли возможность предусмотреть сохранение крайних настроек на карте, а по команде переносить на EEPROM
     
  3. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Мне кажется, что сохранение в EEPROM всё же более правильно, но в дальнейшем - посмотрим, что и как. Как видите - формат хранения настроек меняется регулярно, из-за всех допиливаний/переделываний, поэтому сейчас писать подобный функционал - преждевременно. Скоро формат настроек опять поменяется, как переделаю настройки полива в части задания времени начала полива в минутах - опять геморрой, но как есть. Всё это потому, что EEPROM - не файловая система, я не могу там юзать отдельные файлики и быть уверенным, что информация никогда друг на друга не наложится - приходится работать в рамках линейной адресации, и тут - главная закавыка: добавил байт в одну структуру, и всё, что лежит после этой структуры - сдвинулось на байт, следовательно - эти настройки уже неправильно прочитаются. Отсюда - пляски со слетанием настроек.

    Короче, будем думать ;)
     
  4. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Вот эта няшка (Arduino DUE): https://ru.aliexpress.com/item/DUE-2012-R3-Board-AT91SAM3X8E-ARM-32-Bit-for-Arduino-with-Data-Cable-Set/32677999805.html?spm=2114.03010208.3.26.UbdqaX&ws_ab_test=searchweb0_0,searchweb201602_3_10152_10065_10151_10068_5010015_10136_10137_10157_10060_10138_10155_10062_10156_437_10154_10056_10055_10054_10059_303_100031_10099_10103_10102_10096_10169_10147_10052_10053_10142_10107_10050_10051_5020018_10084_10083_10119_10080_10082_10081_10110_519_10111_10112_10113_10114_10037_10182_10185_10033_10032_10078_10079_10077_10073_10123_10120_10127_142_10125,searchweb201603_2,ppcSwitch_5&btsid=6aaecf25-f3a0-4afe-8ee3-58c31c8b949b&algo_expid=cb2cbef3-1407-4d9e-84ad-8a7aa627a0c7-3&algo_pvid=cb2cbef3-1407-4d9e-84ad-8a7aa627a0c7

    По гребёнкам сомвестима с мегой, но 84 МГц и вообще - много вкусного дополнительно. Ну и в разрезе нашего проекта у неё самое большое достоинство - много оперативки, следовательно - можно смело увеличивать количество правил в несколько раз.

    Короче, постановляю :)]:aga:: как только разберёмся с текущей прошивкой - надо будет портировать её на DUE. А в проекте отладочной платы можно будет оставить совместимость по штырям, только переразводить кой-чего придётся, возможно. Но это потом уже посмотрим, что называется.

    И да, что самое, на мой взгляд, привлекательное - вот под эту платку уже имеет смысл заюзать семидюймовый TFT-дисплей, с полноценным меню: на меге я это дело игнорирую, т. к. всё будет меееедленно и печально в части перерисовки ;)

    Не баловался никто ещё новым модулем полива? Я под него хочу сделать отдельный экранчик для LCD, чтобы там вкл/выкл каналы полива - надо будет попробовать, посмотреть, как впишется в текущую одноэкранную концепцию управления. Если есть пожелания по этой части - пишите.
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Обновил на гитхабе - приделал старт начала полива в формате "часы:минуты". Соответственно, перепилена прошивка, конфигуратор, вебморда. В вебморду также вынес управление каналами полива по отдельности - всё, конечно, страшненькое и без дизайна, но работает.

    В конфигураторе вроде учёл все возможные косяки с вводом значений (для руления каналами по отдельности время начала полива на канале вводится просто в текстовое поле, в формате "чч:мм") - но кто знает, что полуночник типа меня мог там ещё пропустить. В общем - если что - сообщите, надеюсь ;)

    Всё, формат настроек теперь в ближайшее время меняться не будет, достало самого уже :( Так что можно смело перепрошиваться ;)

    Ещё что хочется - перепилить морду конфигуратора, уже ничего тудыть не помещается, надо интерфейс менять, делать на весь экран. Ну и с вебмордой было бы классно в будущем таки что-то сделать в плане хоть какого дизайна (впрочем, это вопрос будущего, я там много где ещё нормальные контролы не впилил - юзаю jQuery. UI, но, как бы это сказать - половинчато :), надо это исправлять, чтобы решение выглядело целостным; тоже работы рутинной много будет, однако).

    ESP-12, кстати, повкуснее будет, чем ESP-01 - кажется, что работает поустойчивей и пошустрее (ттт).

    З. Ы. С управлением каналами полива с LCD-экрана пока ничего не решил, ибо неясно - надо ли кому сие добро. Понятное дело, что TFT какой-нибудь семидюймовый будет лучче, но это уже под DUE, ибо мегу насиловать непосильной задачей - жалко :)
     
  6. Viktorovich4232
    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95

    Viktorovich4232

    Живу здесь

    Viktorovich4232

    Живу здесь

    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95
    @DIYMan, Добрый день!
    Не могу вникнуть в ваш код в части преобразования данных с аналогового пина от датчика PH. Дело в том что плата усилителя датчика у меня другая. При более высоком PH выдает меньше милливольтметрами на выходе и наоборот. При PH=7 на выходе 2500 милливольт при увеличении PH напряжение падает а при уменьшении наоборот растет
    Если не напряжно объясните по какому алгоритму у Вас построено преобразование.
    if (inMeasure)
    {
    / в процессе замера
    if (samplesDone >= PH_SAMPLES_PER_MEASURE)
    {
    / набрали нужное кол-во семплов
    samplesTimer = 0;
    inMeasure = false;
    measureTimer = 0;

    / теперь преобразуем полученное значение в среднее
    float avgSample = (dataArray*1.0)/samplesDone;

    / теперь считаем вольтаж
    float voltage = avgSample*5.0/1024;

    / теперь получаем значение pH
    unsigned long phValue = voltage*350;
    Humidity h;

    if (avgSample > 1000)
    {
    / не прочитали ничего из порта
    }
    else
    {
    h. Value = phValue/100;
    h. Fract = phValue%100;
    }

    / сохраняем состояние с датчика
    State. UpdateState (StatePH,0,(void*)&h);

    samplesDone = 0;

    } / if (samplesDone >= PH_SAMPLES_PER_MEASURE)
    else
    {
    / ещё набираем семплы
    samplesTimer += dt; / обновляем таймер
    if (samplesTimer > PH_SAMPLES_INTERVAL)
    {
    / настало время очередного замера
    samplesTimer = 0; / сбрасываем таймер
    samplesDone+; / увеличиваем кол-во семплов

    / читаем из порта и запоминаем прочитанное
    dataArray += analogRead (phSensorPin);

    } / PH_SAMPLES_INTERVAL

    } / else

    } / inMeasure
    else

    Непонятно:
    / теперь считаем вольтаж
    float voltage = avgSample*5.0/1024;

    / теперь получаем значение pH
    unsigned long phValue = voltage*350;
    Humidity h;
     
  7. Viktorovich4232
    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95

    Viktorovich4232

    Живу здесь

    Viktorovich4232

    Живу здесь

    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95
  8. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Если вы хотите получить обратную зависимость, то вроде как, достаточно unsigned long phValue = 1/voltage*350*X; X - это коэффициент который надо подобрать
     
  9. Viktorovich4232
    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95

    Viktorovich4232

    Живу здесь

    Viktorovich4232

    Живу здесь

    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95
    Не могу въехать почему вольтаж float voltage = avgSample*5.0/1024
    и что за коэффициент 350
     
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    1. Потому что разрядность АЦП - 10 бит, поэтому и делим на 1024. Вольтаж - 5В, поэтому умножаем на 5. На выходе с формулы - значение в вольтах по шкале от 0 до 5В, полученное из средних замеров на АЦП со шкалой 0-1023.

    2. Это коэффициент из документации к плате, умноженный на 100 (т.е. при 2В на плате pH равен 7, следовательно вольтаж надо умножить на 3.5; но, т. к. я учитываю сотые доли, и в дальнейшем делю на 100 и получаю остаток от деления на 100, то я просто юзаю коэффициент, умноженный на 100, т. е. 350).

    3. Если вам надо поменять значения вольтажа на противоположные, то это можно сделать простыми арифметическими операциями, зная ваши таблицы зависимости. В простейшем случае - это от максимального значения pH отнять высчитанное - вот вам и будет наоборот. Но строго говоря - лучше знать ваш коэффициент к вольтажу - так будет лучше всего. Он должен идти в описании к плате.
     
  11. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    @Viktorovich4232, да, учтите, что в прошивке реализованы поправочные калибровки показаний pH в зависимости от температуры ;) Там, возможно, тоже надо править.

    Посмотрел по вашей плате, у вас pH 7 при 2500 mV на выходе, отсюда - коэффициенты можно подобрать.
     
  13. Viktorovich4232
    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95

    Viktorovich4232

    Живу здесь

    Viktorovich4232

    Живу здесь

    Регистрация:
    28.02.17
    Сообщения:
    145
    Благодарности:
    95
    Дмитрий Сергей спасибо!
    Теперь въехал. Буду разбираться дальше.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Вот кусок кода с форума, что вы дали:
    Там фигурирует 2.5В и коэффициент 0.18, как шаг измерения (выделил жирным):
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.898
    Адрес:
    80 км от Краснодара
    Ребята, выскажите пожелания по интерфейсу конфигуратора - думаю, что надо таки потихоньку его подделать, чтобы поудобней было.

    Что предлагаю "во-первых", так сказать: большие контролы, т. е. большие надписи, большие поля с данными везде, где можно, например, сделать плиточным дизайном на вкладке "Монитор" ту же температуру прибора и прочие вещи, чтобы смотрелось получше.

    Во-вторых - надо будет немного логику размещения перебрать: убрать со вкладки "Монитор" управление окнами, сделав под них отдельную вкладку.

    Короче - если у кого есть какие пожелания - пишите, а я тем временем буду думать, с какой стороны ко всему этому добру подойти ;)
     
Статус темы:
Закрыта.