Spisu treści:

Światła z czujnikiem ruchu / licznikiem: 7 kroków
Światła z czujnikiem ruchu / licznikiem: 7 kroków

Wideo: Światła z czujnikiem ruchu / licznikiem: 7 kroków

Wideo: Światła z czujnikiem ruchu / licznikiem: 7 kroków
Wideo: Sposób podłączenia i zasada działania czujnika ruchu PIR 2024, Lipiec
Anonim
Światła z czujnikiem ruchu/kontrolą licznika
Światła z czujnikiem ruchu/kontrolą licznika

Ten projekt powstał jako końcowy projekt kursu projektowania cyfrowego w Cal Poly, San Luis Obispo (CPE 133).

Dlaczego to robimy?Chcemy pomóc chronić zasoby naturalne na świecie. Nasz projekt koncentruje się na oszczędzaniu energii elektrycznej. Oszczędzając więcej energii elektrycznej, będziemy mogli chronić zasoby naturalne wykorzystywane do wytwarzania energii elektrycznej. Na początku 2018 roku zasoby naturalne są zużywane w niewiarygodnym tempie. Chcemy być świadomi naszego wpływu na nasze środowisko i odgrywać naszą rolę w ochronie zasobów naturalnych. Elektronika może być wdrażana na różne sposoby, aby oszczędzać energię, co sprzyja środowisku, a także naszemu stanowi ekonomicznemu.*Model ten powstał z wykorzystaniem dostępnych nam komponentów.

Co było dla nas inspiracją? Ludzie często zapominają o wyłączeniu świątecznych świateł i marnują energię, zostawiając je włączone na noc. W rzeczywistości projekt ten pozwoli oszczędzić energię elektryczną, ponieważ „świąteczne światła” będą świecić tylko wtedy, gdy ludzie będą w pobliżu, oszczędzając w ten sposób energię, gdy nikogo nie ma w pobliżu. Ponadto chcieliśmy zaprojektować zegar, aby światła wyłączały się całkowicie po określonym czasie, aby upewnić się, że nie włączają się z powodu ruchu wykrytego na przykład o 3 nad ranem.

Jak możesz wykorzystać ten projekt? Ten projekt można zastosować do wszystkich rodzajów świateł, niezależnie od tego, czy są dekoracyjne, praktyczne, czy jedno i drugie. Na przykład, jeśli chcesz, aby lampka biurkowa działała jednorazowo tylko przez 6 godzin. Musiałbyś ustawić licznik na 21 600 sekund (6 godzin x 3 600 sekund/godzinę). Podczas gdy licznik aktywnie rośnie, czujnik ruchu będzie kontrolował światło. Dlatego za każdym razem, gdy wyłączy się w tym czasie, wystarczy pomachać ręką przed czujnikiem ruchu, a włączy się ponownie. Jeśli zaśniesz przy biurku i obudzisz się 7 godzin później, Twój ruch go nie włączy.

Krok 1: Wymagane oprogramowanie i sprzęt

Wymagane oprogramowanie i sprzęt
Wymagane oprogramowanie i sprzęt
Wymagane oprogramowanie i sprzęt
Wymagane oprogramowanie i sprzęt
Wymagane oprogramowanie i sprzęt
Wymagane oprogramowanie i sprzęt
Wymagane oprogramowanie i sprzęt
Wymagane oprogramowanie i sprzęt

Oprogramowanie:

  • Vivado 2016.2 (lub nowszą wersję) można znaleźć tutaj
  • Arduino IDE 1.8.3 (lub nowsza wersja) można znaleźć tutaj

Sprzęt komputerowy:

  • 1 deska Basy 3
  • 1 układ Arduino
  • 2 deski do krojenia chleba
  • 1 ultradźwiękowy czujnik zasięgu HC-SR04
  • 9 Przewody męskie-męskie
  • 1 dioda LED
  • 1 rezystor 100Ω

Krok 2: Kody (Vivado)

Kody (Vivado)
Kody (Vivado)

Maszyna skończona (patrz diagram stanów powyżej):

Dioda LED wymagała maszyny skończonej. Dioda LED ma tylko dwa stany włączenia i wyłączenia. Tylko dwa wejścia kontrolują stan diody LED, licznik i czujnik. Dioda powinna świecić tylko wtedy, gdy czujnik wykryje ruch i gdy licznik odlicza od zera do trzydziestu sekund. W każdym innym przypadku dioda będzie wyłączona.

Nazwa pliku: LEDDES

Licznik:

Licznik pozwala nam ograniczyć czas, w którym czujnik ruchu może aktywować diodę LED. Jego wartość jest wyświetlana na siedmiosegmentowym wyświetlaczu płyty Basys 3 za pomocą kodu źródłowego („sseg_dec”). Gdy przełącznik Reset jest w dół (wartość: '0'), licznik zaczyna rosnąć co sekundę od 0 do 30. Gdy osiągnie 30, zatrzymuje się na tej liczbie. Nie uruchomi się ponownie od 0, dopóki przełącznik Reset nie zostanie przełączony na „1” i z powrotem na „1”. Jeśli Reset stanie się „1” podczas działania licznika, licznik zatrzyma się na dowolnej wartości, którą osiągnął. Gdy Reset powróci do „0”, licznik uruchomi się ponownie od 0 do 30. Ta implementacja wymaga również użycia sygnału zegara, jego kod znajduje się poniżej („clk_div2”).

Nazwa pliku: FinalCounter

DOSTARCZANE PLIKI:

Wyświetlacz siedmiosegmentowy:

Ten kod umożliwia wyświetlaczowi siedmiosegmentowemu wyświetlanie wartości dziesiętnych. Jeden submoduł działa jako dekoder między 8-bitowym wejściem binarnym a 4-bitowym binarnym kodowaniem dziesiętnym. Drugi dzieli sygnał zegarowy, aby odświeżyć jego wartość z określoną częstotliwością.

Nazwa pliku: sseg_dec

Sygnał zegara:

Ten kod pozwala na zwiększanie licznika w odstępach co 1 sekundę. Dzieli częstotliwość zegara wejściowego na wolniejszą częstotliwość. Przystosowaliśmy się do zapewnienia okresu 1 sekundy, zmieniając stałą max_count: integer:= (3000000)” na „constant max_count: integer:= (50000000).”

Nazwa pliku: clk_div2

Dostarczone pliki: sseg_dec, clk_div2 *Te pliki źródłowe zostały dostarczone przez profesora Bryana Mealy.

Krok 3: Zrozumienie, jak łączą się ze sobą (schematy komponentów VHDL)

Zrozumienie, jak łączą się ze sobą (schematy komponentów VHDL)
Zrozumienie, jak łączą się ze sobą (schematy komponentów VHDL)

Główny plik ("MainProjectDES") zawiera wszystkie podpliki omówione wcześniej. Są one połączone w powyższy sposób. Różne komponenty są ze sobą połączone za pomocą map portów, aby przesłać sygnał z jednego elementu do drugiego.

Jak mogłeś zauważyć, FinalCounter zapewnia 5-bitowe wyjście, podczas gdy sseg_dec wymaga 8-bitowego wejścia. Aby to skompensować, ustawiamy sygnał łączący oba komponenty, zaczynając od „000” i dodajemy 5-bitowe wyjście z licznika. Zapewniając w ten sposób wejście 8-bitowe.

Ograniczenia:

Aby uruchomić te kody na płycie Basys 3, wymagany był plik ograniczeń, informujący każdy sygnał, dokąd ma iść i jak części są połączone.

Krok 4: Kod (Arduino)

Zaprogramowaliśmy Arduino Uno tak, aby używał czujnika ruchu do wykrywania ruchu i zapewniał wyjście sygnalizujące świecenie diody LED. Ponadto użycie czujnika do wykrywania ruchu wymaga wykonywania pętli, które stale wyszukują zmiany odległości. Zasadniczo potrzebny jest zegar, który działa jednocześnie, aby wyprowadzić sygnał „wysoki”, aby dioda LED zaświeciła się, podczas gdy zegar należy zresetować po wykryciu nowego ruchu, co jest prawie niemożliwe do wdrożenia w Vivado w oparciu o zakres wiedzy klasy. Co więcej, użyliśmy Arduino, ponieważ nie byłoby możliwe użycie HC-SR04 z płytką Basys 3, ponieważ płyta dostarcza tylko 3,3 V, podczas gdy czujnik wymaga zasilania 5 V. W celu wdrożenia ruchu wykrywającego jest to rzeczywiste kodowanie, w przeciwieństwie do CAD w VHDL.

Wykorzystaliśmy wbudowaną funkcję pulsacyjną czujnika, aby pobrać czas, jaki upłynął między dźwiękiem początkowo emitowanym przez czujnik a dźwiękiem, który odbija się po uderzeniu w obiekt. Następnie wykorzystujemy prędkość dźwięku i interwał czasowy do obliczenia odległości między obiektem a czujnikiem. Stamtąd przechowujemy aktualną odległość i śledzimy ją. Sprawdzamy odległość co 150ms. Wykorzystaliśmy również bibliotekę elapsedmil, aby uruchomić wewnętrzny zegar wewnątrz arduino, aby śledzić upływ czasu. Jeśli wykryjemy zmianę odległości, która odpowiada ruchowi, timer zostanie zresetowany do zera i będzie świecił przez 3 sekundy. Za każdym razem, gdy czujnik wykryje inny ruch, timer jest resetowany do 0, a sygnał dla diody LED będzie „wysoki” przez następne 3 sekundy. Poniżej załączamy kopię naszego kodu Arduino.

Krok 5: Jak nasze komponenty do siebie pasują

Jak nasze komponenty do siebie pasują!
Jak nasze komponenty do siebie pasują!
Jak nasze komponenty do siebie pasują!
Jak nasze komponenty do siebie pasują!
Jak nasze komponenty do siebie pasują!
Jak nasze komponenty do siebie pasują!

Jak widać w "Basys3: Pmod Pin-out Diagram*" i zdjęciu płytki Arduino Uno, podświetliliśmy i oznaczyliśmy porty, których używaliśmy.

1. Płyta LED i Basys 3

Dioda jest połączona szeregowo z rezystorem 100Ω. -Biały przewód łączy rezystor z pinem PWR płyty Basys 3. -Żółty przewód łączy diodę LED z pinem H1 płyty Basys 3.

2. Czujnik ruchu i Arduino Uno

-Pomarańczowy przewód łączy Vcc (zasilanie) czujnika ruchu ze stykiem 5V płytki Arduino Uno.-Biały przewód łączy styk Trig czujnika ruchu ze stykiem 10 płytki Arduino Uno.-Żółty przewód łączy styk Echo czujnik ruchu do styku 9 płytki Arduino Uno.-Czarny przewód łączy styk GND czujnika ruchu z stykiem GND płytki Arduino Uno.

[Przewody, których użyliśmy, były zbyt krótkie, aby dosięgnąć elementów, dlatego były ze sobą połączone]

3. Płytka Basys 3 i Arduino Uno

Żółty przewód łączy pin A14 płyty Basys 3 z pinem 6 płyty Arduino Uno.

*Ten schemat został zaczerpnięty z podręcznika „Basys 3™ FPGA Board Reference Manual” firmy Digilent, który można znaleźć tutaj.

Krok 6: Demonstracja

Krok 7: Czas to przetestować

Gratulacje! Dotarłeś do końca naszego projektu z czujnikiem ruchu i oświetleniem sterowanym licznikiem! Bardzo dziękuję za przeczytanie naszego postu z instrukcjami. Teraz nadszedł czas, abyś sam spróbował zbudować ten projekt. Jeśli uważnie śledzisz każdy krok, powinieneś mieć czujnik ruchu i światło sterowane licznikiem, które działa podobnie do naszego! Życzymy powodzenia w budowaniu tego projektu i mamy nadzieję, że przyczyni się on do oszczędzania energii elektrycznej i zasobów naturalnych!

Zalecana: