счетчик - датчик кол-ва человек в комнате
- Войдите на сайт для отправки комментариев
Чт, 02/11/2017 - 00:54
Прошу проконсультировать по железу.
Задача: включать свет в комнате если в ней кто либо есть. Если пришло несколько, то помнить кол-во и при выходе последнего гасить свет.
рассматривал 2 pir датчика в дверном проеме, но почитал, что ему надо время на восстановление "способности видеть" следующего и минимальное растояние 3 метра.
Также рассматриваю 2 ky-022 и напротив постаить светодиод, который, как я понял, должен светить "частотой".
Какие варианты еще возможны?
Raspberry Pi, видеокамера, opencv и распознавание фигур.
Raspberry Pi, видеокамера, opencv и распознавание фигур.
Чё так мелко? Intel Server за 5 штук баксов и ни копейкой меньше. PIR датчики тормознутые, пробовал, работало только если проходили по одному и не быстро. Но ту мелкие стали носиться и усё накрылось.))) Надо ик барьер ставить, причём два луча, это лучше работает.
Какие варианты еще возможны?
Я делал на двух парах лазер - фоторезистор. С одной стороны дверного проёма светит лазерок на фоторезистор на другой стороне проёма. Фоторезистор от боковых засветок прикрыт тубусом. Работает, но усложнено конструктивно, нужна чёткая фиксация положения источников и приёмников.
В данный момент у меня стоит "на прогоне" счётчик входящих/выходящих на двух vl53l0x, этот вариант конструктивно гораздо проще, скетч практически тот же.
Кренделек, дойдёте до программной части - спрашивайте, со скетчем помогу.
Я ещё на дверь геркон вешал, т.е. дверь закрыта - вся "светомузыка" выключена.
Какие варианты еще возможны?
Я делал на двух парах лазер - фоторезистор. С одной стороны дверного проёма светит лазерок на фоторезистор на другой стороне проёма. Фоторезистор от боковых засветок прикрыт тубусом. Работает, но усложнено конструктивно, нужна чёткая фиксация положения источников и приёмников.
В данный момент у меня стоит "на прогоне" счётчик входящих/выходящих на двух vl53l0x, этот вариант конструктивно гораздо проще, скетч практически тот же.
Кренделек, дойдёте до программной части - спрашивайте, со скетчем помогу.
А чем была вызвана необходимость использовать пару лазер- фоторезистор? сколько это стоило со всей обвязкой?
Пара для определения направления.... неуже ли не понятно ?
Пара для определения направления.... неуже ли не понятно ?
Для тех кто в танке поясню: почему лазер и фоторезистор, а не светодиод и фототранзистор.
И, Да, зачем две пары мне пояснять не нужно.
А чем была вызвана необходимость использовать пару лазер- фоторезистор? сколько это стоило со всей обвязкой?
Необходимости не было, просто была под рукой пара 5mW-лазеров и кулёчек фоторезисторов. Обвязки они не требуют, разве что пару резисторов на подтяжку, цены, соответственно, копеечные.
Заказал сейчас с десяток vs1838 на али и Мегу2560. Щас надо подобрать светодиоды для их взаимопонимания. таймер подберу-закажу и есть задумка связь организовать до андроид телефона. чтоб не на дисплее глазеть, а на диване в телефоне смотреть где что как работает.
дойдёте до программной части - спрашивайте, со скетчем помогу.
Подскажете код для счетчика на двух vl53l0x ?
Подскажете код для счетчика на двух vl53l0x ?
С удовольствием, оговорюсь лишь, что где-то здесь на форуме я позже видел более простую и изящную реализацию алгоритма подсчёта людей, сейчас не нашёл, может кто-то из коллег подскажет ?
Выкладываю самописный скетч, комментариев добавил побольше, счётчик, использующий алгоритм из этого скетча, достаточно неплохо работает у меня на входной двери с декабря 17-го года.
Схема :
Скетч :
Библиотека и все прочее - здесь : https://www.dropbox.com/sh/qubrwqpkdxd5do2/AACCeNbGvCoo0kzkZtRk-0qda?dl=0
Одобряю!
vl53l0x очень хорошие датчики.
Спасибо. Второй датчик не имеет смысла шунтировать если у него используется дефолтный адрес, ничего принципиального, но можно съэкономить один пин мк и не тянуть лишний провод используя не 6 а 5 проводный шлейф например из usb кабеля. Также второй датчик шунтируем и запускаем скетч, первомый датчик назначает себе дефолтный адрес, снимаем шунт и инициализируем второй новым адресом. У нас получится два датчика с разными адресами.
Я код счетчика ичпользовал такой
Но его качество работы сильно зависит от скорости как самого скетчя так и прохода через датчики.
На ардуино все работало нормально а вот перенес на ESP8266 и библиотека VL53L0X.h стала намертво вешать еспшку да так что и через сторожевой таймер не перезапускается.
Есть еще библиотека от VL53L0X от адафрут, она не вешает есп, но крайне убога, тормозна и датчики с ней работают не стабильно.
Я код счетчика ичпользовал такой
А, ну так это он и есть, самый первый вариант на инфракрасных датчиках.
От скорости скетча действительно зависит, на "длинном loop" проблематично работает, даже при использовании прерываний.
Возможно там нужен таймаут: чтото типа сработал первый датчик, запускаем таймаут, скажем пол секунды,и ждем сработки второго, если в течении таймаута сработал второй увеличиваем счетчик, если нет, обнуляем состояние первого и наоборот соответственно.
Не соглашусь, я специально акцентировал, что
016
// Продолжительность прохода не учитывается, можно стоять в дверях
017
// сколь угодно долго, а затем вернуться, либо пройти,
018
// проход будет незасчитан/засчитан соответственно.
Это опыт из реальной жизни, так сказать )). Обкатку счётчика на достоверность счёта проводит моя жена, иногда удивляя меня тем, как всё же можно обмануть два датчика в тесноватой прихожей.
Кстати, у меня в работающем счётчике на входной двери задействован также датчик состояния двери (откр/закр), весьма помогает достоверности счёта.
Это опыт из реальной жизни, так сказать )). Обкатку счётчика на достоверность счёта проводит моя жена...
Надо ещё пару киндеров подключить к обкатке, эти любую логику сломают и мозг вынесут :)
Araris это я про свой код говорил, ваш еще не испытывал, но обязательно попробую, как смогу добиться нормальной работы дальномеров с ЕСП
Ваш код очень похож на обработку энкодера - те же 4 состояния только результат другой, для этих целей можно также использовать готовую библиотеку для энкодеров, в том числе и использующие прерывания для точности подсчета, я пробовал, работает.
можно поставить 2 ик диода и приемника вместо лазера. каждый ИК диод работае на своей частоте - тем самым вы защитите себя от ложных срабатываний (засветов) .. е сли помещение маленькое, аля сартир, то можно и ёмкостной датчик зафигарить..
Прелесть дальномеров в том что вы просто ставите их на/в дверной проём и все, а светодиоды/лазеры надо ставить с двух сторон и точно настраивать, дальномеры готовое устройство и достаточно стабильное, до метра работают нормально, для большенства проемов этого хватает, а напримет туалет перекрывает и один дальномер. Я сомневаюсь что емкостной датчик будет настолько стабилен и его настолько же просто установить как дальномер за 280р.
Прелесть дальномеров в том что вы просто ставите их на/в дверной проём и все, а светодиоды/лазеры надо ставить с двух сторон и точно настраивать, дальномеры готовое устройство и достаточно стабильное, до метра работают нормально, для большенства проемов этого хватает, а напримет туалет перекрывает и один дальномер. Я сомневаюсь что емкостной датчик будет настолько стабилен и его настолько же просто установить как дальномер за 280р.
ик диодов на 280р можно купить ведро и маленькую тележку, + если каждый ик диод работает на своей частоте то нет необходимости в точной настройке (как пульт от тв навел примерно в сторону датчика и все)
с помощью дальномера определить колво входящих и выходящих людей будет тяжеловато.. а с диодом тупо считать количество перекрытий с учетом если перекрылся сначала первый а потом второй то в +1 пипл а если сначала перекрывается второй а потом первый то -1 чел .. логика примитивная..
дешиво и сердито.. хотя для настоящего ардуинщика на примитивную схему надо навесить с десяток шилдов и чем дороже тем круче :)))
Всмысле - с помощью дальномера определить колво входящих и выходящих людей будет тяжеловато.. ??? Эта тема как раз об определениии входящих/выходящих и подсчета чила оставшихся, вы тему то вообще смотрели, или так просто написать чтобы было?Причем речь идет о действующих конструкциях а не теоретических изысканиях.
Про диоды про все так просто вы придумали или эта действующая конструкция? Потому что я очень сомневаюсь что просто два свето и фото диода будет нормально считать. Ибо даже заводские датчики E18-D80NK с точно настроенными линзами, модуляторами/демодуляторами, регуляторами, усилителями и компараторами работают в таком режиме далеко не стабильно, может потому что китайского производства, но факт остается фактом, именно практическое примение дальномеров в таком режиме даёт максимально простую в монтаже/ настройке и стабильную в работе конструкцию
Подскажите зачем вы использовали VL53L0X_1.startContinuous(50); это же вносит паузу в измерения, может как раз она и приводит к "обманыванию" датчика? Или этот параметр был как то эксперементально подобран?
Я пробовал с нулевой паузой, с 50, 100, 150, разницы особо и не заметил. Сейчас стоит 50 исключительно для "экономии тактов процессора" ))).
А сколько у вас расстояние между датчиками ?
Сантиметров 10-12.
Какие варианты еще возможны?
Я делал на двух парах лазер - фоторезистор. С одной стороны дверного проёма светит лазерок на фоторезистор на другой стороне проёма. Фоторезистор от боковых засветок прикрыт тубусом. Работает, но усложнено конструктивно, нужна чёткая фиксация положения источников и приёмников.
В данный момент у меня стоит "на прогоне" счётчик входящих/выходящих на двух vl53l0x, этот вариант конструктивно гораздо проще, скетч практически тот же.
Кренделек, дойдёте до программной части - спрашивайте, со скетчем помогу.
Привет. а как с одним датчиком сделать. чтоб просто срабатывал когда кто-то через косяк дверной пройдет? готовый есть скетч? поделись. спасибо!
vl53l0x я об этом датчике имел ввиду.
А чего там делать - берешь готовый скетч непрерывного измерения расстояния из примеров библиотеки vl53l0x, задаешь нужный тебе диапазон расстояний дверного проема и пишешь что должно произойти если это расстояние вдруг изменилось.
Пробовал. Вот это и не получается. Я не программист, к сожалению
Привет. а как с одним датчиком сделать. чтоб просто срабатывал когда кто-то через косяк дверной пройдет? готовый есть скетч? поделись. спасибо!
Делюсь:
Спасибо дружище! Дай Бог тебе здоровья! Попробую.
А выход инвертировать?
ОК, последняя подсказка:
digitalWrite( alarmPin, (distance <= 100) );
заменить на
digitalWrite( alarmPin, !(distance <= 100) );
либо на
digitalWrite( alarmPin, (distance > 100) );
Это не работает, здесь во всяком случае.
digitalWrite( alarmPin, (distance >= 100) );
точно. а програмно как? то есть мне надо обозначить что
digitalWrite( alarmPin, LOW (distance <= 100) );
перед этим задав в void setup
digitalWrite( alarmPin, HIGH );
и растояние в мм здесь, я сообразил и поправил на 1000
точно. а програмно как?
заканчивай тупить.
Тебе и дали программно, не лезь с правками, коли не понимаешь.
попробовал скетч и схему из поста #14. Что-то меня сомнения стали мучать, что будет стабильно определять количество людей. Собрал на столе, человека имитирую перемещением книги через зону измерения датчиков. Расстояние между датчиками от края до края бредборда , т.е. см 7 . Если быстро проводить книгой , то "не видит" прохода человека.
VL53L0X_1.startContinuous(50); делал 10 и меньше - изменений никаких, как и писал Araris.
UPD причем заметил, что в одну сторону при бОльшей скорости перемещения предмета стабильнее срабатывает. Если поменять адреса местами, то в другую сторону начинает стабильнее срабатывать.
В ближайшее время воткну в дверь - там посмотрим, но имхо, дети иногда носятся как угорелые, скорее всего будут обманывать тем самым датчики.
Ну да, ну да, на "больших" скоростях мы упираемся в быстродействие аппаратной реализации, тут уж придётся или датчики разносить на большее расстояние, либо датчики пересечения луча вместо дальномеров ставить.
Ок, полевые испытания покажут
Быстродействия вроде бы хватает, у меня проблема вылезла в другом - датчики отваливаются. Если с одним датчиком схема работает месяцами, если не годами, без нареканий то с двумя датчиками начинаются отвалы и зависания. Причём зависает не ардуинка, а именно датчики перестают отвечать, думал даже по таймеру передёргивать питание датиков, но забил. Пробовал два датчика на ESP8266, мало того что процессор есп гораздо быстрее так ещё и шину можно заставить работать быстрее, но там их работа приводит тоже к зависанию, уже есп, да как что иногда и сторожевой таймер не срабатывает. В общем грустно всё с ними. Забил на них, поставил такие датчики https://aliexpress.ru/item/1996058803.html но тоже не фонтан, во первых 80см это конечно же не правда, во вторых сами датчика иногда живут своей жизнью, вероятно они работают на одной частоте и взаимное излучение мешает. Пока не нашёл нормального варианта с отражением, вероятно все-же только барьер, либо промышленные датчики с отражателями и реакцией на прерывание, но не дешёвые они и непонятно как отреагируют друг на дружку, возможно также мешать будут.
Быстродействия вроде бы хватает, у меня проблема вылезла в другом - датчики отваливаются. Если с одним датчиком схема работает месяцами, если не годами, без нареканий то с двумя датчиками начинаются отвалы и зависания. Причём зависает не ардуинка, а именно датчики перестают отвечать, думал даже по таймеру передёргивать питание датиков, но забил. Пробовал два датчика на ESP8266, мало того что процессор есп гораздо быстрее так ещё и шину можно заставить работать быстрее, но там их работа приводит тоже к зависанию, уже есп, да как что иногда и сторожевой таймер не срабатывает. В общем грустно всё с ними. Забил на них, поставил такие датчики https://aliexpress.ru/item/1996058803.html но тоже не фонтан, во первых 80см это конечно же не правда, во вторых сами датчика иногда живут своей жизнью, вероятно они работают на одной частоте и взаимное излучение мешает. Пока не нашёл нормального варианта с отражением, вероятно все-же только барьер, либо промышленные датчики с отражателями и реакцией на прерывание, но не дешёвые они и непонятно как отреагируют друг на дружку, возможно также мешать будут.
мне в общем даже и быстродействие не понравилось. Из 10 раз 9 только срабатывает когда быстро перемещаешься. Медленно идешь то понятно, хорошо отрабатывает.
Для интереса вставил микрос() до и после измерения. Меньше чем 32 миллисекунды, милли, Карл, не получилось опрашивать оба датчика. Естественно это очень долго. И это я еще датчики на 15см разнес, а если на 7 см поставить, дак и подавно врать будут. Ну и тем более про зависания вы написали, короче да, в топку их. Буду тестить лазер и датчик света. Лучше один раз помучиться с установкой, зато я думаю должно быть как АКМ. Можно ещё и на прерывания повесить .
и да:
VL53L0X_1.startContinuous(); - нужно пустым в скобках оставлять (ноль типа задержка). Так хоть 32мс. Если добавлять здесь значения, время измерений двух датчик повышается. При VL53L0X_1.startContinuous(50) уже 55 мс измерение идёт. и т.д.
По даташиту у него самое быстрое "High speed, 20 ms,1.2 m, accuracy +/- 5 %“.
у меня между центрами датчиков 35мм и в целом оно работает, не устраивает только зависание датчиков. на самом деле у датчиков должна быть приличная скорость, некоторые проекты их в качестве лидаров используют. а с лазером конечно интересней будет, готовой библиотекой энкодера их обрабатывай и всё ок, вот только сколько лазеры проживут в непрерывном режиме?
https://www.imagevenue.com/ME12Y70L
Сдается мне, что проще поставить объемники с таймаутом в 10 минут, чем выпиливать в косяки дальномеры.
второй датчик отрезал из шины, оставил один. скетч из примера Continuous - так же 32 мс.
ну мне не нравились эти задержки в 10 мин у объемников вот и решил попробовать. Да, полдня убил впустую мона сказать. Ну как впустую, теперь я знаю, что они мне не катят.
как сказать, скорость я только что измерил, это 32...35 мс.
Человек быстрым шагом 6 км/ч, а если бежит то и вообще.
6 км/ч -> 1.7 мм/мс , т.е. за 35 мс человек переместится где-то на 60мм. Ну понятно что ещё нужно пройти расстояние толщины своего туловища. В общем , если датчики на 35 мм друг от друга, то это уже как раз на грани срабатывания, имхо.