Центральный контроллер умного дома
В прошлой статье было вводное слово о том, что из себя представляет вся сеть для «умного дома». Сейчас я хочу затронуть центральный контроллер немного подробнее. Во-первых, какие на него возложены задачи; во-вторых, какими средствами и методами эти задачи будут решены.
Задачи, перед центральным контроллером, стоят довольно простые. Он должен дать возможность компьютеру взаимодействовать с оконечными устройствами: датчиками и устройствами управления. Для подобной задачи хватит даже простейшего микроконтроллера на уровне ATTiny2313. Но я хочу заложить на будущее возможность некоторой автономности от управляющего компьютера. Ведь никто не застрахован от случаев когда отключают электричество и тогда вся сеть превратится в мертвое железо. Плата с микроконтроллером и некоторой пачкой оконечных детекторов потребляют небольшое количество электричества, что позволяет поддерживать систему в рабочем состоянии. Естественно, что всю систему, вместе с управляемым оборудованием, один аккумулятор не выдержит, а вот поддержать систему в режиме ожидания сможет довольно долго.
Кроме определенной мобильности я хочу заложить в центральный контроллер серию органов чувств и управления. Это одна из причин по которым я заложил дорогой микроконтроллер. Что именно меня интересует в ATMega16A/ATMega32A:
- Перепрошивка через bootloader.
- 8 каналов АЦП.
- 4 канала ШИМ для ЦАП.
- Подключение часового кварца для RTC.
- Шина USART.
- Шина TWI (I2C).
- 16/32 килобайт памяти для программ (Flash).
- 512/1024 байт памяти для данных (EEPROM).
- 1/2 килобайт оперативной памяти (SRAM).
- 32 программируемых вывода (4 порта по 8 бит).
Еще меня интересует возможность быстрого прототипирования с использованием микроконтроллера ATMega16A. Это достигается благодаря большому корпусу в DIP40. Его можно впаять в любую монтажную плату и легко производить дальнейшее прототипирование платы на этой же монтажной плате. Быстрое прототипирование «в железе» ускоряет поиск ошибок и дает возможность видеть результат в процессе проектирования. Просто не все тонкости видно когда рисуешь проект на бумаге. Частенько руки делают на автомате то, что сознание не сразу нарисует на бумаге.
После подготовки прототипа можно будет изготовить проект в ЛУТ и продолжить отлов мелких схемотехнических ошибок. Если багов не обнаружится, то дальше можно будет произвести заказ получившейся платы на производстве.
Вполне возможно, что я буду прототипировать плату не на монтажке, а с использованием отладочной платы PinBoard v1.1 или OrcaBoard Rev.2. В зависимости от того, кто из них будет больше подходить под поставленную задачу с минимальными финансовыми затратами.
Сопряжение компьютера и центрального контроллера будет происходить по USB. Хотя на стадии проектирования и отладки, можно обойтись обычным COM-портом. Но в действующем устройстве я закладываю работу с USB портом. Точнее с переходником USART в USB, на микросхеме FTDI FT232RL. Со стороны компьютера будет видно обычный COM-порт, что позволит быстро отлаживать систему через терминал, не прибегая к различным ухищрениям типа работы с HID.
С шиной пока еще не решил, буду делать либо на 1-Wire (Micro-LAN), либо на RS-485. Скорость обмена данными буду брать в зависимости от качества связи и протяженности линии связи. Поддерживаемые скорости которые будут точно реализованы:
- 62,5 кбит/с на линии протяженностью 1200 метров (1 витая пара).
- 375 кбит/с на линии протяженностью 300 метров (1 витая пара).
- 2400 кбит/с на линии протяженностью 100 метров (2 витых пары).
Протокол передачи данных еще в разработке. Возможно будет использоваться ModBus. Но не исключена разработка своего собственного протокола. Так как протокол ModBus подразумевает клиент-серверную организацию передачи данных, а я закладываю возможность общения между устройствами. И в этом случае при прослушивании шины невозможно будет понять кто засоряет канал связи. Еще ModBus не поддерживает арбитраж, а в моем случае он необходим, чтобы не происходило коллизий.
Дополнительные порты
В качестве дополнительных портов я хочу предусмотреть:
- IR-связь на TSOP.
- Порт для подключения термометров.
- Переменные резисторы для плавной регулировки.
- Кнопки.
- Переключатели.
- Входы от реле и герконов.
- Выходы на реле.
- АЦП для мониторинга напряжения аккумуляторов.
- Светодиодные индикаторы.
- ЖК экран 16 символов в 2 строчки.
- USART, для подключения к COM-портам на ИБП.
Для чего делать прямое подключение некоторых устройств? Ответ довольно прост. Во-первых, прямое подключение имеет более высокую скорость. Во-вторых, сделать небольшую обвязку на плате дешевле чем городить дополнительную плату и пытаться её разместить в корпусе. В-третьих, вся работа с устройствами осуществляется компьютером, но компьютер является одним из слабых звеньев. Если вдруг, компьютер отключится из-за пропадания питания, то устройства не будут знать, что им делать с накапливающимися данными. В то же время, центральный контроллер может независимо от компьютера разослать по сети уведомление, что пропало электричество и необходимо перейти в режим ожидания. В-четвертых, дополнительные кнопки для вызова определенных функций не помешают, а позволят повысить эффективность использования оборудования. В-пятых, имея выходы на реле (или транзисторы, если нагрузка небольшая) мы можем управлять подключенными устройствами или вообще запустить управляющий компьютер по расписанию.
Вот так выглядит концепт центрального контроллера.
Тэги: микроконтроллеры
Отредактировано:2020-09-23 08:10:26