Mục lục:

Cảm biến chuyển động / Đèn điều khiển bộ đếm: 7 bước
Cảm biến chuyển động / Đèn điều khiển bộ đếm: 7 bước

Video: Cảm biến chuyển động / Đèn điều khiển bộ đếm: 7 bước

Video: Cảm biến chuyển động / Đèn điều khiển bộ đếm: 7 bước
Video: Tự Chế Bộ Đếm Đơn Giản Bằng Cảm Biến Hồng Ngoại Và Arduino Nano | Điện tử DAT 2024, Tháng bảy
Anonim
Cảm biến chuyển động / Đèn điều khiển bộ đếm
Cảm biến chuyển động / Đèn điều khiển bộ đếm

Dự án này được tạo ra như một dự án cuối cùng cho khóa học Thiết kế kỹ thuật số tại Cal Poly, San Luis Obispo (CPE 133).

Tại sao chúng tôi làm điều này? Chúng tôi muốn giúp bảo tồn các nguồn tài nguyên thiên nhiên trên thế giới. Dự án của chúng tôi tập trung vào việc tiết kiệm điện. Bằng cách tiết kiệm điện hơn, chúng ta sẽ có thể bảo tồn các nguồn tài nguyên thiên nhiên được sử dụng để tạo ra điện. Khi chúng ta bắt đầu năm 2018, tài nguyên thiên nhiên đang bị tiêu thụ với tốc độ đáng kinh ngạc. Chúng tôi muốn có ý thức về tác động của chúng tôi đối với môi trường của chúng tôi và đóng vai trò của chúng tôi trong việc bảo tồn tài nguyên thiên nhiên. Điện tử có thể được thực hiện theo nhiều cách khác nhau để tiết kiệm năng lượng, giúp ích cho môi trường cũng như trạng thái kinh tế của chúng ta. * Mô hình này được tạo ra bằng cách sử dụng các thành phần có sẵn cho chúng tôi.

Nguồn cảm hứng của chúng tôi là gì? Mọi người thường quên tắt đèn đi nghỉ và lãng phí năng lượng khi để chúng qua đêm. Trên thực tế, dự án này sẽ tiết kiệm điện vì “đèn chiếu sáng ngày lễ” sẽ chỉ bật khi có người ở gần, do đó tiết kiệm năng lượng khi không có ai ở xung quanh. Hơn nữa, chúng tôi muốn thiết kế một bộ hẹn giờ để đèn sẽ tắt hoàn toàn sau một khoảng thời gian nhất định để đảm bảo rằng chúng không bật lên do chuyển động được phát hiện lúc 3 giờ sáng.

Làm thế nào bạn có thể sử dụng thiết kế này? Thiết kế này có thể được thực hiện cho tất cả các loại đèn, cho dù chúng là đèn trang trí, thiết thực hay cả hai. Ví dụ: nếu bạn muốn đèn bàn của mình chỉ hoạt động trong 6 giờ một lần. Bạn sẽ cần đặt bộ đếm thành 21, 600 giây (6 giờ x 3, 600 giây / giờ). Trong khi bộ đếm đang tăng dần, cảm biến chuyển động sẽ điều khiển ánh sáng. Vì vậy, mỗi khi nó tắt trong khoảng thời gian đó, bạn chỉ cần vẫy tay trước cảm biến chuyển động và nó sẽ bật trở lại. Nếu bạn ngủ gật tại bàn làm việc và thức dậy sau 7 giờ, chuyển động của bạn sẽ không thể bật được.

Bước 1: Phần mềm và phần cứng cần thiết

Phần mềm và phần cứng bắt buộc
Phần mềm và phần cứng bắt buộc
Phần mềm và phần cứng bắt buộc
Phần mềm và phần cứng bắt buộc
Phần mềm và phần cứng bắt buộc
Phần mềm và phần cứng bắt buộc
Phần mềm và phần cứng bắt buộc
Phần mềm và phần cứng bắt buộc

Phần mềm:

  • Vivado 2016.2 (hoặc phiên bản mới hơn) có thể được tìm thấy tại đây
  • Arduino IDE 1.8.3 (hoặc phiên bản mới hơn) có thể được tìm thấy tại đây

Phần cứng:

  • 1 Basys 3 bảng
  • 1 Arduino Uno
  • 2 bảng bánh mì
  • 1 Cảm biến đo khoảng cách siêu âm HC-SR04
  • 9 dây đực-to-đực
  • 1 đèn LED
  • 1 điện trở 100Ω

Bước 2: Mã (Vivado)

Mã (Vivado)
Mã (Vivado)

Máy trạng thái hữu hạn (xem biểu đồ trạng thái ở trên):

