В дороге
Я привык выключать все электроприборы, когда уезжаю на несколько дней. Однако, очень часто хочется узнать, всё ли в порядке дома: не сгорел ли, не рухнул ли, не ограбили ли. Увы, но мне не удалось найти на рынке полностью автономное устройство, способное наблюдать за помещением и отсылать фотографии хозяину. Пришлось сделать такой геджет своими руками.
Опыта работы с микроэлектроникой у меня не было, так что сперва пришлось изучить азы этой науки. Меня грела мысль о том, что я соберу уникальное устройство, которого ещё никто не делал. То, что получилось после пяти месяцев работы, я бы хотел предложить сегодня на ваш суд.
Принцип работы
Камера устроена достаточно просто. Большую часть времени она спит. Раз в час она просыпается, регистрируется в GSM сети, соединяется с POP3 сервером и проверяет, если ли новые письма. Если новые письма есть, то устройство включает камеру, сохраняет изображение в JPEG на SD-карточку, соединяется с SMTP сервером и отправляет изображение на заданный адрес. После этого – спать.
Конфигурация устройства находится в файле настроек на SD-карточке. В качестве сотового оператора мне пришлось использовать AT&T.
Процесс сборки
Первым шагом стал выбор компонентов. Я решил пойти по пути наименьшего сопротивления и остановился на следующих частях:
— ATmega 328P с Arduino на борту. Для этого контролера есть очень много библиотек, примеров кода и т. п. Я решил работать с частотой 16Mhz.
— LinkSprite JPEG Camera. Это очень простая в использовании камера: она сама делает снимок 640×480 и сжимает его в JPEG. Устройство поддерживает обычный последовательный протокол.
— GSM-модем MTSMC-G2-IP. Этот GSM-модем подкупил меня встроенной поддержкой POP3 и SMTP. В остальном он не сильно отличается от конкурентов.
— MicroSD карточка для хранения информации.
— Всякая инфраструктурная мелочь: 74HC4052 чтобы управлять беседой с разными устройствами, несколько регуляторов напряжения и отличный выключатель TPS2020.
Самым сложным было сделать так, чтобы схема потребляла как можно меньше электричества во время сна. Питание каждого компонента управляется TPS2020. Таким образом, работает лишь ATmega. Мне очень помог пример Nightingale. В результате моя схема потребляет 0.14mA во время сна. Это значит, что устройство сможет работать до месяца без смены батареек (я использовал батарейки типа CR123Aв основном из-за их размера).
Теория разработана? Давайте соберём прототип. Во-первых, докажем себе, что всё работает, как мы ожидаем, а во-вторых, почувствуем себя кулхацкерами.
Выглядит отлично. Следующий этап – написать и отладить код. Программировать для ATmega 328P так же просто, как и для любого Arduino. Я настроил свой Eclipse для работы с этим чипом и программатором AVRISP mkII. Плагин AVR Eclipse Plugin пришелся очень кстати: билд проекта и его прошивка делались за пару щелчков мыши.
Код контроллера разрабатывался в течении двух-трёх месяцев. Последнюю версию кода можно найти на code.google.com.
Никогда не подумал бы, что 12Kb – это очень много памяти, а 16Mhz – это очень быстро.
Когда код был более или менее стабильным, а стол вполне завален прототипом, пришло время спаять всё вместе. Я решил использовать формат Arduino: уж больно просто найти дешевые компоненты. Вот что вышло:
Настала пора приступать к последней части – корпусу. Увы, но DIY-проекты не всегда имеют привлекательную оболочку. Поэтому я решил воспользоваться сервисом трёхмерной печати и сделать ровно то, что мне хочется.
Программы 3D моделирования мне не понравились. Как-то неестественно это – в в трёхмерном пространстве двухмерной мышкой водить. К счастью, я нашел OpenSCAD, бесплатную программу, где модели задаются на простом скриптовом языке. Например, сфера радиусом 5 это sphere(r=5). Красота.
Штангенциркуль, несколько недель моделирования, заказ на Ponoko и вот результат:
Модель была напечатана с удивительной точностью: детали сошлись без каких-либо доработок. Исходный код моделей можно найти на code.google.com.
Камера в сборе.
Вот что получилось:
Вот видео, демонстрирующее работу камеры и качество снимков:
Заключение
Теперь я могу быть спокоен за дом: камера будет пристально следить за ним. Батарейки должно хватить где-то на месяц, если почту проверять раз в час.