19 ноября 2016 г.
Textual description of firstImageUrl

Рукожопим датчик движения HC-SR501 на базе Arduino Uno R3 MEGA328P


Задача:
  • научиться работать с датчиком
  • построить наиболее оптимальный алгоритм для анализа данных с датчика.

Исходные материалы:

Введение

Безусловно вначале необходимо приобрести данные девайсы (ссылки выше) и конечно же проверить:

Сенсор на дисплее не работал, но это другая история.

Начало работы

Для начала нам необходимо поставить соответствующее ПО (Arduino Software). Найти его можно здесь. Впоследствии, когда я делал библиотеку, я понял что это полная лажа и перешел на Arduino IDE, на чем я собственно пока и остановился.

Собираем стенд для отладки

Алгоритм

Особенностью датчика является то что он возвращает лишь значение есть движение или нет, т.е. если человек замрет в комнате (смотрит телевизор или книжку читает), то датчик может дать неверные данные. Поэтому алгоритм должен минимизировать данный вариант событий. Безусловно систему обнаружения человека в помещении я буду усиливать другими датчиками, но это в будущем.

Значит так: замеры движения выполняются на интервалах времени (15 сек, 30 сек, 1 мин, 5 мин).
Замер выполняется раз в пол секунды. Если за интервал времени интервал задетектированного движения больше 10%, считается что движение есть, следствии чего модуль ПО выдает TRUE.
Если за интервал времени детектируется движение, то следующий интервал инкриминируется.
В случае пропажи движения, модуль ПО выдает TRUE до окончания интервала + этот же интервал. В случае пропажи движения на последнем интервале, модуль ПО выдает TRUE до окончания текущего интервала + (интервал - 1).
П.С. выражать свои мысли текстом или языком я толком не умею, не учитель, так что если что не поняли, то вряд ли смогу объяснить (вторую попытку делаю в видео).

Итог


Работа модуля ПО проверялось на светодиоде (с падением напряжения max. 2,8 В), токозадающий резистор 350 Ом.
Если взять за стоимость киловата 5 руб, то стоить данная конфигурация будет 8 рублей в год.