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

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

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

Статус темы:
Закрыта.
  1. Anatoly8853
    Регистрация:
    21.07.13
    Сообщения:
    94
    Благодарности:
    45

    Anatoly8853

    Живу здесь

    Anatoly8853

    Живу здесь

    Регистрация:
    21.07.13
    Сообщения:
    94
    Благодарности:
    45
    Адрес:
    Пятигорск
    Ну если питание не проблема то лепим так.
    Просто изначально было на сколько я помню что питание от батареек.
     
  2. Anatoly8853
    Регистрация:
    21.07.13
    Сообщения:
    94
    Благодарности:
    45

    Anatoly8853

    Живу здесь

    Anatoly8853

    Живу здесь

    Регистрация:
    21.07.13
    Сообщения:
    94
    Благодарности:
    45
    Адрес:
    Пятигорск
    Или так ESP8266+PCF8574 определяем первые 4 пина под датчики остальные под реле управление от этих самых датчиков так по моему надежней, ну и опять же если по питанию, от сети то ESP8266 сидит в ожидании а если нет то раз в минуту допустим связывается с мегой.
     
  3. 2mike
    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415

    2mike

    Живу здесь

    2mike

    Живу здесь

    Регистрация:
    14.03.10
    Сообщения:
    596
    Благодарности:
    415
    Адрес:
    Россия
    А что:
    1. витая пара сертифицирована под 220в ?
    2. хорошо если там 0,44 сечение реально
    3. Она должна быть для внешней проводки. что недешево.
    итого на 30-50 метрах проще обычный провод прокинуть, еще лучше сразу СИП.
     
  4. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дмитрий!
    В последней прошивке возникли неясности.
    Переписал правила вручную. Скопированы полностью работавшие старые правила.
    Вроде нигде не ошибся...
    Поясню.
    Есть у меня правила управления пинами (2 канала),управляются каждый своим датчиком температуры.
    Соответственно по 2 правила на канал (вкл-выкл).
    И есть правило (по времени,"H_OFF" называется) ,которое блокирует включение каналов по температуре.
    Прописываю все в контроллер.,каналы выключены, как и д. б..Но после перегруза каналы включаются, т. е "H_OFF" игнорируется.
    В правилах снова переписываю "H_OFF",сохраняю в контроллер-каналы выключаются.
    После перегрузки опять включаются.
    Где ошибка?
    Скрины правил прилагаю. Безымянный.png Безымянный1.png Безымянный2.png Безымянный3.png Безымянный4.png
     
  5. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Дмитрий!
    Напишу здесь, а не в личке, про борьбу с М590.
    В личке файлы не прикрепишь, а яндекс -диск у меня умер.
    Посему:

    Докладываю о проделанных экспериментах.

    Один М590 вроде умерший.,живет на скорости 57600 и не реагирует даже на АТ.

    Во втором модеме изменил скорость на 38400- не помогло.

    У меня модем висел на 14 пине.

    Поменял на 11-без результата.

    Поменял кирилицу на латиницу-ничего не дало.

    Грешу на прошивку.

    Смс-ки отрабатываются, на звонок не реагирует.

    Причем после изменения скорости смс-ки через один звонок приходили (на русском).

    Потом от смс-ки осталась только буква Т. Затем перестали.
    Прошивка 1.20n (см. скрин)
     

    Вложения:

  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Судя по логам - неправильно кодируются SMS вообще. Если, как вы говорите, приходят через одну, то единственное, что я могу предположить - что-то с памятью у меги, возможно, её уже не хватает. Скажите плз, сколько её свободной у вас? Если с памятью всё ок, тогда буду рыть, надо будет подцеплять Neoway и проверять, почему не работает у вас. Возможно, где-то ошибка какая тонкая закралась.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    У меня в коде, проверил - действительно, после перезагрузки слетает, сегодня постараюсь поправить.
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @olegmak3, простите великодушно за мучения :) Сделал детскую ошибку - пропустил запись в настройки индекса модуля "0" (как раз тот случай, когда правило ни за чем не следит).

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

    Отпишитесь плз по результатам.
     
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    А с Neoway буду разбираться, ещё раз придётся втыкать его в макетку, видимо.

    Пока суть да дело, пилю универсальные модули: уже сделал так, что на любой линии может висеть любой из модулей, будь то модуль с датчиками или модуль с выносным экраном.

    Чего не нравится: нам надо реагировать на состояние универсального модуля (тот случай, когда на модуле можно кнопку, скажем, нажать) достаточно быстро, поэтому весь скратчпад модуля вычитывается раз в секунду. Вот этот момент мне и не нравится вовсе: слишком много времени работа вхолостую, по сути. Да, я сделал так, что команда на старт измерений (если модуль с датчиками) подаётся раз в 5 секунд, но для того, чтобы понять, есть ли в модуле изменения - надо вычитывать его скратчпад всё равно, периодически. И вот этот нюанс мне не нравится.

    @Snark, очень прошу направить в нужное русло, т. к. тут я чего-то один не соображу. Ввести новую команду 1-Wire, типа "Есть ли изменения", чтобы не гонять по 30 байт за раз? Если так - будет нужна ваша помощь по допиливанию этой команды в эмулятор, я там пока зубы сломаю в низкоуровневом коде :)
     
  11. olegmak3
    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442

    olegmak3

    Живу здесь

    olegmak3

    Живу здесь

    Регистрация:
    14.08.11
    Сообщения:
    524
    Благодарности:
    442
    Адрес:
    Санкт-Петербург
    Что-то 1600 (точно не помню),18 правил.
    Дмитрий!
    Обратите, пожалуйста, внимание, что за прошивка у Вас в М590?
    У меня 1.20n. На одном из форумов упоминали 1.30 с. Поновее?
    Покопаю в этом направлении еще.
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Подключил Neoway, действительно по ходу я чего-то сломал в ходе "улучшений" :) Буду фиксить.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Пока не копайте, ошибка у меня в ДНК :)
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Код:
    String out; out.reserve(2);
    
    char ch1, ch2;
    
    out[0] = ch1;
    out[1] = ch2;
    
    А вот так - работает:
    Код:
    String out; out.reserve(2);
    
    char ch1, ch2;
    
    out = String(ch1); out += String(ch2);
    
    Для меня это открытие, если честно: оператор доступа по индексу в классе String определён, и я, чтобы не дёргать лишний раз память, переписал немного код. Откровение, что так оно вышло, видимо, где-то внутри класса String чего-то не так, или я спросонья чего-то не понимаю :)
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Охохох, горе-программисты, не один только я делаю косяки. Пруф:
    Код:
    char & String::operator[](unsigned int index)
    {
        static char dummy_writable_char;
        if (index >= len || !buffer) {
            dummy_writable_char = 0;
            return dummy_writable_char;
        }
        return buffer[index];
    }
    Обратите внимание на условие "index >= len". В len - длина строки, которая лежит в буфере. Если я резервирую память вызовом reserve, то память в буфере выделяется, всё ок, но len (т.к. строка пустая) остаётся 0.

    И потом, ВНЕЗАПНО, я пытаюсь записать в нулевую ячейку буфера какой-нибудь символ. А там тупо проверяется - если в строке ничего нет (типа, пустая), то, опять же, типа - и менять ничего нельзя! Но я же, млять, выделил память в буфере!

    Вот такие косяки в поставке Arduino IDE. А потом удивляемся - чо оно вдруг перестало работать. Не серчайте, други - косяк точно не мой. Зато теперь буду знать, что да как.

    З. Ы. Пойду отпишусь на ардуинору, пускай народ знает своих героев :)
     
Статус темы:
Закрыта.