Скажу сразу, пост о том счетчик скорости беличьего колеса Я уже читал.
С подобной задачей я столкнулся довольно давно — мне было интересно, какое расстояние сможет пробежать мой мышонок (обычный, живой, а не компьютерный!) и с какой скоростью.
Только я решил не изобретать велосипед и взял от велосипеда старый ненужный спидометр, который прекрасно выполняет эти функции.
За месяц мышонок пробежал около 100 км, но мне хотелось узнать подробнее – сколько именно он пробегал каждый день, в какое время суток он более активен, как меняется его активность на протяжении жизни? Скорость меня уже особо не смущала - почти всегда 1-1,5 км/ч.
Типичная бессмысленная, но интересная задача, такая, какая мне нравится.
Для всего этого данные из ячейки необходимо каким-то образом отправить на сервер.
В теории все просто — нужен микроконтроллер и геркон, считающий обороты колеса, но клетка часто перемещается по комнате, поэтому вариант с проводами сразу отпадает. С радио тоже возиться не хотелось, да и нужных комплектующих под рукой не оказалось.
И тут меня осенило — у меня уже есть самодельный приемник дистанционного управления, который виден из любой точки комнаты и подключен к моей сети умного дома - так почему бы не использовать ИК-сигналы? В этом случае вам не понадобится ничего дополнительно, кроме ИК-светодиода.
В качестве микроконтроллера я взял знакомый ATMEGA8A. Возник первый вопрос - хватит ли ему мощности и как быстро он разряжает батарею? Я сразу начал смотреть даташит — восьмая «мега» с индексом «А» может работать в широком диапазоне напряжений 2,7В-5,5В, что позволяет использовать батарейку типа CR2032 или CR2025. Потребление тока в самом глубоком режиме сна составляет всего 0,5 микроампер.
Из этого режима микроконтроллер может выходить из этого режима внешними прерываниями INT0 и INT1, к которым я решил присоединить собственно геркон и единственную кнопку, а также асинхронным таймером, который понадобится для периодической отправки данных.
Для последнего нужно настроить внешний кварц на 32768Гц; при максимальном делителе микроконтроллер будет просыпаться каждые 8 секунд, что бывает довольно редко.
Я решил отправлять данные примерно раз в три минуты.
Мне хотелось как-то контролировать уровень заряда аккумулятора, поэтому я решил также использовать аналого-цифровой преобразователь для измерения напряжения.
ATMEGA8 позволяет измерять его относительно 2,56 вольт. С помощью делителя напряжения из двух одинаковых резисторов можно получить ровно половину напряжения, которое у нас есть на аккумуляторе, а мы будем его измерять и присылать каждые полчаса.
Вот так очень простое устройство постепенно обрастает кучей компонентов.
Еще нужно вспомнить про штатный светодиод. Подумав обо всем этом, я быстро набросал плату устройства:
Вскоре само устройство было готово в двух экземплярах (у меня две клетки и две мышки):
Решил туда поставить сразу два аккумулятора, они туда отлично влезли.
После установки на ячейки это выглядело примерно так:
Эту штуку я решил установить на возвышенности, чтобы случайно не заслонять ее спинкой стула.
Важным моментом является защита проводов от мышей.
Следующим шагом было написание программного обеспечения.
С прошивкой все было довольно просто - аппарат почти всегда должен спать.
В ответ на внешнее прерывание увеличьте скорость.
При прерывании таймера отсчитывать время, отправлять количество пройденных оборотов каждые три минуты и сохранять в EEPROM (а что, если вынуть батарею?), а при нажатии на кнопку делать это сразу - для проверки.
Для передачи данных я взял за основу самый распространенный протокол пультов - RC-5, для которого у меня уже был код и приемника, и передатчика (командую телевизором/ресивером с компьютера), он передает четыре байт данных каждый.
Для меня это как раз подходит: один байт — номер колеса/аккумулятора, два байта — количество оборотов/напряжение на аккумуляторе и один байт — контрольная сумма.
Чтобы отличить свои сигналы от сигналов самих приставок, я изменил только длительность стартовых сигналов.
Я немного модифицировал свое программное обеспечение на ПК и.
Данные с мышей уже отправлены :) Осталось написать несколько bash-скриптов для отправки их на сервер.
Для обработки и рисования графиков я взял уже знакомый мне RRDtool:
На этом графике показано, сколько метров пробежала каждая мышь за часовой интервал.
Теперь они конкурируют друг с другом :) Напряжение на аккумуляторах перестало быстро падать после увеличения номинала резисторов на делителе и протирания платы от флюса :) Реальная графика: кластеррр.
com/sensors/w Графики напряжения аккумулятора: usterrr.com/sensors/v Endomondo-аккаунт мышонка Пинки: www.endomondo.com/profile/8088037 Твиттер мышки Пинки: x.com/pinky__mouse =О.
о=
И его ВКонтакте: vk.com/id185163744
Пинки передает всем привет:
P.S. Мне уже порядком надоели анекдоты про выработку электроэнергии из мышей, мне все об этом говорят.
П.
П.
С.
Я не сумасшедший, я просто развлекаюсь.
Теги: #Сделай сам или Сделай сам #avr #atmega #mouse #rrdtool #atmega8 #ir rc
-
Как Сделать Карьеру Аналитика Данных
19 Oct, 24 -
Они Добавили Skype В Google Pack.
19 Oct, 24 -
Даунтайм Clodo И Странная Поддержка
19 Oct, 24 -
Принят Закон Об Открытых Данных
19 Oct, 24 -
Web 2.0 Для Воспитания Детей
19 Oct, 24