Во первых, ATtiny и ATMega это конечно хорошо - удобно паять и все такое. Но
Во-вторых, неплохо определиться с задачей - что мне нужно и что я конкретно хочу сделать, а не кидаться сразу же к Иглу с Топором, рьяно разводя печатные платы. Именно этим и вызваны мои предыдущие неудачи - задача, стоявшая передо мной была поставлена в слишком общем виде, ну а стремление побыстрее сделать отладочную плату, чтобы писать ПО, лишь мешало мне.
Текущие задачи
- Разобраться, что же мне надо.
- Выбрать пути достижения своей цели.
Я разрабатываю систему "умный дом". Я хочу чтобы она выполняла за меня рутинные действия (как-то включение света, когда темно), делала мою жизнь в
Как мне этого достичь?
Не нужно строить велосипеды. Сделать радиомодуль на ATMega8 и TR24A и пытаться запихнуть сетевой стек в 2 Кб это конечно круто, но слишком ресурсозатратно, долго и не имеет смысла при наличии рядом уже работающего велосипеда.
Схема системы должна быть максимально проста - в центре управляющий сервер, а по бокам различные датчики, управляющие механизмы и так далее... Это похоже на топологию "звезда". Внутри все может быть как угодно - хоть полносвязная топология, но для пользователя данные ходят только в двух направлениях - от сервера к исполнительным устройствам и назад.
Для передачи данных можно взять CC2530 от TI - под него уже есть готовый и работающий сетевой стек - ZStack. С помощью него можно создавать сенсорные сети, в том числе и такие, в которых устройства помогают друг другу передавать данные куда надо. Кроме того, внутри этой микросхемы есть как радиотрансивер, так и микроконтроллер - экономия однако.
Если возможностей этого камня не хватит - можно взять какой-нибудь ARM и пользоваться всеми доступными на нем прелестями, упрощающими разработку - например, ОС РВ, готовыми библиотеками и так далее.
Что самое хорошее - мне доступен отладочный набор для CC2530, то есть я смогу приступить к написанию ПО еще даже в глаза не видя своих плат - ускорение разработки налицо.
В данный момент...
В данный момент мне нужно сделать ту часть системы, которая будет заниматься передачей данных между остальными частями системы. Скорее всего она будет выполнена в виде маленькой платы с антенной, радиопередатчиком, микроконтроллером (СС2530) и интерфейсными разъемами на ней.
Эта штука должна быть взаимозаменяемой - чтобы я мог снять отказавшую плату с устройства и заменить ее другой, без перепрошивки и прочих танцев с бубном.
После создания этой части системы я должен буду забыть о сенсорных сетях, ZigBee и всем прочем. Мне должно быть безразлично, каким образом данные будут доходить от датчика до сервера, также мне должно стать безразличным то, как будут подключаться датчики к этому модулю системы.
Можно сказать, что этот модуль будет интерфейсной платой между сенсорной сетью и конечным устройством. А можно сказать, что это будет еще одним уровнем абстракции для системы - указал адрес устройства, выплюнул данные, а об их передаче, доставке и приеме позаботятся уже эти модули.
Еще раз, но уже кратко:
- Надежная передача данных между частями системы
- Абстрагирование от особенностей работы исполнительных устройств и датчиков
- Абстрагирование от особенностей работы сенсорной сети
- Взаимозаменяемость
Теперь рассмотрим каждый пункт подробнее:
Надежная передача данных между частями системы будет достигаться средствами стека ZigBee от TI - ZStack. То есть целиком программно.
Абстрагирование от особенностей работы сенсорной сети тоже будет осуществляться целиком программно - будет написана эдакая "обертка", которая получает на входе адрес устройства (не в ZigBee сети, а в сети нашего "умного дома") и данные для него, и уже сама работает с сенсорной сетью. Адрес устройства в сети "умного дома" будет жестко зависеть от самого устройства - например он может быть прошит во флэше на плате устройства, откуда микроконтроллер CC2530 сможет его считать и использовать при получении данных от сервера. Возможно, перед отправкой данных, интерфейсная плата вначале пошлет некий широковещательный запрос адреса мота в сенсорной сети, к которому подключено устройство с таким-то адресом. А затем, по результатам ответа, сообщение будет послано уже конкретному устройству.
Абстрагирование от особенностей работы устройств "умного дома" будет достигаться за счет стандартизированного интерфейса, по которому будут подключаться наши интерфейсные платы к устройствам "умного дома". А также за счет обмена стандартными сообщениями по этому интерфейсу. То есть речь идет об использовании простенького протокола передачи данных поверх какого-нибудь SPI или I2C. Естественно, обеспечивать обмен данными между нашим интерфейсом и датчиком/исполнительным устройством будет какой-нибудь микроконтроллер (может быть даже можно будет загружать этот микроконтроллер вычислительными задачами для сервера - получится своего рода эдакий кластер).
Взаимозаменяемость будет достигаться за счет всего вышеперечисленного - адрес устройства зависит от самого устройства, стандартизированные интерфейсы и протоколы, интерфейсная плата будет заниматься только передачей и приемом данных.
Вот пока что и все...
Надежная передача данных между частями системы будет достигаться средствами стека ZigBee от TI - ZStack. То есть целиком программно.
Абстрагирование от особенностей работы сенсорной сети тоже будет осуществляться целиком программно - будет написана эдакая "обертка", которая получает на входе адрес устройства (не в ZigBee сети, а в сети нашего "умного дома") и данные для него, и уже сама работает с сенсорной сетью. Адрес устройства в сети "умного дома" будет жестко зависеть от самого устройства - например он может быть прошит во флэше на плате устройства, откуда микроконтроллер CC2530 сможет его считать и использовать при получении данных от сервера. Возможно, перед отправкой данных, интерфейсная плата вначале пошлет некий широковещательный запрос адреса мота в сенсорной сети, к которому подключено устройство с таким-то адресом. А затем, по результатам ответа, сообщение будет послано уже конкретному устройству.
Абстрагирование от особенностей работы устройств "умного дома" будет достигаться за счет стандартизированного интерфейса, по которому будут подключаться наши интерфейсные платы к устройствам "умного дома". А также за счет обмена стандартными сообщениями по этому интерфейсу. То есть речь идет об использовании простенького протокола передачи данных поверх какого-нибудь SPI или I2C. Естественно, обеспечивать обмен данными между нашим интерфейсом и датчиком/исполнительным устройством будет какой-нибудь микроконтроллер (может быть даже можно будет загружать этот микроконтроллер вычислительными задачами для сервера - получится своего рода эдакий кластер).
Взаимозаменяемость будет достигаться за счет всего вышеперечисленного - адрес устройства зависит от самого устройства, стандартизированные интерфейсы и протоколы, интерфейсная плата будет заниматься только передачей и приемом данных.
Вот пока что и все...