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 км от Краснодара
    Потихоньку расширяю функционал ядра по части внешнего управления. Пинами оно, рулить, конечно, хорошо - вкл/выкл там, типа - зажгли/погасили свет в прихожей. Однако, часто бывает нужно, чтобы можно было подать вручную команду "включить мотор на 5 секунд". Ну я и ввёл, соответственно, дополнительный параметр в команду PIN - время удержания уровня. На примере, команда:

    Установит на пине номер 8 высокий уровень, и будет держать его 5000 миллисекунд, после этого - установит там низкий уровень. Команда

    поступит ровно наоборот ;) Теперь, фактически, мы уже получаем систему, которая в будущем, даже без наличия логики конкретного проекта - будет уметь рулить пинами, как захочет барин: барин захотел в MQTT-клиенте плашку на открытие ворот - барин сделал эту плашку в MQTT-клиенте, и, подъезжая к дому - бахнул по ней натруженным пальцем - тут-то ларчик и открылся :)

    Думаю, сгодится к применению ;) Сейчас пока написано в лоб - напрямую работа с пинами, позжее можно будет ввести слой абстракции, чтобы номер пина стал виртуальным, и необязательно писалось прямо в физическую ногу, а, например, через сдвиговый или ещё через какой расширитель портов. Но пока, для первой итерации - покатит, считаю.
     
  2. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Прочитал про дымок, и всвязи с этим - вопрос: Как ранее писал, - пошёл дымок из Меги, Умер USB- UART сама Мега уцелела. Собственно вопрос в том, какие фьюзы необходимо выставлять, при прошивке через программатор AVRasp? Программа AVRDUDEprog v3.3 ?. Если оставить "по умолчанию" - то не прошивает и выдаёт ошибку, Если использовать "калькулятор фьюзов" http://homes-smart.ru/fusecalc/?prog=avrstudio&part=ATmega2560 - то вроде прошилась, но похоже, что в последний раз! По этому прошу ткнуть носом! :flag::|:
     
  3. promavto
    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958

    promavto

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

    promavto

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

    Регистрация:
    27.02.16
    Сообщения:
    1.960
    Благодарности:
    1.958
    Адрес:
    г. Москва, Зеленоград.
    У меня так
     

    Вложения:

    • 2018-02-07_21-33-45.png
  4. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Буду пробовать! :hndshk:
     
  5. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    Пока в браузер выдаются все команды, которые понимает ядро (кстати, добавил выдачу IP ESP, потом можно будет прикрутить в конфигуратор). Вот как это выглядит:

    screen.png

    Т. е. браузер понимает обращения и вида GET=COMMAND/PARAMETER, и вида GET=COMMAND|PARAMETER, т. е. два вида разделителей. Естественно, и на SET-команды должон реагировать контроллер, механизм один.

    Таким образом, ESP при старте начинает слушать порт 80, и если туда придёт HTTP-запрос - выдаст на него ответ, т. к. класс веб-сервера понимает, что это HTTP-запрос, и, соответственно, работает. В дальнейшем, если туда упадёт MQTT-пакет - клиент MQTT будет понимать, что это пакет MQTT - и будет его забирать себе. Это что касается входящих данных - каждый подписчик будет понимать, что данные - для него.

    Вот что получается, если запросить параметры, отличные от GET= или SET=, например, адрес страницы:

    screen.png

    Т. е. заглушка пока оставлена, для дальнейшей работы с SD. Тестирую на плате контроллера теплицы под Due - и там что-то капризничает инициализация SD, так что выдачу файлов с SD - оставлю на чуть позже, заодно проверим, как оно на больших файлах, по несколько сотен килобайт ;)

    Как видите, новостей есть, и не сказать, что они плохие ;) Собственно, веб-сервер он мне мож и не нужен, однако - всё отключается в настройках прошивки, это раз. И два - так было проще сразу проверить работоспособность, чем возиться с нюансами MQTT (там ещё ничего нет - ни настроек, ни пр.).

    Возрадуемся, братья - скоро взлетит MQTT, и, не беря во внимание отладку и тестирование непроверенного ещё функционала - считай всё, ядро готово для старта любого проекта. Пару месяцев ещё, всего лишь :)]:aga:

    З. Ы. Да, теперь скорость работы с конфигуратором - 115200.
     
    Последнее редактирование: 09.02.18
  6. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Поскольку ESP ожила - я быренько добавил в конфигуратор кнопочки для просмотра IP-адресов, MAC-адресов, ну и для пинга google. com - чтобы (как любил говорить профессор Выбегалло), значится, понять - есть интернет или нет.

    Кнопочки - а вот они:

    screen.png

    Красненьким обведены, работают, зараза.
     
  7. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Мда, по скоростям не очень всё с ESP, узкое место - UART. Отдача тестовых сгенерированных данных размером 238592 байт (230 Кб) - заняла 22,5 секунды. Короче, вебморду серьёзную там всё равно не подержишь.

    Но выдачу файлов стоит прикрутить, думаю. На всякий, что называется.
     
  8. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

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

    screen.png

    В файле test. txt на флешке именно эта строчка прописана. Т. е. теперь есть простенький веб-сервер через ESP, и можно просто кидать файлы на флешку и открывать их в браузере, ну и простенькую вебморду для любого проекта написать, в принципе - благо дело, что механизм команд расширяется, и можно внедрить свои, не трогая ядро. Ессно, что вебморда должна быть простой насколько это возможно, т. к. грузится всё равно печально, и с рисунками и прочим тут не особо забалуешь. Впрочем, наличие бюджетного веб-сервера из коробки - позволяет прикрутить любую веб-морду, благо дело HTTP - он и в Африке HTTP, а команды для контроллера уже сейчас понимаются (это я про GET и SET).

    На гитхабе обновил, теперь надо этому делу вылежаться пару дней, а потом, с новыми силами - за MQTT можно будет браться, и публикацию показаний с хранилища в брокер ;)

    З. Ы. Заодно добавил команду получения состояния пина: GET=PIN|13.
     
  9. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Наконец-то прислали Китайцы 7" дисплей. Но, что-то я туплю: не хочет, блин, запускатся! Подключаю к ДУЕ:

    /-
    / TFT settings (used 7' screen with SSD1963 controller and 800x480 screen size)
    / настройки TFT (используется 7' экран на контроллере SSD1963 с разрешением 800x480)
    /-
    / TFT model
    #define TFT_MODEL CTE70 / SSD1963 (16bit) 800x480 Alternative Init
    /-
    / TFT RS pin
    #define TFT_RS_PIN 38 /25
    /-
    / TFT WR pin
    #define TFT_WR_PIN 39 /26
    /-
    / TFT CS pin
    #define TFT_CS_PIN 40 /27
    /-
    / TFT RST pin
    #define TFT_RST_PIN 41 /28
    /-
    / touch settings
    / настройки тачскрина
    /-
    #define TFT_TOUCH_CLK_PIN 6
    #define TFT_TOUCH_CS_PIN 5
    #define TFT_TOUCH_DIN_PIN 4 /32
    #define TFT_TOUCH_DOUT_PIN 3
    #define TFT_TOUCH_IRQ_PIN 2
    /-

    Но работать не хочет! Подскажите, плз, куда копать, и что я делаю не правильно? :faq:
    з. ы. Если можно, - то "разжевать" подключение более подробно. :|:
     
  10. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Тестовый скетч из примеров запускается?
     
  11. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Нет, не фига не работает, идут горизонтальные, черно-белые полосы. При нажатии на экран их частота немного меняется, наверно тач-скрин работает.
    А как подключен у вас?
     
    Последнее редактирование: 09.02.18
  12. HANTER333
    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156

    HANTER333

    Живу здесь

    HANTER333

    Живу здесь

    Регистрация:
    21.12.15
    Сообщения:
    1.617
    Благодарности:
    1.156
    Через шилд CTE v1.04, работает, пины 25, 26, 27, 28, а вот напрямую, пины 38, 39. 40, 41 выводит экран и сразу DUE виснет.
     
  13. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Если через шилд - то надо в настройках библиотеки UTFT раскомментировать одну строчку
    Код:
    // Uncomment the following line if you are using this shield
    //#define CTE_DUE_SHIELD 1
    Это лежит по адресу Arduino\libraries\UTFT\hardware\arm\HW_ARM_defines.h Шилд - CTE, ссылка на который была в теме.

    Начинать лучше с того, чтобы запустить тестовые примеры к библиотеке UTFT, сразу прошивку не стоит мучать :) Запустите примеры, убедитесь, что тач работает как надо - тогда можно уже прошивку закачивать. У меня на плате Due с надетым сверху шилдом запустилось без проблем.
     
  14. DIYMan
    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889

    DIYMan

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

    DIYMan

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

    Регистрация:
    19.05.13
    Сообщения:
    8.309
    Благодарности:
    6.889
    Адрес:
    80 км от Краснодара
    Сильно обновил ядро, добавил MQTT наконец-то. Сразу предусмотрел, что в будущем с ним можно будет работать не только через ESP, но и через другие транспорты (например, через SIM800L). Вот как это выглядит чичаза:

    1. Сами настройки в конфигураторе

    screen.png

    2. Страшная штука - одновременно запрос с браузера, работающий конфигуратор, плюс отсыл данных в брокер:

    screen2.png

    Короче, теперь все показания всего, что есть в хранилище - попадают в брокер MQTT - я не стал париться с указанием того - что отсылать, а что нет: датчиков не так много, поэтому не будет сильным оверхедом, если тупо посылать их все. Префикс имени топика, как видно - имя клиента MQTT, затем идёт имя датчика: это для того, чтобы различалось, откуда пришли данные.

    Прошивка понимает топики вида "clientID/SET/" и "clientID/GET/", где clientID - имя клиента MQTT, указанное в настройках. Результат отработки команд - пихает в топик clientID/REPORT, по умолчанию - в JSON-объекте, в настройках прошивки можно поправить, если надо простым текстом.

    Заодно поймал плавающую ошибку - два часа кровь выпивали две строчки, которые надо было переставить местами - бывает, чего уж там.

    Теперь на очереди - поддержка SIM800, надо будет подумать, чтобы сделать поудобнее - возможность вводить несколько телефонных номеров, которые будут опознаваться как родные, возможность указывать настройки для интернета (чтобы не прошивать их жёстко) - да много о чём надо подумать и продумать ;) - хочется сделать транспорт через SIM800 удобным, как получилось с ESP (ттт, чтоб не сглазить).

    Кстати сказать: учитывая предыдущий опыт и чуть более продвинутую архитектуру - код для работы с тем же ESP получился более компактным и понятным, нет мешанины и навала. И это - радует. И да - уровень абстракции от конкретики какого-нибудь проекта - не страдает пока, и это тоже радует. Строго говоря, контроллер теплицы можно будет и на основе ядра сделать: конфигуратор, конечно, не будет таким красивым, но на то он и конфигуратор ;)

    Всё, убёг тестировать это дело, и будем считать, что следующий "контроллер чего-нибудь" - мы с вами сделаем уже на ядре, ибо из коробки уже будут доступны все вкусные плюшки ;)
     
  15. tchernyavsky
    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160

    tchernyavsky

    Живу здесь

    tchernyavsky

    Живу здесь

    Регистрация:
    27.03.16
    Сообщения:
    473
    Благодарности:
    160
    Значит - без шилша не получится? Блин! Придётся заказывать и ждать ещё два месяца! Печалька! :mad:
    В И-нете именно по 7" дисплею очень мало информации, но вроде у людей:um: работает на прямую? :(
    Ещё вопрос: ардуино IDE 1.6.7 всё так-же необходимо, или можно использовапь более свежее? А то при прошиве DUE ругается.
     
    Последнее редактирование: 10.02.18
Статус темы:
Закрыта.