Съдържание:

Сензор за движение/брояч Контролирани светлини: 7 стъпки
Сензор за движение/брояч Контролирани светлини: 7 стъпки

Видео: Сензор за движение/брояч Контролирани светлини: 7 стъпки

Видео: Сензор за движение/брояч Контролирани светлини: 7 стъпки
Видео: Aqara T1 - нова Zigbee лента с бели и адресируеми светодиоди, преглед и тестване 2024, Ноември
Anonim
Сензор за движение/Контролирани светлини
Сензор за движение/Контролирани светлини

Този проект е създаден като окончателен проект за курс по цифров дизайн в Кал Поли, Сан Луис Обиспо (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)

Кодове (Vivado)
Кодове (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 компоненти)

Разбиране на начина, по който те се събират (схеми на VHDL компоненти)
Разбиране на начина, по който те се събират (схеми на 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: Време е да го тествате

Честито! Вие стигнахте до края на нашия проект за сензор за движение и контра контролирано осветление! Много ви благодаря, че прочетохте нашата публикация с инструкции. Сега е време да опитате сами да изградите този проект. Ако следвате всяка стъпка внимателно, трябва да имате сензор за движение и контролирано осветление, което работи подобно на нашето! Желаем ви успех при изграждането на този проект и се надяваме, че той може да допринесе за спестяването на електроенергия, както и на природни ресурси!

Препоръчано: