• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ищу напарника: Проектирование контроллера для управления автополивом

pvvx

Активный участник сообщества
С UART все попроще, т.к. схема точка-точка. Но вот как один последовательный порт элегантно размультиплексировать - тема подумать :)
Самое примитивное RS-485 с Modbus RTU. Реально и без проблем до сотни устройств. Правда там один мастер и при десятках устройств интервал между опросами конкретного устройства стремится к бесконечности :)
А для решения этой проблемы требуется строгое соблюдение стандарта всех интервалов Modbus RTU, что на ESP реализовать практически нереально. Оно никогда не пройдет сертификацию на Modbus RTU. И сложности в реализации вы получите больше, чем если тупо написать даже BLE на готовых функциях из SDK, что будет без проблем работать.
 

pvvx

Активный участник сообщества
Для реализации Modbus RTU со всеми стандартами потребуются немного разные знания, чем к примеру для BLE.
Для Modbus RTU - дополнительное оборудование для тестов и контроля, плюс доскональные знания всего используемого кода, включая внутренности блобов библиотек (возможности изменить в них некоторые процедуры) и полная грамотность в архитектуре самого чипа с периферией таймеров и UART до битиков. И убрать, исключить все задачи, которые приводят к задержкам/запретам прерываний...
А для BLE или Zigbee - требуется поверхностно изучить как оно работает и какие функции есть в SDK - посмотреть примеры и немного править их для своей задачи.
С Zigbee - сложнее.
И есть ещё ESP-NOW. Там почти аналогично с BLE (по сложности достижения приемлемого результата).
 

pvvx

Активный участник сообщества
Отличия в этих вариантах от WiFi глобальное.

Для WiFi требуется TCP-IP стек и обычно WEB и MQTT. Но у чипов ESP нет такого размера памяти, чтобы реализовать все функции на статических буферах, и т.к. у ESP нет системы виртуализации памяти (MMU), а динамическое распределение памяти в “HEAP” в 99% случаев приводит к её дефрагментации и система падает. Чтобы написать правильно, при нехватки статического распределения памяти на все функции, необходимо использовать стек и такие алгоритмы, когда в один момент выполнятся только одна задача, занимая стек по глубине. По окончанию задачи всё освобождается до нуля. А у вас в ESP блобы, с неизвестной функциональностью и запросами памяти, да C++, где критически важно знать, какая из функций использует “HEAP” и как… Предупреждение о дефрагментации HEAP памяти описано в Arduino и ESP-IDF...

В итоге все варианты с WiFi для ESP годятся только для игры, при постоянной перезагрузке программы (желательно после каждого минимального действия)…

В BLE или ZIgbee SoC перезагружается каждый чих и памяти для BLE/Zigbee стека ему требуется всего в пару килобайт. По этому, он не виснет.
 

volaltd

Member
Самое примитивное RS-485 с Modbus RTU. Реально и без проблем до сотни устройств. Правда там один мастер и при десятках устройств интервал между опросами конкретного устройства стремится к бесконечности :)
А для решения этой проблемы требуется строгое соблюдение стандарта всех интервалов Modbus RTU, что на ESP реализовать практически нереально. Оно никогда не пройдет сертификацию на Modbus RTU. И сложности в реализации вы получите больше, чем если тупо написать даже BLE на готовых функциях из SDK, что будет без проблем работать.
Без сомнений за +5лет вы очень хорошо знаете всю эту беспроводную кухню, а теперь представьте что с одной стороны нужно изучать Teml, Fiber, HTMX, потому что React, Angular, Vue в большинстве случаев избыточно, а с другой стороны тянуть провода для Modbus как положено, ну т.е. чтобы устройства к одному длинному проводу подключались последовательно, а не в центре мастер и к нему от каждого сенсора выделенный провод. И вот ко всем этим трэндовым фрэймворкам, открываете примеры в ESP-IDF и там одних только блютучевых стэков больше трех штук и у каждого свои примеры.
Так зачем городить Modbus, там где вполне достаточно в ASCII через UART заслать в устройство GET и получить значения Temp и Humidity опять же в текстовом виде, для контроля прикрутить какую-нибудь CRC в виде суммы байтиков? В принципе можно взять какой-нибудь STM32 с 10UART и через него опрашивать датчики, а с другой стороны сделать USB-CDC :)
 

pvvx

Активный участник сообщества
Так зачем городить Modbus, там где вполне достаточно в ASCII через UART заслать в устройство GET и получить значения Temp и Humidity опять же в текстовом виде, для контроля прикрутить какую-нибудь CRC в виде суммы байтиков? В принципе можно взять какой-нибудь STM32 с 10UART и через него опрашивать датчики
Вопрос был про это:
Как сделать чтобы RX-TX одного UART могли взаимодействовать с RX-TX нескольких трансиверов CAN с учетом что у трансиверов отсутствует CS/EN ?
То еcть как сделать доступ с десятков датчиков. Одними ASCII по двум проводам опять-же будет Modbus ASCII :)
 

