- Vật liệu cần thiết để chế tạo Robot lau sàn dựa trên Arduino
- Máy hút bụi cầm tay
- Mô-đun cảm biến siêu âm HC-SR04
- Cảm biến sàn (Cảm biến hồng ngoại) để phát hiện cầu thang
- Sơ đồ mạch của Robot lau sàn dựa trên Arduino
- Xây dựng mạch cho Robot lau sàn dựa trên Arduino
- Arduino
Trong bối cảnh hiện nay, tất cả chúng ta đều quá bận rộn với công việc của mình đến nỗi chúng ta không có thời gian để dọn dẹp nhà cửa đúng cách. Giải pháp cho vấn đề rất đơn giản, bạn chỉ cần sắm một chiếc robot hút bụi nội địa như irobot roomba sẽ dọn dẹp nhà cửa chỉ với một nút bấm. Nhưng sản phẩm thương mại như vậy e vấn đề chung, đó là giá thành. Vì vậy, hôm nay, chúng tôi quyết định chế tạo một robot lau sàn đơn giản , không chỉ đơn giản để chế tạo mà chi phí rất thấp so với các sản phẩm thương mại hiện có trên thị trường. Những độc giả thường xuyên có thể nhớ đến Robot hút bụi Arduino mà chúng tôi đã chế tạo cách đây rất lâu, nhưng nó rất cồng kềnh và cần một pin axit-chì lớn để di chuyển. Máy hút bụi Arduino mới chúng tôi sẽ xây dựng ở đây sẽ nhỏ gọn và thiết thực hơn. Trên hết, robot này sẽ có cảm biến siêu âm và cảm biến tiệm cận IR. Cảm biến siêu âm sẽ cho phép robot tránh chướng ngại vật để nó có thể di chuyển tự do cho đến khi căn phòng được làm sạch đúng cách, và cảm biến khoảng cách sẽ giúp robot tránh bị ngã từ cầu thang. Tất cả những tính năng này nghe có vẻ thú vị, phải không? Vậy hãy bắt đầu.
Trong một trong những bài viết trước của chúng tôi, chúng tôi đã chế tạo nhiều bot như Robot tự cân bằng, Robot khử trùng bề mặt tự động và Robot tránh chướng ngại vật. Hãy kiểm tra những điều đó nếu điều đó có vẻ thú vị với bạn.
Vật liệu cần thiết để chế tạo Robot lau sàn dựa trên Arduino
Vì chúng tôi đã sử dụng các thành phần rất chung chung để xây dựng phần cứng của robot hút bụi, bạn sẽ có thể tìm thấy tất cả các thành phần đó trong cửa hàng sở thích tại địa phương của bạn. Đây là danh sách đầy đủ của vật liệu cần thiết cùng với hình ảnh của tất cả các thành phần.
- Arduino Pro Mini - 1
- Mô-đun siêu âm HC-SR04 - 3
- Trình điều khiển động cơ L293D - 1
- Động cơ 5Volt N20 và giá đỡ - 2
- Bánh xe máy N20 - 2
- Chuyển đổi - 1
- Bộ điều chỉnh điện áp LM7805 - 1
- Pin Lithium-Ion 7.4V - 1
- Mô-đun IR - 1
- Bảng đục lỗ - 1
- Bánh xe thầu dầu - 1
- MDF
- Máy hút bụi di động chung
Máy hút bụi cầm tay
Trong phần yêu cầu thành phần, chúng tôi đã nói về máy hút bụi cầm tay, những hình ảnh dưới đây thể hiện chính xác điều đó. Nó là một máy hút bụi cầm tay của amazon. Điều này đi kèm với một cơ chế rất đơn giản. Nó có ba phần ở phía dưới (một khoang nhỏ để chứa bụi, phần giữa bao gồm động cơ, quạt và ổ cắm pin ở phía trên (có một nắp hoặc nắp cho pin). Nó có một động cơ DC và quạt. Động cơ này được kết nối trực tiếp với 3V (2 * 1,5volt pin AA) thông qua một công tắc đơn giản. Khi chúng tôi cấp nguồn cho rô-bốt của mình bằng pin 7,4V, chúng tôi sẽ cắt kết nối khỏi pin bên trong và cấp nguồn từ 5V Vì vậy, chúng tôi đã loại bỏ tất cả các bộ phận không cần thiết và chỉ còn lại động cơ với hai dây. Bạn có thể thấy điều đó trong hình ảnh bên dưới.
Mô-đun cảm biến siêu âm HC-SR04
Để phát hiện các chướng ngại vật, chúng tôi đang sử dụng cảm biến khoảng cách siêu âm HC-SR04 phổ biến hoặc chúng tôi có thể gọi nó là cảm biến tránh chướng ngại vật. Hoạt động rất đơn giản, đầu tiên, mô-đun máy phát gửi một sóng siêu âm truyền trong không khí, chạm vào chướng ngại vật và phản xạ trở lại và máy thu nhận được sóng đó. Bằng cách tính toán thời gian với Arduino, chúng ta có thể xác định được khoảng cách. Trong một bài viết trước về dự án Cảm biến khoảng cách siêu âm dựa trên Arduino, chúng ta đã thảo luận rất kỹ về nguyên lý hoạt động của cảm biến này. Bạn có thể kiểm tra điều đó nếu bạn muốn biết thêm về mô-đun cảm biến khoảng cách siêu âm HC-SR04.
Cảm biến sàn (Cảm biến hồng ngoại) để phát hiện cầu thang
Trong phần tính năng, chúng ta đã nói về một tính năng mà robot có thể phát hiện cầu thang và có thể ngăn chính nó rơi xuống. Để làm điều đó, chúng tôi đang sử dụng Cảm biến hồng ngoại. Chúng tôi sẽ tạo một giao diện giữa cảm biến IR và Arduino. Hoạt động của Cảm biến tiệm cận hồng ngoại rất đơn giản, nó có một đèn LED hồng ngoại và một điốt quang, đèn LED hồng ngoại phát ra ánh sáng hồng ngoại và nếu có bất kỳ vật cản nào đứng trước ánh sáng phát ra này, nó sẽ bị phản xạ và ánh sáng phản xạ sẽ được phát hiện bằng điốt quang. Nhưng điện áp tạo ra từ phản xạ sẽ rất thấp. Để tăng điều đó, chúng tôi có thể sử dụng bộ so sánh op-amp, chúng tôi có thể khuếch đại và nhận đầu ra. Một mô-đun IRcó ba chân - Vcc, nối đất và đầu ra. Thông thường, đầu ra sẽ thấp khi có chướng ngại vật phía trước cảm biến. Vì vậy, chúng ta có thể sử dụng điều này để phát hiện sàn nhà. Nếu trong tích tắc, chúng tôi phát hiện ra độ cao từ cảm biến, chúng tôi có thể dừng robot, quay ngược trở lại hoặc làm bất cứ điều gì chúng tôi muốn để ngăn nó rơi từ cầu thang. Trong bài viết trước, chúng tôi đã thực hiện phiên bản Breadboard của Mô-đun cảm biến tiệm cận IR và giải thích chi tiết nguyên lý hoạt động, bạn có thể xem qua nếu muốn biết thêm về cảm biến này.
Sơ đồ mạch của Robot lau sàn dựa trên Arduino
Chúng tôi có ba cảm biến siêu âm phát hiện chướng ngại vật. Vì vậy, chúng ta cần kết nối tất cả các điểm của cảm biến siêu âm và kết nối chúng với điểm chung. Ngoài ra, chúng tôi kết nối tất cả ba Vcc của cảm biến và kết nối với chân VCC chung. Tiếp theo, chúng tôi kết nối các chân kích hoạt và echo với các chân PWM của Arduino. Chúng tôi cũng kết nối VCC của mô-đun IR với 5V và nối đất với chân nối đất của Arduino, chân đầu ra của mô-đun cảm biến IR sẽ đi vào chân kỹ thuật số D2 của Arduino. Đối với trình điều khiển động cơ, chúng tôi kết nối hai chân kích hoạt thành 5v và chân điện áp trình điều khiển thành 5V vì chúng tôi đang sử dụng động cơ 5volt. Trong một bài viết trước, chúng tôi đã làm một tấm chắn trình điều khiển động cơ Arduino, bạn có thể xem qua đó để tìm hiểu thêm về IC điều khiển động cơ L293Dvà hoạt động của nó. Arduino, mô-đun Ultrasonic, trình điều khiển động cơ và động cơ hoạt động trên 5 Volt, điện áp cao hơn sẽ giết nó và chúng tôi đang sử dụng pin 7,4 volt, để chuyển đổi thành 5 Volt, bộ điều chỉnh điện áp LM7805 được sử dụng. Kết nối trực tiếp máy hút bụi với mạch chính.
Xây dựng mạch cho Robot lau sàn dựa trên Arduino
Để có một số ý tưởng về robot của mình, tôi đã tìm kiếm robot hút bụi trên mạng và nhận được một số hình ảnh về robot hình tròn. Vì vậy, tôi quyết định chế tạo một con robot hình tròn. Để chế tạo chiếc rượt đuổi và phần thân của robot, tôi có rất nhiều lựa chọn như tấm xốp, MDF, bìa cứng,… Nhưng tôi chọn MDF vì nó cứng và có một số đặc tính chịu nước. Nếu bạn đang làm điều này, bạn có thể quyết định bạn sẽ chọn vật liệu nào cho bot của mình.
Để chế tạo robot, tôi lấy tấm MDF, sau đó vẽ hai hình tròn có bán kính 8 CM, và bên trong hình tròn đó, tôi cũng vẽ một hình tròn khác có bán kính 4 CM.để lắp máy hút bụi. Sau đó, tôi cắt các vòng tròn. Ngoài ra, tôi đã cắt và loại bỏ các mảnh thích hợp cho đường đi của bánh xe (tham khảo các hình ảnh để hiểu rõ hơn). Cuối cùng, tôi tạo ba lỗ nhỏ cho bánh xe thầu dầu. Bước tiếp theo là lắp các động cơ vào đế bằng giá đỡ của nó, cũng đặt và cố định bánh xe thầu dầu vào vị trí của nó. Sau đó, đặt các cảm biến siêu âm sang trái, phải và giữa của robot. Ngoài ra, hãy kết nối mô-đun IR với mặt dưới của rô bốt. Đừng quên thêm công tắc bên ngoài. Đó là tất cả những gì về việc xây dựng robot, nếu bạn đang cảm thấy bối rối ở thời điểm này, bạn có thể tham khảo những hình ảnh sau.
Đối với phần trên, tôi cũng đã vẽ một hình tròn bán kính 11 CM trên tấm xốp và cắt nó. Để có khoảng cách giữa phần trên và phần dưới, tôi đã cắt ba đoạn ống nhựa dài 4 cm. Sau đó, tôi dán miếng đệm nhựa ở phần dưới cùng và sau đó tôi dán phần trên. Bạn có thể che các phần bên của bot bằng nhựa hoặc vật liệu tương tự nếu muốn.
Arduino
Mã hoàn chỉnh cho dự án này được đưa ra ở cuối tài liệu. Mã Arduino này tương tự như mã Cảm biến khoảng cách siêu âm dựa trên Arduino, thay đổi duy nhất là ở phát hiện tầng. Trong những dòng sau, tôi giải thích cách hoạt động của mã. Trong trường hợp này, chúng tôi không sử dụng bất kỳ thư viện bổ sung nào. Dưới đây chúng tôi đã mô tả mã theo cách từng bước. Chúng tôi không sử dụng bất kỳ thư viện bổ sung nào để giải mã dữ liệu khoảng cách từ cảm biến HC-SR04, vì nó rất đơn giản. Trong những dòng sau, chúng tôi đã mô tả cách thực hiện. Đầu tiên, chúng ta cần xác định Pin kích hoạt và Pin Echo cho cả ba cảm biến khoảng cách siêu âm được kết nối với bảng Arduino. Trong dự án này, chúng tôi có ba chân Echo và ba chân Trigger. Lưu ý rằng 1 là cảm biến bên trái, 2 là cảm biến phía trước và 3 là cảm biến bên phải.
const int trigPin1 = 3; const int echoPin1 = 5; const int trigPin2 = 6; const int echoPin2 = 9; const int trigPin3 = 10; const int echoPin3 = 11; int irpin = 2;
Sau đó, chúng tôi xác định các biến cho khoảng cách mà tất cả đều là biến kiểu (int) và trong khoảng thời gian, chúng tôi đã chọn sử dụng (long). Một lần nữa, chúng tôi có ba trong số mỗi. Ngoài ra, tôi đã xác định một số nguyên để lưu trữ trạng thái của chuyển động, chúng ta sẽ nói về nó sau trong phần này.
thời gian dài1; thời gian dài2; thời gian dài3; int distanceleft; int khoảng cách trước; int khoảng cách phải; int a = 0;
Tiếp theo, trong phần thiết lập, chúng ta cần tạo tất cả các chân phối cảnh làm đầu vào hoặc đầu ra bằng cách sử dụng hàm pinModes () . Để gửi sóng siêu âm từ mô-đun, chúng ta cần bật chân kích hoạt lên cao tức là tất cả các chân kích hoạt phải xác định là OUTPUT. Và để nhận được tiếng vang, chúng ta cần đọc trạng thái của các chân echo vì vậy tất cả các chân echo nên xác định là INPUT. Ngoài ra, chúng tôi bật màn hình nối tiếp để khắc phục sự cố. Để đọc trạng thái của các mô-đun IR, tôi đã xác định irpin làm đầu vào.
pinMode (trigPin1, OUTPUT); pinMode (trigPin2, OUTPUT); pinMode (trigPin3, OUTPUT); pinMode (echoPin1, INPUT); pinMode (echoPin2, INPUT); pinMode (echoPin3, INPUT); pinMode (irpin, INPUT);
Và các chân kỹ thuật số này được định nghĩa là OUTPUT cho đầu vào của trình điều khiển động cơ.
pinMode (4, OUTPUT); pinMode (7, OUTPUT); pinMode (8, OUTPUT); pinMode (12, OUTPUT);
Trong vòng lặp chính, chúng tôi có ba phần cho ba cảm biến. Tất cả các phần hoạt động giống nhau nhưng mỗi phần cho các cảm biến khác nhau. Trong phần này, chúng tôi đọc khoảng cách chướng ngại vật từ mỗi cảm biến và lưu trữ nó trong mỗi số nguyên xác định. Để đọc khoảng cách, trước tiên, chúng ta phải đảm bảo rằng các chân kích hoạt rõ ràng, vì vậy, chúng tôi cần đặt chân kích hoạt thành LOW trong 2 µs. Bây giờ, để tạo ra sóng siêu âm, chúng ta cần vặn chốt kích hoạt CAO trong 10 µs. Điều này sẽ gửi âm thanh siêu âm và với sự trợ giúp của hàm xungIn () , chúng tôi có thể đọc thời gian di chuyển và lưu trữ giá trị đó vào biến " thời lượng ". Hàm này có 2 tham số, tham số đầu tiên là tên của chân echo và tham số thứ hai, bạn có thể viếtCAO hoặc THẤP. CAO có nghĩa là hàm xungIn () sẽ đợi chân đi CAO do sóng âm bị trả lại gây ra và nó sẽ bắt đầu đếm, sau đó nó sẽ đợi chân đi LOW khi sóng âm kết thúc và sẽ dừng đếm. Hàm này cho biết độ dài của xung tính bằng micro giây. Để tính khoảng cách, chúng ta sẽ nhân khoảng thời gian với 0,034 (tốc độ âm thanh trong không khí là 340m / s) và chia cho 2 (điều này là do sự truyền đi qua lại của sóng âm thanh). Cuối cùng, chúng tôi lưu trữ khoảng cách của mỗi cảm biến trong các số nguyên tương ứng.
digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); thời lượng1 = xungIn (echoPin1, CAO); distanceleft = thời lượng1 * 0,034 / 2;
Sau khi nhận được khoảng cách từ mỗi cảm biến, chúng ta có thể điều khiển động cơ với sự trợ giúp của câu lệnh if, do đó chúng ta điều khiển chuyển động của robot. Điều này rất đơn giản, đầu tiên, chúng tôi đưa ra giá trị khoảng cách chướng ngại vật, trong trường hợp này là 15cm (thay đổi giá trị này theo ý muốn của bạn). Sau đó chúng tôi đưa ra các điều kiện theo giá trị đó. Ví dụ: khi có chướng ngại vật ở phía trước cảm biến bên trái (có nghĩa là khoảng cách của cảm biến bên trái phải thấp hơn hoặc bằng 15 cm) và hai khoảng cách còn lại là cao (có nghĩa là không có chướng ngại vật nào ở phía trước cảm biến đó), sau đó với sự trợ giúp của chức năng ghi kỹ thuật số, chúng ta có thể điều khiển động cơ sang phải. Sau đó, tôi đã kiểm tra trạng thái của cảm biến IR. Nếu rô bốt ở trên sàn, giá trị của chân IR sẽ là THẤP, và nếu không, thì giá trị sẽ làCAO. Sau đó, tôi đã lưu trữ giá trị đó trong biến int s . Chúng tôi sẽ điều khiển robot theo trạng thái này.
Phần này của Mã được sử dụng để Di chuyển Robot Tiến và lùi :
if (s == HIGH) { digitalWrite (4, LOW); digitalWrite (7, CAO); digitalWrite (8, THẤP); digitalWrite (12, CAO); chậm trễ (1000); a = 1; }
Nhưng có một vấn đề với phương pháp này là khi động cơ di chuyển lùi, sàn quay lại và bot sẽ di chuyển về phía trước, và nó sẽ lặp lại khiến bot bị kẹt. Để khắc phục điều đó, chúng tôi lưu trữ một giá trị (1) trong int sau khi hiểu rằng tầng không có mặt. Chúng tôi cũng kiểm tra điều kiện này cho các chuyển động khác.
Sau khi phát hiện sự vắng mặt của sàn, robot sẽ không di chuyển về phía trước. Thay vào đó, nó sẽ di chuyển sang trái, bằng cách này, chúng ta có thể tránh được sự cố.
if ((a == 0) && (s == LOW) && (distanceleft <= 15 && distancefront> 15 && distanceright <= 15) - (a == 0) && (s == LOW) && (distanceleft> 15 && khoảng cách trước> 15 && khoảng cách phải> 15))
Trong điều kiện trên. Đầu tiên, robot sẽ kiểm tra trạng thái tầng và giá trị số nguyên. Bot sẽ chỉ tiến lên phía trước nếu tất cả các điều kiện được thỏa mãn.
Bây giờ, chúng ta có thể viết các lệnh cho trình điều khiển động cơ. Điều này sẽ làm cho động cơ bên phải lùi về phía sau và động cơ bên trái tiến lên, do đó quay robot sang bên phải.
Phần này của Mã được sử dụng để Di chuyển sang phải Robot:
digitalWrite (4, CAO); digitalWrite (7, LOW); digitalWrite (8, CAO); digitalWrite (12, THẤP);
Nếu bot phát hiện sàn vắng mặt, giá trị sẽ thay đổi thành 1 và bot sẽ di chuyển sang trái. Sau khi rẽ trái, giá trị của 'a' thay đổi từ 1 thành 0.
if ((a == 1) && (s == LOW) - (s == LOW) && (distanceleft <= 15 && distancefront <= 15 && distanceright> 15) - (s == LOW) && (distanceleft <= 15 && distancefront <= 15 && distanceright> 15) - (s == LOW) && (distanceleft <= 15 && distancefront> 15 && distanceright> 15) - (distanceleft <= 15 && distancefront> 15 && distanceright> 15)) { digitalWrite (4, CAO); digitalWrite (7, LOW); digitalWrite (8, THẤP); digitalWrite (12, CAO); chậm trễ (100); a = 0; }
Phần này của Mã được sử dụng để Di chuyển Robot sang Trái:
if ((s == LOW) && (distanceleft> 15 && distancefront <= 15 && distanceright <= 15) - (s == LOW) && (distanceleft> 15 && distancefront> 15 && distanceright <= 15) - (s == LOW) && (distanceleft> 15 && distancefront <= 15 && distanceright> 15)) { digitalWrite (4, LOW); digitalWrite (7, CAO); digitalWrite (8, CAO); digitalWrite (12, THẤP); }
Đó là nó để xây dựng Robot hút bụi thông minh dựa trên Arduino. Hoạt động hoàn chỉnh của dự án có thể được tìm thấy trong video được liên kết ở cuối trang này. Nếu bạn có bất kỳ câu hỏi nào, hãy bình luận xuống bên dưới.