Đèn LED yêu cầu một máy trạng thái hữu hạn. Một đèn LED chỉ có hai trạng thái là bật và tắt. Chỉ có hai đầu vào kiểm soát trạng thái của đèn LED, bộ đếm và cảm biến. Thời gian duy nhất đèn LED phải bật là khi cảm biến phát hiện chuyển động và khi bộ đếm đang đếm từ 0 đến 30 giây. Bất kỳ trường hợp nào khác, đèn LED sẽ tắt.

Tên tệp: LEDDES

Quầy tính tiền:

Bộ đếm cho phép chúng tôi giới hạn khoảng thời gian mà cảm biến chuyển động có thể kích hoạt đèn LED. Giá trị của nó được hiển thị trên màn hình bảy phân đoạn của Basys 3 Board thông qua mã nguồn (“sseg_dec”). Khi công tắc Đặt lại bị ngắt (giá trị: '0'), bộ đếm bắt đầu tăng mỗi giây từ 0 đến 30. Khi đạt đến 30, nó sẽ đóng băng trên số đó. Nó sẽ không khởi động lại từ 0 cho đến khi công tắc Đặt lại được chuyển thành ‘1’ và trở lại ‘1.’ Nếu Đặt lại trở thành ‘1’ trong khi bộ đếm đang hoạt động, bộ đếm sẽ đóng băng ở bất kỳ giá trị nào mà nó đã đạt đến. Khi Reset quay trở lại ‘0,’ bộ đếm sẽ khởi động lại từ 0 đến 30. Việc triển khai này cũng yêu cầu sử dụng tín hiệu đồng hồ, mã của nó được cung cấp bên dưới ("clk_div2").

Tên tệp: FinalCounter

CÁC LỌC ĐƯỢC CUNG CẤP:

Hiển thị bảy phân đoạn:

Mã này cho phép màn hình bảy phân đoạn hiển thị các giá trị thập phân. Một mô-đun con hoạt động như bộ giải mã giữa đầu vào nhị phân 8-bit và số thập phân được mã hóa nhị phân 4-bit. Phần còn lại chia tín hiệu đồng hồ để làm mới giá trị của nó ở một tỷ lệ nhất định.

Tên tệp: sseg_dec

Tín hiệu đồng hồ:

Mã này cho phép bộ đếm tăng theo gia số 1 giây. Nó chia tần số xung nhịp đầu vào thành tần số chậm hơn. Chúng tôi đã điều chỉnh để cung cấp khoảng thời gian là 1 giây bằng cách thay đổi hằng số max_count: integer: = (3000000)”thành“hằng số max_count: integer: = (50000000).”

Tên tệp: clk_div2

Các tệp được cung cấp: sseg_dec, clk_div2 * Các tệp nguồn này do Giáo sư Bryan Mealy cung cấp.

Bước 3: Hiểu cách chúng kết hợp với nhau (Sơ đồ các thành phần VHDL)

Hiểu cách chúng kết hợp với nhau (Sơ đồ các thành phần VHDL)
Hiểu cách chúng kết hợp với nhau (Sơ đồ các thành phần VHDL)

Tệp chính ("MainProjectDES") chứa tất cả các tệp con đã thảo luận trước đó. Chúng được kết nối theo cách trên. Các thành phần khác nhau được kết nối với nhau bằng cách sử dụng bản đồ cổng để gửi tín hiệu từ phần tử này sang phần tử khác.

Như bạn có thể nhận thấy, FinalCounter cung cấp đầu ra 5 bit trong khi sseg_dec yêu cầu đầu vào 8 bit. Để bù đắp, chúng tôi đặt tín hiệu kết nối cả hai thành phần bắt đầu bằng "000" và bổ sung đầu ra 5 bit từ bộ đếm. Do đó cung cấp đầu vào 8 bit.

Hạn chế:

Để chạy các mã này trên Bảng Basys 3, cần phải có tệp ràng buộc, cho biết mỗi tín hiệu cần đi đâu và các bộ phận được kết nối như thế nào.

Bước 4: Mã (Arduino)

Chúng tôi đã lập trình Arduino Uno để sử dụng cảm biến chuyển động để phát hiện chuyển động và cung cấp đầu ra báo hiệu đèn LED sáng. Ngoài ra, việc sử dụng cảm biến để phát hiện chuyển động yêu cầu các vòng chạy liên tục tìm kiếm sự thay đổi về khoảng cách. Về cơ bản, nó cần một bộ đếm thời gian chạy đồng thời để xuất ra tín hiệu “cao” cho đèn LED sáng trong khi bộ hẹn giờ cần được đặt lại khi có chuyển động mới được phát hiện, điều này hầu như không thể thực hiện trên Vivado dựa trên phạm vi kiến thức của lớp. Hơn nữa, chúng tôi đã sử dụng Arduino vì sẽ không khả thi nếu sử dụng HC-SR04 với Bo mạch Basys 3 vì bo mạch chỉ cấp nguồn 3,3V trong khi cảm biến yêu cầu nguồn điện 5V. Đối với việc triển khai phong trào phát hiện, đó là mã hóa thực tế trái ngược với CAD trong VHDL.

Chúng tôi đã sử dụng chức năng tích hợp xung cho cảm biến để truy xuất thời gian trôi qua giữa âm thanh phát ra ban đầu từ cảm biến và âm thanh dội lại khi va chạm vào một vật thể. Sau đó, chúng tôi sử dụng tốc độ âm thanh và khoảng thời gian để tính khoảng cách giữa đối tượng và cảm biến. Từ đó, chúng tôi lưu trữ khoảng cách hiện tại và theo dõi nó. Chúng tôi kiểm tra khoảng cách sau mỗi 150ms. Chúng tôi cũng sử dụng thư viện elapsedmil để chạy một bộ đếm thời gian bên trong arduino để theo dõi thời gian đã trôi qua. Nếu chúng tôi phát hiện ra sự thay đổi khoảng cách, tương ứng với một chuyển động, bộ đếm thời gian sẽ được đặt lại về 0 và nó sẽ giữ đèn sáng cho đến khi hết 3 giây. Bất cứ khi nào cảm biến phát hiện một chuyển động khác, bộ đếm thời gian sẽ được đặt lại về 0 và tín hiệu cho đèn LED sẽ ở mức "cao" trong 3 giây tiếp theo. Chúng tôi đã đính kèm một bản sao mã Arduino của chúng tôi bên dưới.

Bước 5: Các thành phần của chúng ta khớp với nhau như thế nào

Làm thế nào các thành phần của chúng tôi phù hợp với nhau!
Làm thế nào các thành phần của chúng tôi phù hợp với nhau!
Làm thế nào các thành phần của chúng tôi phù hợp với nhau!
Làm thế nào các thành phần của chúng tôi phù hợp với nhau!
Làm thế nào các thành phần của chúng tôi phù hợp với nhau!
Làm thế nào các thành phần của chúng tôi phù hợp với nhau!

Như bạn có thể thấy trong "Basys3: Pmod Pin-out Diagram *" và ảnh của Bảng Arduino Uno, chúng tôi đã đánh dấu và gắn nhãn các cổng mà chúng tôi đã sử dụng.

1. Bảng LED và Basys 3

Đèn LED được mắc nối tiếp với điện trở 100Ω. -Dây trắng nối điện trở vào chân PWR của board Basys 3. -Dây màu vàng kết nối LED với chân H1 của bảng Basys 3.

2. Cảm biến chuyển động và Arduino Uno

- Dây màu cam kết nối Vcc (nguồn) của cảm biến chuyển động với chân 5V của bảng Arduino Uno. - Dây màu trắng kết nối chân Trig của cảm biến chuyển động với chân 10 của bảng Arduino Uno. - Dây màu vàng kết nối chân Echo của cảm biến chuyển động với chân 9 của bảng Arduino Uno.-Dây màu đen kết nối chân GND của cảm biến chuyển động với chân GND của bảng Arduino Uno.

[Các dây chúng tôi sử dụng quá ngắn để tiếp cận các thành phần, do đó chúng được kết nối với nhau]

3. Bảng Basys 3 và Arduino Uno

Dây màu vàng kết nối chân A14 của bảng Basys 3 với chân 6 của bảng Arduino Uno.

* Sơ đồ này được lấy từ "Sổ tay Tham khảo Bảng FPGA Basys 3 ™" của Digilent, bạn có thể tìm thấy tại đây.

Bước 6: Trình diễn

Bước 7: Đã đến lúc kiểm tra

Xin chúc mừng! Bạn đã hoàn thành nó ở phần cuối của dự án ánh sáng điều khiển bộ đếm & cảm biến chuyển động của chúng tôi! Cảm ơn bạn rất nhiều vì đã đọc bài đăng của chúng tôi. Bây giờ đã đến lúc bạn thử tự mình xây dựng dự án này. Nếu bạn làm theo từng bước cẩn thận, bạn sẽ có cảm biến chuyển động & đèn điều khiển bộ đếm hoạt động tương tự như của chúng tôi! Chúng tôi chúc bạn gặp nhiều may mắn khi xây dựng dự án này, và hy vọng nó có thể góp phần tiết kiệm điện cũng như tài nguyên thiên nhiên!

Đề xuất: