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.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Щупаю компас, вот пока что получил, тестировал на изменения оси Z, крутил его на 180 градусов по этой оси:

    Третья колонка - видно, что значения меняются, изначально держал модуль горизонтально, микросхемой вверх, потом начал плавно переворачивать его на жопку.

    Предварительные осторожные выводы:
    • диапазон изменений по оси Z - поймать можно, другие оси нам не нужны, по идее;
    • надо усреднять показания, ибо - они плавают.

    Буду щупать дальше.
     
  2. ask33
    Регистрация:
    06.11.13
    Сообщения:
    1.558
    Благодарности:
    3.374

    ask33

    Живу здесь

    ask33

    Живу здесь

    Регистрация:
    06.11.13
    Сообщения:
    1.558
    Благодарности:
    3.374
    Адрес:
    Ногинск
  3. Berendey-70
    Регистрация:
    27.10.17
    Сообщения:
    149
    Благодарности:
    139

    Berendey-70

    Живу здесь

    Berendey-70

    Живу здесь

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

    DIYMan

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

    DIYMan

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

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

    DIYMan

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

    DIYMan

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

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

    Второй юзкейс: модуль - вертикально, вращаем его вокруг своей оси - это фрамуга с горизонтальным открытием, изменения по оси Z - те же самые.

    Т. е., проще говоря, на примере модуля https://ru.aliexpress.com/item/1PCS-GY-273-HMC5883L-Module-Triple-Axis-Compass-Magnetometer-Sensor/32777822532.html?spm=a2g0v.search0204.3.2.85da856t4BDUW&s=p&ws_ab_test=searchweb0_0%2Csearchweb201602_3_10065_10344_10068_10342_10343_10340_10341_10543_10084_10083_10618_10307_10301_10313_10059_10534_100031_10103_441_442_10624_10623_10622_10621_10620_10142_10125%2Csearchweb201603_40%2CppcSwitch_5_ppcChannel&priceBeautifyAB=0 - лепим модуль на плоскость фрамуги так, чтобы микросхемка смотрела в наши честные глаза, и всё - никаких дополнительных настроек с ним делать не надо, вот в чём мой пойнт ;)

    Вывод: калибровка, градусы, направление на юг и прочее не относящееся к нашим требованиям - в топку, ибо - зачем усложнять, мы ведь не делаем солнечный трекер, правда? Вот когда возьмёмся делать солнечный трекер - там да, будут и градусы, и азимуты, и калибровка, и жига с ламбадой :)]:aga:
     
  6. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Да нет там нихрена, он уже сделан. :aga:
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Тем более я могу спать спокойно, во всяком случае - пока :)]:aga:
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Алгоритм такой: считаем, что у нас есть обратная связь только тогда, когда в EEPROM сохранены значения оси Z, получаемые в тот момент, когда сработали концевики открытия и закрытия. Следовательно, перед нами могут быть такие комбинации показаний:

    Теперь давайте попробуем получить для каждой записи диапазон возможных значений:

    Простейшая арифметика, диапазон получается при любом раскладе. Если диапазон равен нулю - считаем, что обратной связи нет. Если диапазон больше нуля - обратная связь есть.

    Теперь работа по получения процента открытия фрамуги:

    1. Получаем показания с датчика;
    2. Приводим его к диапазону, т. е.: если показания с датчика меньше, чем минимальное значение диапазона - приводим их к минимальному значению; если показания больше максимального - приводим к максимальному;
    3. Преобразуем показания в % по шкале от 0 до 100 по формуле 100%=Диапазон, x%=показания, => х*диапазон = 100*показания, => х = (100*показания)/диапазон;
    4. Дабы исключить дрейф показаний с датчика (а он есть) - приводим полученною процентовку к дискретности в 5% (например):

    Попробуем применить формулу на набор показаний [0, 1, 4, 12, 15, 100]:

    Итого имеем - шаг показаний обратной связи в 5%. При срабатывании концевиков положение, ессно, принудительно приводится к 0% и 100%, в остальном - считается с дискретным шагом.

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

    DIYMan

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

    DIYMan

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

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

    @promavto - на гитхабе обновил прошивку универсального исполнительного модуля, я бы рад протестировать обратную связь, да нет платки тестовой в наличии :( Было бы неплохо иметь под рукой - пусть она будет обслуживать только одно окно, мне пофиг - главное, чтобы было куда к ней подтыкнуть компас HMC5883 - и всё, дальше я уже смогу проверить в отладочном режиме, что почём.

    Ясное дело, что в случае с одним компасом городить огород вроде бы не стоило с MCP23017 и PCA9516A, однако, напоминаю в том числе и сам себе - пинов у нас тама свободных - кот наплакал, поэтому таки придётся, ради поддержания широты ассортимента (поддерживаемых окон - до 4х) делать через указанные микрухи.

    Короче, мавр сделал своё дело, мавр не может сделанное дело протестировать ввиду существования присутствия наличия отсутствия нужного железа :(

    Дайте мавру весло, пущай он гребёт уже ;)
     
  10. Shelllonn
    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300

    Shelllonn

    Живу здесь

    Shelllonn

    Живу здесь

    Регистрация:
    04.02.16
    Сообщения:
    759
    Благодарности:
    300
    @DIYMan, сделайте возможность подключать компас без MCP23017 и PCA9516A. На модуль один компас. У меня две форточки, мне дешевле повесить два независимых модуля, чем искать где-то дорогую PCA9516A и к ней кучу проводов
     
  11. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Это надо продумать, там щас кучу привязок к MCP. Уже думал в этом направлении, однако ;) По идее - нужно 4 пина свободных, если модуль на одно окно: A4 и A5 под I2C (компас), ещё два пина - под концевики.

    Щас гляну, можно ли быро это дело прикрутить ;)
     
  12. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    @Shelllonn, обновил прошивку исполнительного модуля, сделал возможность цеплять компас прямо на I2C, плюс использовать два пина для концевиков открытия/закрытия.

    В максимальном фарше (с nRF) - пинов не хватает, ровно одного. Поэтому, раз у нас обратная связь работает через RS-485 только, для такого модуля надо комментировать USE_NRF, и всё будет хаккей.

    Проверил логику работы - вроде всё верно, в монитор порта выдаёт значения с компаса, кнопки концевиков - не подсоединял ещё. Повторюсь, логика простая: в момент срабатывания концевика запоминается позиция Z оси и сохраняется в привязке к концевику. Обратной связи не будет до тех пор, пока оба концевика не сработают на разных позициях Z-оси (т.е. для появления обратной связи окно надо прогнать туда-сюда, до концевиков). Можно включить отладочный режим (раскомментировать #define _DEBUG) - и смотреть в мониторе порта кой-чего.

    Подключать кнопки сегодня не буду - уже бошка не варит. Буду признателен, если найдёте возможность потестировать, тем более, что настройки по умолчанию на гитхабе - как раз под прямое подсоединение компаса на пины A4 и A5, плюс два концевика на пинах 8 и 9, остальное нас - не колышет пока :)

    Если вдруг протестируете - отпишитесь плз по результатам ;)
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    DIYMan

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

    DIYMan

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

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


    Божественная игра, душой человек играет.
     
  15. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Код:
    // вкл (высокий уровень)
    SET=PIN|13|ON
    SET=PIN|13|1
    
    // выкл (низкий уровень)
    SET=PIN|13|OFF
    SET=PIN|13|0
    
    Т. е. теперь можно уже дёргать пинами через монитор порта, а в дальнейшем - через MQTT посредством топиков типа SET/..., как сделано в контроллере теплицы ;)
     
Статус темы:
Закрыта.