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

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

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

Статус темы:
Закрыта.
  1. Tehnik53
    Регистрация:
    22.08.15
    Сообщения:
    142
    Благодарности:
    23

    Tehnik53

    Живу здесь

    Tehnik53

    Живу здесь

    Регистрация:
    22.08.15
    Сообщения:
    142
    Благодарности:
    23
    Поменял #define ESP_AT_VECTION 20
    Топики приходят, все отлично! Но приходят вот в таком формате:
    S80226-232205.jpg
    Прошивкой модуля смогу только завтра заняться. Обязательно отпишусь!
     
  2. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

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

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Есть настройка в прошивке, чтобы приходили не в JSON ;)
     
  4. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    @DIYMan, Подскажите плз, вот, мучаю 7" дисплей и DUE. Возникли вопросы: диплей подключил по схеме @promavto, то-есть без переходного шилда, на "прямую" (пока), как в этом случае сделать выключение подсветки, когда он не используется?
    И ещё - ни как не хочет пищать баззер. Подключен тоже на прямую, т. е без мср23х17. Пищалка от системного блока компьютера, не модуль. Может в этом дело? Смотрел в прошивке, что отвечает эа писк баззера, но ничего не понял: :flag:

    void buzzer(); / пищим пищалкой
    void updateBuzzer();

    Так и не понял, как формируется сигнал для пассивного зуммера, или нужен, активный? :faq:
    Вроде - как пищалку надо подключать к ШИМ, у меня - D11.
    З. Ы. 495 в этой строке - ошибка? :|:

    #define RS495_STATE_PUSH_FREQUENCY 1000 /через сколько миллисекунд писать в шину RS-485 слепок состояния контроллера
     
    Последнее редактирование: 27.02.18
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Нужен активный, пассивный работать не будет. Смысл управления пищалкой прост - сигнал нужного уровня на пине пищалки, всё. Активная пищалка сама начнёт пищать. Смотрите по току также, чтобы не пожечь порт - сколько там потребляет конкретная активная пищалка - мне сие неведомо, надо смотреть спецификации, и если что - подключать через транзисторный ключ.

    Не имеет особого значения, это просто define. ОписАлся, бывает.
     
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Щас пойду добавлю в прошивку поддержку внешнего пина для управления подсветкой TFT-дисплея - давно надо было сделать ;)
     
  7. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    Пищалка от компьютера не подойдет. На пищалку в контроллере подается питание, а не импульсы. Питание через транзисторный ключ у меня. Управление подсветкой дисплея не организовано в программе. В новом "Базовом" модуле уже стоит ключ управления подсветкой. В дисплее 7.0 есть возможность управлять подсветкой через шим, но нужно немного изменять схему модуля дисплея, а это нежелательно. Поэтому просто поставил ключ вкл/откл. В программе управления пока нет. Новый контроллер для Димы пока готовиться, по готовности отправлю. Управление через порт расширения MCP23017.
     
  8. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Руководствовался этой статьёй: https://soltau.ru/index.php/arduino/item/357-how-connect-buzzer
    Но, т. к. программист из меня "никакой", то боюсь, не получится самостоятельно добавить этот код в прошивку...:no:
    Примеры пробовал на УНО - всё работает! :)
     
  9. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Заодно добавил возможность управлять подсветкой дисплея через внешний ключ (по умолчанию эта настройка выключена).

    Ну и поправил define RS495 на RS485, чтоб глаз не мозолил :)

    @tchernyavsky - можете скачать и пробовать с подсветкой. Как оно будет работать - не знаю, т. к. не имею возможности сейчас проверить - дисплей вставлен в плату, в которой нет управления подсветкой.

    Настройки подсветки начинаются в файле Configuration_DUE.h с настройки

    Пробуйте ;)
     
  10. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Активная пищалка сама пищит при включении. Не надо вам пассивную, ибо там нужен ШИМ, а он не всегда доступен по причине возможной занятости пинов с ШИМ. Активную же пищалку можно посадить на любой пин ;) У мну, например, пищалка на 90 дБ есть, уши в трубку сворачивает - вот ей можно через любой пин как сигнализацией рулить. Смекаете, о чём я? Короче - активная пищалка гораздо комфортнее и удобнее.

    Про небольшой косяк прямого управления пищалкой я писал выше - уже поправил ;)
     
  11. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    СПС! Сейчас скачаю и буду эксперементировать! Шилд- переходник и мср23х17 - заказаны, но Китайцы тормозят из-за своего нового года! ;)
     
  12. Tehnik53
    Регистрация:
    22.08.15
    Сообщения:
    142
    Благодарности:
    23

    Tehnik53

    Живу здесь

    Tehnik53

    Живу здесь

    Регистрация:
    22.08.15
    Сообщения:
    142
    Благодарности:
    23
    Отчитываюсь!) Все завелось с новой прошивкой, но не с первого раза. Сначала есп получала какие то странные IP. Но раза с 3 или 4 все завеллось!
    Теперь я не могу разобраться как по стандартной схеме отправить управляюющий топик?
    Пишу в поле топик
    TEPLICA/SET/STATE/MODE
    В сообщение: AUTO
    и ничего не происходит.
    Или туут какая то особая схема по управлению именно через публикацию сообщений?
    Я до этого по MQTT управлял примерно так:
    Топик: esp/set/gpio1
    Сообщение: 1 или 0
    Простите за глупые вопросы.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    В смысле - странные?

    Я заметил, что MQTT. fx в этом случае формирует неправильный пакет, при расшифровке которого получается дикая длина payload. А вот так если сделать:
    Или просто топик:
    То всё норм. С чем это связано - хз, но точно замечено, что в некоторых случаях прошивка не может раскодировать пакет MQTT из-за неправильно рассчитанной длины payload - возможно, в моём парсере проблема, но это проявляется не на всех топиках, зависимости пока не нашёл. Пробуйте, как показано выше.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Кстати - а что, по вашему, должно произойти? ;) Если контроллер и так в автоматическом режиме управления окнами - то визуально вы ничего не увидите. Смотрите в брокере топик ../REPORT/... - туда приходят результаты выполнения команды. В справке в конфигураторе это написано.
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Вот этот кусок кода иногда выдаёт Malformed в дебаг-режиме на некоторые входящие топики:

    Код:
         // теперь получаем имя топика
          uint8_t topicLengthMSB = packet[curReadPos];   
          curReadPos++;
    
          if(curReadPos >= dataLen) // malformed
          {
            #ifdef MQTT_DEBUG
              Serial.println(F("MALFORMED 2"));
            #endif
            return;
          }
               
          uint8_t topicLengthLSB = packet[curReadPos];
          curReadPos++;
    
          uint16_t topicLength = (topicLengthMSB<<8)+topicLengthLSB;
         
          #ifdef MQTT_DEBUG
            Serial.print(F("Topic length: "));
            Serial.println(topicLength);
          #endif
    
    
          // теперь собираем топик
          String topic;
          for(uint16_t j=0;j<topicLength;j++)
          {
            if(curReadPos >= dataLen) // malformed
            {
              #ifdef MQTT_DEBUG
                Serial.println(F("MALFORMED 3"));
              #endif
              return;
            }       
            topic += (char) packet[curReadPos];
            curReadPos++;
          }
    Иногда в topicLength число офигенски большое, явно не соответствующее длине имени топика. Лечится, как я говорил - тупым добавлением слеша к концу имени топика. С чем это связано в MQTT. fx - я хз, по протоколу MQTT длина топика хранится в двух байтах. Ещё раз посмотрю, конечно, но мне и самому неясно, почему вот так вот оно, и не на всех топиках к тому же.
     
Статус темы:
Закрыта.