Isi kandungan:

Sensor Gerak / Lampu Terkawal Kaunter: 7 Langkah
Sensor Gerak / Lampu Terkawal Kaunter: 7 Langkah

Video: Sensor Gerak / Lampu Terkawal Kaunter: 7 Langkah

Video: Sensor Gerak / Lampu Terkawal Kaunter: 7 Langkah
Video: Sensor Pendeteksi Gerak PIR Sensor (Tutorial Arduino Part9) 2024, Julai
Anonim
Sensor Gerak / Lampu Terkawal Kaunter
Sensor Gerak / Lampu Terkawal Kaunter

Projek ini dibuat sebagai projek akhir untuk kursus Reka Bentuk Digital di Cal Poly, San Luis Obispo (CPE 133).

Mengapa kita melakukan ini? Kami ingin membantu memulihara sumber semula jadi di dunia. Projek kami memberi tumpuan kepada penjimatan elektrik. Dengan menjimatkan lebih banyak elektrik, kita akan dapat menjimatkan sumber semula jadi yang digunakan untuk menjana elektrik. Ketika kita mulai tahun 2018, sumber semula jadi habis dengan kadar yang luar biasa. Kami ingin menyedari kesan kami terhadap persekitaran kami dan memainkan peranan kami dalam memelihara sumber semula jadi. Elektronik boleh dilaksanakan dengan pelbagai cara untuk menjimatkan tenaga yang membantu alam sekitar dan juga keadaan ekonomi kita. * Model ini dicipta menggunakan komponen yang tersedia untuk kita.

Apa inspirasi kita? Orang sering lupa untuk mematikan lampu percutian mereka, dan membuang tenaga dengan membiarkannya dalam semalam. Pada hakikatnya, projek ini akan menjimatkan elektrik kerana "lampu percutian" hanya akan menyala ketika orang berada berdekatan, sehingga menjimatkan tenaga ketika tidak ada orang di sekitar. Lebih-lebih lagi, kami ingin merancang pemasa sehingga lampu akan mati sepenuhnya setelah waktu tertentu untuk memastikan bahawa lampu tidak menyala kerana pergerakan yang dikesan pada jam 3 pagi, misalnya.

Bagaimana anda boleh menggunakan reka bentuk ini? Reka bentuk ini boleh dilaksanakan untuk pelbagai jenis lampu, sama ada hiasan, praktikal, atau keduanya. Sekiranya anda mahu lampu meja anda hanya berfungsi selama 6 jam pada satu masa, sebagai contoh. Anda perlu menetapkan penghitung hingga 21, 600 saat (6 jam x 3, 600 saat / jam). Sementara kaunter meningkat secara aktif, sensor gerakan akan mengawal cahaya. Oleh itu, setiap kali ia mati dalam jangka masa tersebut, anda hanya perlu melambaikan tangan anda di hadapan sensor gerakan dan ia akan menyala kembali. Sekiranya anda tertidur di meja anda dan bangun 7 jam kemudian, pergerakan anda tidak akan menyalakannya.

Langkah 1: Perisian dan Perkakasan yang Diperlukan

Perisian dan Perkakasan yang Diperlukan
Perisian dan Perkakasan yang Diperlukan
Perisian dan Perkakasan yang Diperlukan
Perisian dan Perkakasan yang Diperlukan
Perisian dan Perkakasan yang Diperlukan
Perisian dan Perkakasan yang Diperlukan
Perisian dan Perkakasan yang Diperlukan
Perisian dan Perkakasan yang Diperlukan

Perisian:

  • Vivado 2016.2 (atau versi yang lebih baru) boleh didapati di sini
  • Arduino IDE 1.8.3 (atau versi yang lebih baru) boleh didapati di sini

Perkakasan:

  • Papan 1 Basys 3
  • 1 Arduino Uno
  • 2 Papan Roti
  • 1 Sensor Ranging Ultrasonik HC-SR04
  • 9 Kabel lelaki-ke-lelaki
  • 1 LED
  • 1 Perintang 100Ω

Langkah 2: Kod (Vivado)

Kod (Vivado)
Kod (Vivado)

