Счетчик Оборотов Колеса Мыши

Скажу сразу, пост о том счетчик скорости беличьего колеса Я уже читал.

С подобной задачей я столкнулся довольно давно — мне было интересно, какое расстояние сможет пробежать мой мышонок (обычный, живой, а не компьютерный!) и с какой скоростью.



Счетчик оборотов колеса мыши

Только я решил не изобретать велосипед и взял от велосипеда старый ненужный спидометр, который прекрасно выполняет эти функции.

За месяц мышонок пробежал около 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

Вместе с данным постом часто просматривают: