Опрос


Что для Вас Умный Дом?


Результаты

MegaD-2561 - новая ступень в развитии проекта MegaD

01/09/2016 16:51:13

MegaD-2561 - второе поколение контроллеров для домашней автоматизации, которое продолжает традиции MegaD-328. Если вы впервые знакомитесь с контроллером, обязательно прочтите обзорную статью. Чем же по-существу отличается новый контроллер от старого доброго MegaD-328? Разберем по-порядку.

MegaD-2561. Контроллер для домашней автоматизации
Контроллер MegaD-2561

Память

В MegaD-328 применяется чип atmega328p, который оснащен 2Кб оперативной памяти и 32Кб Flash.
MegaD-2561 использует atmega-2561. В нем 8Кб оперативной памяти и 256Кб Flash.
Это означает, что потенциал для дальнейшего развития прошивки и добавления новых функций очень большой. А значит проект получит дальнейшее развитие.


Исполнительный модуль x 2

MegaD-328 позволяет подключать к себе один стандартный исполнительный модуль (MegaD-7I7O-R, MegaD-7I7O-SD, MegaD-14-IN и т.д.). Один контроллер - один исполнительный модуль.
К новому контроллеру MegaD-2561 можно подключить два любых стандартных исполнительных модуля. В любой комбинации. Для этого в контроллере предусмотрено два 34-пиновых разъема.


Два разъема для подключения исполнительных модулей. Прямой и угловой

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

Подключение цифровых датчиков

Чтобы подключить цифровые датчики (DS18B20, DHT11/DHT22, HTU21D, BMP180, BH1750, TSL2591 и т.д.) к модулю MegaD-328, необходимо было использовать исполнительный модуль MegaD-14-IN. В модуле контроллера были выведены только 2 дополнительных АЦП порта. Таким образом, если пользователю требовалось измерять температуру и переключать какие-нибудь нагрузки, то требовалась покупка двух комплектов: MegaD-328+MegaD-14-IN и MegaD-328-MegaD-7I7O. Это мощная связка из двух комплектов, которая позволяет решать самые различные задачи, но все же это два полноценных комплекта.
Модуль MegaD-2561 имеет 6 собственных портов для подключения цифровых датчиков, выведенных на разъем XT2.


XP5/XP6 - АЦП порты аналогичные MegaD-328, группы клеммных колодк XT2 для подключения цифровых датчиков


Выдержка из краткого руководства со описанием разъемов

Грубо говоря, чтобы работать с цифровыми датчиками не обязательно даже иметь специальный исполнительный модуль. Можно обойтись только модулем контроллера. А подключая два исполнительных модуля MegaD-7I7O, у пользователя все равно останется возможность мониторинга температуры/влажности/давления и т.д. даже без MegaD-14-IN. При этом также сохранены стандартные разъемы для подключения аналоговых датчиков, как в MegaD-328.


Распиновка всех портов. Особое значение имеет разъем XT2.

Кнопка Reset (на схеме слева) предназначена для аппаратной перезагрузки устройства и используется в основном в отладочных целях при разработке прошивки.
Кнопка Erase EEPROM (на схеме справа) предназначена для очистки встроенной энергонезависимой памяти, в которой хранятся все настройки устройства. Для того, чтобы запустить процедуру очистки EEPROM необходимо нажать кнопку в момент включения устройства или, удерживая кнопку Erase EEPROM, одновременно нажать кнопку Reset. В процессе сброса настроек, который занимает приблизительно 5 секунд, светодиод Act на лицевой панели будет редко моргать. После очистки EEPROM пароль и IP-адрес сбрасываются. Значения по умолчанию: sec и 192.168.0.14 соответственно.


Совместимость

MegaD-2561 полностью совместим с MegaD-328 с точки зрения API и принципов работы.
MegaD-2561 полностью совместим со всеми существующими исполнительными модулями. Таким образом, апгрейд в системах, которые уже используют MegaD-328, не будет связан с какими-либо сложностями. Даже если у вас подключены аналоговые датчики к MegaD-328, в новом MegaD-2561 вы найдете АЦП-разъемы на прежних местах.


Новые возможности прошивки


Подключение датчиков DS18B20 шиной (несколько на один порт).

MegaD-2561 унаследовал прошивку MegaD-328. Но вместе с тем кое-какие новшества появились уже в первых бета-версиях прошивки для нового контроллера.
Так, начиная с версии 4.02beta1 контроллер MegaD-2561 поддерживает подключение цифровых датчиков DS18B20 шиной (то есть несколько на один порт). Для этого в Web-интерфейсе контроллера появился новый типа датчика: 1WBUS

При нажатии на ссылку Device List или через запрос вида
http://192.168.0.14/sec/?pt=32&cmd=list
Можно получить в ответ примерно следующий результат: 8aad6a070000:32.43;85a56a070000:32.43;
Результат отображается по следующему принципу: [адрес датчика]:[температура];[адрес датчика]:[температура];

Контроллер автоматически каждые 30 секунд отправляет в шину команду на конвертацию температуры.
Если шина занята конвертацией, то в ответ вернется просто "Busy"
Но можно отправить такой запрос и вручную (или автоматически при опросе с сервера), вызвав URL вида
http://192.168.0.14/sec/?pt=32&cmd=conv


Аппаратная поддержка работы с I2C-устройствами на любом из доступных портов

Начиная с версии 4.04beta3 контроллер аппаратно поддерживает работу с I2C-устройствами. При этом подключить I2C-устройство можно к любому из доступных портов, поддерживающих работу с цифровыми датчиками: а это все порты разъема XT2, а также любой порт исполнительного модуля MegaD-14-IN (в режиме цифрового входа). В отличие от чисто программной реализации с помощью библиотеки I2C-PHP аппаратная реализация работает на порядок быстрее.

В связи с этим прошивка поддерживает что-то вроде I2C-MegaD API для доступа к I2C-устройствам.

pt - номер порта, к которому подключена линия SDA
scl - номер порта, к которому подключена линия SCL

i2c_cmd - команды (1 - инициализация; 2 - старт; 3 - стоп)
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_cmd=1

i2c_send - отправка данных в HEX-виде
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_send=80

i2c_read - считывание данных в HEX-виде (0 - на конце ACK; 1 - на конце NACK [конец связи])
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_read=0

i2c_sendp - отправка пакетных данных в HEX-виде
Пример: http://192.168.0.14/sec/?pt=35&scl=34&i2c_send=780020

Это означает, что к системе управления Умным Домом посредством контроллера MegaD-2561 можно подключить любые I2C-устройства. Описанное выше API позволяет без знаний в области программирования микроконтроллеров управлять I2C-устройствами из любого прикладного языка программирования: PHP, Python, Perl, Java и т.д. Другими словами, даже если контроллер "не поддерживает" какой-либо датчик, можно написать плагин для системы управления, которая используется на сервере, например, OpenHAB, ioBroker, Majordomo, Демо-интерфейс и таким образом получить доступ к I2C-датчику. Изменений в прошивке при этом не потребуется.


"Нативная" поддержка I2C-датчиков HTU21D, BH1750, TSL2591, BMP180

Но даже без всякой серверной системы управления, контроллер MegaD-2561 умеет отображать значения температуры и влажности I2C-датчика HTU21D, а также освещенности (для датчиков BH1760, TSL2591) во встроенном Web-интерфейсе.

Пример. Провод SCL датчика подключен к порту 34 разъема XT2. Провод SDA датчика подключен к порту 35 разъема XT2. Оба порта настроека как NC.

Отображение влажности (HTU21D)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d
Отображение температуры (HTU21D)
http://192.168.0.14/sec/?pt=35&scl=34&i2c_dev=htu21d&i2c_par=1
Отображение освещенности (BH1750)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bh1750
Отображение освещенности (TSL2591)
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=tsl2591

Разумеется, поддержка I2C-датчиков позволяет не только выводить данные во встроенном Web-интерфейсе, но и буквально одним движением интегрировать эти датчики в любую систему управления без необходимости низкоуровневой работы с I2C API. Список поддерживаемых датчиков будет расширяться.

Подборка всех скриптов для работы с I2C-устройствами.

 

Немного наглядности. Новый тип порта: I2C

Если описание работы с I2C-датчиками, изложенное выше, кажется сложным, то в версии прошивки 4.07 beta8 были сделаны изменения, которые должны облегчить жизнь пользователям.
Добавлен новый тип порта I2C.

Для данного типа порта можно выбрать два режима: SDA или SCL, что соответствует двум линиям для обмена информации с цифровыми датчиками.
Если порт настроен, как SDA, появляется возможность указать какой порт используется как SCL, а также тип датчика, который подключен.

В данный момент поддерживаются датчики: HTU21D, BH1750, TSL2591, BMP180 (но список будет расширен).
Вот так (стандартным образом) отображается информация с датчика HTU21D.


Стоит сказать, что для данного типа порта также поддерживается команда cmd=get для получения только значений от датчика.

Пример: http://192.168.0.14/sec/?pt=30&cmd=get

Некоторых пользователей, возможно, смущает, что для I2C-датчиков необходимо использование двух портов.
Это так, но есть определенные нюансы.

1. К двум портам SDA/SCL можно повесить несколько различных датчиков с разными адресами:
В этом случае независимо от типа выбранного устройства во встроенном Web-интерфейсе для получения данных можно вызывать URL вида:

http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=htu21d
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=bh1750
http://192.168.0.14/sec/?pt=30&scl=31&i2c_dev=tsl2591

Словом, все эти датчики могут подключаться к одним и тем же портам.

2. У двух одинаковых датчиков (например, HTU21D) одинаковый адрес, поэтому их нельзя подключить к одной и той же SDA линии. Но можно использовать одну SCL линию.
Это позволяет фактически использовать для каждого датчика не 2, а 1 порт.

Режим Scan позволяет в отладочных целях посмотреть адреса доступных на шине устройств.

 

Работа с OLED-дисплеями SSD1306

