Устройства Arduino и переменного тока - автоматическое освещение
Компоненты и расходные материалы
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
![]() |
| |||
![]() |
|
Об этом проекте
Умный дом
В этом проекте мы узнаем, как использовать реле с ультразвуковым датчиком и Arduino, чтобы сделать наши домашние светильники (или любое другое устройство) умнее.
Наша цель - заставить энергосберегающую лампочку выключаться, когда вы выходите из комнаты, и зажигаться, когда вы возвращаетесь. Это так просто для реализации и занимает мало времени.
В этом руководстве предполагается базовый Знание Ардуино. Если вы использовали Arduino до того, как у вас все получится.
Внимание:в этом проекте используется высоковольтный источник питания переменного тока. Если вам меньше 16 лет или вы не обладаете достаточным опытом, у вас должен быть опытный человек, который поможет вам с подключением переменного тока.
Однако вы можете завершить проект, используя устройства постоянного тока, которые работают от низкого напряжения и подтвердят ту же концепцию. Я четко сформулирую предупреждение, когда это станет опасным.
Компоненты
1) Arduino Uno

2) Мультиметр

3) Перемычки

4) Макет

5) Модуль Realy

6) Ультразвуковой датчик (HC-SR04) и ультразвуковая библиотека для Arduino, вы можете найти ее здесь, она называется (New Ping) library, если вы впервые устанавливаете внешнюю библиотеку на Arduino, проверьте эту ссылку.

7) Источник питания постоянного тока (опционально)

8) Отвертка (+ тип для релейного модуля)

9) Энергосберегающая лампочка с креплением и прикрепленной к розетке (я использовал старый кабель питания от радио, чтобы достать вилку).

Я также использовал клеевой пистолет, чтобы прикрепить концы проводов, вы должны использовать изоленту.

10) Visual Studio для написания кода Arduino, хотите знать, как? проверьте эту ссылку, это полностью бесплатно или вы можете использовать Arduino IDE.
Приступим.

Подготовка ультразвуковой
Во-первых, мы узнаем, как прикрепить ультразвуковой датчик к Arduino, как показано на изображении ниже. Позже мы опишем, как проверить ультразвуковой датчик.

Модуль реле
Затем мы подключим один канал модуля реле (так как тот, который у меня есть, имеет 2 канала), вывод Vcc подключается к 5 В, а IN1 подключается к выводу 8 Arduino (или любому другому выводу по вашему выбору).
Стоит отметить, что мой модуль реле активен-низкий, чтобы узнать, в чем разница между активным-низким и активным-высоким, проверьте эту ссылку. Итак, прежде чем продолжить, вы должны знать активный режим вашего реле, для этого вы просто подключаете Vcc и GND в обычном режиме, а затем подключаете контакт IN к 5V, если ничего не происходит, тогда он активен на низком уровне, чтобы убедиться, что он подключил контакт IN к GND.

Лампа
Затем подготовьте лампу для подключения к розетке, и одна клемма реле будет подключена непосредственно к вилке, другая будет иметь разрез посередине пути, один конец разреза перейдет в нормально открытый контакт (NO1) в модуле реле, другой подключится к контакту COM1, а затем к штекеру.


Окончательная схема становится (Лампа упрощена :))

Теперь мы закончили с оборудованием.

Код делает следующее
- Измеряет расстояние до ультразвукового.
- Проверяет, прошел ли кто-нибудь мимо двери
- Переключает состояние света
Считывание значений с ультразвукового датчика
Теперь давайте попробуем ультразвуковой датчик, это пример из вашей библиотеки, он очень простой и понятный, поскольку он просто печатает считываемое расстояние.
Вы можете получить расстояние в сантиметрах или дюймах с помощью (сонар - это название ультразвукового экземпляра).
sonar.ping_cm ();
// Или
sonar.ping_inch ();
Как мы видим, он также устанавливает контакты ультразвукового датчика и максимальный желаемый диапазон.

К сожалению, иногда ультразвуковой датчик время от времени считывает неверное расстояние.

Что может привести к непреднамеренному включению и выключению света. Чтобы решить эту проблему, мы должны получить количество показаний и выбрать их среднее значение. Другой способ исправить это - использовать средний фильтр . который просто берет ряд показаний, сортирует их в массив и выбирает значение посередине, которое настолько круто, что устраняет шум, если он возникает часто.
К счастью, в библиотеке NewPing этот фильтр реализован в функции
sonar.ping_median (беззнаковый байт numReadings);
Вы просто передаете количество считываний, которое хотите рассматривать как максимум 512 выборок, поскольку они используют беззнаковый байт . .
эта функция возвращает время, в течение которого эхо используется для возврата, которое должно быть преобразовано в единицу длины, которую вы используете, это также легко реализуется в библиотеке с помощью
sonar.convert_cm (unsigned int echoTime);
// Или
sonar.convert_in (unsigned int echoTime);
Последняя загвоздка в ультразвуковом устройстве заключается в том, что он показывает 0, если перед ним ничего нет , это просто решается путем указания ему установить расстояние на MAX_DISTANCE, если он читает 0, наконец, код для считывания датчика становится (расстояние - глобальная переменная):

Обнаружение того, что что-то прошло
Теперь давайте начнем кодирование, чтобы знать, что кто-то прошел мимо ультразвукового устройства, и ему необходимо считать критическое расстояние, которое может быть просто половиной ширины двери. поэтому мы всегда уверены, что кто-то проходит мимо.
Еще я хочу иметь в виду, что свет будет только переключаться, когда что-то прошло перед ультразвуком, это означает, что если кто-то остановится перед ним, ничего не произойдет. Код для этого выглядит следующим образом

Поздравляю !! Теперь, когда вы закончили, я прикреплю весь проект Visual Studio, сделав небольшое изменение в библиотеке (использовав динамическое выделение памяти вместо массивов переменного размера - поскольку Visual Studio не позволяет их -) и добавил некоторую документацию.
Проверьте электронные компоненты на utsource.net
Пожалуйста, уважайте этот проект, если вы сочтете его полезным, другие проекты:
Цветовой микшер Arduino
Радиоуправляемая машина с использованием 1Sheeld
Статьи
Разработка Arduino с использованием Visual Studio
Код
- Умный дом свет
- Ультразвуковой тест
Умный домик Arduino
Этот код принимает входные данные от ультразвукового датчика и соответственно управляет реле#define TRIGGER_PIN 12 // Вывод Arduino, связанный с выводом триггера на ультразвуковом датчике. #Define ECHO_PIN 11 // Вывод Arduino, привязанный к выводу эхо на ультразвуковом датчике. . # define MAX_DISTANCE 200 // Максимальное расстояние, на которое мы хотим пинговать (в сантиметрах). Максимальное расстояние датчика оценивается в 400-500 см. [это произвольное число] #define RELAY_LINE1_PIN 8 # include "NewPing.h" эхолот NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка NewPing контактов и максимального расстояния. Unsigned int critical_distance_cms =50; // Расстояние отсечки, на котором свет переключится [это произвольное число] bool state =0; void setup () {Serial.begin (9600); // Откройте монитор последовательного порта на скорости 115200 бод, чтобы увидеть результаты проверки связи. pinMode (RELAY_LINE1_PIN, ВЫХОД); digitalWrite (RELAY_LINE1_PIN, HIGH); // Выключаем свет} void loop () {delay (50); // Ждем 50 мс между пингами (около 20 пингов / сек). 29 мс должны быть самой короткой задержкой между эхо-запросами. беззнаковое int расстояние =readDistance (); // Текущее расстояние до любого объекта, обращенного к ультразвуковому датчику Serial.print ("Ultrasonic:"); Serial.print (расстояние); // Отправляем эхо-запрос, получаем расстояние в см и распечатываем результат (0 =за пределами установленного диапазона расстояний) Serial.println ("cm"); // Кто-то находится возле двери if (distanceУльтразвуковой тест Arduino
Код для того, чтобы ультразвуковой сканер печатал считываемое значение// ----------------------------------- ---------------------------------------- // Пример скетча библиотеки NewPing, который выполняет пинг примерно 20 раз в секунду .// ------------------------------------------ --------------------------------- # include#define TRIGGER_PIN 12 // Вывод Arduino привязан к триггер на ультразвуковом датчике. #define ECHO_PIN 11 // Пин Arduino привязан к эхо-пину на ультразвуковом датчике. #define MAX_DISTANCE 200 // Максимальное расстояние, на которое мы хотим пинговать (в сантиметрах). Максимальное расстояние датчика оценивается в 400-500 см. Новый гидролокатор (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // Настройка NewPing контактов и максимального расстояния .void setup () {Serial.begin (115200); // Открыть монитор последовательного порта на скорости 115200 бод, чтобы увидеть результаты проверки связи.} Void loop () {delay (50); // Ждем 50 мс между пингами (около 20 пингов / сек). 29 мс должны быть самой короткой задержкой между эхо-запросами. Serial.print ("Пинг:"); Серийный.принт (sonar.ping_cm ()); // Отправляем эхо-запрос, получаем расстояние в см и распечатываем результат (0 =за пределами установленного диапазона расстояний) Serial.println ("cm");} Умное освещение для дома
Это полный проект для Visual Studio с отредактированной библиотекой https://github.com/shakram02/Arduino_SmartHouseLights.git
Схема
Это полная схема, описывающая весь проект
Производственный процесс
- Детектор языка TinyML на основе Edge Impulse и Arduino
- Игра с гироскопом Arduino с MPU-6050
- Цифровые игральные кости Arduino
- Регистратор данных температуры и влажности
- Автоматическая система полива растений с Arduino
- Найди меня
- Умная обувь (автоматическая шнуровка и выработка электроэнергии)
- Сонар с использованием Arduino и отображение при обработке IDE
- С Днем Рождения:свет и звук
- Управление яркостью светодиода с помощью Bolt и Arduino