Cuprins:
- Pasul 1: Software și hardware necesare
- Pasul 2: Coduri (Vivado)
- Pasul 3: Înțelegerea modului în care se reunesc (schemele componentelor VHDL)
- Pasul 4: Cod (Arduino)
- Pasul 5: Cum se potrivesc componentele noastre
- Pasul 6: demonstrație
- Pasul 7: E timpul să-l testați
Video: Senzor de mișcare / lumini controlate de contor: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Acest proiect a fost creat ca proiect final pentru un curs de proiectare digitală la Cal Poly, San Luis Obispo (CPE 133).
De ce facem acest lucru? Vrem să ajutăm la conservarea resurselor naturale din lume. Proiectul nostru se concentrează pe economisirea energiei electrice. Economisind mai multă energie electrică, vom putea conserva resursele naturale utilizate pentru a genera electricitate. La începutul anului 2018, resursele naturale sunt consumate la un ritm incredibil. Vrem să fim conștienți de impactul nostru asupra mediului nostru și să jucăm rolul nostru în conservarea resurselor naturale. Electronica poate fi implementată în diferite moduri pentru a economisi energie, ceea ce ajută mediul înconjurător, precum și starea noastră economică. * Acest model a fost creat folosind componentele disponibile.
Care a fost inspirația noastră? Oamenii uită adesea să stingă luminile de sărbătoare și să irosească energie lăsându-i aprinși peste noapte. În realitate, acest proiect va economisi energia electrică, deoarece „luminile de sărbătoare” ar fi aprinse numai atunci când oamenii sunt în apropiere, conservând astfel energia atunci când nimeni nu este în jur. Mai mult, am vrut să proiectăm un cronometru, astfel încât luminile să se stingă complet după un anumit timp, pentru a ne asigura că nu se aprind din cauza mișcării detectate la 3 dimineața, de exemplu.
Cum ați putea folosi acest design? Acest design poate fi implementat pentru tot felul de lumini, indiferent dacă sunt decorative, practice sau ambele. Dacă doriți ca lumina de birou să funcționeze doar 6 ore la rând, de exemplu. Ar trebui să setați un contor la 21, 600 secunde (6 ore x 3, 600 secunde / oră). În timp ce contorul crește activ, senzorul de mișcare ar controla lumina. Astfel, de fiecare dată când se oprește în acel interval de timp, trebuie doar să fluturați mâna în fața senzorului de mișcare și acesta se va reporni. Dacă adormiți la birou și vă treziți 7 ore mai târziu, mișcarea dvs. nu o va activa.
Pasul 1: Software și hardware necesare
Software:
- Vivado 2016.2 (sau o versiune mai recentă) puteți găsi aici
- Arduino IDE 1.8.3 (sau o versiune mai recentă) poate fi găsit aici
Hardware:
- 1 tablă Basys 3
- 1 Arduino Uno
- 2 panouri de prăjitură
- 1 senzor cu ultrasunete HC-SR04
- 9 fire de la bărbat la bărbat
- 1 LED
- 1 Rezistor de 100Ω
Pasul 2: Coduri (Vivado)
Mașină de stare finită (a se vedea diagrama de stare de mai sus):
LED-ul a necesitat o mașină cu stare finită. Un LED are doar două stări de a fi aprins și oprit. Doar două intrări controlează starea LED-ului, a contorului și a senzorului. Singurul moment în care LED-ul ar trebui să fie aprins este atunci când senzorul detectează mișcarea și când contorul contează de la zero la treizeci de secunde. În orice alt caz, LED-ul va fi stins.
Numele fișierului: LEDDES
Tejghea:
Contorul ne permite să limităm durata în care senzorul de mișcare poate activa LED-ul. Valoarea sa este afișată pe afișajul de șapte segmente al plăcii Basys 3 printr-un cod sursă („sseg_dec”). Când comutatorul Reset este oprit (valoare: '0'), contorul începe să crească în fiecare secundă de la 0 la 30. Când ajunge la 30, acesta îngheață pe acel număr. Nu va reporni de la 0 până când comutatorul Reset nu este comutat la „1” și înapoi la „1.” Dacă Reset devine „1” în timp ce contorul funcționează, acesta va îngheța orice valoare a atins. Când Resetarea revine la „0”, contorul va reporni de la 0 la 30. Această implementare necesită și utilizarea unui semnal de ceas, codul său este furnizat mai jos („clk_div2”).
Numele fișierului: FinalCounter
FIȘIERE OFERITE:
Afișaj cu șapte segmente:
Acest cod permite afișarea celor șapte segmente să afișeze valori zecimale. Un submodul acționează ca decodor între o intrare binară de 8 biți și o zecimală codată binară pe 4 biți. Celălalt împarte semnalul ceasului pentru a-și reîmprospăta valoarea la un anumit ritm.
Numele fișierului: sseg_dec
Semnal de ceas:
Acest cod permite contorului să crească în trepte de 1 secundă. Împarte frecvența ceasului de intrare într-o frecvență mai lentă. Ne-am adaptat pentru a oferi o perioadă de 1 secundă prin schimbarea constantei max_count: integer: = (3000000)”la„ constant max_count: integer: = (50000000)”.
Numele fișierului: clk_div2
Fișiere furnizate: sseg_dec, clk_div2 * Aceste fișiere sursă au fost furnizate de profesorul Bryan Mealy.
Pasul 3: Înțelegerea modului în care se reunesc (schemele componentelor VHDL)
Fișierul principal („MainProjectDES”) conține toate sub-fișierele discutate anterior. Acestea sunt conectate în modul de mai sus. Diferitele componente sunt interconectate folosind hărți de port pentru a trimite un semnal de la un element la altul.
După cum probabil ați observat, FinalCounter oferă o ieșire de 5 biți, în timp ce sseg_dec necesită o intrare de 8 biți. Pentru a compensa, setăm semnalul care conectează ambele componente să înceapă cu „000” și să adăugăm ieșirea de 5 biți de pe contor. Furnizând astfel o intrare pe 8 biți.
Constrângeri:
Pentru a rula aceste coduri pe placa Basys 3, a fost necesar un fișier de constrângeri, care să indice fiecărui semnal unde să meargă și cum au fost conectate piesele.
Pasul 4: Cod (Arduino)
Am programat Arduino Uno pentru a utiliza senzorul de mișcare pentru a detecta mișcarea și a oferi o ieșire care semnalizează LED-ul să se aprindă. În plus, utilizarea senzorului pentru a detecta mișcarea necesită rularea unor bucle care caută constant schimbarea distanței. În esență, are nevoie de un cronometru care rulează concomitent pentru a emite un semnal „ridicat” pentru ca LED-ul să se aprindă în timp ce cronometrul trebuie să fie resetat odată ce a fost detectată o nouă mișcare, ceea ce este aproape imposibil de implementat pe Vivado pe baza domeniului de cunoștințe a clasei. Mai mult, am folosit un Arduino pentru că nu ar fi fezabil să folosim HC-SR04 cu placa Basys 3, deoarece placa furnizează doar 3,3 V, în timp ce senzorul necesită o sursă de alimentare de 5 V. Pentru implementarea mișcării de detectare, este codarea efectivă, spre deosebire de CAD în VHDL.
Am folosit funcția incorporată de impulsuri pentru senzor pentru a prelua timpul trecut între sunetul emis inițial de la senzor și sunetul care revine la lovirea unui obiect. Apoi folosim viteza sunetului și intervalul de timp pentru a calcula distanța dintre obiect și senzor. Din aceasta, stocăm distanța actuală și o urmărim. Verificăm distanța la fiecare 150ms. De asemenea, am folosit biblioteca elapsedmil pentru a rula un temporizator intern în interiorul arduino pentru a ține evidența timpului scurs. Dacă detectăm o modificare a distanței, care corespunde unei mișcări, cronometrul este resetat la zero și va menține lumina aprinsă până când au trecut 3 secunde. Ori de câte ori senzorul detectează o altă mișcare, cronometrul este resetat la 0 și semnalul pentru lumina LED va fi "ridicat" pentru următoarele 3 secunde. Am atașat o copie a codului nostru Arduino de mai jos.
Pasul 5: Cum se potrivesc componentele noastre
După cum puteți vedea în „Basys3: Pmod Pin-out Diagram *” și în fotografia plăcii Arduino Uno, am evidențiat și etichetat porturile pe care le-am folosit.
1. LED-ul și placa Basys 3
LED-ul este conectat în serie cu rezistorul de 100Ω. -Sirul alb conectează rezistorul la pinul PWR al plăcii Basys 3. -Sirul galben conectează LED-ul la pinul H1 al plăcii Basys 3.
2. Senzorul de mișcare și Arduino Uno
-Cablul portocaliu conectează Vcc (puterea) senzorului de mișcare la pinul 5V al plăcii Arduino Uno.-Firul alb conectează pinul Trig al senzorului de mișcare la pinul 10 al plăcii Arduino Uno. senzorul de mișcare la pinul 9 al plăcii Arduino Uno.-Firul negru conectează pinul GND al senzorului de mișcare la pinul GND al plăcii Arduino Uno.
[Sârmele pe care le-am folosit erau prea scurte pentru a ajunge la componente, astfel erau interconectate]
3. Placa Basys 3 și Arduino Uno
Firul galben conectează pinul A14 al plăcii Basys 3 la pinul 6 al plăcii Arduino Uno.
* Această diagramă a fost preluată din „Manualul de referință al plăcii FPGA Basys 3 ™” al Digilent, care poate fi găsit aici.
Pasul 6: demonstrație
Pasul 7: E timpul să-l testați
Felicitări! Ați ajuns la sfârșitul proiectului nostru de senzor de mișcare și lumină contracontrolată! Vă mulțumesc foarte mult pentru că ați citit postarea noastră Instructables. Acum este timpul să încercați să construiți singur acest proiect. Dacă urmați fiecare pas cu atenție, ar trebui să aveți un senzor de mișcare și o lumină contracontrolată care funcționează similar cu a noastră! Vă dorim mult noroc în construirea acestui proiect și sperăm că poate contribui la economisirea energiei electrice, precum și a resurselor naturale!
Recomandat:
Timelapse controlate de mișcare: 7 pași (cu imagini)
Timelapse controlate de mișcare: Timelaps-urile sunt grozave! Ele ne ajută să aruncăm o privire în lumea cu mișcare lentă pe care am putea uita să o apreciem frumusețea ei. Dar, uneori, un videoclip constant cu timelapse poate fi plictisitor sau se întâmplă atât de multe lucruri în jurul valorii încât doar un unghi nu este
ATTiny 85 Lumini de șir festive controlate: 5 pași
ATTiny 85 Controled Festive String Lights: În timp ce navigau pe eBay, am dat peste aceste șiruri de 50 de LED-uri adresabile folosind cipul WS2811, deși nu cred că sunt concepute pentru a fi folosite ca lumini de zână, funcționează bine și arată minunat în copac. De asemenea, ar fi posibil să
Lumini controlate vocale de oriunde cu Jason: 7 pași
Lumini controlate vocale de oriunde cu Jason: lumini AC care sunt controlate de oriunde cu conexiune la internet folosind NodeMCU (ESP8266) și Jason (aplicația Android). Aparat de curent alternativ, dezactivați
Aplicații Lego Mini Cooper Lumini controlate: 7 pași (cu imagini)
Aplicația Lego Mini Cooper Luminile controlate: Pericol, UXB! Visul tău este să fii expert în eliminarea bombelor, dar șovăiești din cauza morții? Atunci acesta este proiectul pentru tine! Veți petrece ore lungi făcând ajustări minuscule la un dispozitiv extrem de instabil, transpirați de la frate
Angrenaje în mișcare minunate controlate de butoane minunate (care urmează să fie continuate): 9 pași
Awesome Moving Gears controlat de butoane Awesome (care urmează să fie continuat): design fizic / electronic pentru UCLA Design Media Arts cu Eddo Stern. Acest instructable este incomplet. Proiectul este încă în desfășurare