İçindekiler:
- Adım 1: Gerekli Yazılım ve Donanım
- Adım 2: Kodlar (Vivado)
- Adım 3: Nasıl Bir Araya Geldiklerini Anlamak (VHDL Bileşenlerinin Şemaları)
- Adım 4: Kod (Arduino)
- Adım 5: Bileşenlerimiz Birbirine Nasıl Uyum Sağlar
- Adım 6: Gösteri
- Adım 7: Test Etme Zamanı
Video: Hareket Sensörü/Sayaç Kontrollü Işıklar: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Bu proje, Cal Poly, San Luis Obispo'da (CPE 133) Dijital Tasarım kursu için bir final projesi olarak oluşturulmuştur.
Bunu neden yapıyoruz? Dünyadaki doğal kaynakların korunmasına yardımcı olmak istiyoruz. Projemiz elektrik tasarrufuna odaklanıyor. Daha fazla elektrik tasarrufu yaparak, elektrik üretmek için kullanılan doğal kaynakları koruyabileceğiz. 2018 yılına girerken doğal kaynaklar inanılmaz bir hızla tüketiliyor. Çevremiz üzerindeki etkimizin bilincinde olmak ve doğal kaynakların korunmasında üzerimize düşeni yapmak istiyoruz. Elektronik, hem çevreye hem de ekonomik durumumuza yardımcı olan enerji tasarrufu için çeşitli şekillerde uygulanabilir.*Bu model, elimizdeki bileşenler kullanılarak oluşturulmuştur.
İlhamımız neydi? İnsanlar genellikle tatil ışıklarını kapatmayı unutuyor ve gece boyunca açık bırakarak enerjilerini boşa harcıyorlar. Gerçekte, bu proje elektrik tasarrufu sağlayacak çünkü "tatil ışıkları" yalnızca insanlar yakındayken yanacak ve böylece etrafta kimse yokken enerji tasarrufu sağlanacak. Ayrıca, örneğin saat 3'te algılanan hareket nedeniyle açılmamalarını sağlamak için belirli bir süre sonra ışıkların tamamen kapanacağı bir zamanlayıcı tasarlamak istedik.
Bu tasarımı nasıl kullanabilirsiniz? Bu tasarım dekoratif, pratik veya her ikisi için de her türlü ışık için uygulanabilir. Örneğin, masa ışığınızın bir seferde yalnızca 6 saat çalışmasını istiyorsanız. Bir sayacı 21.600 saniyeye (6 saat x 3, 600 saniye/saat) ayarlamanız gerekir. Sayaç aktif olarak artarken, hareket sensörü ışığı kontrol eder. Böylece, bu süre boyunca her kapandığında, hareket sensörünün önünde elinizi sallamanız yeterlidir ve tekrar açılacaktır. Masanızda uyuyakalır ve 7 saat sonra uyanırsanız hareketiniz açmayacaktır.
Adım 1: Gerekli Yazılım ve Donanım
Yazılım:
- Vivado 2016.2 (veya daha yeni bir sürüm) burada bulunabilir
- Arduino IDE 1.8.3 (veya daha yeni bir sürüm) burada bulunabilir
Donanım:
- 1 Basys 3 kurulu
- 1 Arduino Uno
- 2 ekmek tahtası
- 1 Ultrasonik Değişken Sensör HC-SR04
- 9 Erkekten erkeğe teller
- 1 LED
- 1 100Ω Direnç
Adım 2: Kodlar (Vivado)
Sonlu Durum Makinesi (yukarıdaki durum şemasına bakın):
LED, sonlu durumlu bir makine gerektiriyordu. Bir LED'in yalnızca iki açık ve kapalı olma durumu vardır. Yalnızca iki giriş, LED'in durumunu, sayacı ve sensörü kontrol eder. LED'in yanması gereken tek zaman, sensörün hareketi algıladığı ve sayacın sıfırdan otuz saniyeye kadar saydığı zamandır. Başka herhangi bir durumda LED kapalı olacaktır.
Dosya adı: LEDDES
Tezgah:
Sayaç, hareket sensörünün LED'i etkinleştirebileceği süreyi sınırlamamızı sağlar. Değeri, bir kaynak kodu (“sseg_dec”) aracılığıyla Basys 3 Board'un yedi segmentli ekranında görüntülenir. Sıfırlama anahtarı kapalıyken (değer: '0'), sayaç her saniye 0'dan 30'a yükselmeye başlar. 30'a ulaştığında o sayı üzerinde donar. Sıfırlama anahtarı '1'e ve tekrar '1'e çevrilene kadar 0'dan yeniden başlamaz. Sayaç çalışırken Sıfırlama '1' olursa, sayaç ulaştığı değerde donar. Sıfırlama '0'a geri döndüğünde, sayaç 0'dan 30'a yeniden başlar. Bu uygulama aynı zamanda bir saat sinyalinin kullanılmasını gerektirir, kodu aşağıda verilmiştir ("clk_div2").
Dosya adı: FinalCounter
SAĞLANAN DOSYALAR:
Yedi Segment Ekran:
Bu kod, yedi segmentli ekranın ondalık değerleri göstermesine izin verir. Bir alt modül, 8 bitlik ikili giriş ile 4 bitlik İkili Kodlu Ondalık arasında kod çözücü görevi görür. Diğeri, değerini belirli bir oranda yenilemek için saat sinyalini böler.
Dosya adı: sseg_dec
Saat Sinyali:
Bu kod, sayacın 1 saniyelik artışlarla artmasına izin verir. Giriş saat frekansını daha yavaş bir frekansa böler. Sabit max_count: tamsayı:= (3000000)” sabitini “sabit max_count: tamsayı:= (500000000)” olarak değiştirerek 1 saniyelik bir süre sağlayacak şekilde uyarlandık.
Dosya adı: clk_div2
Sağlanan dosyalar: sseg_dec, clk_div2 *Bu kaynak dosyalar Profesör Bryan Mealy tarafından sağlanmıştır.
Adım 3: Nasıl Bir Araya Geldiklerini Anlamak (VHDL Bileşenlerinin Şemaları)
Ana dosya (" MainProjectDES ") daha önce tartışılan tüm alt dosyaları içerir. Yukarıdaki şekilde bağlanırlar. Farklı bileşenler, bir öğeden diğerine sinyal göndermek için bağlantı noktası haritaları kullanılarak birbirine bağlanır.
Fark etmiş olabileceğiniz gibi, FinalCounter 5 bitlik bir çıkış sağlarken sseg_dec 8 bitlik bir giriş gerektirir. Telafi etmek için, her iki bileşeni birbirine bağlayan sinyali "000" ile başlayacak ve sayaçtan 5 bitlik çıkışı ekleyecek şekilde ayarladık. Böylece 8 bitlik bir giriş sağlar.
kısıtlamalar:
Bu kodları Basys 3 Board üzerinde çalıştırmak için, her sinyalin nereye gideceğini ve parçaların nasıl bağlanacağını söyleyen bir kısıtlama dosyası gerekliydi.
Adım 4: Kod (Arduino)
Arduino Uno'yu hareketi algılamak için hareket sensörünü kullanacak ve LED'in yanmasını işaret eden bir çıkış sağlayacak şekilde programladık. Ek olarak, hareketi algılamak için sensörü kullanmak, sürekli olarak mesafedeki değişikliği arayan döngüler gerektirir. Esasen, yeni bir hareket algılandığında zamanlayıcının sıfırlanması gerekirken LED'in yanması için "yüksek" bir sinyal vermek üzere aynı anda çalışan bir zamanlayıcıya ihtiyaç duyar; bu, Vivado'da uygulanması neredeyse imkansızdır, bilgi kapsamına göre Vivado'da uygulanması neredeyse imkansızdır. sınıfın. Ayrıca, sensör 5V güç kaynağı gerektirirken kart yalnızca 3,3V sağladığından, HC-SR04'ü Basys 3 Board ile kullanmak mümkün olmayacağından Arduino kullandık. Algılama hareketinin uygulanması için, VHDL'deki CAD'in aksine gerçek kodlamadır.
Sensörün başlangıçta yaydığı ses ile bir nesneye çarptığında geri dönen ses arasında geçen süreyi almak için sensör için yerleşik darbe işlevini kullandık. Ardından, nesne ile sensör arasındaki mesafeyi hesaplamak için ses hızını ve zaman aralığını kullanırız. Bundan sonra mevcut mesafeyi kaydediyor ve takip ediyoruz. Her 150 ms'de bir mesafeyi kontrol ediyoruz. Geçen süreyi takip etmek için arduino içinde dahili bir zamanlayıcı çalıştırmak için elapsedmil kitaplığını da kullandık. Bir harekete karşılık gelen bir mesafe değişikliği tespit edersek, zamanlayıcı sıfırlanır ve ışığı 3 saniye geçene kadar açık tutar. Sensör başka bir hareket algıladığında, zamanlayıcı 0'a sıfırlanır ve sonraki 3 saniye boyunca LED ışığı için sinyal "yüksek" olacaktır. Arduino kodumuzun bir kopyasını aşağıya ekledik.
Adım 5: Bileşenlerimiz Birbirine Nasıl Uyum Sağlar
"Basys3: Pmod Pin-out Diagram*" ve Arduino Uno Board'un fotoğrafında da görebileceğiniz gibi, kullandığımız portları vurguladık ve etiketledik.
1. LED ve Basys 3 Kartı
LED, 100Ω direnç ile seri olarak bağlanır. -Beyaz kablo, direnci Basys 3 kartının PWR pinine bağlar. -Sarı kablo, LED'i Basys 3 kartının H1 pinine bağlar.
2. Hareket Sensörü ve Arduino Uno
-Turuncu kablo, hareket sensörünün Vcc'sini (gücünü) Arduino Uno kartının 5V pinine bağlar.-Beyaz kablo, hareket sensörünün Trig pinini Arduino Uno kartının 10 pinine bağlar.-Sarı kablo, pin Echo'yu bağlar. hareket sensörünü Arduino Uno kartının 9 numaralı pinine bağlar.-Siyah kablo, hareket sensörünün GND pinini Arduino Uno kartının GND pinine bağlar.
[Kullandığımız teller bileşenlere ulaşamayacak kadar kısaydı, bu yüzden birbirlerine bağlıydılar]
3. Basys 3 Board ve Arduino Uno
Sarı kablo, Basys 3 kartının A14 pinini Arduino Uno kartının 6 pinine bağlar.
*Bu şema, burada bulunabilecek Digilent'in "Basys 3™ FPGA Board Reference Manual"'ından alınmıştır.
Adım 6: Gösteri
Adım 7: Test Etme Zamanı
Tebrikler! Hareket sensörlü ve sayaç kontrollü ışık projemizin sonuna geldiniz! Instructables yazımızı okuduğunuz için çok teşekkür ederiz. Şimdi bu projeyi kendiniz inşa etmeye çalışmanızın zamanı geldi. Her adımı dikkatli bir şekilde takip ederseniz, bizimkine benzer şekilde çalışan bir hareket sensörlü ve sayaç kontrollü ışığa sahip olmalısınız! Bu projeyi inşa etmede size iyi şanslar diliyoruz ve doğal kaynakların yanı sıra elektrik tasarrufuna da katkıda bulunabileceğini umuyoruz!
Önerilen:
ATTiny 85 Kontrollü Şenlikli String Işıklar: 5 Adım
ATTiny 85 Kontrollü Şenlikli String Işıklar: eBay'de gezinirken WS2811 çipini kullanan bu 50 adreslenebilir LED dizilerine rastladım, ancak bunların gerçekten peri ışıkları olarak kullanılmak üzere tasarlanmadıklarını düşünüyorum, ancak iyi çalışıyorlar ve harika görünüyorlar. ağaç. Ayrıca mümkün olacaktır
Jason ile Her Yerden Ses Kontrollü Işıklar: 7 Adım
Jason ile Her Yerden Sesle Kontrol Edilen Işıklar: NodeMCU (ESP8266) ve Jason (Android App) kullanılarak internet bağlantısı olan her yerden kontrol edilen AC ışıklar. Jason, Android cihazlar için kodladığım bir ses kontrollü asistan uygulamasıdır. AC cihazı, unti
Hareket Sensörlü Işıklar Basys3: 8 Adım
Hareket Sensörlü Işıklar Basys3: Dijital tasarımdaki son projemiz için, hareket sensörlü ışıkların simülasyonunu yapmaya karar verdik. Sadece yakınında bir nesne olduğunda değil, günün belirli bir saatinde de devreye giriyorlar. Bunu FPGA(Basys3 board) kullanarak modelleyebiliyoruz
Kapımda Kim Var? PIR Hareket Sensörü/Mesafe Sensörü Projesi: 5 Adım
Kapımda Kim Var? PIR Hareket Sensörü/Mesafe Sensörü Projesi: Projemiz, PIR ve mesafe sensörleri ile hareketi algılamayı amaçlamaktadır. Arduino kodu, kullanıcıya birinin yakınında olduğunu söylemek için görsel ve sesli bir sinyal verecektir. MATLAB kodu, kullanıcıyı birinin yakınında olduğu konusunda uyarmak için bir e-posta sinyali gönderir. Bu cihaz
Hareket Kontrollü Çıkış - Hareket Algılayıcı Işıktan: 6 Adım
Hareket Kontrollü Çıkış - Hareket Algılama Işığından: Bloktaki en korkunç eve giden bir şeker mi şaka mı olduğunuzu hayal edin. Tüm hortlakları, hayaletleri ve mezarlıkları geçtikten sonra nihayet son yola ulaşırsınız. Şekeri önünüzde bir kasede görebilirsiniz! Ama sonra aniden bir gho