roboforum.ru

Технический форум по робототехнике.

Умный будильник своими руками

Умный будильник своими руками

Scorpio » 05 май 2015, 02:05

Для начала определим, чем умный будильник отличается от обычного. Правильно: обычный будильник будит нас, когда мы этого не хотим, а умный – когда мы и сами не прочь проснуться. Чтобы поприветствовать нас бодрой песней, пожелать доброго дня и т.д. Т.е. если начал ворочаться, значит уже не очень спит и можно будить. Конечно, контроль ворочаний должен начинаться в заданный час. А то, встанешь ночью по нужде, а будильник радостно заорет на весь дом. Определить ворочанья можно разными способами: надеть на руку ВТ браслет с акселерометром, прикрепить к кровати пьезодатчик, установить внешний датчик движения и т.д.
Остановимся на внешнем датчике, как наиболее универсальном варианте. За основу будильника возьмем смартфон, заодно поучимся его программить. В качестве сенсора движения можно использовать камеру смартфона, но это не наш путь, поскольку телефон придется позиционировать перед каждым сном, что не удобно. К тому же запрограммировать такой датчик не очень то легко и явно не для начинающих. Готовый софт на эту тему я не искал. Это опять же не путь самоделкина.
И так сформулируем ТЗ с минимальными требованиями:
- Программа для «андроидного смартфона» должна выполнять функции обычного будильника с проигрыванием какой-нибудь мелодии в заданное время;
- Так же будет отключаемая функция ожидания срабатывания внешнего датчика движения, подключаемого по ВТ, после срабатывания обычного будильника;
- В добавок, мелодия не должна сразу орать, а воспроизводиться с нарастающей громкостью.
Пока все требования.
Т.к. от внешнего датчика нам требуется всего 1 бит информации (есть или нет движение), то МК не понадобиться. Достаточно будет 2х основных элементов: какой-нибудь датчик движения и какой-нибудь ВТ модуль. Получится вот такая схема…
Mov BT.jpg

Т.е. когда срабатывает сенсор, то на ВТ модуль подается питание, и он «выходит в эфир». Паузу перед повторным срабатыванием на сенсоре надо выставить не менее 10 секунд, чтобы выход «не дергался». Наша программка сначала ждет времени срабатывания будильника, потом периодически пробует подключиться к ВТ модулю. Понятно, что последний д.б. предварительно «спарен» с телефоном. И устройство, с которым будем соединяться, предварительно выбрано в нашей программке. Если подключение удалось – значит есть движение и можно включать приветственную мелодию с нарастающей громкостью.
Программку напишем с помощью приложения MIT App Inventor, специально разработанного, чтобы ни дети, ни домохозяйки не остались в стороне от увлекательного процесса программирования смартфонов. Я опробовал его впервые. Впечатление двоякое. С одной стороны, необходимость собирать такие..
i++.jpg

.. конструкции, для простейших выражений весьма утомляет. Навигация по проекту затруднительна, а сложные проекты в графическом редакторе будут выглядеть весьма громоздко.
С другой стороны, запросто можно написать простую программку управления роботом по ВТ без всякого гемора и не перечитывая описания синтаксиса языка и API телефона, т.к. все весьма просто и наглядно. Изменения программы в окне редактора, сразу отображаются в подключенном по вай-фай телефоне, что удобно. А, после компиляции, получается настоящий APK. В общем, хотя возможности Инвентора пока весьма ограничены, для начинающих андроид-программеров (а ваш покорный слуга тоже из их числа) он вполне подходит. Я бы посоветовал разработчикам предусмотреть возможность переключаться в текстовое представление проекта. Впрочем, инструмент все еще в бета версии.
Получилась вот такое простецкое приложение:
Alarm.jpg

Файл проекта прилагается, если у кого будет интерес повторить.
MovAlarm.zip
(1.39 МиБ) Скачиваний: 0

Понятно, что это пробная версия для проверки работоспособности устройства, и нуждается в доработке. Выбор мелодий, голосовое приветствие с сообщением времени и курса доллара и т.п. Все это легко делается в Инвенторе.
Пара замечаний, которые могут быть не очевидны:
Functions.jpg

Левая функция перехватывает сообщения системы. Если ее не вставить, то будут появляться назойливые предупреждения при неудачных попытках ВТ соединений, хотя для спящего человека это не очень важно :)
Правая функция перехватывает нажатие кнопки «возврат» для остановки воспроизведения. Т.о. для выхода из программы ее использовать уже не получиться. Выход пока только через меню. Конечно это легко исправить,но это уже домашнее задание :) А, если в вашем смартфоне есть аксель, то лучше сделать отключение музыки при повороте телефона.

Re: Умный будильник своими руками

holomrn » 05 май 2015, 10:11

Ну разве что если цель - попрактиковаться в программинге на телефон.
А вообще тысячи их. Я пользуюсь иногда SleepAsAndroid

Re: Умный будильник своими руками

Scorpio » 05 май 2015, 17:47

Это понятно, что таких программ куча. Но, все они работают от акселя телефона, либо от фитнесс-браслета или умных часов. Моя супруга, например, не желает спать в браслете или в обнимку с телефоном. Т.к. она "сова" и на работу ей ходить не надо, то предпочитает будиться умным будильником. Датчик движения вешается на потолок над кроватью, потребляет он мало, батареек хватит на долго, и про него вообще можно забыть. В общем мне была поставлена техническая задача и я ее выполнил :)
А заодно освоил Инвентор и поделился с коллегами.

Re: Умный будильник своими руками

holomrn » 05 май 2015, 17:54

Зачем в обнимку? Просто телефон рядом на кровати лежит так чтобы не раздавить если ворочаться будешь.

Re: Умный будильник своими руками

Scorpio » 05 май 2015, 18:01

Рядом лежать должен только я :)

Re: Умный будильник своими руками

Стикс » 05 май 2015, 21:40

Весьма впечатляет. У меня была идея чего-то подобного и даже наброски, но время, время, время... Теперь можно будет использовать этот проект, как основу для своего. Надо же на что-то опираться поначалу. А вообще такие уроки очень полезны! Моё одобрение.

Re: Умный будильник своими руками

Ande » 06 май 2015, 00:00

Тоже задумывался об умном будильнике.
Как бы еще отличить шевеление жены от шевеления меня, да еще будить каждого независимо.

Re: Умный будильник своими руками

Scorpio » 06 май 2015, 00:03

Это как раз просто - спать в разных спальнях :)

Re: Умный будильник своими руками

holomrn » 06 май 2015, 07:37

Если места на кровати определны, камера с ИК подсветкой и OpenCV ))


Rambler\'s Top100 Mail.ru counter