Для определения расстояния в простейшей системе на Ардуино можно воспользоваться ультразвуковым датчиком. В отличие от PIR-датчика, который определяет наличие движения, данный позволяет определить расстояние до объекта. То есть в стационарном варианте, когда расстояние меняется к датчику что-то приближается, или удаляется. Схема включения крайне проста. Всего 4-ре вывода, питание, земля, вход и выход датчика. Для активации — используется кратковременный импульс, 10Мкс, для считывания расстояния надо определить длину возвращенного импульса, разделить ее на 58 — и это будет расстояние в сантиметрах до объекта. Датчик работает на расстоянии до 4-5 метров. Минимальное расстояние, также мало, и зависит от быстродействия Ардуино. Судя по демо роликам, это около сантиметра. Датчики, включающие свет по наличию движения — вовсе не являются какой-то новинкой. Однако, несмотря на их явное преимущество, все-таки они имеют один существенный недостаток. Они не очень чувствительны, их срабатывание зависит от ряда факторов, они срабатывают случайно, их очень неудобно использовать в качестве датчиков присутствия, так как сложно настроить чувствительность, при которой мало подвижный человек будет создавать достаточный отраженный сигнал.
Однако, есть целый ряд ситуаций, когда необходимо просто отследить перемещение или наличие объекта в зоне действия датчика и выполнить какое-то действие. Причем крайне нежелательно, чтобы при наличие неподвижного объекта датчик выключался. Пусть, даже этот объект будет неподвижен длительное время.
Чтобы найти решение такой задачи я был вынужден переискать целую кучу предложения на разнообразных сайтах. К сожалению, никаких дешевых решений найти просто не удалось.
В итоге пришлось применить для решения этой задачи Arduino Uno с ультразвуковым датчиком. Благо дело, сейчас в продаже появились крайне дешевые решения, для ультразвукового обнаружения, всего по несколько уе за один датчик (Тип HS-SR 04). Кроме того, на ряде сайтов можно купить универсальные исполнительные блоки с «развязанными» реле, управляемыми с помощью фотодиодов. Я использовал приобретенный на BIC блок.
Маленькая проблема возникает при написании «скетча» для ардуино, ведь особенность датчиков присутствия в том, что нет необходимости выключать источник, пока объект присутствует. Благо дело, ардуино позволяет работать с глобальными переменными.
Ниже приводиться пример кода в виде ардуино-«скетча», который выполняет все необходимые действия (скачать код): // pin's config const int Trig = 2; const int Echo = 3;
// current led state int led_state=0;
long led_period_on = 10; //periods = 300*10=3s - how long wait after object disappear? long led_left_on; //if this is 0 - turn off
void setup() { pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); pinMode(10, OUTPUT); pinMode(11, OUTPUT); //default turn on turn_led(1); led_left_on = led_period_on; }
void loop() { if ( led_left_on-- > 0 ) { if (led_state == 0) turn_led(1); } else { if (led_state == 1) turn_led(0); } digitalWrite(Trig, LOW); // clear delayMicroseconds(2); // wait 2 mks digitalWrite(Trig, HIGH); // run delayMicroseconds(10); // wait 10 mks digitalWrite(Trig, LOW); // clear long time_us=pulseIn(Echo, HIGH); // How long was signal?
if ( time_us != 0 && time_us/58 ) // to santimeters { led_left_on = led_period_on; if (led_state == 0) turn_led(1); }
delay(300); // run again }
// turn led on/off void turn_led( int led_state_) { led_state = led_state_; digitalWrite(11, led_state == 0?LOW:HIGH); digitalWrite(10, led_state == 0?HIGH:LOW);
Для проверки работоспособности вся схема расположена на макетной плате-бутерброде, использована также одна из самых дешевых моделей. В дальнейшем планируется монтаж всего этого в подходящем по размеру корпусе. Скорее всего данная схема будет выполнять функции по управлению освещением в шкафу-подсобке. Схему я не привожу, так как она совершенно простая. Ультразвуковой датчик подключен в 2/3 портам, светодиоды к 10/11 портам ардуино. Использовано USB-питание, +5В подключено к светодиодам через резисторы в 220Ом. Блок реле переключается по низкому уровню. Среди недостатков такого решения можно называть едва заметное щелканье ультразвукового датчика, впрочем как и реле. Наверное в спальне такое решение использовать все же не стоит. Хоть звук тихий, но может раздражать в полной тишине. Положительный момент — возможность управления этим делом по USB, возможность расширения, возможность подсоединения фотодиода для управления освещением.
|
Категория: Проекты на Arduino | Добавлен: 25.10.2013
| Автор: publikz.cоm
| Просмотров: 8003
|