Полностью автономная камера наблюдения

1

Я привык выключать все электроприборы, когда уезжаю на несколько дней. Однако, очень часто хочется узнать, всё ли в порядке дома: не сгорел ли, не рухнул ли, не ограбили ли. Увы, но мне не удалось найти на рынке полностью автономное устройство, способное наблюдать за помещением и отсылать фотографии хозяину. Пришлось сделать такой геджет своими руками.
Опыта работы с микроэлектроникой у меня не было, так что сперва пришлось изучить азы этой науки. Меня грела мысль о том, что я соберу уникальное устройство, которого ещё никто не делал. То, что получилось после пяти месяцев работы, я бы хотел предложить сегодня на ваш суд.

Принцип работы
Камера устроена достаточно просто. Большую часть времени она спит. Раз в час она просыпается, регистрируется в 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.

2

Самым сложным было сделать так, чтобы схема потребляла как можно меньше электричества во время сна. Питание каждого компонента управляется TPS2020. Таким образом, работает лишь ATmega. Мне очень помог пример: Nightingale
В результате моя схема потребляет 0.14mA во время сна. Это значит, что устройство сможет работать до месяца без смены батареек (я использовал батарейки типа CR123A — в основном из-за их размера).
Теория разработана? Давайте соберём прототип. Во-первых, докажем себе, что всё работает, как мы ожидаем, а во-вторых, почувствуем себя кулхацкерами.

3

Выглядит отлично. Следующий этап – написать и отладить код. Программировать для ATmega 328P так же просто, как и для любого Arduino. Я настроил свой Eclipse для работы с этим чипом и программатором AVRISP mkII
Плагин AVR Eclipse Plugin пришелся очень кстати: билд проекта и его прошивка делались за пару щелчков мыши.
Код контроллера разрабатывался в течении двух-трёх месяцев. Последнюю версию кода можно найти на code.google.com

Никогда не подумал бы, что 12Kb – это очень много памяти, а 16Mhz – это очень быстро.
Когда код был более или менее стабильным, а стол вполне завален прототипом, пришло время спаять всё вместе. Я решил использовать формат Arduino: уж больно просто найти дешевые компоненты. Вот что вышло:

4

Настала пора приступать к последней части – корпусу. Увы, но DIY-проекты не всегда имеют привлекательную оболочку. Поэтому я решил воспользоваться сервисом трёхмерной печати и сделать ровно то, что мне хочется.
Программы 3D моделирования мне не понравились. Как-то неестественно это – в в трёхмерном пространстве двухмерной мышкой водить. К счастью, я нашел OpenSCAD, бесплатную программу, где модели задаются на простом скриптовом языке. Например, сфера радиусом 5 это sphere(r=5). Красота.
Штангенциркуль, несколько недель моделирования, заказ на Ponoko и вот результат:

5 6 78910

Модель была напечатана с удивительной точностью: детали сошлись без каких-либо доработок. Исходный код моделей можно найти на code.google.com
Камера в сборе. Вот что получилось:

113

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *