Оглавление:
- Шаг 1. Требуемое программное и аппаратное обеспечение
- Шаг 2: коды (Vivado)
- Шаг 3. Понимание того, как они объединяются (схемы компонентов VHDL)
- Шаг 4: Код (Arduino)
- Шаг 5: Как наши компоненты сочетаются друг с другом
- Шаг 6: демонстрация
- Шаг 7: время проверить это
Видео: Датчик движения / счетчик контролируемых огней: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Этот проект был создан как заключительный проект для курса цифрового дизайна в Калифорнийском Поли, Сан-Луис-Обиспо (CPE 133).
Почему мы это делаем? Мы хотим помочь сохранить природные ресурсы в мире. Наш проект ориентирован на экономию электроэнергии. За счет большей экономии электроэнергии мы сможем сохранить природные ресурсы, которые используются для производства электроэнергии. В начале 2018 года природные ресурсы потребляются невероятными темпами. Мы хотим осознавать свое влияние на окружающую среду и играть свою роль в сохранении природных ресурсов. Электроника может быть реализована различными способами для экономии энергии, что помогает окружающей среде, а также нашему экономическому состоянию. * Эта модель была создана с использованием доступных нам компонентов.
Что было нашим вдохновением? Люди часто забывают выключить праздничный свет и тратят энергию, оставляя его включенным на ночь. На самом деле, этот проект позволит сэкономить электроэнергию, потому что «праздничные огни» будут гореть только тогда, когда рядом находятся люди, таким образом экономя энергию, когда никого нет рядом. Более того, мы хотели разработать таймер, чтобы свет полностью выключался через заданное время, чтобы гарантировать, что они не включаются, например, из-за движения, обнаруженного в 3 часа ночи.
Как вы могли бы использовать этот дизайн? Этот дизайн может быть реализован для всех типов источников света, будь то декоративные, практичные или и то, и другое. Например, если вы хотите, чтобы настольный светильник работал только 6 часов за раз. Вам нужно будет установить счетчик на 21 600 секунд (6 часов x 3, 600 секунд / час). Пока счетчик активно увеличивается, датчик движения будет управлять светом. Таким образом, каждый раз, когда он выключается в течение этого промежутка времени, вам просто нужно помахать рукой перед датчиком движения, и он снова включится. Если вы заснете за своим столом и проснетесь через 7 часов, ваше движение не включит его.
Шаг 1. Требуемое программное и аппаратное обеспечение
Программное обеспечение:
- Vivado 2016.2 (или более свежую версию) можно найти здесь
- Arduino IDE 1.8.3 (или более позднюю версию) можно найти здесь
Аппаратное обеспечение:
- 1 доска Basys 3
- 1 Arduino Uno
- 2 макета
- 1 ультразвуковой датчик дальности HC-SR04
- 9 проводов типа папа-папа
- 1 светодиод
- 1 резистор 100 Ом
Шаг 2: коды (Vivado)
Конечный автомат (см. Диаграмму состояний выше):
Светодиод требовал конечного автомата. Светодиод может быть включен и выключен только в двух состояниях. Только два входа контролируют состояние светодиода, счетчика и датчика. Светодиод должен гореть только тогда, когда датчик обнаруживает движение и когда счетчик ведет отсчет от нуля до тридцати секунд. В любом другом случае светодиод не горит.
Имя файла: LEDDES
Прилавок:
Счетчик позволяет ограничить время, в течение которого датчик движения может активировать светодиод. Его значение отображается на семисегментном дисплее Basys 3 Board в исходном коде («sseg_dec»). Когда переключатель сброса находится в нижнем положении (значение: «0»), счетчик начинает увеличиваться каждую секунду с 0 до 30. Когда он достигает 30, он останавливается на этом числе. Он не будет перезапускаться с 0 до тех пор, пока переключатель сброса не будет переведен в положение «1» и обратно в положение «1». Если сброс становится равным «1» во время работы счетчика, счетчик замерзнет на достигнутом значении. Когда Reset возвращается к «0», счетчик перезапускается с 0 до 30. Эта реализация также требует использования тактового сигнала, его код представлен ниже («clk_div2»).
Имя файла: FinalCounter
ПРЕДОСТАВЛЯЕМЫЕ ФАЙЛЫ:
Семисегментный дисплей:
Этот код позволяет семисегментному дисплею отображать десятичные значения. Один подмодуль действует как декодер между 8-битным двоичным входом и 4-битным двоично-десятичным кодированием. Другой разделяет тактовый сигнал, чтобы обновлять его значение с определенной скоростью.
Имя файла: sseg_dec
Сигнал часов:
Этот код позволяет счетчику увеличиваться с шагом в 1 секунду. Он делит входную тактовую частоту на более медленную. Мы адаптировали период в 1 секунду, изменив константу max_count: integer: = (3000000) на «постоянную max_count: integer: = (50000000)».
Имя файла: clk_div2
Предоставленные файлы: sseg_dec, clk_div2 * Эти исходные файлы были предоставлены профессором Брайаном Мили.
Шаг 3. Понимание того, как они объединяются (схемы компонентов VHDL)
Главный файл («MainProjectDES») содержит все подфайлы, о которых говорилось ранее. Они связаны указанным выше способом. Различные компоненты соединяются между собой с помощью карт портов для передачи сигнала от одного элемента к другому.
Как вы могли заметить, FinalCounter обеспечивает 5-битный вывод, в то время как sseg_dec требует 8-битного ввода. Для компенсации мы устанавливаем сигнал, соединяющий оба компонента, так, чтобы он начинался с «000» и добавлял 5-битный вывод счетчика. Таким образом обеспечивается 8-битный ввод.
Ограничения:
Чтобы запустить эти коды на плате Basys 3 Board, требовался файл ограничений, сообщающий каждому сигналу, куда идти и как соединяются части.
Шаг 4: Код (Arduino)
Мы запрограммировали Arduino Uno на использование датчика движения для обнаружения движения и выдачи выходного сигнала, который сигнализирует о загорании светодиода. Кроме того, использование датчика для обнаружения движения требует беговых петель, которые постоянно отслеживают изменение расстояния. По сути, ему нужен таймер, который работает одновременно, чтобы выдавать «высокий» сигнал, чтобы светодиод загорелся, в то время как таймер необходимо сбрасывать при обнаружении нового движения, что практически невозможно реализовать на Vivado, исходя из объема знаний. класса. Более того, мы использовали Arduino, потому что было бы невозможно использовать HC-SR04 с платой Basys 3, так как плата подает только 3,3 В, в то время как датчик требует источника питания 5 В. Для реализации обнаружения движения это фактическое кодирование в отличие от CAD в VHDL.
Мы использовали встроенную функцию импульса для датчика, чтобы получить время, прошедшее между звуком, исходящим от датчика, и звуком, который отражается обратно при ударе по объекту. Затем мы используем скорость звука и временной интервал для расчета расстояния между объектом и датчиком. Исходя из этого, мы сохраняем текущее расстояние и отслеживаем его. Мы проверяем расстояние каждые 150 мс. Мы также использовали библиотеку elapsedmil для запуска внутреннего таймера внутри Arduino, чтобы отслеживать прошедшее время. Если мы обнаруживаем изменение расстояния, которое соответствует движению, таймер сбрасывается на ноль, и он будет держать свет включенным до тех пор, пока не пройдут 3 секунды. Каждый раз, когда датчик обнаруживает другое движение, таймер сбрасывается на 0, и сигнал светодиода будет «высоким» в течение следующих 3 секунд. Ниже мы прикрепили копию нашего кода Arduino.
Шаг 5: Как наши компоненты сочетаются друг с другом
Как вы можете видеть на «Basys3: Pmod Pin-out Diagram *» и фотографии платы Arduino Uno, мы выделили и пометили используемые порты.
1. Плата LED и Basys 3
Светодиод подключен последовательно с резистором 100 Ом. -Белый провод подключает резистор к выводу PWR платы Basys 3. -Желтый провод соединяет светодиод с контактом H1 платы Basys 3.
2. Датчик движения и Arduino Uno
- Оранжевый провод соединяет Vcc (питание) датчика движения с контактом 5V платы Arduino Uno. - Белый провод соединяет контакт Trig датчика движения с контактом 10 платы Arduino Uno. - Желтый провод соединяет контакт Echo of датчик движения к контакту 9 платы Arduino Uno. - Черный провод соединяет контакт GND датчика движения с контактом GND платы Arduino Uno.
[Используемые нами провода были слишком короткими, чтобы добраться до компонентов, поэтому они были соединены между собой]
3. Плата Basys 3 и Arduino Uno
Желтый провод соединяет контакт A14 платы Basys 3 с контактом 6 платы Arduino Uno.
* Эта диаграмма была взята из «Справочного руководства по плате Basys 3 ™ FPGA» компании Digilent, которое можно найти здесь.
Шаг 6: демонстрация
Шаг 7: время проверить это
Поздравляю! Вы подошли к концу нашего проекта освещения с датчиком движения и счетчиком! Большое спасибо за то, что прочитали наш пост с инструкциями. Пришло время попробовать построить этот проект самостоятельно. Если вы будете внимательно следить за каждым шагом, у вас должен быть датчик движения и свет, управляемый счетчиком, который работает аналогично нашему! Мы желаем вам удачи в реализации этого проекта и надеемся, что он поможет сэкономить электроэнергию и природные ресурсы!
Рекомендуемые:
Датчик движения ESP-01 с функцией глубокого сна: 5 шагов
Датчик движения ESP-01 с функцией глубокого сна: я работал над созданием самодельных датчиков движения, которые отправляют сообщение электронной почты при срабатывании. Есть много примеров инструкций и других примеров того, как это сделать. Недавно мне понадобилось сделать это с помощью датчика движения PIR с батарейным питанием и ESP
Датчик движения Arduino Laser: 5 шагов
Датчик движения Arduino Laser: ПРИМЕЧАНИЕ. Этот проект был разработан таким образом, чтобы все части можно было повторно использовать в будущих проектах. В результате конечный продукт менее стабилен, чем был бы, если бы вы использовали более долговечные материалы, такие как клей, пайка и т. Д. &Hellip; Предупреждение: не делайте
Счетчик Гейгера счетчик PKE: 7 шагов (с изображениями)
Счетчик Гейгера PKE Meter: Я давно хотел построить счетчик Гейгера, чтобы дополнить мою охлаждаемую камеру Пельтье. Есть (надеюсь) не очень полезная цель владения счетчиком Гейгера, но мне просто нравятся старые русские лампы, и я подумал, что это будет
Датчик температуры Desert Railroad и счетчик пассажиров: 5 шагов
Детектор температуры пустынной железной дороги и счетчик пассажиров: Цель: Температура: это руководство научит вас, как настроить и запрограммировать Arduino RedBoard (с использованием MATLAB) для определения температуры железной дороги. При достижении небезопасной для пассажиров температуры раздается предупреждающее сообщение, зуммеры
Выходное отверстие с контролем движения - от датчика движения: 6 шагов
Выходное отверстие с контролем движения - от источника света с датчиком движения: Представьте, что вы обманщик, идущий в самый страшный дом в квартале. Пройдя мимо всех гулей, привидений и кладбищ, вы наконец доберетесь до последнего пути. Вы видите перед собой конфету в миске! Но тут вдруг гхо