Контроллер MegaD-2561 на аппаратном уровне поддерживает работу с дисплеями SSD1306.

Дисплей можно подключить к ЛЮБОМУ порту.
После настройки порта как I2C/SDA и указав номер порта I2C/SCL, можно выбрать тип устройства: SSD1306

После того, как дисплей добавлен, у большинства портов (за исключением NC) появляется поле "Disp"

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

При изменении состояния порта, информация тут же отображается на дисплее.

В данный момент поддерживается отображение состояний для типов: IN, OUT (в режиме SW) и DSen (в режиме 1W)
К контроллеру может быть подключено несколько дисплеев. Таким образом, оперируя значением в поле Disp, можно выводить состояние разных портов на разных дисплеях.

Если для вывода информации на дисплей выбран только один порт, к которому подключен датчик DS18B20, то значение температуры на экране отображается так.

 

MegaD-2561 в качестве контроллера доступа

Если хотя бы один порт настроен как "iB" (работа со считывателями DS1990A: iButton, EM-Marine в режиме эмуляции iButton), то в настройках появляется новый пункт "iB Keys".
Перейдя по ссылке можно указать до 5 ключей, которые контроллер сохранит в энергонезависимую память.
Важно. Перечень ключей один для всех портов типа "iB".
"Last key" - адрес последнего ключа, который считал контроллер. Это позволяет проверить адрес ключа и при необходимости занести его в память.

В настройке порта типа "iB" присутствуют стандартные поля "Action" и "NetAction"

На скриншоте типичный пример работы с электромеханическим замком: включить порт; подождать 0,2 секунды; выключить порт. То есть на электромеханический замок подается импульс длительностью 0,2 секунды. Разумеется, могут быть любые другие сценарии.

Если сервер не прописан, то контроллер сверяется со списком ключей, сохраненных в памяти и выполняет сценарий, если адрес ключа совпадает.
Если сервер прописан, то контроллер отправляет данные на сервер и ждет указаний от него (с внутренним перечнем ключей не сверяется).
Если сервер прописан, но не отвечает, то контроллер снова берет управление на себя.

 

Планировщик заданий (cron) и поддержка часов (RTC) DS3231/DS1307

MegaD-2561 теперь поддерживает работу с часами (RTC).
Часы - это небольшие платки, на которых смонтирована микросхема, например, DS3231 и элемент питания.
При отсутствии питания ход часов не останавливается, благодаря батарейке. При включении MegaD-2561 устройство синхронизируется с часами. Таким образом, время в устройстве всегда актуальное.

Поддерживается DS3231 и DS1307.
Целесообразно использовать DS3231 по двум причинам.
1. Питание +3,3В (есть в модуле MegaD-2561). В то время как DS1307 требует +5В.
2. DS3231 точнее.

Подключить DS3231 можно к любым двум портам. Эти часы работают по протоколу I2C, поэтому необходимо использование 2-х портов.

В настройках появился новый пункт Cron

Кликнув по ссылке, мы попадаем на страницу управления планировщиком

Cur time: текущее время. В квадратных скобках указан день недели (1-7). В частности [5] - пятница.
Set time: здесь можно задать время. Формат ЧЧ:ММ:СС:ДН, то есть 15:30:00:5 - последняя цифра - день недели
SCL/SDA: порты микроконтроллера, к которым подключены часы. Здесь указывается не номер порта (как обычно), а его индекс (можно посмотреть в документации). Зачем это сделано. Дело в том, что часы можно подключить не только к разъему XT2 (зеленые клеммники внизу) и исполнительным модулям MegaD-14-IN, но и к внутреннему 16-пиновому разъему XP4. Так вариант "заводской" комплектации MegaD-2561-RTC, который уже снабжен часами DS3231 (размещенными внутри корпуса), будет иметь подключение часов к внутреннему разъему XP4 и портам C2/C1. Таким образом функция часов будет поддерживаться, но ни один из универсальных портов занят не будет. Но, повторю, RTC можно подключать к любому из доступных портов.

T/Act: Сами задания. Их может быть 5 шт.
Немного подробнее о заданиях
T: формат ЧЧ:ММ:ДН
Примеры
14:30:0 - выполнять в 14:30 каждый день (последний 0 - означает каждый день)
08:00:3 - выполнить в 8:00 в среду (3 - среда)
03:15:3-7 - выполнять в 03:15 со среды по воскресенье включительно (3-7)

Act - стандартное поле сценария.
Важно, что здесь работают паузы (команды p). То есть, если необходимо включить, например, автополив на 30 минут, то не обязательно разносить это на два задания. Можно ограничится одним.

Небольшое замечание по поводу готовых плат DS3231. Они продаются с батарейками и аккумуляторами. В случае подключения к MegaD-2561 нужно выбирать те платки, которые снабжены батарейкой CR2032 3V, а не аккумулятором. При питании от +3,3V аккумулятор не будет заряжаться.

Интересной особенностью является то, что часы внутри микроконтроллера, когда он работает, идут и без дополнительной платы RTC (DS3231), но в этом случае они, во-первых, всегда сбрасываются в момент выключения/включения и, во-вторых, не являются точными. Использование DS3231 гарантирует, что устройство "не забудет" время при перебоях в электроснабжении (даже если отключение электроэнергии будет очень длительным), а время будет всегда точным.

Но если вы решили использовать контроллер без часов, то синхронизировать время можно от сервера.
Достаточно отправить контроллеру запрос вида

http://192.168.0.14/sec/?cf=7&stime=10:57:06:4

Так как контроллер в момент своего включения отправляет на сервер сообщение с параметром "st=1", то сервер, получив это сообщение, может установить в контроллер правильное время.

 

Новая команда 'd' в ответе сервера и возможность выполнять встроенные сценарии даже при наличии сервера

Контроллер MegaD-2561 поддерживает такие замечательные команды управления ШИМ-выходами (диммируемыми каналами), как "+", "-" и "~", которые можно прописать в Action. Например, "13:~"
Устройство может аппаратно отслеживать нажатие клавиш выключателя и управлять диммируемым каналом (прибавить яркость / убавить яркость).
Но эти замечательные команды работают только в том случае, если сервер не прописан. А если сервер прописан, то предполагается, что сервер сам будет отслеживать длительность нажатия клавиши (используя в том числе параметр m=2) и передавать команды на управление выходом. Однако такую реализацию на сервере делать не всегда удобно. Особенно учитывая, что она в лучшем виде есть в контроллере.

В контроллер MegaD-2561 добвлена новая команда 'd' (сокращение от default). Если сервер на факт срабатывания входа, возвращает 'd', то это дает сигнал устройству выполнить сценарий по умолчанию, прописанный в его памяти.
Таким образом можно использовать сервер вместе в частности с командами управления диммируемыми выходами. Достаточно серверу при срабатывании нужных входов вернуть устройству 'd' и он обработает все операции с клавишами выключателя.
Но серверу интересно было бы знать значение ШИМ, которое получилось на выходе. Это просто. Устройство ведь может сообщать о факте отжатия клавиши (m=1). Серверу необходимо лишь опросить состояние нужного выхода при получении сигнала об отжатии клавиши. Все остальное контроллер сделаем сам.

Ну а если мы хотим жестко прописать, какие действия нужно совершить при срабатывании входа независимо от того, есть ли в системе сервер или нет, не спрашивая у него разрешения, то необходимо установить "флажок" рядом с полем Act.

Если чекбокс рядом с полем Act установлен, то устройство будет выполнять сценарий независимо от наличия сервера.
В случае, если сервер прописан, ему будет сообщаться о событии, но его команды будут проигнорированы.

 

Новый режим работы входа "Click mode"

Вместе с режимами P, P&R и R контроллер MegaD-2561 теперь поддерживает новый режим при работе со входами - C (Click mode)

В этом режиме:
При однократном нажатии на выключатель на сервер передается параметр click=1
пример: /md.php?pt=0&click=1&cnt=1
При двойном нажатии (двойной клик) на сервер передается параметр click=2
пример: /md.php?pt=0&click=2&cnt=2
При удержатии клавиши как и в других режимах передается параметр m=2
пример: /md.php?pt=0&m=2&cnt=3
После отпускания клавиши после длительного нажатия передается параметр m=1 (как в режиме P&R)
пример: /md.php?pt=0&m=1&cnt=3

Есть изменения и в работе сценария по умолчанию (Action).
Теперь допустимо написать так: 7:2|8:2
Это означает, что при одинарном клике выполнится 7:2, а при двойном 8:2

Необходимо отметить, что в случае одинарного клика информация на сервер (или выполнение сценария) происходит с задержкой в 500 мс, которая требуется для фиксации двойного клика.

 

Поддержка 1-wire модулей на базе DS2413

Начиная с версии прошивки 4.04beta6 MegaD-2561 поддерживает управление 1-wire модулями на базе микросхемы DS2413.
Готовые симисторные 1-wire двух-канальные модули предназначены для управление двумя независимыми нагрузками 220В.
Для работы с подобными модулями в общем случае требуется мастер 1-wire сети (например, DS9490R) и соответствующее ПО (например, owfs).
Теперь MegaD-2561 может работать с модулями на базе DS2413 напрямую, то есть выполнять роль мастера.
Вот, как это выглядит.

Можно управлять каналами из встроенного Web-интерфейса или через сервер.
Для того, чтобы указать какой именно канал переключить, в команде передается дополнительно 'A' или 'B'
Например: cmd=33A:1
Для данного порта также доступны команды группового включения/выключения 'a:1/a:0/a:2'

Модуль можно подключить к любому порту, поддерживающему работу с цифровыми датчиками. А это порты непосредственно в модуле контроллера MegaD-2561 (клеммная колодка XT2) или любой порт модуля MegaD-14-IN (с нижним положением конфигурационного джампера). Один 1-wire модуль можно подключить только к одному порту.


Возможно задать частоту работы ШИМ-каналов

В ряде случае при управлении с помощью ШИМ-сигнала сторонним оборудованием возникает необходимость использовать более низкую или более высокую частоту ШИМ.
Теперь частоту для ШИМ-каналов можно настроить: (Norm - 3064Гц, Low - 383Гц, High - 24510Гц)

Важный нюанс. Настройка частоты ШИМ, сделанная для одного порта, распространяется и на другие порты, связанные с этим же таймером.
Таймеры и связанные с ними порты:
Таймер1: P10, P12, P13
Таймер3: P25, P27, P28
Таймер2: P11

 

Поддерджка протокола MQTT

В сетевых настройках появилась новая опция "SRV Type", которая может принимать значения: HTTP или MQTT

После старта устройство соединяется с сервером и подписывается на топик: megad/14/cmd
Здесь 14 - последний байт IP адреса устройства. Если прописан MegadID, то используется он.

1486454199: New connection from 192.168.0.14 on port 1883.
1486454199: New client connected from 192.168.0.14 as megad-14 (c1, k30).
1486454199: Sending CONNACK to megad-14 (0, 0)
1486454200: Received SUBSCRIBE from megad-14
1486454200:     megad/14/cmd (QoS 0)
1486454200: megad-14 0 megad/14/cmd
1486454200: Sending SUBACK to megad-14

В данный момент при срабатывании входа устройство публикует информацию в топике: megad/14
Принцип формирования описан выше

1486454392: Received PUBLISH from megad-14 (d0, q0, r0, m0, 'megad/14', ... (22 bytes))

Передача информации происходит в JSON-формате

{"port":"0","cnt":"1"}

Соответственно "сервер", подписанный на megad/14 и получивший информацию о событии, публикует сообщение в топике megad/14/cmd
Формат этого сообщения пока прежний и соответствует стандартным командам сценариев: 7:2;8:2 (пример)

1486454501: Received PUBLISH from megad-14 (d0, q0, r0, m0, 'megad/14', ... (22 bytes))
1486454501: Sending PUBLISH to server (d0, q0, r0, m0, 'megad/14', ... (22 bytes))
1486454501: Received PUBLISH from server (d0, q0, r0, m0, 'megad/14/cmd', ... (7 bytes))
1486454501: Sending PUBLISH to megad-14 (d0, q0, r0, m0, 'megad/14/cmd', ... (7 bytes))

В качестве "брокера" можно использовать mosquitto.
В качестве "сервера" можно использовать PHP-скрипт с библиотекой phpMQTT.php

Вот грубый пример такого "сервера".

<?php
require("phpMQTT.php");
$mqtt = new phpMQTT("192.168.0.250", 1883, "server");

if(!$mqtt->connect()){
   exit(1);
}

$topics['megad/14'] = array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics,0);

while($mqtt->proc()){}

$mqtt->close();

function procmsg($topic,$msg){
   global $mqtt;
      echo "Msg Recieved: ".date("r")."
Topic:{$topic}
$msg
";
      $mqtt->publish("megad/14/cmd","8:2;7:2",0);
}
?>



Максимальный ток, потребляемый модулями проекта MegaD от источника питания 12В

Преимущество автоматики на базе микроконтроллеров - низкое потребление электроэнергии и возможность длительной работы от источников бесперебойного питания.

MegaD-2561 Ver 1.0 57 мА
MegaD-7I7O-R Ver 5.2+ 310 мА
MegaD-7I7O-SD Ver 5.2+ 140 мА
MegaD-14-IN Ver 6.2 (без учета подключаемых датчиков) 56 мА

Краткое руководство (для версии Ver 2.0)
Краткое руководство (для версии Ver 1.0)

 

Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.



Добавить комментарий:



Сортировка комментариев: Последние сверху | Первые сверху

2017-02-22 07:01:31 | Владимир
Датчики подключены на шину параллельно. Один датчик сразу возле колодки устройства, потом припаян кабель 15 метров, на конце кабеля еще один датчик. Правильно ли я понимаю, что у датчика 3-й и 1-й контакт замыкаются м/у собой и подключаются на ноль, средний контакт - это плюс. Если отключить кабель, т.е. когда висит только один датчик, то показывает нормально.


2017-02-19 21:38:30 | Andrey_B
Владимир, как подключены датчики? Проблема, скорее всего, в подключении. Напомню, 1-wire шина предполагает, что датчики висят на одной линии (кабеле) с минимальным ответвлением.


2017-02-19 16:17:34 | Владимир
Подскажите почему при настройке порта в режиме 1WBUS и подключении двух термодатчиков ds18b20 выдаёт всё время разные значения, причём довольно странные:
0ad5d7020000:23.25;0ad5d7020000:23.25
0ad557020000:-0.06
0ad557020000:-0.06;0ad557020000:-0.06
0ad5d7020000:-104.62

Одно и тоже при подключении к портам Xt2 и через MegaD-14-IN

Прошивка 4.07b2


2017-02-10 16:59:07 | Andrey_B
Андрей, существующие исполнительные модули, которые подключаются к контроллеру 34-проводным шлейфом нельзя удалять от контроллера.
Контроллер + исполнительный модуль - это фактически одно устройство, разделенное на два корпуса. Можно сделать исполнительный модуль в одном корпусе с контроллером и тогда он может располагаться везде, где есть Ethernet. Но стоимость при этом изменится мало. Я же говорил про поддержку исполнительных модулей, которые подключаются по I2C. Они могут располагаться на некотором (не очень большом) удалении. "Логическая" часть таких модулей проще и дешевле, но есть нюансы: передача данных между контроллером и исполнительным модулем будет существенно медленнее, чем в случае подключения по 34-проводному шлейфу. Для работы с выключателями это имеет значение.


2017-02-10 12:00:01 | Андрей
Можно надеяться, что в будущем исполнительный модуль можно будет установить на удалении от контролера, или просто будет осуществлено увеличение количества исполнительных модулей поддерживаемых контролером?


2017-02-09 19:01:08 | Andrey_B
Андрей, это вопрос скорее не технический, а философский.
Где лучше держать деньги? В одном банке с высоким процентом или в нескольких банках под более низкий процент? Чувствуете аналогию? И это только одно из обстоятельств. Компоновка конечного устройства может быть разной. И вариантов на самом деле очень много. Но и есть другая народная мудрость - про "зайцев" и про "не поймаешь". Предложенная компоновка сложилась исторически и пока она отвечает поставленным задачам. Есть у нее и плюсы и минусы. Я работаю над поддержкой и развитием выбранной компоновки. Но вы также не забывайте, что соразмерно количеству портов растут и требования к ресурсам микроконтроллера. Ему нужно больше памяти, больше производительности. А используя более оснащенные микроконтроллеры мы увеличиваем и стоимость. Грубо говоря, чудес не бывает. И здесь больше вопрос оптимального сочетания свойств.
А что касается увеличения количества исполнительных модулей, то, уверяю вас, это можно сделать не только с помощью "сдвиговых регистров". Есть и другие способы, некоторые из которых, надеюсь контроллер скоро будет поддерживать.


2017-02-09 17:39:55 | Андрей
Добрый день! Очень интересует Ваша разработка для организации системы Умный дом. Но как минус со своей стороны считаю ограниченное количество подключаемых исполнительных модулей и не возможность установить исполнительный модуль на удалении от контролера, т.е. если мне нужно более 34 портов или установить исполнительный модуль в другом месте, то требуется приобрести дополнительный контролер.
Нашел еще одну похожую разработку - REAVISOR, где к одному контролеру можно подключить 10 исполнительных модулей, но там по 8 входов/выходов.
Возможно ли что в будущем появиться Мега на большее количество исполнительных модулей (выходов)?
Может в помощь Вам будет информация одного из участников форума по данной тематике: "Порты увеличил банально 8 сдвиговых регистров на выход по 8 каналов итого +64 выхода дискретных, в двух корпусах D6MG. Так же спаял в корпусе D6MG переходник для 4-х 16-ти портовых мультиплексоров и получил +64 входа дискретно/аналоговых. Понаследовал в своих классах функции DigitalWrite/DigitalRead/analogRead научив их работать с портами номерами выше 70 (54 дискретных на arduino + 16 аналоговых) и имея 198 портов ни в чем себе не отказываю :) Могу еще хоть три раза по столько же портов прикрутить."
Я в этой области не очень смыслю, может Вам будет понятнее.
Спасибо!


2017-02-01 12:16:58 | Andrey_B
Александр, с помощью сервера. В качестве сервера может выступать любой ПК или мини-ПК типа raspberry Pi, перепрошитые роутеры и т.д.


2017-01-31 22:28:59 | Александр
И еще вопрос. Планируете ли вы добавление этого функционала?


2017-01-31 22:26:05 | Александр
Если у вас реализовано подключение нескольких датчиков или исполнительный устройство на шину 1-wire, то как их читать или ими управлять? У меня задача управлять теплым электрическим полом на площади 100 кв.М. Нужно регулировать температуру в 25 зонах нагрева. Подскажите пожалуйста варианты.


2017-01-31 21:58:11 | Andrey_B
Александр, не понял ваш вопрос. Если вы спрашиваете, доступна ли функция термостата для порта, работающего с 1-wire шиной, то ответ - нет, в текущий момент не доступна. Если вы спрашиваете о другом, то пожалуйста сформулируйте вопрос иначе.


2017-01-31 18:06:15 | Александр
Здравствуйте!
подключив на шину 1-wire 25 датчиков температуры, я могу регулировать эти зоны обоими исполнительными модулями?? Или все таки необходим отдельный сервер?
И вообще как реализовать такое?


2017-01-30 11:05:31 | Andrey_B
Дмитрий, формально температурный диапазон от 0 градусов. Производители отдельных компонентов заявили именно такой диапазон. Фактически, думаю, контроллер должен работать без каких-либо особенностей при температурах до -15.


2017-01-30 00:44:03 | Дмитрий
наткнулся на док : "Для всех модулей рабочая температура, град. C: от 0 до +55." , так понимаю для уличной установкой не подходит.


