Исследование под кодовым названием "ИЗ ЖИЗНИ ШИНШИЛЛЫ".

Обсуждаем Arduino, Raspberry Pi и другие электронные компоненты и проекты DIY
Ответить
idealsoul
Сообщения: 26
Зарегистрирован: 29 ноя 2012, 17:33
Откуда: Москва
Контактная информация:

Исследование под кодовым названием "ИЗ ЖИЗНИ ШИНШИЛЛЫ".

Сообщение idealsoul »

Целью очередного исследования стало выяснение степени ночной подвижности моего домашнего питомца - шиншиллы Стива. Из информации в сети и собственных наблюдений предположил, что зверек ведет ночной образ жизни. Но так ли это... Может он просто соня, спит и днем и ночью.
Для исследования использовал такую же систему, как и для регистрации температуры, только вместо DS18B20 подключил ИК датчик движения. Система состоит из следующих компонентов:
1.ИК датчик движения;
2.Часы реального времени на DS1307;
3.Карта памяти microSD, вынутая из телефона;
4.Arduino Uno Rev3;
5.Prototyping Shield для Arduino .
Компоненты системы
Компоненты системы
2134.jpg (406.06 КБ) 8284 просмотра
Датчик движения закреплен на уровне геометрического центра клетки и направлен под прямым углом в сторону боковой стенки клетки, расстояние до клетки примерно 1,0-1,5 м. Это позволило регистрировать движения зверька на всех трех уровнях клетки.
До начала исследования потребовалось провести некоторую настройку системы. Для начала на датчике движения переменным резистором необходимо установить минимальное время срабатывания, это позволило увеличить частоту измерений. Затем к системе был подключен светодиод, он загорался каждый раз, когда датчик движения срабатывал. Это позволило проверить способность датчика регистрировать движение небольшого объекта, оказалось, что датчик с этим успешно справляется. На этом подготовительный период закончился, и я перешел к самому исследованию.
Суть в следующем: Arduino Uno постоянно опрашивает датчик движения, как только датчик срабатывает переменная-счетчик увеличивается на 1. Так происходит при каждом срабатывании датчика в течение одно минуты, после чего результат сохраняется на microSD с указанием точного времени (информация о дате и времени поступает от DS1307), а переменная-счетчик обнуляется. Таким образом, чем активнее ведет себя Стив в клетке, тем чаще срабатывает датчик движения за одну минуту, это и есть единица активности зверька.
Исследование проводилось 11.01.13 с 00:00 до 07:00. Результат ниже.
Результат исследования.
Результат исследования.
активность 600-400.jpg (90.7 КБ) 8284 просмотра
Выводы:
1.Шиншилла Стив ночью любит не только побегать, но и поспать. Интервалы крепкого сна: 00:13-00:51, 02:10-02:50, 03:05-03:30, 04:45-07:00.
2.Его клетка по-прежнему будет находиться за пределами спальни, иначе я сам стану ночным существом, так как ведет себя зверек очень уж шумно, когда бодрствует.
3.Предже, чем заводить дома шиншиллу нужно продумать, как обеспечить себе крепкий сон.

На этом пока все. Впереди еще много интересного...

P.S. Пожалуй, постоянно опрашивать датчик движения не солидно, целесообразнее применить прерывания. Но это так.., размышления...
Последний раз редактировалось idealsoul 28 дек 2013, 09:54, всего редактировалось 1 раз.
Проживи эту жизнь счастливо и получи вторую в подарок!
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1018
Зарегистрирован: 22 окт 2010, 23:57

Re: Исследование под кодовым названием "Из жизни шиншиллы".

Сообщение Mr.Kubikus »

Наверное, если от контроллера требуется только вести протокол событий, то прерывания вроде и не нужны.
С уважением, Григорий
GitHub FB ВК
idealsoul
Сообщения: 26
Зарегистрирован: 29 ноя 2012, 17:33
Откуда: Москва
Контактная информация:

Re: Исследование под кодовым названием "Из жизни шиншиллы".

Сообщение idealsoul »

О прерываниях задумался потому, что датчик движения при срабатывании устанавливает на своем выходе высокий уровень примерно на 0,5-1,0 сек. За это время Arduino несколько раз (может даже и несколько десятков раз) проверяет уровень на входе с датчика. Для исключения многократного суммирования одного и того же срабатывания, пришлось ввести переменную типа boolean, которая выполняла функцию флага срабатывания датчика и запрещала увеличение счетчика срабатываний пока уровень на входе от датчика не станет на некоторое время низким.
Второй причиной целесообразности использования прерывания является то, что большую часть времени никаких "полезных" вычислений не ведется. Редко когда число срабатываний больше 10-15 в минуту, и очень много когда это число менее 2-3 за минуту.
С другой стороны задумка реализована, в оптимизации потребности нет.
Тем более, что на данный момент система уже разобрана. Думаю над тем, что бы еще воплотить в жизнь.
Проживи эту жизнь счастливо и получи вторую в подарок!
Ответить