Съдържание:
- Стъпка 1: Необходим софтуер и хардуер
- Стъпка 2: Кодове (Vivado)
- Стъпка 3: Разбиране на начина, по който те се обединяват (схеми на VHDL компоненти)
- Стъпка 4: Код (Arduino)
- Стъпка 5: Как нашите компоненти си пасват заедно
- Стъпка 6: Демонстрация
- Стъпка 7: Време е да го тествате
Видео: Сензор за движение/брояч Контролирани светлини: 7 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07: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“, докато броячът върви, броячът ще замръзне при всяка стойност, която е достигнал. Когато нулирането се върне на „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 Board, тъй като платката захранва само 3.3V, докато сензорът изисква 5V захранване. За изпълнението на откриващото движение, това е действително кодиране за разлика от CAD във VHDL.
Използвахме вградената импулсна функция за сензора, за да извлечем времето, преминало между първоначално излъчения от сензора звук и звука, който отскача при удара на обект. След това използваме скоростта на звука и времевия интервал, за да изчислим разстоянието между обекта и сензора. От това съхраняваме текущото разстояние и го следим. Проверяваме разстоянието на всеки 150 мс. Използвахме и библиотеката elapsedmil, за да стартираме вътрешен таймер в arduino, за да следим изминалото време. Ако открием промяна на разстояние, което съответства на движение, таймерът се нулира и той ще запали светлината, докато не изминат 3 секунди. Всеки път, когато сензорът открие друго движение, таймерът се нулира на 0 и сигналът за LED светлината ще бъде "висок" за следващите 3 секунди. По -долу сме приложили копие от нашия код на Arduino.
Стъпка 5: Как нашите компоненти си пасват заедно
Както можете да видите в "Basys3: Pmod Pin-out Diagram*" и снимката на Arduino Uno Board, ние подчертахме и маркирахме портовете, които използвахме.
1. Платката LED и Basys 3
Светодиодът е свързан последователно с резистора 100Ω. -Бялият проводник свързва резистора към щифта PWR на платката Basys 3. -Жълтият проводник свързва светодиода към щифт H1 на платката Basys 3.
2. Сензорът за движение и Arduino Uno
-Оранжевият проводник свързва Vcc (захранване) на сензора за движение към щифт 5V на платката Arduino Uno.-Белият проводник свързва щифт Trig на сензора за движение към щифт 10 на платката Arduino Uno. сензорът за движение към щифт 9 на платката Arduino Uno.-Черният проводник свързва щифт GND на сензора за движение към щифт GND на платката Arduino Uno.
[Проводниците, които използвахме, бяха твърде къси, за да достигнат до компонентите, поради което бяха свързани помежду си]
3. Бордът Basys 3 и Arduino Uno
Жълтият проводник свързва щифт A14 на платката Basys 3 към пин 6 на платката Arduino Uno.
*Тази диаграма е взета от "Basys 3 ™ FPGA Board Reference Guide" на Digilent, която можете да намерите тук.
Стъпка 6: Демонстрация
Стъпка 7: Време е да го тествате
Честито! Вие стигнахте до края на нашия проект за сензор за движение и контра контролирано осветление! Много ви благодаря, че прочетохте нашата публикация с инструкции. Сега е време да опитате сами да изградите този проект. Ако следвате всяка стъпка внимателно, трябва да имате сензор за движение и контролирано осветление, което работи подобно на нашето! Желаем ви успех при изграждането на този проект и се надяваме, че той може да допринесе за спестяването на електроенергия, както и на природни ресурси!
Препоръчано:
Сензор за движение на водата Сензор за движение с помощта на Arduino и соленоиден клапан - Направи си сам: 6 стъпки
Сензор за вода Сензор за движение с помощта на Arduino и соленоиден клапан - Направи си сам: В този проект ще ви покажа как да изградите кран за вода с сензор за движение с помощта на електромагнитен клапан. Този проект може да ви помогне да преобразувате съществуващия си ръчен кран за вода в кран, който може да се контролира въз основа на откриване на движение. Използване на интерфейса на IR сензора
Гласово контролирани светлини отвсякъде с Джейсън: 7 стъпки
Гласово контролирани светлини отвсякъде с Джейсън: Променливотокови светлини, които се управляват отвсякъде с интернет връзка, използвайки NodeMCU (ESP8266) и Джейсън (приложение за Android). Джейсън е приложение за асистент с гласов контрол, което кодирах за устройства с Android, за да контролирам електрическото състояние на Уред за променлив ток, до
Кой е на вратата ми? Проект на PIR сензор за движение/сензор за обхват: 5 стъпки
Кой е на вратата ми? Проект за PIR сензор за движение/сензор за обхват: Нашият проект има за цел да усети движението чрез PIR и сензори за разстояние. Кодът на Arduino ще извежда визуален и аудио сигнал, за да каже на потребителя, че някой е близо. Кодът MATLAB ще изпрати имейл сигнал, за да предупреди потребителя, че някой е наблизо. Това устройство
Контролирани светлини на приложението Lego Mini Cooper: 7 стъпки (със снимки)
Контролирани светлини на приложението Lego Mini Cooper: Опасност, UXB! Вашата мечтана работа е експерт по изхвърляне на бомби, но се колебаете заради умиращата част? Тогава това е проектът за вас! Ще прекарате дълги часове, правейки малки настройки на силно нестабилно устройство, изпотявайки се от брата си
Коледна кутия: Arduino/ioBridge Коледни светлини, контролирани от Интернет и музикално шоу: 7 стъпки
Xmas-box: Arduino/ioBridge Коледни светлини и музикално шоу, контролирани от Интернет: Моят проект за xmas-box се състои от коледни светлини, контролирани от интернет и музикално шоу. Коледна песен може да бъде заявена онлайн, която след това се поставя на опашка и се пуска в реда, в който е поискана. Музиката се предава по FM станция