Озаботила меня одна проблема – темный коридор по пути из спальни на кухню. Ну, знаете, люблю ночью на кухню ходить, но в потемках некомфортно, а т.к. коридор относительно ширины достаточно длинный, то велика вероятность отклонения от маршрута при ориентировании по встроенным в голову гироскопам. Ошибка накапливается, да еще ноги разной длины, ходил с вытянутыми руками и попадал в дверной проем не с первого раза.
Да, конечно есть всякие ночники, датчики движения, умные дома, но у меня есть лучше, у меня есть пластиковый плинтус с кабельным каналом.
Поэтому возникла идея запихать туда светодиодную ленту и посмотреть, как она там себя будет чувствовать и получилось, знаете ли, довольно круто, такая подсветочка, как в космических кораблях.
Ну, дальше конечно — ARDUINO! А нафига? А чтобы Smart! Заказал на Али 2 датчика движения и пошла работа.
Не работа конечно, а удовольствие. Датчик движения был выбран без примерки и мне, как всегда повезло, он идеально подошел в плинтус. Два датчика понадобилось, чтобы поставить их на двух концах плинтуса, ведь и с кухни нужно возвращаться.
Распиновку датчика китайцы почему-то сделали под линзой. Диапазон питающих напряжений 4,5-20В, выход: 3,3В – есть движение, 0В – нет движения. Есть еще один джампер и два подстроечника, не стал разбираться, т.к. по умолчанию все работало нормально. Еще, когда все собрал и запараллелил 2 выхода датчиков, напряжение, при движении стало около 1,5В. Думаю, что так делать нельзя и нужно было поставить диоды, но разбирать заново было неохота, тем более, что этот выход был заведен на АЦП.
Лента управляется полевиком IRFZ34N, потому что такой валялся. Конечно он не открывается полностью пятью вольтами, но с моей лентой, которая потребляет около 1А при 12В он справляется без нагрева.
Фоторезистор был взят дешевый, китайский.
Программа простая, с такой логикой: если освещенность ниже определенного порога, то подсвечиваем, плавно включаем и через заданное время плавно выключаем. Если во время свечения снова засекли движение, считаем задержку заново. Освещенность не меряем, когда светим, т.к. датчик освещенности засвечивается самим плинтусом.
int ledPin = 5; //Светодиодная лента
int lightSensorPin = A7; //Фоторезистор
int motionSensorPin = A0; //Датчик движения
int val = 0; //Яркость ленты
int light = 0; //Освещенность
int motion = 0; //Движение
int timerCounter = 0; //Считалка времени
int timerEnable = false; //Начало цикла включения
int timeOn = 8; //Время включения в секундах
int faderEnable = false; //Разрешает погаснуть
int lightEnable = false; //Разрешает подсветку
void setup()
{
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop()
{
analogWrite(ledPin, val);
light = analogRead(lightSensorPin);
motion = analogRead(motionSensorPin);
if (light < 50 && !lightEnable){
delay(1000);
if (light < 50) lightEnable = true;
}
if (light > 50 && val == 0) lightEnable = false;
if (motion > 150 && lightEnable){
timerEnable = true;
faderEnable = false;
}
if (timerEnable){
timerCounter ++;
val = val + 1;
if (val > 254) val = 254;
if (timerCounter > timeOn * 50){
if (motion < 150){
//val = 0;
timerCounter = 0;
timerEnable = false;
faderEnable = true;
}
else {
timerCounter = 0;
}
}
}
if (faderEnable){
val = val - 2;
if (val < 0){
faderEnable = false;
val = 0;
}
}
// Serial.println(light);
delay(20);
}
Все сенсорное хозяйство было смонтировано в плинтус, а для Ардуины с блоком питания был напечатан на 3D принтере корпус, все туда уложено, закрыто и спрятано.
После того, как работа была проделана, подумалось, что было бы классно сделать узкую плату-контроллер, которая помещалась бы в плинтус, и к ней необходимо было бы подвести только питание, а все коммутации делать внутри плинтуса. Но хотелось быстро и из того, что есть, поэтому из плинтуса идут 6 жил в достаточно громоздкий корпус. Пользуемся Smart плинтусом уже неделю, оценили все домашние. Плавное включение и тусклый, ровный свет — вот все, что нужно для ночных прогулок.
Так и подмывает, в соответствии с последними трендами, написать: «В будущем планирую прикрутить Wi-Fi и оснастить сенсорами, чтобы, когда проходишь мимо он замерял пульс и вычислял сожженные калории, а так же поражал злоумышленников разрядом при отсутствии отпечатка ноги в базе данных, вел статистику включений/выключений и подключался к облаку», а то как-то светит и больше ничего.