Mesin Keadaan Terhingga (lihat gambarajah keadaan di atas):

LED memerlukan mesin keadaan terhingga. LED hanya mempunyai dua keadaan hidup dan mati. Hanya dua input yang mengawal keadaan LED, kaunter dan sensor. Satu-satunya masa LED harus menyala adalah ketika sensor mengesan pergerakan dan ketika pembilang mengira dari sifar hingga tiga puluh saat. Sebarang kes lain, LED akan mati.

Nama fail: LEDDES

Kaunter:

Kaunter membolehkan kita mengehadkan jangka masa di mana sensor gerakan dapat mengaktifkan LED. Nilainya dipaparkan pada paparan tujuh segmen Papan Basys 3 melalui kod sumber (“sseg_dec”). Apabila suis Reset turun (nilai: '0'), pembilang mula meningkat setiap saat dari 0 hingga 30. Apabila mencapai 30, ia membeku pada nombor itu. Ia tidak akan dimulakan semula dari 0 sehingga suis Reset diubah ke ‘1’ dan kembali ke ‘1.’ Sekiranya Reset menjadi ‘1’ semasa penghitung berjalan, kaunter akan membekukan pada apa sahaja nilai yang telah dicapai. Apabila Reset kembali ke '0,' kaunter akan dimulakan semula dari 0 hingga 30. Pelaksanaan ini juga memerlukan penggunaan isyarat jam, kodnya disediakan di bawah ("clk_div2").

Nama fail: FinalCounter

FILEM YANG DISEDIAKAN:

Paparan Tujuh Segmen:

Kod ini membolehkan paparan tujuh segmen memaparkan nilai perpuluhan. Satu submodul bertindak sebagai penyahkod antara input binari 8-bit dan Perpuluhan Berkod Binari 4-bit. Yang lain membahagi isyarat jam untuk menyegarkan nilainya pada kadar tertentu.

Nama fail: sseg_dec

Isyarat Jam:

Kod ini membolehkan kaunter meningkat dalam kenaikan 1 saat. Ia membahagikan frekuensi jam input menjadi frekuensi yang lebih perlahan. Kami menyesuaikan diri untuk memberikan jangka waktu 1 detik dengan mengubah jumlah maksimum_kata: bilangan bulat: = (3000000) "menjadi" jumlah maksimum tetap: bilangan bulat: = (50000000)."

Nama fail: clk_div2

Fail yang disediakan: sseg_dec, clk_div2 * Fail sumber ini disediakan oleh Profesor Bryan Mealy.

Langkah 3: Memahami Bagaimana Mereka Bersatu (Skema Komponen VHDL)

Memahami Bagaimana Mereka Bersatu (Skema Komponen VHDL)
Memahami Bagaimana Mereka Bersatu (Skema Komponen VHDL)

Fail utama ("MainProjectDES") mengandungi semua subfile yang dibincangkan sebelumnya. Mereka dihubungkan dengan cara di atas. Komponen yang berbeza saling berkaitan menggunakan peta port untuk menghantar isyarat dari satu elemen ke elemen yang lain.

Seperti yang anda perhatikan, FinalCounter memberikan output 5-bit sementara sseg_dec memerlukan input 8-bit. Untuk mengimbangi, kami menetapkan isyarat yang menghubungkan kedua-dua komponen bermula dengan "000" dan menambah output 5-bit dari kaunter. Oleh itu memberikan input 8-bit.

Kekangan:

Untuk menjalankan kod-kod ini di Papan Basys 3, fail kekangan diperlukan, yang memberitahu setiap isyarat ke mana harus pergi dan bagaimana bahagian-bahagiannya dihubungkan.

Langkah 4: Kod (Arduino)

