Примерно через 3 недели получил свою «игрушку» и, наверное, как и все, начал баловаться морганием светодиодиками. Это, конечно же, быстро надоело, хотелось чего-то посерьезнее. Возникла мысль сделать автоматическое включение/отключение света на одном из балконов (частенько хожу курить). Так как uno — это слишком «жирно» для такой задачи, на том же сайте заказал по скидке nano, датчики движения, текстолитовые макетки, блок питания с 220В на 5В и реле.
Прошел еще месяц…
Надо пробовать. Сначала, как и следует, собрал схему на бредборде. Все работает, добавил потенциометр для регулировки светочувствительности, прекрасно.
Решил все дело собирать уже на плате. Как оказалось, реле было выполнено на большой плате и не влезало на мою макетку, подпилил его с боков (контактов/дорожек там к счастью не было). А так же, что бы впаять блок реле непосредственно в плату пришлось контакты перепаять на другую сторону. Получилось как-то так:
Справа получилось немного неровно, так как там проходила дорожка.
Самое сложное, на мой взгляд, было сделать дорожки на плате. Тоненькая медная проволока, флюс и олово мне в этом помогли. Получилось довольно «топорно», но, повторюсь, это мой первый опыт, да и хотелось поскорее закончить и опробовать.
К счастью все уместилось на плате 5х7 см, это хорошо еще тем, что плата имеет отверстия для крепления, которыми я воспользуюсь после изготовления корпуса из оргстекла.
Датчик движения умышленно не сделал фиксированным, так как есть задумка его сделать на «рожках», что бы можно было менять его направление. Потому как пока еще не решил где готовый прибор будет крепиться.
Программу собирал по чуть-чуть из всяких туториалов по датчикам. В инструкции к датчику движения было сказано что ему нужно давать настроиться при первом запуске, от 10 до 30 секунд. Этот момент я пропустил, так как вообще не увидел его смысла. Устройство работает абсолютно одинаково как с ним, так и без него. Единственна разница — тратиться время на калибровку до первоначальной готовности.
int const Pot = A5;
int const Light = A7;
int const Relay = 3;
int const Move = 4;
int const pause = 180000; // 3 минуты мне как правило достаточно для перекура :)
long unsigned int lowIn;
boolean lockLow = true;
boolean takeLowTime;
void setup() {
pinMode(Move, INPUT);
pinMode(Relay, OUTPUT);
digitalWrite(Relay, HIGH);
}
void loop() {
int moveVal = digitalRead(Move);
int lightVal = analogRead(Light);
int potVal = analogRead(Pot);
int lightLimit = map(potVal, 0, 1023, 500, 1000);
if (moveVal == HIGH && lightVal < lightLimit) {
if (lockLow) {
lockLow = false;
digitalWrite(Relay, LOW);
}
takeLowTime = true;
} else {
if (takeLowTime) {
lowIn = millis();
takeLowTime = false;
}
if (!lockLow && millis() - lowIn > pause) {
lockLow = true;
digitalWrite(Relay, HIGH);
}
}
}
Принцип работы таков: при обнаружении движения датчиком, сравнивается показание фоторезистора с пороговым (необходимым для срабатывания реле), которое регулируется потенциометром. Если все удовлетворяет, то включается реле на 3 минуты, по истечению которых, если движение не фиксируется, реле отключается.
Пороговые значения фоторезистора снимал закрывая его пальцем и направляя на него фонарик в 2000 люмен.
Учитывая новогодние праздники, ежедневные приходы гостей, а так же «непосильный вклад» в работу моего коллеги, на все изготовление ушло часов 12-15.
Прошу строго не судить. Это моя первая статья и первый более-менее серьезный опыт работы с ардуино и паяльником. А конструктивная критика очень приветствуется. Даже, я бы сказал, необходима.
Спасибо за потраченное время. Надеюсь в скором будущем дополню статью уже финальным вариантом своего устройства, в корпусе и с демонстрацией работы.
P.S.
Хотелось бы отметить мой восторг от заказанного БП, при мощности в 4 Вт он имеет размеры всего 22х30х18 мм, а цена всего около 200 руб.
P.P.S.
Вся проделанная работа стоит конечно же гораздо дороже, чем готовый вариант от наших азиатских друзей. Но все же своими руками — гораздо интереснее.
Recommended article: Chomsky: We Are All – Fill in the Blank.
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий