Mục lục:

Máy mở mù tự động sử dụng EV3: 6 bước
Máy mở mù tự động sử dụng EV3: 6 bước

Video: Máy mở mù tự động sử dụng EV3: 6 bước

Video: Máy mở mù tự động sử dụng EV3: 6 bước
Video: 🔍 REVIEW BỘ CÔNG CỤ Mindstorms EV3 | Việt Robot Education 2024, Tháng mười một
Anonim
Máy mở mù tự động sử dụng EV3
Máy mở mù tự động sử dụng EV3
Máy mở mù tự động sử dụng EV3
Máy mở mù tự động sử dụng EV3

Tôi có một bộ rèm cuốn trong phòng ngủ mà tôi thường quên mở hoặc đóng vào buổi sáng hoặc buổi tối. Tôi muốn tự động hóa việc mở và đóng, nhưng có ghi đè khi nào thì tôi sẽ thay đổi.

Bước 1: Ý tưởng hoặc giải pháp tiềm năng

Sau khi tìm kiếm trên các trang web khác nhau như YouTube, Guiductables và Thingiverse, tôi thấy rằng giải pháp phổ biến nhất là điều khiển ống cuộn quấn và mở rèm bằng động cơ bước hoặc servo. Tôi tìm thấy 2 lựa chọn chính với những ưu điểm và nhược điểm khác nhau.

Ý tưởng 1: Phương pháp ống chỉ trong đó động cơ và hộp số được đặt bên trong ống chỉ. Điều này có những ưu điểm là nó là một phương pháp gọn gàng và thanh lịch, nhưng có nhược điểm là nó đòi hỏi phải sửa đổi lớn đối với người khiếm thị, dây không còn sử dụng được và việc lắp ráp sẽ rất khó tiếp cận để bảo trì khi thực hiện.

Ý tưởng 2: phương pháp dây trong đó động cơ và hộp số được đặt trên dây. Điều này có ưu điểm là nó đơn giản hơn và việc lắp ráp có thể dễ dàng tiếp cận. Tuy nhiên nó có nhược điểm là nó có thể xấu và cồng kềnh, cũng như thực tế là nó phải được gắn vào ngưỡng cửa khi thực hiện.

Tôi thích phương pháp dây hơn vì đây là một giải pháp đơn giản hơn nhiều mà không cản trở việc sử dụng dây thủ công và người mù sẽ không yêu cầu bất kỳ sửa đổi lớn nào. Tôi dự định làm cho nó kín đáo và nhỏ gọn nhất có thể khi tôi tạo ra phiên bản cuối cùng với ESP8266.

Bước 2: Lập hội

Lập hội
Lập hội
Lập hội
Lập hội

Tôi đã thực hiện dự án này bằng cách sử dụng Lego mindstorms EV3 có chức năng mà tôi cần để cho thấy dự án có thể hoạt động và tôi đã quen thuộc với phần mềm này chắc chắn đã giúp ích rất nhiều. Vì người mù sử dụng một chuỗi bóng để điều khiển ống chỉ, mà bánh răng Lego không tương thích với, tôi quyết định rằng giải pháp tốt nhất là thiết kế một bánh răng với khoảng cách bóng chính xác ở bên ngoài - với lỗ "hình chữ thập" tiêu chuẩn trong trung tâm, nơi tôi sẽ in 3D thiết kế. Tại thời điểm này, tôi cũng đã tạo một nút hiệu chỉnh và gắn một cảm biến ánh sáng vào cửa sổ của tôi cũng như nút để hoạt động như ghi đè.

Bước 3: Thiết kế Blind Gear

Thiết kế thiết bị mù
Thiết kế thiết bị mù
Thiết kế thiết bị mù
Thiết kế thiết bị mù
Thiết kế thiết bị mù
Thiết kế thiết bị mù
Thiết kế thiết bị mù
Thiết kế thiết bị mù

Tôi tháo rời mù để xem cách tay quay chi tiết hơn. Trong quá trình tháo rời, tôi tìm thấy một bánh răng nhỏ 16 răng được giữ cố định bằng một cuộn dây căng, đây là bộ phận tôi đang tìm kiếm. Sau khi thiết kế một bản sao của bánh răng, tôi đã thêm các lỗ tương thích với Lego cần thiết, in 3 phần riêng biệt và cuối cùng gắn chúng lại với nhau bằng superglue. Ban đầu tôi gặp vấn đề với việc làm cho bộ phận Lego tương thích, theo nghĩa là máy in 3D của tôi không có độ phân giải để tạo ra lỗ “x” đủ, tuy nhiên, nó không gặp vấn đề gì với các lỗ tròn ở hai bên của nó. Vì vậy, tôi đã thay thế chữ “x” bằng một lỗ tròn và nó được in đẹp. Sau đó, sau một số thử nghiệm nhỏ, tôi có thể thấy rằng nó có thể xử lý mô-men xoắn và trọng lượng từ người mù. Tôi sẽ liên kết các thiết kế của tôi cho thiết bị bên dưới hoặc bạn có thể tìm thấy nó trên Thingiverse tại:

Bước 4: Mã hóa người mù

Mã hóa người mù
Mã hóa người mù

Tôi muốn mã sẽ tự động mở và đóng rèm khi nó đạt đến mức ánh sáng cụ thể, nhưng nó cũng có nút ghi đè để người ta vẫn có thể mở hoặc đóng rèm khi họ muốn. Tôi đã liên kết GitHub của mình với phiên bản cuối cùng của mã tại đây:

