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

Во первых, ATtiny и ATMega это конечно хорошо — удобно паять и все такое. Но пора выкинуть это старье и использовать что-нибудь посовременнее при современных ценах на комплектующие проще поставить какой-нибудь стоногий ARM, вкатить на него ОС РВ и не парить себе мозг работой с железом, ручным разделением программ на несколько потоков и так далее. Такие микросхемы спокойно можно припаять вручную — на производственной линии НПО ЛМТ, что стоит на первом этаже одного из корпусов университета, так и делают. Правда не знаю, используется ли при этом паяльник или фен, но обещали все показать и научить.

Во-вторых, неплохо определиться с задачей — что мне нужно и что я конкретно хочу сделать, а не кидаться сразу же к Иглу с Топором, рьяно разводя печатные платы. Именно этим и вызваны мои предыдущие неудачи — задача, стоявшая передо мной была поставлена в слишком общем виде, ну а стремление побыстрее сделать отладочную плату, чтобы писать ПО, лишь мешало мне.

Текущие задачи

  1. Разобраться, что же мне надо.

  2. Выбрать пути достижения своей цели.

Чего я хочу?

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

Как мне этого достичь?

Не нужно строить велосипеды. Сделать радиомодуль на ATMega8 и TR24A и пытаться запихнуть сетевой стек в 2 Кб это конечно круто, но слишком ресурсозатратно, долго и не имеет смысла при наличии рядом уже работающего велосипеда.

Схема системы должна быть максимально проста — в центре управляющий сервер, а по бокам различные датчики, управляющие механизмы и так далее…​ Это похоже на топологию "звезда". Внутри все может быть как угодно — хоть полносвязная топология, но для пользователя данные ходят только в двух направлениях — от сервера к исполнительным устройствам и назад.

Scheme

Для передачи данных можно взять CC2530 от TI — под него уже есть готовый и работающий сетевой стек — ZStack. С помощью него можно создавать сенсорные сети, в том числе и такие, в которых устройства помогают друг другу передавать данные куда надо. Кроме того, внутри этой микросхемы есть как радиотрансивер, так и микроконтроллер — экономия однако.

Если возможностей этого камня не хватит — можно взять какой-нибудь ARM и пользоваться всеми доступными на нем прелестями, упрощающими разработку — например, ОС РВ, готовыми библиотеками и так далее.

Что самое хорошее — мне доступен отладочный набор для CC2530, то есть я смогу приступить к написанию ПО еще даже в глаза не видя своих плат — ускорение разработки налицо.

В данный момент

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

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

После создания этой части системы я должен буду забыть о сенсорных сетях, ZigBee и всем прочем. Мне должно быть безразлично, каким образом данные будут доходить от датчика до сервера, также мне должно стать безразличным то, как будут подключаться датчики к этому модулю системы.

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

Sensor network scheme

Еще раз, но уже кратко:

  • Надежная передача данных между частями системы

  • Абстрагирование от особенностей работы исполнительных устройств и датчиков

  • Абстрагирование от особенностей работы сенсорной сети

  • Взаимозаменяемость

Теперь рассмотрим каждый пункт подробнее:

Надежная передача данных между частями системы будет достигаться средствами стека ZigBee от TI — ZStack. То есть целиком программно.

Абстрагирование от особенностей работы сенсорной сети тоже будет осуществляться целиком программно — будет написана эдакая "обертка", которая получает на входе адрес устройства (не в ZigBee сети, а в сети нашего "умного дома") и данные для него, и уже сама работает с сенсорной сетью. Адрес устройства в сети "умного дома" будет жестко зависеть от самого устройства — например он может быть прошит во флэше на плате устройства, откуда микроконтроллер CC2530 сможет его считать и использовать при получении данных от сервера. Возможно, перед отправкой данных, интерфейсная плата вначале пошлет некий широковещательный запрос адреса мота в сенсорной сети, к которому подключено устройство с таким-то адресом. А затем, по результатам ответа, сообщение будет послано уже конкретному устройству.

Абстрагирование от особенностей работы устройств "умного дома" будет достигаться за счет стандартизированного интерфейса, по которому будут подключаться наши интерфейсные платы к устройствам "умного дома". А также за счет обмена стандартными сообщениями по этому интерфейсу. То есть речь идет об использовании простенького протокола передачи данных поверх какого-нибудь SPI или I2C. Естественно, обеспечивать обмен данными между нашим интерфейсом и датчиком/исполнительным устройством будет какой-нибудь микроконтроллер (может быть даже можно будет загружать этот микроконтроллер вычислительными задачами для сервера — получится своего рода эдакий кластер).

Взаимозаменяемость будет достигаться за счет всего вышеперечисленного — адрес устройства зависит от самого устройства, стандартизированные интерфейсы и протоколы, интерфейсная плата будет заниматься только передачей и приемом данных.

Board scheme

Вот пока что и все…​

умный дом