2017-01-29 23:37:00 | Дмитрий
Добры день,
Какая рабочая температура для Меги-2561 а также исполнительных блоков(хочу понять если можно ставить шкаф на улице где -20 зимой а так-же в чердачном помещении где летом +30 )

Спасибо


2017-01-16 17:47:34 | Сергей Т
Скажите, а вы сертифицировали в России это устройство? Если да, то в кратце какие сложности были связанные с этим? Аесли нет, то почему? Спасибо


2017-01-10 12:10:07 | Maxmen
Андрей, спасибо. У меня задача несложная. Требуется управлять 2-мя вытяжными вентиляторами (1 с задержкой отключения, другой в ванной будет по датчику влажности срабатывать), считывать показания 2-х счетчиков воды с импульсными выходами, мониторить 2 датчик затопления и управлять 2-мя перекрывающими кранами. Хотя, наверное лучше отдельную megad поставить на все это и еще свет через нее же запустить.


2017-01-09 22:22:54 | Andrey_B
Maxmen, во-первых, каждый порт микроконтроллера может быть отдельной 1-wire шиной. Все 36/38 портов. Во-вторых, чисто технически нет никаких проблем подключать к одной шине несколько различных устройств. Проблема только в том, что функции порта привязаны к его настройкам. Это не позволяет в текущий момент одновременно осуществлять управление модулями DS2413 и считывание данных с DS18B20. По очереди (меняя настройки порта) можно, но не одновременно. Другой вопрос, при наличии такого количества портов, действительно ли это необходимо? Дело в том, что разделение управляющих элементов DS2413 от датчиков DS18B20 определенно имеет смысл. Если, к примеру, датчики подключены по схеме паразитного питания, то в процессе конвертации температуры никакие команды по шине 1-wire передаваться не могу. Это особенность работы 1-wire. Два ключа DS2413 тоже в данный момент подключить нельзя. То есть теоретически, конечно же, можно, но пока нет поддержки адресации. Все дело в том, что вообще связка MegaD-2561 + DS2413 - вещь достаточно специфическая в силу того, что гораздо удобнее использовать в качестве исполнительных модулей MegaD-7I7O/MegaD-14-R. DS2413 имеет смысл использовать в узких задачах, когда требуется вынести исполнительный модуль далеко от контроллера. Это редкие ситуации и пока спроса на адресное управление 1-wire модулями нет.


2017-01-09 15:38:32 | Maxmen
Все классно, только не могу понять- по 1-wire можно только 1 устройство подключить к контроллеру? Можно ли на 1 линию 1-wire к контроллеру подключить несколько устройств? Например, на 1 линию "повесить" 2-х канальный силовой ключ с интерфейсом 1-wire и 2 датчика S18B20? Какая максимальная длина 1-wire провода, если тянуть экранированной витой парой 6 категории?


2017-01-06 18:18:44 | Виктор
А можно получить разводку платы, этого девайса.


2016-11-25 20:59:15 | Andrey_B
Конечно, это очень специфические задачи, которые редко требуются в быту.
Реализовать такое, безусловно, можно. Вопрос в целесообразности...


2016-11-25 01:58:15 | Nishiki
Для меня лично, самое основное это - контроль потока жидкости в контуре испарителя теплового насоса.
Еще можно контролировать поток воды в системе фильтров Clack.
Контроль оборотов всевозможных двигателей.


2016-11-24 12:15:26 | Andrey_B
Nishiki, а в каких практических задачах это может потребоваться?


2016-11-23 20:49:38 | Nishiki
Да предполагаю учет импульсов но не в минуту, а гораздо быстрей с интервалом 100-10 мс.
Если нужно было в минуту, то можно обойтись скриптом на php используя параметр "cnt".


2016-11-23 17:45:26 | Andrey_B
Nishiki, а чем это отличается от стандартной функции, которую мы называем "термостат"? Она доступна для АЦП-портов. Или "тахометр" предполагает учет количества импульсов в минуту?


2016-11-23 16:12:44 | Nishiki
Андрей!
Вы не планировали добавить именно в Мегу функцию тахометра?
Большинство двигателей имеют встроенный тахометр.
Допустим в поле Action можно будет вписать при 1000 об включаем нагрузку а при 1100 выключаем.


2016-10-26 12:06:24 | Денис
Понятно, я подумал, что вы имели ввиду аппаратную реализацию I2C в самой atmega2561.


2016-10-25 17:26:02 | Andrey_B
Денис, аппаратная в данном случае означает средствами устройства без применения дополнительных программных библиотек на сервере. Реализация работы с I2C выполнена в прошивке для любого из портов.


2016-10-25 15:31:40 | Денис
Здравствуйте. Не совсем понял, как у вас реализована аппаратная поддержка I2C для любого из цифровых портов? Ведь аппаратный I2C есть только на портах PD0 и PD1 и, судя по datasheet на atmega2561, функции мультиплексирования (как для ADC) для I2C не предусмотрено.


2016-10-23 05:19:31 | Юрий
Ок! Спасибо, Андрей!