Tôi mất vài ngày để hoàn thành mã cho dự án, tôi có logic cơ bản của chương trình hoạt động chính xác với cảm biến ánh sáng, tuy nhiên nút ghi đè tạm thời không hoạt động chính xác. Nó đã làm thay đổi trạng thái của người mù khi bị ép, nhưng nó không có chức năng "chốt" có nghĩa là người mù sẽ giữ nguyên vị trí - có nghĩa là người mù sẽ ngay lập tức đưa nó trở lại như cũ. Tôi đã khắc phục sự cố này bằng cách sử dụng khối “đợi cho đến khi”, được liên kết với cổng logic HOẶC đọc các giá trị của cảm biến ánh sáng và cảm biến cảm ứng, tôi sẽ giải thích bên dưới.

Mã bắt đầu bằng cách hiệu chỉnh động cơ và mù, bắt đầu với mù mở hoàn toàn và hạ thấp nó cho đến khi chạm vào cảm biến cảm ứng ở phía dưới, đếm xem cần bao nhiêu vòng quay để xuống dưới cùng, được lưu dưới dạng “RotationsNeeded” Biến đổi. Sau đó, nó ghi "false" vào biến "BlindOpen" được sử dụng để theo dõi vị trí của người mù. Tại thời điểm này, mã chia thành 4 vòng lặp.

Một trong những vòng lặp này là vòng lặp “Buttonstate” liên tục xuất bản trạng thái của nút tới một biến được gọi là “ButtonPressed”. Điều này giúp loại bỏ nhu cầu đặt nhiều khối nút trên tập lệnh.

Vòng lặp thứ hai là "Sáng hoặc tối" liên tục so sánh mức độ ánh sáng bên ngoài cửa sổ của tôi, với một hằng số được xác định trước đó trong mã. Nếu kết quả nằm dưới hằng số đó, vòng lặp sẽ ghi “false” vào biến “ItIsLight”, trong khi nếu nó ở trên giá trị, nó sẽ ghi “true”.

Vòng lặp thứ ba chứa một danh sách số gồm 3 tùy chọn về cơ bản cho người mù biết phải làm gì, 0 = mù xuống, 1 = mù lên, 2 = không làm gì vì người mù ở đúng nơi. Vòng lặp bắt đầu bằng cách đọc biến “BlindShould” chỉ định nhiệm vụ chính xác mà người mù phải làm, sau đó thực hiện nhiệm vụ đó, thay đổi biến “BlindOpen” thành tùy chọn đúng và sau đó trở thành không hoạt động cho đến khi biến “BlindShould” được thay đổi ở đâu nó lặp lại. Nó sử dụng giá trị "RotationsNeeded" cũng như +/- 100% sức mạnh để di chuyển người mù mở hoặc đóng hoàn toàn.

Vòng lặp thứ tư và cuối cùng là vòng lặp phức tạp nhất, đó là vòng lặp “Người quyết định” xử lý tất cả dữ liệu và quyết định phải làm gì với mỗi hoán vị. Nó thực hiện điều này bằng cách sử dụng logic dựa trên “ngã ba trên đường” trong đó “nút được nhấn”, “Mức sáng”, “Mở cửa” là các câu hỏi đúng hay sai. Tất cả các hoán vị đều có một phản hồi được mã hóa cứng, là 0 = blind down, 1 = blind up hoặc 2 = không làm gì - giá trị này được ghi vào biến “BlindShould” mà sau đó được xử lý bởi một vòng lặp trước đó. Một số phản hồi sau đó sẽ đợi biến “ItIsLight” và / hoặc “ButtonPressed” thay đổi trước khi kết thúc tập lệnh, đây chỉ là trường hợp đối với các hoán vị được kích hoạt nút vì nếu không nó sẽ ngay lập tức cố gắng sửa lại vị trí của nó, nghĩa là người mù sẽ quay trở lại về trạng thái ban đầu. Quá trình này sau đó được lặp lại để tạo ra một hệ thống tự động mạnh mẽ và tương đối đơn giản, có thể dễ dàng thêm vào và gỡ lỗi. Phù.

Bước 5: Hoàn thiện các lần chạm

Kết thúc các lần chạm
Kết thúc các lần chạm

Sau đó, tôi quyết định đấu dây nguồn điện 9V cho EV3 của mình bằng cách sử dụng một số chốt và ốc vít bằng gỗ làm "pin", điều này khiến sản phẩm không đáng tin cậy vào pin và khiến tôi không phải thay pin vài ngày một lần.

Bước 6: Đánh giá Dự án

Tôi nghĩ rằng tổng thể dự án đã diễn ra tốt đẹp, tôi đã kết thúc với một nguyên mẫu hoạt động cho cụm rèm tự động, tôi có thể lấy tất cả thông tin liên quan mà tôi tìm thấy trong dự án và triển khai thành phiên bản cuối cùng. Tôi đã mã hóa thành công thiết bị và sau đó không tìm thấy vấn đề gì lớn với mã cho đến nay. Tôi đã muốn làm cho thiết bị trở nên hấp dẫn hơn về mặt hình ảnh nhưng một lần nữa nó là bằng chứng về khái niệm và tôi sẽ nỗ lực để làm cho nó trông đẹp hơn khi tôi tạo ra phiên bản cuối cùng với ESP8266. Khi tôi thực hiện lại dự án, tôi sẽ thiết kế động cơ để ngồi bên trong người mù vì điều đó sẽ dễ che giấu hơn. Bài học lớn nhất mà tôi học được là gỡ lỗi một cách logic và suy nghĩ thấu đáo, ghi lại và kiểm tra mã của tôi trước khi tôi triển khai nó.

Đề xuất: