Каждый создатель умного дома должен спроектировать как минимум один домотканный контроллер собственной разработки. Я к этому весу подходил трижды, и вот, наконец, оно есть и даже встало в строй парой юнитов. Третий на подходе.
Входящие требования проекта:
1. Закрыть конкретные потребности по входам-выходам и датчикам, а именно:
3. Утилизировать имеющиеся MMNET101 :)
Конечно, всё это не с нуля - были разные наработки, и модуль этот мне хорошо знаком уж лет десять.
Что получилось (один из вариантов компоновки):
![01b2b208da7c92b3892cfcb23f983c400043ce7764 01b2b208da7c92b3892cfcb23f983c400043ce7764]()
Вертикально - модуль детекторов для измерения переменного тока. Правый нижний угол - импульсный преобразователь (основное питание умного дома - +24) до +5 и линейный до +3.3 для BMP180.
![01811eba1f2d4a0be4589a2a20c5198156b6768c75 01811eba1f2d4a0be4589a2a20c5198156b6768c75]()
Конкретно этот модуль имеет: DHT11, BMP180, 6 каналов 1Wire (в сумме до 16 датчиков), 6 каналов Ai, 2 канала измерения переменного тока, 4 Di (без развязки, только с защитой по напряжению), 4 Do с буфером (которые потенциально можно использовать как SPI, но прошивка пока не поддерживает).
![0109f997a25c8525b3cfffaf79ffa3107a81ed5a48 0109f997a25c8525b3cfffaf79ffa3107a81ed5a48]()
Монтаж незатейливый. Я никогда не делаю плат, обхожусь монтажками и проводами. "Зато я знаю, где их много". Китай продаёт готовые облуженные проводки, монтажки у меня гениальные (Российского, кстати, производства), никакой серийности всё равно нет. Да и делаю я это, конечно, больше в качестве отдыха, чтобы попаять всласть. :)
![01cdb79a1412648af57605f6710e6f11ceb7ae6ef8 01cdb79a1412648af57605f6710e6f11ceb7ae6ef8]()
У устройства есть 4 светодиодных индикатора:
Из интересного - MAC адрес для сети я синтезирую из MAC-адреса DS2401, который вместе с бортовой DS18B20 сидит на отдельном внутреннем 1Wire. Это, в частности, обеспечивает привязку IP-адреса к устройству в целом, а не к воткнутому в него процессорному модулю. Поэтому процессорный модуль можно снять и перепрошить без потери IP-адреса. К сожалению, конфигурация модуля уже хранится во внутреннем EEPROM Atmega128, и её приходится перенастраивать, если модуль процессора меняется.
Можно бы было сделать скачивание конфигурации в XML через параметризацию DHCP, но я не счёл. Для тех пяти модулей, что у меня остались - перебор. Тем более, что один-то надо будет оставить как ЗИП.
Ещё вариант - поставить внешнюю I2C EEPROM, но, опять же, овчинка того не стоит, как мне кажется.
Сейчас работают два экземпляра. Один стоит в кухонной вытяжке и обеспеспечивает её дистанционное управление, второй встал в стойку и будет работать tcp-485 туннелем (точнее, уже работает), принимать данные с 1wire датчиков температуры, измерять ток в определённых потребителях (плита и стиральная машина) и, наверное, принимать некоторые аналоговые сигналы, типа датчиков освещённости на улице.
UPD: забыл сказать - код, конечно, открыт.
PS: Хранителям очага - а может, добавим тег smarthouse?
Входящие требования проекта:
1. Закрыть конкретные потребности по входам-выходам и датчикам, а именно:
- Иметь интерфейс ModBus/TCP + http value request (OpenHab style)
- Настраиваться через веб-интерфейс.
- Обслужить несколько (6) шин 1wire по несколько датчиков на шине, вплоть до 32 суммарно, с фиксированным и управляемым отображением датчиков на внутренние идентификаторы умного дома.
- Иметь аналоговые входы. В одном из модулей - вход измерения переменного тока (внешний шунт).
- Иметь PWM выходы. В итоге оно есть, но не используется и требует, пожалуй, доработки напильником.
- Уметь делать туннель tcp-485
- Конечно, обычные Di/Do с переключением из конфигурации.
- Поддерживать датчики DHT11 и BMP180 - конфигурируемо (есть/нет на конкретном экземпляре)
- Уметь сбрасывать выходы в дефолт при отказе связи.
- Брать время по NNTP (на борту нет батарейки и энергонезависимого таймера) - всё равно сеть нужна обязательно.
3. Утилизировать имеющиеся MMNET101 :)
Конечно, всё это не с нуля - были разные наработки, и модуль этот мне хорошо знаком уж лет десять.
Что получилось (один из вариантов компоновки):

Вертикально - модуль детекторов для измерения переменного тока. Правый нижний угол - импульсный преобразователь (основное питание умного дома - +24) до +5 и линейный до +3.3 для BMP180.

Конкретно этот модуль имеет: DHT11, BMP180, 6 каналов 1Wire (в сумме до 16 датчиков), 6 каналов Ai, 2 канала измерения переменного тока, 4 Di (без развязки, только с защитой по напряжению), 4 Do с буфером (которые потенциально можно использовать как SPI, но прошивка пока не поддерживает).

Монтаж незатейливый. Я никогда не делаю плат, обхожусь монтажками и проводами. "Зато я знаю, где их много". Китай продаёт готовые облуженные проводки, монтажки у меня гениальные (Российского, кстати, производства), никакой серийности всё равно нет. Да и делаю я это, конечно, больше в качестве отдыха, чтобы попаять всласть. :)

У устройства есть 4 светодиодных индикатора:
- Работа (мигает зелёным когда всё в норме)
- Отказ связи (мигает если к модулю никто не ходит за данными и горит пока сетевой интерфейс трясёт адрес по DHCP)
- Перегрузка по +5 вольт для датчиков 1Wire - защищено от КЗ многократным предохранителем, поскольку может идти длинными проводами.
- Передача по RS485.
Из интересного - MAC адрес для сети я синтезирую из MAC-адреса DS2401, который вместе с бортовой DS18B20 сидит на отдельном внутреннем 1Wire. Это, в частности, обеспечивает привязку IP-адреса к устройству в целом, а не к воткнутому в него процессорному модулю. Поэтому процессорный модуль можно снять и перепрошить без потери IP-адреса. К сожалению, конфигурация модуля уже хранится во внутреннем EEPROM Atmega128, и её приходится перенастраивать, если модуль процессора меняется.
Можно бы было сделать скачивание конфигурации в XML через параметризацию DHCP, но я не счёл. Для тех пяти модулей, что у меня остались - перебор. Тем более, что один-то надо будет оставить как ЗИП.
Ещё вариант - поставить внешнюю I2C EEPROM, но, опять же, овчинка того не стоит, как мне кажется.
Сейчас работают два экземпляра. Один стоит в кухонной вытяжке и обеспеспечивает её дистанционное управление, второй встал в стойку и будет работать tcp-485 туннелем (точнее, уже работает), принимать данные с 1wire датчиков температуры, измерять ток в определённых потребителях (плита и стиральная машина) и, наверное, принимать некоторые аналоговые сигналы, типа датчиков освещённости на улице.
UPD: забыл сказать - код, конечно, открыт.
PS: Хранителям очага - а может, добавим тег smarthouse?