pvvx

Активный участник сообщества
Без сомнений за +5лет вы очень хорошо знаете всю эту беспроводную кухню
Но не могу определить сложность освоения, т.к. с радиоэлектроникой начал возиться с 1978, а с программированием ~1985.
В итоге современной терминологии не знаю, но знаю как устроено почти до битиков, т.к. всё строилось совместно с моими шагами... А потом всё узкоспециализированные особи переназывали и выдумывали разные термины.
В итоге самое сложное - это понять, о чем разговор, т.к. большинство терминов-названий в реальности отличаются всего пару битами в реализации...
 

pvvx

Активный участник сообщества
с одной стороны нужно изучать Teml, Fiber, HTMX, потому что React, Angular, Vue
Вот это гораздо хуже - там необходимо заучивать все функции и долбиться с изучением их нюансов, чужой реализации.
Но надеюсь, что все эти фреймворки и т.д. завтра будут неактуальны, т.к. ИИ уже натаскивают на создание оптимизированного кода сразу для работы в чипе, минуя языки программирования, созданные для понимания людей.
И все программеры высокого уровня языков пойдут в дворники, т.к. копаться в матрицах коэффициентов нейросетки ручками бесполезно.
 

volaltd

Member
Вопрос был про это:
То еcть как сделать доступ с десятков датчиков. Одними ASCII по двум проводам опять-же будет Modbus ASCII :)
Задумка в том, чтобы на мастере было 10 трансиверов, выделенный для каждого линка на сенсор, чтобы без этого вот огорода с заголовками, коллизиями, адресами. И один UART подключать к этим трансиверам в зависимости от опрашиваемого датчика :)
 

volaltd

Member
Вот это гораздо хуже - там необходимо заучивать все функции и долбиться с изучением их нюансов, чужой реализации.
Но надеюсь, что все эти фреймворки и т.д. завтра будут неактуальны, т.к. ИИ уже натаскивают на создание оптимизированного кода сразу для работы в чипе, минуя языки программирования, созданные для понимания людей.
И все программеры высокого уровня языков пойдут в дворники, т.к. копаться в матрицах коэффициентов нейросетки ручками бесполезно.
Фрэймворк диктует не просто библиотечные функции, а полностью подход как делать что-то, вплоть до как файлики по папочкам должны быть разложены.
Пока вижу в обучалках как после трех попыток решить проблему через ИИ, люди идут гуглить и решать своей головой ибо хуже джуниоров :)
 

pvvx

Активный участник сообщества
Задумка в том, чтобы на мастере было 10 трансиверов, выделенный для каждого линка на сенсор, чтобы без этого вот огорода с заголовками, коллизиями, адресами. И один UART подключать к этим трансиверам в зависимости от опрашиваемого датчика :)
1759334749241.png
 

pacific

Member
Без сомнений за +5лет вы очень хорошо знаете всю эту беспроводную кухню, а теперь представьте что с одной стороны нужно изучать Teml, Fiber, HTMX, потому что React, Angular, Vue
Для таких целей как раз и нужен напарник для кооперации, каждый делает что знает 🤷
 

pvvx

Активный участник сообщества
Для таких целей как раз и нужен напарник для кооперации, каждый делает что знает 🤷
И как - напарник нашелся?
Впереди ещё 5 месяцев до возможности установить и реально испытать систему авто-полива. А ныне у нас уже минус ночью.
Ваш вариант полностью реализуется за неделю. Имеется в виду неспешная разработка печатной платы под выбранный готовый корпус, сборка макета и первые тесты программного обеспечения. А далее ожидание поступления готовых и собранных печатных плат. И это всё может сделать один человек.
Т.е. на всё около месяца, если заказывать срочное производство и сборку…
 

pvvx

Активный участник сообщества
Пример:
Для промышленного применения на 16 зон (с полным контролем каждого ключа), насос и некоторые датчики которые у вас не фигурируют:
1759356617700.png
На 32 зоны и ...
1759356637679.png
 

pvvx

Активный участник сообщества
@pacific - Но по вашему описанию никакой надежности и защит не требуется и можно собрать на такой (или аналогичной) фигне:
1759357462668.png

добавив ещё платку с 16 ключами по размеру этой (стопкой) с указанным ранее чипом или аналогичным. Вот только разъем будет больше всех, больше стопки плат с дисплеем, да батарейка для счета часов :)
Как раз задача для пионера, на Arduino :)
 

pvvx

Активный участник сообщества
К примеру на такой макетке пионер вам соберет и отладит:
1759358165882.png
А привлечение нормального специалиста, да со сжатыми сроками изготовления и гарантиями обойдется в очень неприличную сумму...
 
Сверху Снизу