2016-10-20 11:08:01 | Andrey_B
Юрий, режим встроенного термостата работает только тогда, когда к порту подключен один датчик. В случае подключения датчиков шиной необходимо использовать "сервер" для считывания/анализа данных с датчиков.


2016-10-20 06:57:12 | Юрий
Здравствуйте, Андрей!
Я прочитал статью и у меня появился вопрос. Например я подключаю на шину несколько датчиков (Подключение датчиков DS18B20 шиной). Но не понимаю, как эти датчики использовать. Как сделать, что бы при достижении заданной температуры измеряемой среды включались/отключались порты, к которым подключены термоэлектрические приводы на батареях и гребёнках тёплого пола?


2016-10-03 14:22:07 | Andrey_B
Евгений, в ближайшие месяцы выпуск такого модуля не планируется.


2016-10-03 13:15:47 | Евгений
Добрый день, планируется ли к выпуску устройство, в котором в одном компактном корпусе, как у контроллера, будет и контроллер и исполнительный модуль с небольшим количеством портов?


2016-09-29 16:49:20 | Andrey_B
Руслан, проверил у себя. Проблема не выявилась. После перезагрузки значение поля PWM такое, какое указано в Default. Проверил все PWM порты на XP1 и XP2.
Хочу только обратить ваше внимание, что максимальное значение в этом поле 255.


2016-09-29 10:55:26 | Руслан
Андрей, спасибо за ответ, но, вероятно я не правильно описал суть проблемы. Значение, указанное в поле Default, сохраняется, но, после перезагрузки устройства, вне зависимости от значения указанного в этом поле, полю PWM (0-255) всегда присваивается значение 2.


2016-09-28 18:47:48 | Andrey_B
Руслан, прошивка 4.03b2. Проблем пока не вижу ни на разъеме XP1, ни на разъеме XP2. Значения, которые я указываю в поле Default сохраняются корректно.
Исходники прошивки доступны прямо с главной страницы сайта.


2016-09-28 16:05:43 | Руслан
Здравствуйте.
Столкнулись со следующей проблемой: на новом MegaD-2561 на прошивке 4.01b2 на ШИМ портах P10-P13 разъема XP1 возможно выставить значение по умолчанию и оно сохраняется, а на портах P25,P27,P28 разъёма ХР2 это значение всегда сбрасывается на "2". После обновления прошивки до версии 4.03.b2 этот функционал перестал работать и для разъёма ХР1. Есть ли какие-то пути решения этой проблемы?
И еще один вопрос - возможно ли получить исходники прошивки для MegaD-2561 - самостоятельные поиски не увенчались успехом?


2016-09-23 17:27:42 | Andrey_B
Юрий, в текущий момент DS2423 не поддерживается. И есть ли смысл в этой поддержке, если MegaD может сам считать импульсы, а DS2423 уже много лет как снят с производства?


2016-09-23 10:50:36 | Волков Юрий
Добрый день. А к MegaD-2561 возможно подключить ds2423 для считывания показаний ?


2016-09-22 12:24:01 | Andrey_B
Роман, для того, чтобы управлять реле или принимать сигнал от кнопки нужна электронная обвязка для "голого" порта. Вот именно эта электронная обвязка и присутствует в исполнительных модулях. "Голый" порт не может управлять реле и качественно работать с кнопкой.


2016-09-22 11:02:13 | Роман
Андрей здравствуйте. Если покупать MegaD-2561 обязательно нужен (MegaD-7I7O-R, MegaD-7I7O-SD, MegaD-14-IN и т.д.). Или же с помощью обычный портов можно управлят реле или принимать синал от кнопку.


2016-09-19 11:16:30 | Andrey_B
Роман,
В настройках устройствах поле Watchdog, в котором прописан номер порта, с описанным сценарием. (В данном случае 0, то есть P0).
Если поле пустое, функция не активна.
Устройство проверяет наличие сервера примерно раз в 2 минуты и в случае его отсутствия выполняет сценарий по умолчанию для указанного порта.


2016-09-18 18:32:03 | Роман
Андрей,что за графа Wdog(в ранних версиях меги 328 точно помню было,а найти никак не могу) и какие значения вписывать?


2016-09-10 11:48:11 | Andrey_B
Да, можно подключать.


2016-09-10 10:18:01 | Mixman
Считыватель. который у Вас тут на сайте - Считыватель карт Proximity EM-Marime (накладной)


2016-09-09 22:54:54 | Andrey_B
Mixman, вы какие карты имеете ввиду?


2016-09-09 21:03:11 | Mixman
Правильно ли я понимаю, что к контроллеру напрямую можно подключить Считыватель карт?


2016-09-01 18:53:54 | Andrey_B
Иван, если вы имеете ввиду подключение аналоговых датчиков, то в этом плане MegaD-2561 ничем принципиально не отличается от MegaD-328. Подключать можно любые датчики с выходным напряжением менее 3,3В. Датчики шума - это отдельная история, в которой есть много нюансов.


2016-09-01 17:47:21 | Иван
Похоже MegaD-2561 получился отличным контроллером! А датчик шума к нему можно подключить будет?