Статьи » Разработки |
2020-04-03 в 10:18 (последнее изменение 2021-03-12 в 09:43)
Таймером для чистки зубов ардуинщика уже не удивишь: таких конструкций разработано уже много. Но теперь потребовалось контролировать и продолжительность мытья рук: не менее 20 секунд. На потребность в новом виде техники разработчики отреагировали оперативно. Так, например, живущий в Индии автор сайта Arduino Project Hub под ником Random Stuff We Make изготовил таймер мытья рук на Arduino Uno, и делится его описанием и прошивкой под лицензией GPL версии 3 и выше по вашему выбору. Описание конструкции размещено по адресу https://create.arduino.cc/project....11734a? Специально управлять таймером во время пользования не требуется. За перемещениями рук при их мытье он следит при помощи отражательной оптопары, и по получаемым от неё сигналам управляется автоматически. Модуль датчика приближения - стандартный, на ОУ LM358. Он продаётся во многих интернет-магазине arduino, либо может быть собран самостоятельно по схеме. Как готовый, так и самодельный модуль требует регулировки чувствительности подстроечным резистором. Вывод информации производится при помощи RGB-светодиода, который при желании можно заменить тремя разноцветными светодиодами, соединив их по схеме с общим катодом. Или белыми светодиодами с цветными фильтрами. Или одинаковыми светодиодами с поясняющими табличками. Впрочем, изучив скетч, вы обнаружите, что синий светодиод не используется, а значит, и необязателен, хотя вы можете придумать ему применение и модифицировать код: Код
/* The following code is developed by members of Random Stuff Community.
for further information or ideas, please keep following "Random Stuff We Make" on instagram */ void setup() { pinMode(2,OUTPUT); //RED pinMode(3,OUTPUT); //GREEN pinMode(4,OUTPUT); //BLUE pinMode(5,INPUT); //IR sensor Serial.begin(9600); } void loop() { int a= digitalRead(5); Serial.println(a); delay(100); digitalWrite(2,LOW); //RED off digitalWrite(3,HIGH); //GREEN on by default digitalWrite(4,LOW); //BLUE off if(a==1) { digitalWrite(3,LOW); digitalWrite(4,LOW); for(int i=0; i<20; i++) { digitalWrite(2,HIGH); delay(1000); } digitalWrite(2,LOW); } } Алгоритм работы таймера следующий: обнаружив, что вы начали мыть руки, устройство включает зелёный светодиод, а через 20 секунд выключает его, а красный - включает. Затем выключает, когда вы убираете руки. Автор просит читателей закрывать воду на время намыливания рук. Скетч может быть переделан на применение емкостного датчика вместо оптического, также можно добавить поддержку какого-либо дисплея и/или звукоизлучателя. Неплохо также добавить вывод сообщений в монитор последовательного порта - пригодится при отладке. Оптический датчик и RGB-светодиод подключаются к Arduino так: Поскольку в ванной комнате повышенная влажность и множество заземлённых предметов, сетевое питание таймера недопустимо. Пересобрав конструкцию заново пайкой после отладки на breadboard'е, нужно поместить её в старый, но предварительно проверенный герметичный бокс для фотоаппарата вместе с небольшим пауэрбанком. Подобрать такое размещение устройства в ванной комнате, чтобы датчик уверенно реагировал на начало мытья рук. Извлекать пауэрбанк из бокса и заряжать его следует вне ванной комнаты. Так, как на этом фото, оформлять конструкцию не следует: Если Arduino нет, а изготовить такую вещь нужно срочно, можно поместить в такой же герметичный бокс любой дешёвый будильник с секундной стрелкой, закрепив его там так, чтобы ручки не касались стенок, которые могут мешать им вращаться. Начав мыть руки, следует заметить текущее положение секундной стрелки, и прекращать мытьё не раньше, чем пройдут 20 секунд. Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 2848. Оценка статьи: 3.0 из 5. Уже оценило 2 читателя |
Всего комментариев: 0 | |