Thực trạng hiện nay
Hiện nay, công việc nội trợ gia đình dần xem như lạc hậu, làm việc tay chân rất mất thời gian, công sức Chính vì thế, Robot hút bụi thông minh đang dần trở thành xu thế mới, thay thế các loại máy hút bụi truyền thống để hỗ trợ con người trong việc dọn dẹp nhà cửa Tại Việt Nam, dòng sản phẩm này chỉ vừa mới có mặt trên thị trường và hứa hẹn sẽ trở thành một sản phẩm hot trong thời gian tới Robot hút bụi tự động được xem là “Người” giúp việc vô cùng thông minh và hiệu quả cho các gia đình, đặc biệt đối với những người phụ nữ nội trợ phải đi làm suốt cả ngày, không có thời gian chăm sóc nhà cửa
Hình 1.1 Robot hút bụi và công việc nội trợ gia đình
Robot thiết kế thông minh, có thể tự động thực hiện công việc hút bụi, lau dọn nhà mà không cần có sự hướng dẫn của con người Kích thước của Robot hút bụi tự động nhỏ gọn, có thể đi đến tất cả các ngóc ngách như: gầm bàn, gầm giường, ghế sofa, góc tường,… để làm sạch toàn diện
Hình 1.2 Robot hút bụi tự điều hướng tránh vật cản
Nguyên nhân chọn đề tài
Trong cuộc sống của chúng ta hiện nay, Robot dần thay thế, hoặc trợ giúp con người về vận chuyển hàng hóa, Robot kiểm tra nguy hiểm, Robot phục vụ cho các công việc gia đình rất phổ biến Nhất là các loại Robot có thể tự hoạt động mà không cần người điều khiển giúp giảm công việc cho con người
Cùng với sự phát triển của khoa học, công nghệ thì việc thiết kế ra một Robot có thể làm việc nhà là điều nên làm
Từ những ý tưởng trên, nhóm chúng em đã chọn đề tài “ Robot hút bụi tự động sử dụng Arduino” cho đồ án này
❖ Tính mới của đề tài:
Robot hút bụi tự động là Robot di chuyển tự động mà không cần con người phải điều khiển, nó sẽ tự động tránh những vật cản từ đó có thể hút bụi được tất cả mọi vị trí trong nhà Robot tránh vật bằng công nghệ dùng mạch logic đã được áp dụng từ rất sớm và thu được một số thành tựu nhất định, đồng thời cũng xuất hiện một số các nhược điểm làm cho Robot khó có thể xác định vật cản và di chuyển tránh vật cản một cách chính xác Để khắc phục nhược điểm này, đồ án đã xây dựng và thiết kế một Robot tránh vật cản, tín hiệu từ cảm biến siêu âm được chuyển về cổng điều khiển của vi điều khiển, ở đó tín hiệu được xử lí và đưa ra tín hiệu để điều khiển cho các cơ cấu chấp hành như động cơ servo, module điều khiển động cơ,…Trong đồ án sử dụng các module vi điều khiển, Arduino Uno R3 đây là một module rất thông dụng và rất dễ dàng lập trình Ngoài ra phần hút bụi sử dụng các vật liệu có sẵn là các loại ống nước, các tấm vải, động cơ DC 775,… rất dễ tìm kiếm trên thị trường và rất dễ chế tạo, lắp ráp.
Nghiên cứu về các loại Robot hút bụi trên thị trường
Robot hút bụi - “cơn sốt” mới trong ngành thiết bị gia dụng?
Là một “tân binh” trong ngành gia dụng điện tử ở những năm gần đây, thu hút nhiều sự quan tâm của người tiêu dùng Lý do nào để người dùng dành sự quan tâm đặc biệt đến mặt hàng này và dự báo xu hướng nổi bật trong tương lai ra sao?
Sẽ có 3 lý do minh chứng cho câu hỏi trên:
- Tích hợp bộ lọc không khí để thúc đẩy thị trường Robot hút bụi
- Sự cạnh tranh từ các thương hiệu và mức giá phù hợp
- Quan tâm đến chính sách bảo hành, hỗ trợ khách hàng
❖ Một số mẫu Robot hút bụi tốt nhất được xướng danh Đáp ứng được những tiêu chuẩn cao nhất gồm: Thương hiệu, Chất lượng hoàn thiện, Khả năng vận hành, Tính năng thông minh,
Roomba S9 Plus là một chiếc máy hút bụi thông minh cao cấp được tích hợp tính năng xử lý bụi bẩn tự động Clean Base (Clean Base Automatic Dirt Disposal), công nghệ PerfectEdge và thiết kế vuông ở mặt trước, cho phép nó có thể bám sát vào tường, đồ nội thất và đồ trang trí
Bản chải góc mới của nó với năm cánh tay góc cạnh và cảm biến tiên tiến cho phép thiết bị này dễ dàng tiếp cận những không gian chật hẹp Hệ thống làm sạch ba giai đoạn sử dụng bàn chải cao su đa bề mặt kép cho phép điều chỉnh linh hoạt để làm sạch sàn cứng và thảm
- Công suất mạnh mẽ gấp 40 lần
- Thiết kế theo hình dạng chữ D
- Tính năng Keep Out Zones
➢ Điểm mạnh của Roomba S9 Plus:
- Công nghệ PerfectEdge cho phép làm sạch các góc cạnh
- Trợ thủ quét dọn đắc lực cho những ngôi nhà có nuôi thú cưng
- Tích hợp hệ thống bản đồ nâng cao
- Trang bị thùng rác tự làm đống
➢ Nhược điểm của Roomba S9 Plus:
- Có thể gặp khó khăn khi quét dọn trên thảm
➢ Đánh giá về thiết kế:
Về thiết kế của S6 MaxV được trang bị mắt thần cảm biến LiDAR nổi cùng với 3 nút điều khiển (Spot Clean, Dock, Clean / Power) Tuy nhiên các nút này chỉ thực hiện chức năng cơ bản như bắt đầu và hầu hết các thao tác đều được thực hiện qua app Mihome hoặc Roborock Roborock S6 MaxV có kích thước 353 x
350 x 96,5mm, với thiết kế nhỏ gọn như vậy, giúp thiết bị dễ dàng làm sạch ở các khu vực gầm thấp S6 MaxV được trang bị bình chứa nước lớn, có dung tích 300ml, bình nước trong suốt cho phép bạn có thể dễ dàng nhìn thấy mực nước bên trong Một trong những thay đổi quan trọng nhất của Roborock S6 MaxV là việc bổ sung bộ camera kép trên thân máy, đây là một sản phẩm đầu tiên trong dòng máy hút bụi của Roborock có camera kép, giúp thiết bị có kỹ năng điều hướng và tránh vật cản tốt nhất Thông minh giống như các máy hút bụi Roborock trước đây, Roborock S6 MaxV cũng đi kèm với một dock sạc Như vậy, khi pin yếu, nó sẽ tự động điều hướng về phía cổng sạc và kết nối với dock sạc
- Roborock S6 MaxV sử dụng ReactiveAI, công cụ tránh đối tượng và điều hướng mạnh mẽ nhất hiện có
- Roborock S6 MaxV có thời lượng pin ấn tượng 3 giờ ở chế độ yên tĩnh
- Sạc thông minh giúp tiết kiệm thời gian
- Roborock S6 MaxV có một loạt các tùy chọn tùy chỉnh và lên lịch để tối ưu hóa việc dọn dẹp nhà cửa của bạn
- Bạn có thể thiết lập một số cấp độ với một số Vùng cấm, Vùng cấm lau
- Roborock S6 MaxV có tính năng lau và hút bụi cực kỳ mạnh mẽ
- Tính năng bản đồ đa cấp cho phép người dùng lưu tối đa 4 cấp bản đồ
- Giá thành mắc hơn các sản phẩm khác
- Camera hoạt động không nhìn được trực tiếp trên APP
- Hộp chứa bụi hơi nhỏ
Đối tượng, phạm vi, phương pháp nghiên cứu chế tạo
- Hệ thống cảm biến về khoảng cách
- Module điều khiển động cơ L298
- Cách giao tiếp giữa Arduino Uno R3 – hệ thống cảm biến – module điều khiển động cơ L298 – động cơ DC
Nghiên cứu, thiết kế Robot hút bụi thông minh có khả năng hút bụi và tự động tránh vật cản sử dụng trong gia đình
1.4.3 Phương pháp nghiên cứu chế tạo
- Phương pháp nghiên cứu lý thuyết: Nghiên cứu các tài liệu liên quan đến đề tài
- Phương pháp nghiên cứu thực tiễn:
+ Mô phỏng trên Proteus, phần mềm Arduino và Matlab
+ Sử dụng các module có sẳn một cách tối ưu, hợp lý
+ Làm thân Robot theo phương pháp gia công cơ khí
+ Phương pháp viết code bằng phần mềm có sẳn Arduino
Cơ sở lý thuyết
1.5.1 Khái quát về Robot hút bụi
Robot hút bụi là Robot có thể tự động di chuyển, hút bụi mà không cần người điều khiển, nó có thể tự động tránh các vật cản và hút bụi Robot hút bụi bao gồm: vi điều khiển hoặc arduino, module điều khiển động cơ, các động cơ, cảm biến và phần hút bụi
Robot tự động hút bụi có thể tránh các vật cản trong nhà từ đó có thể di chuyển xung quanh nhà và hút bụi
1.5.1.3 Phân loại Robot hút bụi
➢ Phân loại Robot hút bụi dựa theo nguyên lý làm việc của đầu cảm biến có:
• Robot tránh vật cản sử dụng cảm biến hồng ngoại: Robot chủ yếu phát hiện ra vật cản nhờ sóng hồng ngoại
• Robot tránh vật cản sử dụng cảm biến siêu âm: Robot này chủ yếu phát hiện ra vật cản nhờ sóng siêu âm
• Robot tránh vật cản sử dụng cảm biến laser: Robot này chủ yếu phát hiện ra vật cản nhờ laser
• Robot tránh vật cản sử dụng nhiều loại cảm biến: là hệ thống làm việc dựa trên nguyên lí của nhiều loại cảm biến như: cảm biến hồng ngoại và cảm biến siêu âm, cảm biến siêu âm và cảm biến laser Robot này chủ yếu phát hiện ra vật cản trong những môi trường khác nhau
➢ Phân loại Robot hút bụi theo bộ phận thực hiện chuyển động ta có thể chia Robot tự hành thành 2 lớp: chuyển động bằng chân hoặc bằng bánh xe
• Robot chuyển động bằng chân là Robot di chuyển mô phỏng theo di chuyển của con người Tuy nhiên nó rất phức tạp và chỉ có thể di chuyển ở một số địa hình nhất định
• Robot chuyển động bằng bánh xe làm việc tốt trong hầu hết các địa hình do con người tạo ra Điều khiển di chuyển bằng bánh xe cũng đơn giản hơn nhiều, gần như luôn đảm bảo tính ổn định Lớp chuyển động bằng bánh xe có thể chia ra làm 3 loại: loại chuyển động bằng bánh xe, loại chuyển động bằng vòng xích và loại hỗn hợp bánh xe vòng xích
1.5.2 Nguyên lý làm việc của Robot hút bụi sử dụng cảm biến siêu âm
1.5.2.1 Trạng thái làm việc của Robot tránh vật cản sử dụng cảm biến siêu âm
• Trạng thái thường trực (khi không có vật cản): Robot sẽ đưa ra khoảng cách an toàn đồng thời cảm biến siêu âm bắt đầu đo khoảng cách
• Trạng thái di chuyển: Robot sẽ luôn đi thẳng đến khi gặp vật cản
• Trạng thái có vật cản: Robot sẽ tiến hành đo khoảng cách hai bên từ đó sẽ xác định hướng di chuyển hợp lí
1.5.2.2 Nguyên lý làm việc của Robot tự động sử dụng cảm biến siêu âm
- Bình thường Robot hoạt động ở chế độ thường trực Ở chế độ này Robot luôn có tín hiệu kiểm tra sự làm việc đến các thiết bị trong Robot như cảm biến, các module,…từ đó các cảm biến cũng như các module này cũng có tín hiệu hồi đáp về trung tâm Trong Robot luôn có dòng điện 𝐼 0 chạy qua
- Khi có vật cản ( tường, bàn, ghế, ) sẽ tác động lên cảm biến Khi các yếu tố này đạt tới ngưỡng làm việc thì sẽ tạo ra tín hiệu truyền về trung tâm Tại trung tâm điều khiển diễn ra các hoạt động xử lí tín hiệu truyền về Đồng thời trung tâm điều khiển sẽ điều khiển module động cơ làm cho động cơ hoạt động.
Kết luận chương
- Trong chương này, nhóm chúng em đã giới thiệu một số loại Robot hút bụi trên thị trường, ưu nhược điểm của từng loại Robot Tiếp theo, nhóm cũng đã trình bày tổng quan về thiết kế Robot hút bụi nhóm sẽ thực hiện trong học phần đồ án này, nguyên lý hoạt động cơ bản của hệ thống Trong chương tiếp theo, nhóm sẽ trình bày chi tiết về linh kiện, thiết bị của hệ thống
- Trong học phần đồ án này, nhóm sẽ thiết kế Robot hút bụi đơn giản với chi phí thấp, phù hợp với điều kiện của sinh viên cũng như yêu cầu của đồ án đặt ra
Giới thiệu chương
Trong chương này, nhóm xin giới thiệu sơ bộ về Arduino Uno R3 cũng như các linh kiện khác được sử dụng để thiết kế chế tạo thành Robot hút bụi tự động, trong đó nội dung chính trình bày bao gồm: tên linh kiện, thông số kỹ thuật và hình ảnh minh họa.
Tổng quan về Arduino
Arduino là một nền tảng nguyên mẫu (mã nguồn mở) dựa trên nền phần mềm và phần cứng dễ sử dụng Nó bao gồm một bo mạch - thứ mà có thể được lập trình (đang đề cập đến vi điều khiển) và một phần mềm hỗ trợ gọi là Arduino IDE (Môi trường phát triển tích hợp cho Arduino), được sử dụng để viết và nạp từ mã máy tính sang bo mạch vật lý
Những tính năng chính như:
➢ Các bo mạch Arduino có khả năng đọc các tín hiệu tương tự (analog) hoặc tín hiệu số (digital) làm đầu vào từ các cảm biến khác nhau và chuyển nó thành đầu ra như kích hoạt mô-tơ quay, bật/tắt đèn LED, kế nối mạng Internet hoặc nhiều hoạt động khác nữa
➢ Bạn có thể điều khiển các chức năng của bo mạch của mình bằng cách nạp các tập lệnh đến vi điều khiển trên bo mạch Thông qua phần mềm hỗ trợ là
➢ Không giống như bo mạch có khả năng lập trình trước kia, Arduino chỉ cần bạn sử dụng cáp USB để nạp mã vào trong bo mạch
➢ Hơn nữa, phần mềm Arduino IDE sử dụng phiên bản giản thể của C++, làm việc học lập trình nó trở nên dễ dàng hơn rất nhiều
2.2.2 Phần cứng của Arduino Uno R3
Phần này nói về phần cứng của Arduino Uno R3, một bo mạch thông dụng hiện nay Nếu cần những kiến thức chuyên sâu hơn thì có thể tham khảo tại website chính thức của Arduino: “arduino.cc”
Hình 2.1 Cấu tạo của Arduino Uno R3
➢ 1 Cáp USB: Đây là dây cáp thường được bán kèm theo bo, dây cáp dùng để cắm vào máy tính để nạp chương trình cho bo và dây đồng thời cũng lấy nguồn từ nguồn USB của máy tính để cho bo hoạt động Ngoài ra cáp USB còn được dùng để truyền dữ liệu từ bo Arduino lên máy tính Dây cáp có 2 đầu, đầu 1a được dùng để cắm vào cổng USB trên bo Arduino, đầu 1b dùng để cắm vào cổng USB trên máy tính
➢ 2 IC Atmega 16U2: IC này được lập trình như một bộ chuyển đổi USB - to-Serial dùng để giao tiếp với máy tính thông qua giao thức Serial (dùng cổng COM)
➢ 3 Cổng nguồn ngoài: Cổng nguồn ngoài nhằm sử dụng nguồn điện bên ngoài như pin, bình Acquy hay các Adapter cho bo Arduino hoạt động
Nguồn điện cấp vào cổng này là nguồn DC có hiệu điện thế từ 6V đến 20V, tuy nhiên hiệu điện thế tốt nhất mà nhà sản xuất khuyên dùng là từ 7 đến 12V
➢ 4 Cổng USB: Cổng USB trên bo Arduino dùng để kết nối với cáp USB
➢ 5 Nút Reset: Nút reset được sử dụng để reset lại chương trình đang chạy Đôi khi chương trình chạy gặp lỗi, người dùng có thể reset lại chương trình
➢ 6 ICSP của ATmega 16U2: ICSP là chữ viết tắt của In-Circuit Serial
Programming Đây là các chân giao tiếp SPI của chip Atmega 16U2 Các chân này thường ít được sử trong các dự án về Arduino
➢ 7 Chân xuất tín hiệu ra: Có tất cả 14 chân xuất tín hiệu ra trong Arduino
Uno, những chân có dấu ~ là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc độ sáng của đèn
➢ 8 IC ATmega 328: IC Atmega 328 là linh hồn của bo mạch Arduino Uno,
IC này được sử dụng trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra,
➢ 9 Chân ICSP của ATmega 328: Các chân ICSP của ATmega 328 được sử dụng cho các giao tiếp SPI (Serial Peripheral Interface), một số ứng dụng của Arduino có sử dụng chân này, ví dụ như sử dụng module RFID RC522 với Arduino hay Ethernet Shield với Arduino
➢ 10 Chân lấy tín hiệu Analog: Các chân này lấy tín hiệu Analog (tín hiệu tương tự) từ cảm biến để IC Atmega 328 xử lý Có tất cả 6 chân lấy tín hiệu Analog, từ A0 đến A5
➢ 11 Chân cấp nguồn cho cảm biến: Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như role, cảm biến, RC servo, trên khu vực này có sẵn các chân GND (chân nối đất, chân âm), chân 5V, chân 3.3V như được thể hiện ở hình 2 Nhờ những chân này mà người sử dụng không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, role, rc servo, Ngoài ra trên khu vực này còn có chân Vin và chân reset, chân IOREF Tuy nhiên các chân này thường ít được sử dụng
➢ 12 Các linh kiện khác trên board Arduino Uno: Ngoài các linh kiện đã liệt kê bên trên, Arduino Uno còn 1 số linh kiện đáng chú ý khác Trên bo có tất cả 4 đèn Led, bao gồm 1 Led nguồn ( Led ON nhằm cho biết bo đã được cấp nguồn), 2 Led Tx và Rx, 1 Led L Các Led Tx và Rx sẽ nhấp nháy khi có dữ liệu truyền từ board lên máy tính hoặc ngược lại thông qua cổng USB Led L được được kết nối với chân số 13 Led này được gọi là Led on board (tức Led trên bo), Led này giúp người dùng có thể thực hành các bài đơn giản mà không cần dùng thêm Led ngoài
Trong 14 chân ra của bo còn có 2 chân 0 và 1 có thể truyền nhận dữ liệu nối tiếp TTL Có một số ứng dụng cần dùng đến tính năng này, ví dụ như ứng dụng điều khiển mạch Arduino Uno qua điện thoại sử dụng bluetooth HC05
Thêm vào đó, chân 2 và chân 3 cũng được sử dụng cho lập trình ngắt (interrupt), đồng thời còn 1 vài chân khác có thể được sử dụng cho các chức năng khác, như được thể hiện ở hình 3
Hình 2.2 Các chân vào/ra của Arduino Uno
• Vi điều khiển : Atmega328 họ 8bit
• Điện áp hoạt động : 5VDC (chỉ được cấp qua cổng USB)
• Tần số hoạt động : 16MHz
• Dòng tiêu thụ : Khoảng 30mA
• Điện áp đặt vào khuyên dùng : 7-12VDC
• Điện áp vào giới hạn : 6-20VDC
• Số chân Digital I/O : 14 (6 chân Hardware PWM)
• Số chân Analog : 6 (độ phân giải 10bit)
• Dòng tối đa trên mỗi chân I/O : 30mA
• Dòng ra tối đa (5V) : 500mA
• Dòng ra tối đa (3.3V) : 50mA
• Bộ nhớ Flash : 32KB (Atmega328) với 0.5KB dùng bởi
Hình 2.3 Chức năng của các chân trên Arduino (PinOut)
Các linh kiện điện tử khác
2.3.1 Cảm biến siêu âm SRF-04
• Điện áp hoạt động : 5VDC
• Dòng điện tiêu thụ khi hoạt động : < 2mA
• Khoảng cách hoạt động : 2cm – 300cm
• Tần số hoạt động : 40 KHz
• Chân tín hiệu : Echo, Trigger
• Kích thước : 43mm×20mm×17mm
Hình 2.4 Cảm biến siêu âm SRF-04
2.3.2 Module điều khiển động cơ L298
• Driver : L298N tích hợp 2 mạch cầu H
• Dòng tối đa cho mỗi cầu H : 2A (=> 2A cho mỗi motor)
• Điện áp của tín hiệu điều khiển : +5V ~ +7V
• Dòng của tín hiệu điều khiển : 0 ~ 36mA
• Công suất hao phí : 20W (khi nhiệt độ T = 75℃
Hình 2.5 Module điều khiển động cơ L298
2.3.3 Động cơ giảm tốc 12V DC
2.3.3.1 Động cơ giảm tốc V1 DC Motor
Hình 2.6 Động cơ giảm tốc V1
2.3.3.2 Động cơ hút bụi RS - 540SH
• Điện áp hoạt động : 9 - 12VDC
• Đường kính động cơ : 35.6 mm
• Đường kính trục quay : 3.1 mm
• Chiều dài động cơ : 50.2 mm
• Điện áp hoạt động : 3 – 9VDC
• Dòng điện tiêu thụ : 110 – 140mA
• Tỉ số truyền 1:48 : 125 vòng/ 1 phút tại 3VDC
: 208 vòng/ 1 phút tại 5VDC : Moment 0.5Kg.cm
Hình 2.7 Động cơ RS – 540SH
• Điện áp : 3,7V DC (khi đầy có thể lên đến 4,2V)
2.3.5 Mạch điều khiển tốc độ động cơ DC PWM 10A 400W
• Điều chỉnh điện áp đầu ra : Bằng biến trở
Hình 2.9 Module điều khiển tốc độ động cơ DC PWM 10A 400W
2.3.6 Mạch giảm áp DC-DC LM2596 3A ADJ
• Điện áp vào : 3 – 40VDC ( nên sử dụng Vin < 30VDC)
• IC sử dụng : IC LM2596 ADJ
• Điều chỉnh điện áp đầu ra : Bằng biến trở
Hình 2.10 Mạch giảm áp DC-DC LM2596 3A ADJ
Ý tưởng thiết kế
Với nền khoa học – kỹ thuật ngày một phát triển như hiện nay thì việc nghiên cứu, thiết kế, chế tạo robot có thể giúp đỡ, thay thế con người làm việc trong các lĩnh vực việc nhà, giúp đỡ người khuyết tật,thám hiểm,… là điều hoàn toàn có thể xảy ra Điển hình là các robot có thể tự hoạt động và tự tránh vật cản từ đó có thể thực hiện thêm các thao tác khác giúp tăng năng suất lao động, giảm thời gian làm việc, giảm thiểu các tai nạn lao động do làm trong những nơi nguy hiểm của con người
➢ Robot hút bụi tự động cần có những yêu cầu sau:
• Phát hiện ra vật cản và di chuyển một cách ổn định, linh hoạt
• Thiết kế nhỏ gọn, dễ di chuyển mang theo
• Không bị nhiễu do các thiết bị khác gây ra
• Làm việc với điện áp 12V với động cơ
• Hút sạch bụi, dễ dang vệ sinh.
Sơ đồ khối
Hình 3.1 Sơ đồ khối của hệ thống
Nhiệm vụ: so sánh xử lý các tín hiệu thu được từ khối cảm biến, từ đó đưa ra tín hiệu điều khiển cho khối chấp hành
• Ưu điểm: thông dụng trên thị trường, dễ dàng sử dụng, giá thành rẻ, module gọn gàng, bộ nhớ cao
• Nhược điểm: còn đắt hơn hơn một số bộ vi điều khiển khác
Vì vậy, đề tài sử dụng Arduino Uno R3 sử dụng vi điều khiển 8 bit họ AVR là
Atmega328 Bộ não này có thể xử lý những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lý tín hiệu cho xe điều khiển từ xa, điều khiển động cơ bước, điều khiển động cơ servo, làm một trạm đo nhiệt độ – độ ẩm và hiển thị lên màn hình LCD,… hay những ứng dụng khác
Nguồn sử dụng: Arduino Uno R3 có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7 - 12V DC hoặc điện áp giới hạn là 6 - 20V Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, sẽ làm hỏng Arduino UNO
Hình 3.2 Các chân nguồn của Arduino Uno R3
• GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
• 5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
• 3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
• Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND
• IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này
• RESET: việc nhấn nút Reset trên board để Reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ
Bộ nhớ sử dụng: Vi điều khiển Atmega328 tiêu chuẩn sử dụng trên Arduino Uno
• 32KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ nhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho Bootloader
• 2KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo khi lập trình sẽ lưu ở đây Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Khi mất điện, dữ liệu trên SRAM sẽ bị mất
• 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): nơi có thể đọc và ghi dữ liệu vào đây mà không phải lo bị mất khimất điện như dữ liệu trên SRAM
Các cổng vào /ra trên Arduino board:
Hình 3.3 các cổng vào/ra trên Arduino Uno R3
Mạch Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
• 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
• Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 2 8 − 1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói
21 một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác
• Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
• LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
• Arduino UNO Broad có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu
10bit (0 → 2 10 − 1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
Lập trình cho Arduino Uno R3
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung Và Wiring lại là một biến thể của C/C++ Một số người gọi nó là Wiring, một số khác thì gọi là C hay C/C++ Để lập trình cho Mạch Arduino, nhà phát triển cung cấp một môi trường lập trình
Arduino được gọi là Arduino IDE (Intergrated Development Environment) như hình dưới đây:
Hình 3.4 Giao diện lập trình cho Arduino
Các bước để lập trình cho Arduino Uno:
• Đầu tiên, bạn cần cài Driver của Arduino Uno và tải về bản Arduino IDE mới nhất cho máy tính
• Sau khi cài đặt, bạn sẽ thấy một thông báo dạng "Cổng COMx đã được cài đặt thành công" (chữ "x" này sẽ được thay bằng một số nguyên dương, bạn hãy nhớ lấy số này, vì sau này bạn sẽ dùng cổng COMx này để lập trình cho Arduino Uno)
3.2.2 Khối cảm biến (Cảm biến siêu âm)
Cảm biến siêu âm HC-SR04 là một cảm biến siêu âm đi kèm với 4 chân tên VCC, Trigger, Echo và Ground Cảm biến đo khoảng cách của một vật thể bằng sóng siêu âm
• Cấu tạo: gồm 3 phần chính
• Bộ phận truyền tín hiệu sóng âm với vai trò phát ra sóng âm truyền đi
• Bộ phận nhận lại tín hiệu sóng âm với vai trò nhận lại sóng âm báo về
• Bộ phận xử lý sóng âm sau khi nhận được sự phản hồi của tín hiệu đưa về; lập tức bộ phận này sẽ tính toán khoảng cách giữa điểm phát sóng; và điểm sóng chạm vào vật thể thông qua thời gian sóng phát tới vật thể và vận tốc truyền đi của sóng siêu âm; cuối cùng chuyển những thông tin này thành một tín hiệu analog truyền về một bộ chuyên đọc tín hiệu để hiển thị thông tin cho người sử dụng Đây là những gì sẽ xảy ra:
• Bộ phát (chân Trig) gửi tín hiệu âm thanh tần số cao
• Khi tín hiệu đến một đối tượng, nó sẽ bị phản xạ
• Phần thu của máy phát sẽ nhận tín hiệu phản xạ (chân Echo)
• Chúng ta có thể tính được khoảng cách của đối tượng
Hình 3.7 Nguyên lý hoạt động của cảm biến siêu âm
Sơ đồ mạch của sản phẩm
3.3.1 Sơ đồ tổng quan hệ thống
Hình 3.16 Sơ đồ tổng quan hệ thống
Hệ thống được chia ra làm 4 khối chính được trình bày trên Hình 3.15 Pin là nguồn cung cấp năng lượng duy nhất cho hệ thống Điện từ Pin qua Module L298, từ Module L298 nguồn được chia tới các thành phần trong hệ thống
Nguồn 5VDC ổn định nuôi Arduino và cảm biến siêu âm, nguồn 6-9V nuôi hai động cơ DC; dòng điện tối đa mà L298 có thể cung cấp cho mỗi động cơ lên đến 2A
Trên Hình 3.15 các đường năng lượng này được thể hiện bằng mũi tên màu da cam Arduino đóng vai trò là bộ xử lý trung tâm, đọc tín hiệu từ cảm biến siêu âm SRF04 tính toán khoảng cách với vật cản phía trước và đưa ra tín hiệu PWM điều khiển tốc độ và hướng di chuyển của Robot thông qua mạch cầu H một cách hợp lý Các đường tín hiệu trong hệ thống được thể hiện bằng mũi tên màu xanh,
Module mạch cầu H L298 chỉ nhận tín hiệu từ Arduino nên được thể hiện bằng mũi tên một chiều Khi muốn đo khoảng cách Arduino sẽ phát tín hiệu đến cảm biến SRF04 và đọc tín hiệu từ cảm biến gửi về qua đó tính toán khoảng cách đến vật cản vì vậy mũi tên hai chiều được sử dụng để thể hiện đường đi của tín hiệu từ Arduino đến cảm biến SRF04
3.3.2 Sơ đồ nguyên lý hệ thống
Hình 3.17 Sơ đồ nguyên lý của hệ thống
Nguyên lý hoạt động của mạch:
- Khi cấp nguồn vào mạch thì có 1 dòng điện I0 chạy trong mạch, Robot hút bụi tự động ở trạng thái thường trực, vi điều khiển sẽ đưa ra 1 khoảng cách an toàn Cảm biến siêu âm bắt đầu đo khoảng cách rồi đưa ra biến khoảng cách trước Động cơ hút bụi hoạt động
- Khi không có vật cản trước mặt thì khoảng cách an toàn sẽ lớn hơn khoảng cách trước, lúc này vi điều khiển sẽ phân tích , đánh giá số liệu rồi chuyển qua Module điều khiển động cơ L298 để điều khiển động cơ đi thẳng
- Khi có vật cản đằng trước thì khoảng cách an toàn sẽ nhỏ hơn khoảng cách trước, lúc này vi điều khiển sẽ điều khiển cảm biến siêu âm của 2 bên trái và phải để xác định khoảng cách trái, khoảng cách phải từ đó đưa 2 giá trị khoảng cách này về bộ vi điều khiển Từ đó vi điều khiển sẽ so sánh giá trị này Nếu khoảng cách trái lớn hơn khoảng cách phải thì vi điều khiển sẽ đưa ra tín hiệu sang Module L298 để điều khiển động cơ quay trái Nếu khoảng cách trái nhỏ hơn hoặc bằng khoảng cách phải thì vi điều khiển sẽ đưa ra tín hiệu cho Module điều khiển động cơ L298 để động cơ quay phải
3.3.3 Sơ đồ mô phỏng Matlab
Hình 3.18 Sơ đồ Matlab hệ thống
Lưu đồ thuật toán
4.4.1 Lưu đồ tổng quan của hệ thống
Hình 4.1 Lưu đồ thuật toán tổng quan của hệ thống Giải thích thuật toán:
Trên Hình 4.1 trình bày lưu đồ thuật toán tổng quan của hệ thống Do quá trình điều khiển hoạt động của Robot là một vòng lặp nhiều quá trình và bên trong mỗi quá trình bao gồm nhiều hàm xử lý phức tạp nên thuật toán điều khiển được chia thành nhiều chức năng nhỏ nhằm đem đến một cái nhìn trực quan hơn về nguyên tắc điều khiển của hệ thống Đầu tiên khi khởi động hệ thống vi điều khiển sẽ khởi tạo các biến toàn cục, khai báo các hàm chức năng và thiết lập ngoại vi cho hệ thống Sau đó nó thực hiện quá trình đọc dữ liệu từ khối cảm biến, đi vào xử lý tính toán khoảng cách đến vật cản nếu có và điều khiển từng động cơ với các trạng thái tương ứng Quá trình trên lặp đi lặp lại cho đến khi Robot làm sạch toàn bộ diện tích mặt sàn
4.4.2 Lưu đồ quá trình đo khoảng cách
Hình 4.2 Lưu đồ thuật toán quá trình đo khoảng cách Giải thích thuật toán:
Trên Hình 4.2 trình bày quá trình đo khoảng cách bằng cảm biến SRF04, đầu tiờn vi điều khiển cấp tớn hiệu mức 1 vào chõn Trig trong khoảng thời gian 15às, sau đó theo dõi trạng thái của chân Echo Mặc định chân Echo sẽ ở mức 0 khi chân Trig được kộo lờn mức cao, 15às cảm biến sẽ phỏt súng siờu õm đồng thời chõn Echo được kéo lên mức cao, khi vi điều khiển phát hiện chân Echo lên mức cao sẽ lấy giá trị của bộ timer tại thời điểm đó và tiếp tục theo dõi trạng thái của chân Echo Khi phát hiện trạng thái chân Echo xuống lại mức 0 vi điều khiển tiếp tục lấy giá trị của bộ timer Hiệu giá trị của bộ timer trong hai lần lấy chính là khoảng thời gian chân Echo ở mức cao Nếu khoảng thời gian này lớn hơn 25ms nghĩa là phía trước cảm biến không có vật cản ngược lại ta sẽ dễ dàng tính được khoảng cách từ cảm biến tới vật cản dựa vào thời gian lan truyền và vận tốc của sóng siêu âm
Sau khi cấu hình chức năng PWM của bộ timer, khởi tạo các biến cần thiết, nếu phát hiện phía trước có vật cản (để thuận tiện cho việc xử lý và trình bày lưu đồ thuật toán em coi trường hợp vật cản phía trước cách xa hơn 30cm là không có vật cản) vi điều khiển sẽ phát tín hiệu PWM điều khiển Robot chuyển hướng sang phải và quay về phía sau 180° và tiếp tục đi thẳng
Sau đó vi điều khiển tiếp tục kiểm tra xem có vật cản không nếu có thì tiếp tục điều khiển Robot rẽ phải và quay về sau 180°, nếu không có vật cản thì tiếp tục di chuyển theo đường thẳng trong vòng 10s rồi rẽ trái và quay về phía sau 180° để
Robot di chuyển theo hình đường thẳng Trong quá trình di chuyển vi điều khiển kiểm tra vật cản phía trước mỗi giây một lần, bất cứ khi nào phát hiện có vật cản thì chuyển hướng di chuyển của Robot 180°.
Kết quả hoàn thiện
Hình 4.3 Tổng quan bên ngoài Robot
Hình 4.4 Tổng quan bên trong Robot
Chương trình điều khiển
* Do an truyen dong dien
*/ int trig1 = A0; //trai int echo1 = A1; int trig2 = A2; //giua int echo2 = A3; int trig3 = A4; //phai int echo3 = A5;
38 int in1 = 4; int in2 = 5; int in3 = 6; int in4 = 7; int ENA = 3; int ENB = 11; int LeftSpeed = 55; int RightSpeed = 55 ; long leftDistance = 0,middleDistance = 0,rightDistance = 0; long pingTime,distance; float speedSound = 0.0343; int DIS = 25; long leftMeasurement()
{ digitalWrite(trig1,LOW); delayMicroseconds(2); digitalWrite(trig1,HIGH); delayMicroseconds(10); digitalWrite(trig1,LOW); pingTime = pulseIn(echo1,HIGH); distance = (pingTime/2)*speedSound; return(distance);
{ digitalWrite(trig2,LOW); delayMicroseconds(2); digitalWrite(trig2,HIGH); delayMicroseconds(10); digitalWrite(trig2,LOW); pingTime = pulseIn(echo2,HIGH); distance = (pingTime/2)*speedSound; return(distance);
{ digitalWrite(trig3,LOW); delayMicroseconds(2); digitalWrite(trig3,HIGH); delayMicroseconds(10); digitalWrite(trig3,LOW); pingTime = pulseIn(echo3,HIGH); distance = (pingTime/2)*speedSound; return(distance);
Serial.begin(9600); pinMode(trig1,OUTPUT);
40 pinMode(trig2,OUTPUT); pinMode(trig3,OUTPUT); pinMode(echo1,INPUT); pinMode(echo2,INPUT); pinMode(echo3,INPUT); pinMode(in1,OUTPUT); pinMode(in2,OUTPUT); pinMode(in3,OUTPUT); pinMode(in4,OUTPUT); pinMode(ENA,OUTPUT); pinMode(ENB,OUTPUT); moveStop();
{ leftDistance = leftMeasurement(); delay(10); middleDistance = middleMeasurement(); delay(10); rightDistance = rightMeasurement(); delay(10);
// Obstacle on left side if(leftDistance < DIS && middleDistance > DIS && rightDistance > DIS) { turnRight(); delay(25); // turn lightly right
// Obstacle on front else if(leftDistance > DIS && middleDistance < DIS && rightDistance > DIS) { if(leftDistance > rightDistance)
{ turnLeft(); delay(400); // turn 90 degree left
{ turnRight(); delay(400); // turn 90 degree right
// Obstacle on right side else if(leftDistance > DIS && middleDistance > DIS && rightDistance < DIS)
{ turnLeft(); delay(25); //turn lightly left
// Obstacle on front & left side else if(leftDistance < DIS && middleDistance < DIS && rightDistance > DIS) { turnRight(); delay(400); // turnRight 90 degree
// Obstacle on front & right side else if(leftDistance > DIS && middleDistance < DIS && rightDistance < DIS) { turnLeft(); delay(400); // turnLeft 90 degree
// Obstacle on left & right side else if(leftDistance < DIS && middleDistance > DIS && rightDistance < DIS) { if(leftDistance > rightDistance)
// Obstacle on all 3 side else if(leftDistance < DIS && middleDistance < DIS && rightDistance < DIS) { moveStop(); delay(1000); moveBackward(); delay(1000); turnLeft(); delay(800); //turn 180 degrees
Serial.println("Move Forward"); analogWrite(ENA,LeftSpeed); analogWrite(ENB,RightSpeed); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, HIGH);
Serial.println("Move Backward"); analogWrite(ENA,LeftSpeed); analogWrite(ENB,RightSpeed); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
Serial.println("Turn Right"); analogWrite(ENA,LeftSpeed); analogWrite(ENB,RightSpeed); digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH);
Serial.println("Turn Left"); analogWrite(ENA,LeftSpeed); analogWrite(ENB,RightSpeed); digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, LOW);
Serial.println("Move Stop"); analogWrite(ENA,LOW); analogWrite(ENB,LOW); digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW);
Tổng kết
- Có thêm nhiều kiến thức về mảng lập trình, lắp ráp, vận hành
- Nâng cao kỹ năng làm việc nhóm
- Được tự tay thiết kế, chế tạo mô hình thực tế
- Robot hoạt động ổn định, linh hoạt
- Đáp ứng đúng yêu cầu đặt ra
- Kết nối đơn giản, ổn định
- Chưa khai thác triệt để các tính năng
- Không có khả năng leo cầu thang
- Thời gian làm sạch lâu
Hướng phát triển
Qua quá trình chế tạo và vận hành của Robot hút bụi, nhóm em xin đưa ra một số hướng phát triển để cho Robot có thể được hoàn chỉnh và hoạt động hiệu quả nhất:
- Robot cần trang bị thêm cảm biến để định vị trong không gian
- Phát triển giải thuật để Robot có thể thay đổi quỹ đạo di chuyển trong không gian
- Cải tiến thêm nhiều tính năng
- Khắc phục các hạn chế còn tồn tại của Robot
Kết luận
Sau thời gian nghiên cứu, tìm tòi cùng sự giúp đỡ, chỉ dẫn tận tình của Cô Th.s Đỗ
Hoàng Ngân Mi, mô hình Robot hút bụi của nhóm em đã hoàn thành Robot mà nhóm đã làm đáp ứng tương đối tốt các yêu cầu đã đề ra, các chức năng hoạt động ổn định, trơn tru, hệ thống xử lý đảm bảo và cách sử dụng cũng khá dễ dàng
Trong quá trình thực hiện đề tài, nhóm đã tích lũy được rất nhiều kiến thức, kinh nghiệm trong quá trình học tập và nghiên cứu Một lần nữa, nhóm chúng em xin được chân thành cảm ơn sự hướng dẫn tận tình của Cô Th.s Đỗ Hoàng Ngân Mi đã giúp đỡ chúng em hoàn thành đồ án này.