Kami memprogram Arduino Uno untuk menggunakan sensor gerakan untuk mengesan pergerakan dan memberikan output yang memberi isyarat kepada LED untuk menyala. Selain itu, menggunakan sensor untuk mengesan pergerakan memerlukan gelung berjalan yang sentiasa mencari perubahan jarak. Pada dasarnya, ia memerlukan pemasa yang berjalan serentak untuk mengeluarkan isyarat "tinggi" agar LED menyala sementara pemasa perlu diset semula apabila terdapat gerakan baru yang dikesan, yang hampir mustahil untuk dilaksanakan di Vivado berdasarkan ruang lingkup pengetahuan dari kelas. Lebih-lebih lagi, kami menggunakan Arduino kerana tidak mungkin menggunakan HC-SR04 dengan Papan Basys 3 kerana papan hanya membekalkan 3.3V sementara sensor memerlukan bekalan kuasa 5V. Untuk pelaksanaan pergerakan mengesan, pengekodan sebenarnya berbanding dengan CAD dalam VHDL.

Kami menggunakan fungsi built-in pulse untuk sensor untuk mengambil masa yang berlalu antara suara yang awalnya dipancarkan dari sensor dan suara yang memantul kembali ketika memukul objek. Kemudian kami menggunakan kelajuan suara dan selang waktu untuk mengira jarak antara objek dan sensor. Dari itu, kami menyimpan jarak semasa dan mengesannya. Kami memeriksa jarak setiap 150ms. Kami juga menggunakan perpustakaan elapsedmil untuk menjalankan pemasa dalaman di dalam arduino untuk mengesan masa berlalu. Sekiranya kita mengesan perubahan jarak, yang sesuai dengan gerakan, pemasa diset semula ke sifar dan lampu akan terus menyala hingga 3 saat berlalu. Setiap kali sensor mengesan pergerakan lain, pemasa ditetapkan semula ke 0 dan isyarat untuk lampu LED akan "tinggi" untuk 3 saat berikutnya. Kami telah melampirkan salinan kod Arduino kami di bawah.

Langkah 5: Bagaimana Komponen Kita Bersatu

Bagaimana Komponen Kita Bersatu!
Bagaimana Komponen Kita Bersatu!
Bagaimana Komponen Kita Bersatu!
Bagaimana Komponen Kita Bersatu!
Bagaimana Komponen Kita Bersatu!
Bagaimana Komponen Kita Bersatu!

Seperti yang anda lihat dalam "Basys3: Pmod Pin-out Diagram *" dan foto Arduino Uno Board, kami menyoroti dan melabel port yang kami gunakan.

1. Papan LED dan Basys 3

LED disambung secara bersiri dengan perintang 100Ω. -Kawat putih menghubungkan perintang ke pin PWR dari papan Basys 3. -Kawat kuning menyambungkan LED ke pin H1 dari papan Basys 3.

2. Sensor Gerak dan Arduino Uno

-Kawat jingga menghubungkan Vcc (kuasa) sensor gerakan ke pin 5V papan Arduino Uno.-Kawat putih menghubungkan pin Trig sensor gerakan ke pin 10 papan Arduino Uno.-Kawat kuning menghubungkan pin Echo of sensor gerakan ke pin 9 papan Arduino Uno.-Kawat hitam menghubungkan pin GND sensor gerakan ke pin GND papan Arduino Uno.

[Kabel yang kami gunakan terlalu pendek untuk mencapai komponen, sehingga mereka saling terhubung]

3. Papan Basys 3 dan Arduino Uno

Kawat kuning menghubungkan pin A14 dari papan Basys 3 ke pin 6 dari papan Arduino Uno.

* Gambar rajah ini diambil dari "Manual Rujukan Lembaga Basys 3 ™ FPGA" Digilent yang boleh didapati di sini.

Langkah 6: Demonstrasi

Langkah 7: Masa untuk Mengujinya

Tahniah! Anda berjaya sampai ke penghujung projek lampu gerak & kawalan lampu kaunter kami! Terima kasih banyak kerana membaca catatan Instructables kami. Kini tiba masanya anda mencuba membina projek ini sendiri. Sekiranya anda mengikuti setiap langkah dengan teliti, anda harus mempunyai sensor gerakan & lampu yang dikawal kaunter yang berfungsi serupa dengan kita! Kami mengucapkan semoga berjaya dalam membina projek ini, dan berharap ia dapat menyumbang kepada penjimatan elektrik dan sumber semula jadi!

Disyorkan: