Taula de continguts:
- Pas 1: programari i maquinari necessaris
- Pas 2: codis (Vivado)
- Pas 3: entendre com s'uneixen (esquemes dels components VHDL)
- Pas 4: Codi (Arduino)
- Pas 5: com s’ajusten els nostres components
- Pas 6: demostració
- Pas 7: és hora de provar-ho
Vídeo: Sensor de moviment / llums controlades per comptador: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Aquest projecte es va crear com a projecte final per a un curs de disseny digital a Cal Poly, San Luis Obispo (CPE 133).
Per què ho fem? Volem ajudar a conservar els recursos naturals del món. El nostre projecte se centra a estalviar electricitat. En estalviar més electricitat, podrem conservar els recursos naturals que s’utilitzen per generar electricitat. Quan comencem el 2018, els recursos naturals es consumeixen a un ritme increïble. Volem ser conscients del nostre impacte en el nostre entorn i contribuir a la preservació dels recursos naturals. L’electrònica es pot implementar de diverses maneres per estalviar energia que ajuda el medi ambient i el nostre estat econòmic. * Aquest model es va crear utilitzant els components disponibles.
Quina va ser la nostra inspiració? La gent sovint s’oblida d’apagar els llums de les vacances i malgastar energia deixant-les enceses durant la nit. En realitat, aquest projecte estalviarà electricitat perquè els “llums de vacances” només s’encendrien quan hi hagi gent a prop, conservant així l’energia quan no hi ha ningú al voltant. A més, volíem dissenyar un temporitzador perquè els llums s’apaguessin completament després d’un temps determinat per garantir que no s’encenguessin a causa del moviment detectat a les 3 de la matinada, per exemple.
Com es pot utilitzar aquest disseny? Aquest disseny es pot implementar per a tot tipus de llums, ja siguin decoratius, pràctics o ambdós. Per exemple, si voleu que la llum de l’escriptori funcioni només durant 6 hores alhora. Hauríeu d’establir un comptador a 21, 600 segons (6 hores x 3, 600 segons / hora). Mentre el comptador augmenta activament, el sensor de moviment controlaria la llum. Per tant, cada vegada que s'apaga durant aquest període de temps, només haureu d'agitar la mà davant del sensor de moviment i es tornarà a encendre. Si us adormiu a l’escriptori i us despertareu 7 hores després, el vostre moviment no l’encendrà.
Pas 1: programari i maquinari necessaris
Programari:
- Vivado 2016.2 (o una versió més recent) es pot trobar aquí
- Arduino IDE 1.8.3 (o una versió més recent) es pot trobar aquí
Maquinari:
- 1 tauler Basys 3
- 1 Arduino Uno
- 2 taules de pa
- 1 sensor d'ultrasons HC-SR04
- 9 cables de mascle a mascle
- 1 LED
- 1 resistència de 100Ω
Pas 2: codis (Vivado)
Màquina d'estats finits (vegeu el diagrama d'estats anterior):
El LED requeria una màquina d'estat finit. Un LED només té dos estats d’estar encès i apagat. Només dues entrades controlen l’estat del LED, el comptador i el sensor. L'única vegada que el LED hauria d'estar encès és quan el sensor detecta moviment i quan el comptador compta de zero a trenta segons. En qualsevol altre cas, el LED estarà apagat.
Nom del fitxer: LEDDES
Comptador:
El comptador ens permet limitar el temps durant el qual el sensor de moviment pot activar el LED. El seu valor es mostra a la pantalla de set segments del tauler Basys 3 mitjançant un codi font ("sseg_dec"). Quan el commutador Restableix està inactiu (valor: '0'), el comptador comença a augmentar cada segon de 0 a 30. Quan arriba a 30, es congela en aquest número. No es reiniciarà des de 0 fins que el commutador de reinici es commutarà a "1" i es tornarà a "1." Si Restableix es converteix en "1" mentre el comptador funciona, el comptador es congelarà en qualsevol valor que hagués assolit. Quan Restableix torna a '0', el comptador es reiniciarà de 0 a 30. Aquesta implementació també requereix l'ús d'un senyal de rellotge, el seu codi es proporciona a continuació ("clk_div2").
Nom del fitxer: FinalCounter
ARXIUS PROVISTOS:
Pantalla de set segments:
Aquest codi permet que la visualització de set segments mostri valors decimals. Un submòdul actua com a descodificador entre una entrada binària de 8 bits i un decimal codificat binari de 4 bits. L’altre divideix el senyal del rellotge per actualitzar el seu valor a un ritme determinat.
Nom del fitxer: sseg_dec
Senyal de rellotge:
Aquest codi permet que el comptador augmenti en increments d'1 segon. Divideix la freqüència del rellotge d’entrada en una freqüència més lenta. Ens hem adaptat per proporcionar un període d'1 segon canviant constant max_count: enter: = (3000000) "a" constant max_count: integer: = (50000000) ".
Nom del fitxer: clk_div2
Fitxers proporcionats: sseg_dec, clk_div2 * Aquests fitxers font van ser proporcionats pel professor Bryan Mealy.
Pas 3: entendre com s'uneixen (esquemes dels components VHDL)
El fitxer principal ("MainProjectDES") conté tots els subarxius comentats anteriorment. Es connecten de la manera anterior. Els diferents components estan interconnectats mitjançant mapes de ports per enviar un senyal d’un element a un altre.
Com haureu notat, el FinalCounter proporciona una sortida de 5 bits mentre que sseg_dec requereix una entrada de 8 bits. Per compensar, configurem el senyal que connecta els dos components per començar amb "000" i complementar la sortida de 5 bits del comptador. Proporcionant així una entrada de 8 bits.
Restriccions:
Per executar aquests codis a la placa Basys 3, calia un fitxer de restriccions que indiqués a cada senyal cap a on anar i com es connectaven les parts.
Pas 4: Codi (Arduino)
Vam programar l'Arduino Uno per utilitzar el sensor de moviment per detectar el moviment i proporcionar una sortida que indica que el LED s'encén. A més, utilitzar el sensor per detectar el moviment requereix cicles en funcionament que busquen constantment canvis de distància. Essencialment, necessita un temporitzador que funcioni simultàniament per generar un senyal "alt" perquè el LED s'encengui mentre que el temporitzador s'ha de restablir un cop s'hagi detectat un moviment nou, que és gairebé impossible d'implementar a Vivado segons l'àmbit de coneixement. de la classe. A més, hem utilitzat un Arduino perquè no seria factible utilitzar HC-SR04 amb la placa Basys 3, ja que la placa només subministra 3,3 V mentre que el sensor requereix una font d'alimentació de 5 V. Per a la implementació del moviment de detecció, es tracta d’una codificació real en lloc de CAD en VHDL.
Hem utilitzat la funció incorporada d’impulsos per al sensor per recuperar el temps transcorregut entre el so emès inicialment pel sensor i el so que es retorna quan es colpeja un objecte. A continuació, fem servir la velocitat del so i l’interval de temps per calcular la distància entre l’objecte i el sensor. A partir d’aquí, emmagatzemem la distància actual i en fem un seguiment. Comprovem la distància cada 150 ms. També hem utilitzat la biblioteca elapsedmil per executar un temporitzador intern dins de l'arduino per fer un seguiment del temps transcorregut. Si detectem un canvi de distància, que correspon a un moviment, el temporitzador es restableix a zero i mantindrà la llum encesa fins que passin 3 segons. Sempre que el sensor detecta un altre moviment, el temporitzador es restableix a 0 i el senyal de la llum LED serà "alt" durant els pròxims 3 segons. Hem adjuntat una còpia del nostre codi Arduino a continuació.
Pas 5: com s’ajusten els nostres components
Com podeu veure al "Basys3: Pmod Pin-out Diagram *" i a la foto de la placa Arduino Uno, hem ressaltat i etiquetat els ports que hem utilitzat.
1. El tauler LED i Basys 3
El LED es connecta en sèrie amb la resistència de 100Ω. -El cable blanc connecta la resistència al pin PWR de la placa Basys 3. -El cable groc connecta el LED al pin H1 de la placa Basys 3.
2. El sensor de moviment i l’Arduino Uno
-El cable taronja connecta Vcc (potència) del sensor de moviment al pin 5V de la placa Arduino Uno.-El cable blanc connecta el pin Trig del sensor de moviment al pin 10 de la placa Arduino Uno.-El fil groc connecta el pin Echo de el sensor de moviment al pin 9 de la placa Arduino Uno.-El cable negre connecta el pin GND del sensor de moviment al pin GND de la placa Arduino Uno.
[Els cables que vam fer servir eren massa curts per arribar als components, de manera que estaven interconnectats]
3. La placa Basys 3 i l’Arduino Uno
El cable groc connecta el pin A14 de la placa Basys 3 al pin 6 de la placa Arduino Uno.
* Aquest diagrama s'ha extret del "Manual de referència de la placa FPGA Basys 3 ™" de Digilent, que es pot trobar aquí.
Pas 6: demostració
Pas 7: és hora de provar-ho
Enhorabona! Ja heu arribat al final del nostre projecte de llum controlada per sensor de moviment i comptador. Moltes gràcies per llegir la nostra publicació sobre Instructables. Ara és hora que proveu de construir aquest projecte vosaltres mateixos. Si seguiu tots els passos amb cura, hauríeu de tenir un sensor de moviment i una llum controlada per comptador que funcioni de manera similar a la nostra. Us desitgem molta sort per construir aquest projecte i esperem que pugui contribuir a estalviar electricitat i recursos naturals.
Recomanat:
Llums d'escriptori RGB controlades remotament: 5 passos
Llums d'escriptori RGB controlats de forma remota: aquest projecte demostra l'ús de firebase com a servidor per controlar i manipular els llums LED al fons de la meva taula
Llums controlades per veu des de qualsevol lloc amb Jason: 7 passos
Llums controlades per veu des de qualsevol lloc amb Jason: llums de CA que es controlen des de qualsevol lloc amb connexió a Internet mitjançant NodeMCU (ESP8266) i Jason (aplicació per a Android). Jason és una aplicació d’assistent de control de veu que he codificat per a dispositius Android Aparell de CA, desactiva
Llums controlades de l'aplicació Lego Mini Cooper: 7 passos (amb imatges)
Llums controlades de l'aplicació Lego Mini Cooper: perill, UXB. El vostre treball de somni és ser expert en l'eliminació de bombes, però dubteu a causa de la seva mort? Llavors aquest és el vostre projecte! Passareu llargues hores fent petits ajustaments a un dispositiu altament inestable, transpirant-vos del vostre br
Llums interiors controlades per wifi (cotxe): 5 passos (amb imatges)
Llums interiors controlats per Wifi (cotxe): Hola a tothom. En aquesta instrucció, instal·larem una tira LED RGB controlada per Wifi per a l'interior del vostre cotxe. En aquest projecte, utilitzaré el meu propi cotxe (Mitsubishi Lancer GTS 2010), però la configuració hauria de funcionar per a la majoria de vehicles. Allà
Fer llums de Nadal controlades per música: 6 passos
Feu llums de Nadal controlats per música: feu llums de Nadal controlats per música per molt econòmics. Utilitza parts molt bàsiques. Aquesta idea no la vaig originar jo. És un derivat del disseny de Rybitski situat aquí