1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Đồ án hcmute) nghiên cứu, thiết kế và chế tạo xe agv điều khiển từ xa bằng điện thoại

129 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu, Thiết Kế Và Chế Tạo Xe AGV Điều Khiển Từ Xa Bằng Điện Thoại
Tác giả Nguyễn Đăng Sôn
Người hướng dẫn ThS. Nguyễn Trọng Thức
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Ô Tô
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2022
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 129
Dung lượng 23,65 MB

Cấu trúc

  • CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI (21)
    • 1.1. Đặt vấn đề (0)
    • 1.2. Lý do chọn đề tài (0)
    • 1.3. Tình hình nghiên cứu trong và ngoài nước (0)
      • 1.3.1. Tình hình nghiên cứu trong nước (23)
      • 1.3.2. Tình hình nghiên cứu ngoài nước (24)
    • 1.4. Mục tiêu của đề tài (0)
    • 1.5. Đối tượng nghiên cứu (26)
    • 1.6. Phạm vi nghiên cứu (26)
    • 1.7. Phương pháp nghiên cứu (0)
    • 1.8. Giới hạn đề tài (27)
    • 1.9. Nội dung thực hiện (27)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (28)
    • 2.1. Cơ sở lý thuyết xe AGV (28)
      • 2.1.1. Các mẫu AGV hiện nay (29)
      • 2.1.2. Kết luận về khái niệm xe AGV (34)
    • 2.2. Nghiên cứu về Firebase (35)
      • 2.2.1. Firebase (35)
      • 2.2.2. Realtime Database (37)
      • 2.2.3. Firebase Authentication (37)
    • 2.3. Các chuẩn giao tiếp sử dụng (0)
      • 2.3.1. UART (38)
      • 2.3.2. SPI (41)
  • CHƯƠNG 3: LINH KIỆN VÀ PHẦN MỀM (45)
    • 3.1. Các vi điều khiển sử dụng (0)
      • 3.1.1. STM32F103C8T6 (45)
      • 3.1.2. ESP32 (48)
    • 3.2. Các cảm biến và mạch điện sử dụng (0)
      • 3.2.1. Cảm biến quang điện IFM O1D100 (51)
      • 3.2.2. Mạch thu phát RFID NFC 13.56MHz RC522 (0)
      • 3.2.3. Thẻ nhựa RFID NFC Card 13.56 Mhz S50 (53)
      • 3.2.4. Mạch dò line 1 kênh và 5 kênh TCRT5000 (54)
      • 3.2.5. Encoder AVAGO 500PPR (55)
      • 3.2.6. Driver điều khiển động cơ (57)
      • 3.2.7. Mạch sạc dự phòng (61)
      • 3.2.8. Mạch giảm áp DC XL4015 (0)
    • 3.3. Các cơ cấu chấp hành (0)
      • 3.3.1. Động cơ Maxon RE25 144650 24VDC (62)
      • 3.3.2. Động cơ Servo MG995 (63)
    • 3.4. Các linh kiện khác (65)
      • 3.4.1. Bánh xe nhôm D100 (65)
      • 3.4.2. Bánh mắt trâu đa hướng (65)
      • 3.4.3. Domino TB1508 và đầu Cosse chữ Y (0)
      • 3.4.4. Dây bus (66)
      • 3.4.5. Pin 18650 (67)
      • 3.4.6. Pin Lipo 6 cell (6S) (67)
    • 3.5. Các phần mềm sử dụng (67)
      • 3.5.1. SOLIDWORKS (67)
      • 3.5.2. Android Studio (68)
      • 3.5.3. Altium Designer (71)
      • 3.5.4. IAR Embedded Workbench (74)
      • 3.5.5. Arduino IDE (74)
  • CHƯƠNG 4: THIẾT KẾ, LẬP TRÌNH VÀ THỬ NGHIỆM (75)
    • 4.1. Thiết kế cơ khí (75)
      • 4.1.1. Tính toán và lựa chọn động cơ (0)
      • 4.1.2. Thiết kế Part gá động cơ (0)
      • 4.1.3. Thiết kế cơ cấu quay cảm biến (78)
      • 4.1.4. Thiết kế cơ cấu nâng kệ hàng (80)
      • 4.1.5. Hoàn tất bản thiết kế (82)
      • 4.1.6. Xuất bản vẽ và gia công CNC (0)
    • 4.2. Thiết kế và gia công mạch ra chân (87)
      • 4.2.1. Sơ đồ kết nối (87)
      • 4.2.2. Sơ đồ nguyên lý và layout PCB (88)
      • 4.2.3. Gia công mạch ra chân cho vi điều khiển (89)
    • 4.3. Thiết kế và lập trình ứng dụng điện thoại (0)
      • 4.3.1. Thiết kế và lập trình giao diện đăng nhập (0)
      • 4.3.2. Thiết kế và lập trình giao diện Navigation Drawer (0)
      • 4.3.3. Thiết kế và lập trình trang chủ – Home (0)
      • 4.3.4. Thiết kế và lập trình trang lịch sử di chuyển – History (0)
      • 4.3.5. Thiết kế và lập trình trang tra cứu thông tin – Information (0)
    • 4.4. Lập trình vi điều khiển (98)
      • 4.4.1. Lập trình ESP32 (99)
      • 4.4.2. Cấu hình ngoại vi trên STM32CubeMX (100)
      • 4.4.3. Lập trình STM32F103C8T6 (107)
    • 4.5. Chạy thử nghiệm (118)
    • 4.6. Tìm lỗi và cải thiện (0)
    • 4.7. Kết quả (121)
  • CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI (123)
    • 5.1. Kết luận (123)
    • 5.2. Hướng phát triển (0)
    • 5.3. Ứng dụng vào ngành ô tô (0)

Nội dung

CƠ SỞ LÝ THUYẾT

Cơ sở lý thuyết xe AGV

Xe tự hành AGV (Automated Guided Vehicle) hay Robot tự hành AMR (Autonomous Mobile Robot) là loại Robot di động, di chuyển theo các đường kẻ hoặc dây kim loại trên sàn, hoặc sử dụng sóng radio, camera xử lý ảnh, nam châm, và tia laser để dẫn đường Chúng chủ yếu được áp dụng trong ngành công nghiệp vận chuyển kim loại nặng tại các nhà máy và kho bãi lớn Việc ứng dụng xe tự hành AGV đã gia tăng từ cuối thế kỷ 20.

Xe tự hành AGV là giải pháp vận chuyển tự động hiệu quả, có khả năng chở hàng hóa và di chuyển theo các dấu hiệu sẵn có Chúng được ứng dụng rộng rãi trong nhiều ngành công nghiệp như bột giấy, kim loại, báo chí và sản xuất Ngoài ra, AGV còn được sử dụng để vận chuyển các vật liệu như thực phẩm, đồ vải và thuốc trong bệnh viện.

AGV, hay còn gọi là phương tiện dẫn đường bằng laser (LGV), là công nghệ vận chuyển tự động đang được sử dụng phổ biến Tại Đức, công nghệ này được biết đến với tên gọi Fahrerloses Transport System (FTS), trong khi ở Thụy Điển, nó được gọi là furerlusa truckar Những phiên bản chi phí thấp hơn của AGV thường được gọi là Automated Guided Carts (AGC) và thường sử dụng băng từ để dẫn hướng.

AGC có nhiều mẫu mã và được sử dụng để di chuyển sản phẩm trên dây chuyền lắp ráp, vận chuyển hàng hóa trong nhà máy hoặc kho và chuyển tải Chiếc AGV đầu tiên ra mắt vào những năm 1950 bởi Barrett Electronics ở Northbrook, Illinois, là một chiếc xe tải kéo hàng di chuyển theo dây điện trên sàn nhà Công nghệ này đã phát triển thành một loại AGV mới, sử dụng các điểm đánh dấu tia cực tím vô hình trên sàn thay vì dây dẫn Hệ thống đầu tiên được triển khai tại Willis Tower (trước đây là Sears Tower) ở Chicago, Illinois, để chuyển thư đến các văn phòng.

Xe tự hành AGV đóng vai trò quan trọng trong việc phát triển nhà máy thông minh và kho thông minh, đồng thời thúc đẩy quá trình tự động hóa trong ngành công nghiệp Hiện nay, xe tự hành AGV đang được áp dụng rộng rãi để nâng cao hiệu quả vận chuyển và quản lý hàng hóa trong các cơ sở sản xuất.

AGV (Automated Guided Vehicle) được ứng dụng rộng rãi trong việc vận chuyển nguyên vật liệu cho nhiều lĩnh vực, bao gồm công nghiệp ô tô, điện tử, logistics, dược phẩm, y tế và hàng tiêu dùng.

Xe tự hành AGV và robot AGV đang trở thành giải pháp tối ưu cho các nhà máy sản xuất và kho thông minh, mang lại nhiều lợi ích vượt trội so với phương pháp vận chuyển hàng truyền thống Những ưu điểm nổi bật của AGV bao gồm khả năng tự động hóa cao, giảm thiểu chi phí lao động, tăng cường hiệu quả vận chuyển và cải thiện an toàn trong quá trình di chuyển hàng hóa.

AGV giúp giảm chi phí nhân công nhờ khả năng hoạt động độc lập mà không cần sự can thiệp của công nhân Hơn nữa, AGV có thể đáp ứng khối lượng hàng hóa lớn với tải trọng cao.

Xe tự hành AGV đảm bảo an toàn tuyệt đối nhờ vào hệ thống lập trình chính xác và các cảm biến hiện đại, giúp phát hiện vật cản trong quá trình vận chuyển nguyên vật liệu AGV hoạt động hiệu quả trong những môi trường khắc nghiệt mà con người không thể tiếp cận, chẳng hạn như môi trường hóa chất, nơi có nhiệt độ quá cao hoặc quá thấp.

Nâng cao năng suất lao động là một trong những lợi ích chính của AGV, với thiết kế độ chính xác cao giúp loại bỏ lỗi trong quá trình vận chuyển AGV có khả năng hoạt động liên tục 24/7, tối ưu hóa hiệu suất làm việc và nâng cao năng suất lao động cho doanh nghiệp.

Việc thay đổi và mở rộng module trên xe AGV rất dễ dàng, cho phép người sử dụng nâng cấp, giảm tải trọng hoặc điều chỉnh quãng đường di chuyển theo nhu cầu cụ thể.

2.1.1 Các mẫu AGV hiện nay a AGV chuyển hàng tự động

Hệ thống AGV (Automated Guided Vehicle) cung cấp giải pháp vận chuyển hàng hóa tự động, linh hoạt và hiệu quả mà không cần sự can thiệp của con người Công nghệ này được ứng dụng rộng rãi trong nhiều ngành công nghiệp và phù hợp cho các giai đoạn sản xuất khác nhau.

• Tiếp nhận nguyên liệu thô

• Cung cấp nguyên liệu thô cho dây chuyền sản xuất theo đúng tiến độ

• Thu nhận sản phẩm đang sản xuất từ dây chuyền sản xuất để trữ tại khu vực tạm thời

• Cung cấp sản phẩm đang sản xuất cho quá trình tiếp theo

• Bệ hoạt động di động của dây chuyền lắp ráp xe ô tô n

• Nhập thành phẩm vào kho

• Chất thành phẩm lên xe tải giao hàng

Những lợi ích chính mang lại từ hệ thống agv chuyển hàng tự động bao gồm:

Sử dụng xe AGV giúp tăng năng suất cho nhà máy, cho phép hoạt động liên tục 24/7 trong suốt cả năm, ngay cả khi có bảo trì và kỳ nghỉ Điều này mang lại sự gia tăng đáng kể trong hiệu quả sản xuất cho các công ty.

Hệ thống AGV chuyển hàng tự động giúp cải tiến chất lượng sản xuất bằng cách giảm thiểu đáng kể các sai sót do con người Khác với công nhân, AGV hoạt động liên tục, đảm bảo độ đồng đều trong chất lượng sản phẩm tại mọi thời điểm.

Hệ thống AGV mang lại độ tùy biến cao cho quy trình sản xuất, cho phép dễ dàng thay đổi và thêm các công đoạn mới mà không gặp phải phức tạp trong việc đào tạo công nhân và quản lý Chương trình AGV đảm bảo khả năng thực hiện tất cả các nhiệm vụ được giao, từ đó nâng cao tính linh hoạt trong sản xuất.

Nghiên cứu về Firebase

Firebase là nền tảng phát triển ứng dụng di động và web do Google phát triển, giúp lập trình viên tiết kiệm thời gian nhờ vào quy trình triển khai đơn giản và khả năng mở rộng quy mô dự án Khi sử dụng Firebase, lập trình viên không cần lo lắng về phần backend dữ liệu, vì dữ liệu được lưu trữ an toàn trong cơ sở dữ liệu của Firebase.

Firebase, được phát triển bởi Google, sở hữu hệ thống máy chủ mạnh mẽ với khả năng lưu trữ vượt trội, biến nó thành một cơ sở dữ liệu hoàn hảo Với nền tảng điện toán đám mây, người dùng có thể truy cập Firebase từ bất kỳ đâu trên thế giới Đặc biệt, Firebase cung cấp dịch vụ đa năng và bảo mật cao, đảm bảo an toàn cho dữ liệu của người dùng khỏi việc mất mát hay đánh cắp.

Nhờ máy chủ mạnh mẽ của Google nên Firebase có nhiều ưu điểm nổi bật như:

Firebase cho phép triển khai ứng dụng nhanh chóng mà không cần lo lắng về phần lưu trữ dữ liệu, với khả năng hỗ trợ trên nhiều nền tảng từ Android đến iOS Sự lưu trữ dựa trên máy chủ Google giúp tiết kiệm thời gian quản lý và đồng bộ dữ liệu cho tất cả người dùng Ngoài ra, Firebase còn cung cấp dịch vụ hosting và hỗ trợ xác nhận thông tin khách hàng, làm cho quá trình triển khai ứng dụng trở nên hiệu quả hơn.

Firebase cung cấp bảo mật vượt trội nhờ hoạt động trên nền tảng điện toán đám mây và sử dụng giao thức kết nối bảo mật SSL (Secure Sockets Layer), đảm bảo dữ liệu được mã hóa và an toàn tuyệt đối Mỗi chứng chỉ SSL chỉ dành riêng cho một website và được xác thực bởi cơ quan uy tín Hơn nữa, Firebase cho phép phân quyền người dùng trong cơ sở dữ liệu thông qua Javascript, nâng cao khả năng bảo mật cho ứng dụng.

Firebase mang lại sự ổn định nhờ vào nền tảng vững chắc từ Google, cho phép bảo trì và nâng cấp server một cách dễ dàng mà không làm gián đoạn trải nghiệm của người dùng.

Firebase là nền tảng lý tưởng cho việc xây dựng cơ sở dữ liệu nhờ vào những ưu điểm vượt trội của nó.

Realtime Database là một trong những dịch vụ của Firebase, cho phép người dùng phát triển ứng dụng hoạt động đồng thời trên một máy chủ Nó cung cấp khả năng truy cập bảo mật vào dữ liệu của người dùng, với dữ liệu được lưu trữ cục bộ Điều này giúp các sự kiện liên quan đến thời gian vẫn hoạt động bình thường ngay cả khi không có kết nối mạng, mang lại trải nghiệm tối ưu cho người dùng Khi kết nối mạng được khôi phục, cơ sở dữ liệu sẽ tự động đồng bộ hóa với thời gian thực mà không gây ảnh hưởng đến người dùng.

Realtime Database của Firebase sử dụng Quy tắc bảo mật cơ sở dữ liệu thời gian thực để xác định cấu trúc dữ liệu và quy định thời điểm đọc hoặc ghi dữ liệu Khi kết hợp với hệ thống xác thực của Firebase, các nhà phát triển có khả năng cấp quyền truy cập cho người dùng đã được xác định trước và kiểm soát cách thức họ truy cập vào dữ liệu.

Realtime Database là một cơ sở dữ liệu NoSQL cho phép truy xuất dữ liệu nhanh chóng, tương tự như cách mà Google xử lý dữ liệu Điều này giúp tối ưu hóa khả năng tương tác giữa các cơ sở dữ liệu khác nhau Các lệnh trên Realtime được thực thi nhanh, cho phép các nhà phát triển xây dựng trải nghiệm thời gian thực phục vụ hàng triệu người mà không làm giảm khả năng phản hồi.

Hình 2.6 Logo của Firebase Realtime Database

Hình 2.7 Logo của Firebase Authentication n

Các chuẩn giao tiếp sử dụng

Firebase Authentication là tính năng xác thực người dùng, cho phép người dùng đăng nhập và đăng ký tài khoản để sử dụng ứng dụng Firebase cung cấp nhiều phương thức xác thực, bao gồm email, số điện thoại, và tài khoản từ các nền tảng như Facebook, Google, giúp tăng cường tính bảo mật và tiện lợi cho người dùng.

Xác thực người dùng là một chức năng quan trọng trong phát triển ứng dụng, nhưng việc sử dụng nhiều phương thức như email, số điện thoại, Google và Facebook có thể tốn thời gian và công sức Firebase Authentication cung cấp giải pháp đơn giản, giúp người dùng nhanh chóng tiếp cận sản phẩm hơn.

2.3 Các chuẩn giao tiếp sử dụng

UART, viết tắt của "Universal Asynchronous Receiver / Transmitter", là một vi mạch tích hợp trong vi điều khiển, khác với các giao thức truyền thông như I2C và SPI Chức năng chính của UART là truyền dữ liệu nối tiếp Giao tiếp giữa hai thiết bị qua UART có thể thực hiện theo hai phương thức: giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.

Sơ đồ khối UART gồm hai thành phần chính: máy phát và máy thu Máy phát bao gồm ba khối: thanh ghi giữ truyền, thanh ghi dịch chuyển và logic điều khiển, trong khi máy thu có một thanh ghi giữ, thanh ghi thay đổi và logic điều khiển Cả hai phần này thường được cung cấp bởi một bộ tạo tốc độ baud, được sử dụng để thiết lập tốc độ khi máy phát và máy thu cần truyền hoặc nhận dữ liệu.

Thanh ghi trong máy phát chứa byte dữ liệu được truyền Các thanh ghi này thay đổi trong máy phát, trong khi máy thu di chuyển các bit sang phải hoặc trái cho đến khi một byte hoàn chỉnh được tạo ra.

Hình 2.8 Sơ đồ dây UART n

19 dữ liệu được truyền hoặc nhận Một logic điều khiển đọc (hoặc) ghi được sử dụng để biết khi nào nên đọc hoặc viết

Máy phát tốc độ baud giữa máy phát và máy thu tạo ra tốc độ dao động từ 110 bps đến

230400 bps Thông thường, tốc độ truyền của vi điều khiển là 9600 đến 115200

Trong giao tiếp UART, có hai loại chính là truyền UART và nhận UART, cho phép kết nối trực tiếp với nhau thông qua hai cáp Dữ liệu được truyền từ chân Tx của UART này sang chân Rx của UART khác mà không cần tín hiệu đồng bộ CLK Việc truyền dữ liệu có thể diễn ra qua bus dữ liệu song song từ các thiết bị như vi điều khiển, bộ nhớ và CPU Khi nhận dữ liệu song song, UART sẽ tạo gói dữ liệu bằng cách thêm ba bit bắt đầu, dừng và trung bình, sau đó đọc từng bit và chuyển đổi dữ liệu nhận được về dạng song song, loại bỏ ba bit gói dữ liệu Tóm lại, gói dữ liệu nhận được từ UART sẽ được chuyển về bus dữ liệu ở đầu nhận.

Hình 2.9 Sơ đồ khối UART n

Start bit, hay còn gọi là bit đồng bộ hóa, được đặt trước dữ liệu thực tế và đóng vai trò quan trọng trong việc khởi động truyền dữ liệu Một đường truyền dữ liệu không hoạt động sẽ được điều khiển ở mức điện áp cao Để bắt đầu quá trình truyền, UART sẽ kéo đường dữ liệu từ mức điện áp cao (1) xuống mức điện áp thấp (0) Sự chuyển đổi này từ mức cao sang mức thấp được UART nhận biết, từ đó bắt đầu hiểu dữ liệu thực Thông thường, chỉ có một start-bit trong mỗi lần truyền.

Bit dừng được đặt ở cuối gói dữ liệu, thường có độ dài 2 bit nhưng thường chỉ sử dụng 1 bit Để dừng sóng, UART duy trì đường dữ liệu ở mức điện áp cao.

Bit chẵn lẻ (parity bit) là một phương pháp cho phép người nhận xác minh tính chính xác của dữ liệu đã nhận Đây là một hệ thống kiểm tra lỗi cơ bản, hoạt động theo hai chế độ: chẵn lẻ – chẵn lẻ và chẵn lẻ – lẻ Mặc dù có khả năng phát hiện lỗi, bit chẵn lẻ không được áp dụng rộng rãi và không phải là yêu cầu bắt buộc trong nhiều hệ thống hiện nay.

Dữ liệu bao gồm các bit thông tin được truyền từ người gửi đến người nhận, với độ dài khung dữ liệu dao động từ 5 đến 8 bit Nếu không sử dụng bit chẵn lẻ, chiều dài khung dữ liệu có thể lên đến 9 bit Thông thường, bit LSB của dữ liệu được truyền trước, điều này rất hữu ích cho quá trình truyền tải.

UART là một giao thức truyền thông phổ biến được sử dụng trong các bộ vi điều khiển, đáp ứng các yêu cầu chính xác Nó cũng được tích hợp trong nhiều thiết bị liên lạc khác nhau, bao gồm giao tiếp không dây, thiết bị GPS, và module Bluetooth, phục vụ cho nhiều ứng dụng đa dạng.

Các tiêu chuẩn truyền thông như RS422 và TIA được áp dụng trong giao tiếp UART, ngoại trừ RS232 UART thường là một IC độc lập được sử dụng trong kết nối UART Ưu điểm của UART là chỉ cần hai dây để truyền dữ liệu và không yêu cầu tín hiệu đồng hồ (CLK) Bên cạnh đó, nó còn bao gồm một bit chẵn lẻ để kiểm tra lỗi, giúp nâng cao độ tin cậy trong quá trình truyền thông.

Gói dữ liệu có thể được sửa đổi với cả hai mặt được sắp xếp, trong khi kích thước khung dữ liệu tối đa là 9 bit Gói này không chứa một số hệ thống phụ và tốc độ truyền của UART phải nằm trong mức 10% so với nhau.

SPI là giao thức giao tiếp phổ biến, được sử dụng rộng rãi bởi nhiều thiết bị khác nhau như module thẻ SD, module đầu đọc thẻ RFID và bộ phát/thu không dây 2.4 GHz để kết nối với vi điều khiển.

SPI mang lại lợi ích duy nhất là khả năng truyền dữ liệu liên tục mà không bị gián đoạn Trong khi I2C và UART gửi dữ liệu dưới dạng gói và bị giới hạn bởi số lượng bit cụ thể, SPI cho phép gửi hoặc nhận bất kỳ số lượng bit nào trong một luồng liên tục Điều này giúp loại bỏ sự gián đoạn trong quá trình truyền dữ liệu, tạo ra một trải nghiệm truyền tải mượt mà hơn.

LINH KIỆN VÀ PHẦN MỀM

Các cảm biến và mạch điện sử dụng

Trong dự án này, ESP32 hoạt động như một bộ giao tiếp trung gian, xử lý tín hiệu từ vi điều khiển chính STM32F103C8T6 Nó không chỉ gửi dữ liệu lên Firebase mà còn nhận dữ liệu từ Firebase để truyền lại cho vi điều khiển chính.

3.2 Các cảm biến và mạch điện sử dụng

3.2.1 Cảm biến quang điện IFM O1D100

Cảm biến quang điện IFM O1D100 sử dụng tia laser để đo khoảng cách với độ sai số cực thấp và tốc độ lấy mẫu nhanh Thiết bị này rất phù hợp cho ứng dụng trong công nghiệp cũng như trong các sân chơi robot, giúp đo khoảng cách đến vật một cách chính xác nhất.

Thông số kỹ thuật của thiết bị bao gồm điện áp vào từ 18-30VDC, đầu ra tín hiệu analog 0~10V, và dòng tiêu thụ dưới 150mA Thiết bị có khoảng đo từ 0,2 đến 10m, tốc độ lấy mẫu là 50Hz Khối lượng của thiết bị là 303g với kích thước 59 x 42 x 52mm.

Hình 3.6 Cảm biến quang điện IFM O1D100 thực tế và ảnh vẽ trên Solidworks n

Trong dự án này, cảm biến quang điện IFM O1D100 được sử dụng để đo khoảng cách đến vật cản, giúp xe dừng kịp thời và tránh va chạm Cảm biến này sẽ hoạt động kết hợp với servo để quét và phát hiện vật cản xung quanh.

3.2.2 Mạch thu phát RFID NFC 13.56MHz RC522

Mạch thu phát RFID NFC 13.56MHZ RC522 sử dụng IC MFRC522 của NXP, cho phép đọc và ghi dữ liệu cho thẻ RFID NFC tần số 13.56MHz Với thiết kế nhỏ gọn, mạch này hiện đang được sử dụng phổ biến trong các ứng dụng cần ghi và đọc thẻ RFID NFC.

Thông số kỹ thuật của thiết bị bao gồm: nguồn sử dụng 3.3VDC, dòng điện từ 13 đến 26mA, tần số hoạt động 13.56MHz, khoảng cách hoạt động từ 0 đến 60mm với thẻ mifare1, giao tiếp qua chuẩn SPI, tốc độ truyền dữ liệu tối đa đạt 10Mbit/s Thiết bị hỗ trợ nhiều loại thẻ RFID như mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro và mifare Desfire Kích thước của thiết bị là 40mm x 60mm.

Trong dự án này, mạch thu phát RFID NFC 13.56MHz RC522 được sử dụng để đọc các thẻ RFID được lắp đặt dưới sàn tại những địa điểm đặc biệt Khi xe di chuyển qua các điểm này, hệ thống sẽ tự động nhận diện và xử lý thông tin từ thẻ RFID.

Hình 3.7 Mạch thu phát RFID NFC 13.56MHZ RC522 n

33 này, mạch thu phát RFID sẽ giúp xe nhận biết được tọa độ của địa điểm ấy thông qua địa chỉ ID khác nhau của từng thẻ

3.2.3 Thẻ nhựa RFID NFC Card 13.56 Mhz S50

Thẻ nhựa RFID NFC Card 13.56 Mhz S50 được gán sẵn ID khác nhau trên mỗi thẻ, dùng để đọc dữ liệu với tốc độ rất cao

Thông số kỹ thuật của IC S50 bao gồm bộ nhớ 8Kbits chia thành 16 vùng, tần số hoạt động 13.56MHz, khoảng cách đọc từ 2.5 đến 10cm, thời gian đọc từ 1 đến 2ms, độ bền lên đến 100.000 lần, thời gian đảm bảo không mất dữ liệu là 10 năm, và kích thước 0.8 × 85.5 × 54mm Thiết bị tuân thủ các chuẩn ISO 14443 và ISO 10536.

Trong dự án này, các ID của thẻ được sử dụng để tham chiếu với giá trị tọa độ trên bản đồ Việc đọc ID và tham chiếu với các tọa độ lưu sẵn giúp xe nhận biết vị trí và tọa độ của mình trong kho hoặc nhà máy.

Hình 3.8 Thẻ nhựa RFID NFC Card 13.56 Mhz S50 n

3.2.4 Mạch dò line 1 kênh và 5 kênh TCRT5000

Mạch dò line 1 kênh TCRT5000 là một giải pháp phổ biến trong robot dò line, sử dụng cảm biến hồng ngoại TCRT5000 để phát hiện đường trắng và đen trong khoảng cách từ 1-25mm, giúp việc lắp đặt module trở nên dễ dàng Mạch này còn được tích hợp biến trở, cho phép điều chỉnh độ nhạy của cảm biến một cách linh hoạt Nó hoạt động với điện áp từ 3.3 - 5VDC và cung cấp cả tín hiệu số lẫn tín hiệu analog, phù hợp với nhiều ứng dụng điều khiển khác nhau.

Mạch sử dụng cảm biến TCRT5000 với điện áp hoạt động từ 3.3 - 5VDC và dòng tiêu thụ dưới 10mA Sử dụng IC so sánh LM393, cảm biến có khoảng cách phát hiện từ 1mm đến 25mm, cho phép điều chỉnh độ nhạy bằng biến trở trên mạch Tín hiệu ngõ ra bao gồm cả tín hiệu số và analog, với kích thước nhỏ gọn 32 x 14mm.

Mạch dò line 5 kênh TCRT5000 được thiết kế để phát hiện line đen và line trắng với 5 cảm biến hồng ngoại hướng xuống đất Khác với mạch dò line 1 kênh, mạch này không có biến trở điều chỉnh độ nhạy, do đó phụ thuộc nhiều vào ánh sáng môi trường và màu sắc của line.

Hình 3.9 Mạch dò line 1 kênh TCRT5000 n

Cảm biến hoạt động với điện áp từ 3.3 đến 5V và có khả năng phát hiện trong khoảng cách từ 0.5 đến 40mm Ngõ ra của cảm biến là tín hiệu số, thuận tiện cho việc kết nối với vi điều khiển Mỗi cảm biến đều được trang bị LED hiển thị ngõ ra, giúp dễ dàng theo dõi trạng thái Hệ thống ngõ ra bao gồm 7 chân tín hiệu số và 2 chân ngõ vào để cấp nguồn.

Encoder, hay còn gọi là bộ mã hóa quay hoặc bộ mã hóa trục, là thiết bị cơ điện chuyển đổi vị trí góc hoặc chuyển động của trục thành tín hiệu đầu ra analog hoặc kỹ thuật số Thiết bị này được sử dụng để phát hiện vị trí, hướng di chuyển và tốc độ của động cơ thông qua việc đếm số vòng quay của trục.

Encoder bao gồm các thành phần chính như sau: một đĩa quang tròn có rãnh nhỏ quay quanh trục, trên đĩa này được đục lỗ (rãnh) để khi đĩa quay và chiếu đèn LED lên bề mặt, sẽ xảy ra sự ngắt quãng Các rãnh trên đĩa chia vòng tròn 360 độ thành các góc bằng nhau, và một đĩa có thể có nhiều dãy rãnh tính từ tâm Ngoài ra, encoder còn có nguồn sáng (light source) và bộ cảm biến thu (light receiving elements).

Hình 3.10 Mạch dò line 5 kênh TCRT5000 n

Các cơ cấu chấp hành

Điện áp đầu vào của thiết bị là 8~36VDC, trong khi điện áp đầu ra dao động từ 1.25 đến 32VDC với dòng đầu ra tối đa lên tới 5A Thiết bị đạt hiệu suất 96% và tần số xung là 180KHz, đồng thời tích hợp Mosfet để đóng ngắt tần số cao Maximum Duty Cycle là 100% với Minimum Drop Out chỉ 0.3VDC Nhiệt độ làm việc của thiết bị có thể đạt từ -40 đến 125°C, với kích thước nhỏ gọn 54 x 23 x 18mm.

Mạch được sử dụng để giảm áp 2 pin 18650 thành 6V, cấp nguồn riêng cho 2 servo MG995

3.3 Các cơ cấu chấp hành

3.3.1 Động cơ Maxon RE25 144650 24VDC

Thông số động cơ bao gồm điện áp hoạt động từ 6-24V và điện áp định mức là 18V Công suất đạt 20W với tốc độ không tải lên đến 10.200 rpm và dòng không tải là 53,9 mA Tốc độ danh nghĩa của động cơ là 8.850 rpm, trong khi momen xoắn danh nghĩa tối đa là 22,9 mNm với dòng danh nghĩa tối đa là 1,46 A Khi kẹt, momen xoắn đạt 220 mNm và dòng khi kẹt là 13,5 A Hiệu suất tối đa của động cơ là 83%, với điện trở giữa hai cực là 1,33 Ω và độ tự cảm giữa hai cực là 0,115 mH.

Động cơ Maxon 20W có hệ số momen 16,3 mNm/A và hệ số tốc độ 586 rpm/V, cùng với momen quán tính 9,49 gcm² và trọng lượng 130g Động cơ này hoạt động trong dải nhiệt độ từ -30 đến +100°C Đặc biệt, động cơ được trang bị thêm hộp số hành tinh giảm tốc với tỷ lệ 1:66 và encoder AVAGO 500PPR ở phía đuôi Lý do lựa chọn động cơ này sẽ được trình bày trong phần tiếp theo.

3.3.2 Động cơ Servo MG995 Động cơ Servo MG995 là loại có mô men xoắn lớn, chạy mượt mà phù hợp cho những mô hình điều khiển có tải trọng lớn như cánh tay robot, mô hình máy bay, robot nhện Động cơ sử dụng chất liệu có độ bền cao, có bánh răng bằng đồng giúp cho động cơ đạt độ bền cao

Hình 3.20 Động cơ Maxon RE25 144650 24VDC

Hình 3.21 Động cơ Maxon kèm hộp số và encoder n

Thông số kỹ thuật của sản phẩm bao gồm điện áp hoạt động từ 3.5 đến 8.4V, dòng điện cung cấp dưới 1000mA, và yêu cầu xung vuông với điện áp đỉnh từ 3 đến 5V Nhiệt độ hoạt động nằm trong khoảng từ 0 đến 60°C Sản phẩm sử dụng kiểu bánh răng bằng đồng, với góc quay servo đạt 180° và lực kéo mạnh mẽ.

+ 15 kg/cm: tại 6V o Tốc độ quay:

+ 0.17 sec/60°: tại 4.8V chế độ không tải

+ 0.13 sec/60°: tại 6V chế độ không tải o Kích thước: 40 x 20 x 47mm o Khối lượng: 48g [17]

Dự án này sử dụng servo MG995 cho hai cơ cấu: nâng kệ hàng và xoay cảm biến quang điện IFM O1D100 Với chi phí thấp của servo, việc áp dụng cho cả hai cơ cấu là rất hợp lý.

Hình 3.22 Động cơ Servo MG995 n

Các linh kiện khác

Bánh xe được chế tạo từ nhôm và bọc một lớp cao su để tăng khả năng bám đất và sàn Đường kính bánh xe là Φ100mm với trục bánh xe có đường kính Φ8mm Tuy nhiên, trục sau hộp số của động cơ chỉ có đường kính Φ6mm, do đó, tôi đã tiến hành tiện và đóng sơ mi cho bánh xe, giúp chuyển đổi bánh xe thành trục có kích thước Φ6mm sau khi gia công.

3.4.2 Bánh mắt trâu đa hướng

Em sử dụng thêm 2 bánh mắt trâu đa hướng để giúp giữ thăng bằng khi di chuyển đồng thời giúp di chuyển của xe được mượt mà

3.4.3 Domino TB1508 và đầu Cosse chữ Y

Domino là thiết bị hỗ trợ lắp đặt dây nguồn và dây có dòng cao một cách dễ dàng, đồng thời giúp phân chia bộ nguồn thành nhiều bộ khác nhau Việc sử dụng đầu Cosse chữ Y cũng mang lại hiệu quả cao trong quá trình kết nối.

Hình 3.24 Bánh mắt trâu đa hướng n

46 bấm các mối nối dây điện, giúp cho việc tháo lắp dây điện không bị tưa lõi đồng nhưng vẫn đảm bảo tiếp xúc tốt

3.4.4 Dây bus Đề tài được sử dụng dây bus làm dây cấp nguồn cho cảm biến và dây tín hiệu Dây bus có những ưu điểm sau: o Độ bền dây tốt, chịu được các điều kiện uốn, gấp dây o Dây theo bó nên gọn gàng o Dây có ngàm nối chắc chắn, trong quá trình di chuyển sẽ không bị rơi ra do rung lắc o Dễ tháo lắp khi cần thiết, chỉ cần hàn các header là có thể sử dụng o Giá thành thấp

Với những lợi ích nổi bật, tôi quyết định sử dụng dây bus để kết nối các cảm biến với board mạch điều khiển Dự án này sử dụng nhiều loại dây bus khác nhau, bao gồm dây bus 2 pin, 3 pin, 4 pin, 7 pin và 8 pin.

Hình 3.25 Domino và đầu Cosse chữ Y

Pin 18650 là loại pin Lithium-ion có thể sạc lại, thường được sử dụng cho laptop và sạc dự phòng Với điện áp dao động từ 3.7V đến 4.2V, pin 18650 có kích thước đường kính 18mm và chiều dài 65mm.

Trong dự án này pin được dùng để cấp nguồn riêng cho servo MG995

Trong dự án, tôi sử dụng pin Lipo 6S với dung lượng 3300mAh để cung cấp nguồn cho động cơ và cảm biến quang điện IFM O1D100 Pin này có dòng xả cao và ổn định, đạt 40C Mỗi cell pin có điện áp từ 3,7 đến 4,2V, do đó điện áp tổng của pin Lipo 6 cell (6S) dao động từ 22,2 đến 25,2V.

Các phần mềm sử dụng

SOLIDWORKS là phần mềm thiết kế 3D tham số chạy trên hệ điều hành Windows và có mặt từ năm 1995, được tạo bởi công ty SOLIDWORKS Dassault Systèmes, là một

Dassault Systèmes, S A., một tập đoàn công nghệ hàng đầu thế giới có trụ sở tại Vélizy, Pháp, hiện có 48 công ty thành viên Cộng đồng người dùng SOLIDWORKS bản quyền trên toàn cầu đã gần đạt con số ấn tượng.

6 triệu người với khoảng 200.000 doanh nghiệp và tập đoàn

Phần mềm SOLIDWORKS, ra mắt lần đầu vào năm 1995, đã trải qua nhiều cải tiến đáng kể về tính năng và hiệu suất, đáp ứng tốt nhu cầu thiết kế 3D trong các lĩnh vực kỹ thuật và công nghiệp Ngoài ra, SOLIDWORKS còn được ứng dụng rộng rãi trong các ngành như đường ống, kiến trúc, nội thất và xây dựng, nhờ vào khả năng thiết kế 3D mạnh mẽ và danh mục giải pháp hỗ trợ đa dạng.

Trong dự án thiết kế xe AGV, phần mềm SOLIDWORKS đóng vai trò quan trọng, từ việc thiết kế chi tiết bánh xe cho đến lắp ráp ốc vít Tất cả các thành phần của xe được thiết kế hoàn toàn trên SOLIDWORKS, và việc xuất bản các bản vẽ để gia công khung xe cũng được thực hiện thông qua phần mềm này.

3.5.2 Android Studio a Khái niệm về Android Studio

Android Studio, được phát triển dựa trên phần mềm IntelliJ IDEA của JetBrains, là IDE chính thức của Google dành cho phát triển ứng dụng Android Phần mềm này hỗ trợ các hệ điều hành Windows, Mac OS X và Linux, thay thế cho Android Development Tools (ADT) dựa trên Eclipse Android Studio lần đầu tiên được công bố tại hội nghị Google I/O vào ngày 16/05/2013 và chính thức ra mắt công chúng vào năm 2014 sau nhiều phiên bản beta Trước khi Android Studio ra đời, các nhà phát triển Android chủ yếu sử dụng Eclipse IDE, một công cụ hỗ trợ nhiều ngôn ngữ lập trình khác.

Hình 3.29 Logo của phần mềm SOLIDWORKS n

Android Studio giúp việc tạo ứng dụng trở nên dễ dàng hơn so với các phần mềm không chuyên Nó cung cấp giao diện để phát triển ứng dụng và xử lý các công cụ quản lý file phức tạp Ngôn ngữ lập trình chính là Java, được cài đặt riêng trên thiết bị, và Android SDK kết nối các thành phần lại với nhau Android Studio cho phép chạy code qua trình giả lập hoặc thiết bị kết nối, đồng thời hỗ trợ gỡ rối chương trình khi chạy và cung cấp phản hồi để nhanh chóng giải quyết sự cố.

Google đã đầu tư nhiều công sức để tối ưu hóa Android Studio, biến nó thành một công cụ mạnh mẽ và hữu ích Công cụ này cung cấp gợi ý trực tiếp khi viết code và thường đề xuất những thay đổi cần thiết để sửa lỗi hoặc cải thiện hiệu suất code Chẳng hạn, nếu bạn không sử dụng biến, biến đó sẽ được đánh dấu bằng màu xám Khi bắt đầu gõ một dòng code, Android Studio sẽ đưa ra danh sách gợi ý tự động hoàn thành, giúp bạn tiết kiệm thời gian và hỗ trợ khi bạn không nhớ chính xác cú pháp.

Firebase là dịch vụ API cho phép lưu trữ và đồng bộ dữ liệu thời gian thực, giúp lập trình viên không cần lo lắng về backend server hay cơ sở dữ liệu Được cung cấp bởi Google, Firebase hoạt động trên nền tảng đám mây, hỗ trợ phát triển ứng dụng nhanh chóng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.

Hình 3.30 Logo của Android Studio n

Để thiết kế và phát triển một ứng dụng điện thoại hoàn chỉnh, cần xử lý nhiều loại file khác nhau trong Android Studio Mỗi file có chức năng riêng và được tổ chức trong các thư mục khác nhau, góp phần quan trọng vào quá trình phát triển ứng dụng.

- Thư mục Java: thư mục này sẽ chứa tất cả các file mã nguồn java ( java ) mà em đã tạo trong quá trình phát triển ứng dụng

- Thư mục res (Resources): đây là một thư mục quan trọng sẽ chứa tất cả các resource không phải code, chẳng hạn như ảnh bitmap, UI strings, XML layouts

The Manifests directory contains the AndroidManifest.xml file for the Android application This manifest file includes essential information about the app, such as the Android version, access permissions, metadata, and the app's components It serves as an intermediary between the Android operating system and the application.

Gradle là công cụ xây dựng hệ thống quan trọng trong Android, được tích hợp sẵn vào Android Studio và hoạt động tự động qua phần mềm này Trong Gradle, có hai tệp chính là build.gradle (Project) và build.gradle (Module), được sử dụng để cấu hình xây dựng cho tất cả các module ứng dụng hoặc cho từng module riêng biệt.

- File Android Layout (Activity_main.xml): sử dụng để thiết kế giao diện người dùng của ứng dụng File được nằm trong thư mục res/layout

- File Android Main Activity (MainActivity.java): sử dụng để xử lý các activity tương ứng mà ta liên kết với file XML

File Android Manifest (AndroidManifest.xml) là nơi chứa thông tin về tất cả các activity trong ứng dụng Android Trong file này, chúng ta cần xác định rõ từng activity và chỉ định activity nào sẽ xuất hiện đầu tiên khi người dùng mở ứng dụng.

Trong dự án này, tôi đã sử dụng 10 file XML để thiết kế giao diện người dùng cho ứng dụng, cùng với 9 file Java để xử lý các hoạt động tương ứng.

Altium Designer là phần mềm thiết kế mạch điện tử tích hợp, phát triển bởi Altium Limited, có trụ sở tại Úc Hiện nay, Altium là một trong những lựa chọn hàng đầu cho việc vẽ mạch điện tử và thiết kế PCB tại Việt Nam.

Các tính năng của Altium Designer:

- Giao diện thiết kế, quản lý và chỉnh sửa thân thiện, dễ dàng biên dịch, quản lý file, quản lý phiên bản cho các tài liệu thiết kế

Hỗ trợ thiết kế tự động và đi dây theo thuật toán tối ưu, phân tích lắp ráp linh kiện Cung cấp giải pháp thiết kế hoặc chỉnh sửa mạch, linh kiện và netlist dựa trên các tham số mới.

- Mở, xem và in các file thiết kế mạch dễ dàng với đầy đủ các thông tin linh kiện, netlist, dữ liệu bản vẽ, kích thước, số lượng…

- Hệ thống các thư viện linh kiện phong phú, chi tiết và hoàn chỉnh bao gồm tất cả các linh kiện nhúng, số, tương tự…

Đặt và điều chỉnh các đối tượng trên các lớp cơ khí, định nghĩa các quy tắc thiết kế, tùy chỉnh các lớp mạch in, chuyển đổi từ sơ đồ nguyên lý sang PCB, và xác định vị trí linh kiện trên PCB là những bước quan trọng trong quy trình thiết kế mạch điện tử.

Hình 3.31 Giao diện của Android Studio n

THIẾT KẾ, LẬP TRÌNH VÀ THỬ NGHIỆM

Thiết kế cơ khí

4.1.1 Tính toán và lựa chọn động cơ Địa hình làm việc của robot là địa hình phẳng, giả thiết bỏ qua sự biến dạng của bánh xe, bỏ qua lực cản của không khí trong quá trình robot di chuyển

Các thông số của robot:

- Khối lượng ước tính: M = 7 (kg)

- Khối lượng hàng tối đa: 3 (kg)

- Khối lượng tổng cộng: m = 10 (kg)

- Chọn bánh xe có đường kính: D = 100 (mm)

- Tốc độ tối đa là: 0,4 (m/s)

Phân tích lực tác dụng lên một bánh xe chủ động gồm 4 lực tác dụng như sau:

- 𝐹⃑⃑⃑⃑⃑⃑⃑⃑ 𝑚𝑠𝑛 là lực ma sát nghỉ giữa bánh xe và mặt sàn

- 𝐹⃑⃑⃑⃑ 𝑤 là lực kéo sinh ra do momen của động cơ

- 𝑁⃑⃑ là phản lực của mặt sàn

- 𝑃⃑⃑⃑ 1 là phần trọng lực tác dụng lên 1 bánh

Hình 4.1 Phân tích lực trên bánh xe chủ động n

- 𝑀⃑⃑⃑⃑⃑ 1 là momen xoắn của động cơ

- 𝑚 1 là một nửa trọng lượng của robot và hàng, 𝑚 1 = m

Phương án chuyển động của xe được chọn là chuyển động thẳng, trong đó hai bánh dẫn động di chuyển với tốc độ đồng nhất về phía trước, đạt vận tốc 𝑣 = 0,4 m/s Tốc độ quay của bánh xe sẽ được xác định dựa trên thông số vận tốc này.

𝜋 100 = 76,4 (𝑟𝑝𝑚) Phương trình cân bằng lực:

⃑⃑⃑⃑⃑⃑⃑⃑ + 𝐹⃑⃑⃑⃑ + 𝑁⃑⃑ + 𝑃 𝑤 ⃑⃑⃑ = 𝑚 1 1 𝑎 Với a là gia tốc của xe

• Khi xe chuyển động đều:

Vận tốc không đổi là 𝑣 = 0,4 (m/s), nên gia tốc 𝑎 = 0 (m/𝑠 2 ) Khi đó:

4 = 24,5 (𝑁) Lực kéo sinh ra do momen của động cơ là:

𝐹 𝑤 = 𝐹 𝑚𝑠𝑙 = 𝜇 𝑙 𝑁 = 0,015 × 24,5 = 0,368(𝑁) Với: hệ số ma sát lăn 𝜇 𝑙 = 0,015 khi xe di chuyển trên sàn

Công suất cần thiết để xe di chuyển ổn định với vận tốc 0,4 (m/s) là:

Xe tăng tốc với gia tốc 𝑎 = 0,5 (𝑚/𝑠 2 ) để hàng không rơi

Lực kéo sinh ra do momen của động cơ là:

Với hệ số ma sát tĩnh là 𝜇 𝑛 = 0,7

Momen xoắn cần thiết để xe tăng tốc là :

𝑀 1 = 𝐹 𝑤 𝑟 = 19,65 × 0,05 = 0,98 (𝑁𝑚) Công suất cần thiết để xe tăng tốc lên 0,4 (m/s) là:

Công suất động cơ cần thiết được xác định là 7,86 W với tốc độ yêu cầu là 76,4 rpm Để đáp ứng yêu cầu này, động cơ Maxon 24V với công suất 20 W, hộp hành tinh giảm tốc 1:66, tốc độ không tải 154 rpm và momen xoắn tối đa 1,5 Nm được lựa chọn.

4.1.2 Thiết kế Part gá động cơ

Hộp số động cơ không phổ biến trên thị trường, dẫn đến việc thiếu các bộ phận gá động cơ sẵn có Do đó, cần thiết kế và gia công bộ phận gá phù hợp với dự án Động cơ sẽ chịu lực chủ yếu theo phương vuông góc với trục động cơ và mặt đất, vì vậy việc lựa chọn thiết kế để chịu lực tốt nhất là rất quan trọng, nhằm tránh hư hỏng bộ phận gá.

Em thiết kế phần gá ôm động cơ nhằm tăng độ bền và cố định động cơ hoàn toàn vào part gá, được nối trực tiếp với sàn xe Để ngăn động cơ di chuyển theo phương dọc trục, phần gá cần có chi tiết chặn, và em đã thiết kế thêm một miếng mica nhỏ để giữ động cơ Với lực tác dụng dọc trục nhỏ, chi tiết mica đáp ứng tốt nhu cầu của đề tài Nếu có cơ hội cải tiến, em sẽ sử dụng Inox 304 tấm dày 2mm được gia công bằng phương pháp cắt laser để nâng cao khả năng chịu lực dọc trục cho part gá.

Hình 4.2 Động cơ Maxon kèm hộp số và part gá động cơ n

4.1.3 Thiết kế cơ cấu quay cảm biến

Cảm biến quang điện IFM O1D100 có khối lượng lớn (303g), việc gắn trực tiếp vào trục xoay của Servo có thể gây tổn hại cho trục quay và làm giảm độ chính xác đo lường do rung lắc Do đó, cần đặt cảm biến lên một cơ cấu xoay cố định và kết nối với servo, giúp định hướng hành trình di chuyển và giảm rung lắc trong quá trình hoạt động Cơ cấu xoay sẽ chịu tải trọng của cảm biến, bảo vệ servo khỏi lực dọc trục Để đảm bảo chuyển động xoay mượt mà và chuyển dịch lực tác động, thường sử dụng vòng bi, nhưng cần ép dôi chúng vào để phù hợp với yêu cầu kỹ thuật.

Để tạo ra chi tiết lắp ghép, việc sử dụng các chi tiết như lỗ bắt ốc hoặc ngàm nối có thể trở nên phức tạp và tốn kém Thay vào đó, tôi quyết định lựa chọn mâm xoay bàn ăn, một sản phẩm phổ biến trong các nhà hàng và gia đình Mâm xoay này có nhiều kích thước, giá thành hợp lý, được làm bằng nhôm nhẹ và có sẵn lỗ bắt bulong ở cả hai vòng xoay, giúp việc lắp ghép và thiết kế trở nên dễ dàng hơn Kích thước cụ thể của mâm xoay là đường kính trong 69mm, đường kính ngoài 120mm và độ dày 8.5mm.

Hình 4.3 Cách lắp ráp động cơ với part gá n

Sử dụng các chi tiết từ mica tấm cùng với một số loại bulong giúp đơn giản hóa quá trình lắp ghép với chi phí thấp, đồng thời vẫn đảm bảo độ chính xác cao Đây là cơ cấu xoay cảm biến được thiết kế sau khi hoàn thiện.

Hình 4.4 Mâm xoay bàn ăn

Hình 4.5 Lắp ráp cơ cấu xoay cảm biến n

Và đây là thành quả sau khi lắp ghép cơ cấu xoay cảm biến vào xe AGV

4.1.4 Thiết kế cơ cấu nâng kệ hàng

Cơ cấu nâng kệ hàng tối ưu nhất là loại nâng thẳng đứng kết hợp với cơ cấu xoay, giúp hạn chế rung lắc khi di chuyển Khi nâng, kệ hàng sẽ không xoay so với mặt đất, đảm bảo hàng hóa được an toàn và không gian xung quanh xe luôn gọn gàng Để đạt hiệu quả cao, cơ cấu nâng nên có dạng giàn nâng chữ X hoặc xi lanh nâng theo phương thẳng đứng.

Hình 4.6 Cơ cấu xoay cảm biến - ảnh render trên Solidworks

Hình 4.7 Cơ cấu nâng chữ X n

Do hạn chế về kinh phí, tôi không thể sử dụng xylanh điện cho cơ cấu nâng, thay vào đó, tôi chọn Servo MG995 Cơ cấu nâng tôi sử dụng là cơ cấu hình bình hành, đơn giản và phổ biến trong các robot giá thành thấp Với momen xoắn 15 kg/cm tại 6V của Servo MG995 và kích thước kiện hàng tối đa 3kg, tay đòn cần có chiều dài nhỏ hơn 5cm Vì vậy, tôi đã chọn tay đòn dài 40mm cho thiết kế này.

Các chốt, khớp xoay sẽ tạo thành hình bình hành

Khi nâng cao nhất, các chốt, khớp xoay sẽ tạo thành hình chữ nhật, bề mặt sau khi nâng vẫn sẽ song song với bề mặt trước khi nâng

Để tránh tình trạng mica bị gãy hoặc vỡ do lực vuông góc tác động lên bề mặt, cần gia cố các khớp nối và nơi gắn cảm biến một cách chắc chắn.

Hình 4.8 Cơ cấu nâng hình bình hành

Hình 4.9 Cơ cấu nâng ở vị trí cao nhất n

4.1.5 Hoàn tất bản thiết kế

Hình 4.10 Góc nhìn khác của cơ cấu nâng hàng

Bàn nâng kệ hàng Đồng hồ đo điện áp

Hình 4.11 Ảnh nhìn từ phía trên (Top View) n

Mạch thu phát RFID RC522 Cảm biến dò line 5 kênh

Hình 4.12 Ảnh nhìn từ phía dưới (Bottom View)

Driver điều khiển động cơ

Pin Lipo 6s Động cơ Maxon

Mạch ra chân cho VDK

Hình 4.13 Ảnh bên trong xe AGV n

Hình 4.15 Cảm biến dò line 1 kênh có thể tăng đưa giúp bắt và dừng đúng line

Hình 4.16 Mạch ra chân cho vi điều khiển và cảm biến dò line 5 kênh n

Xe sau khi hoàn tất thiết kế, xe AGV có kích thước 420x420x187mm

4.1.6 Xuất bản vẽ và gia công CNC

Sau khi hoàn tất thiết kế, tôi sẽ xuất bản các bản vẽ chi tiết cần gia công, bao gồm bản vẽ phay CNC cho part gá động cơ và bản vẽ cắt laser mica Tôi sử dụng hai loại mica là mica 3mm và mica 5mm Part gá động cơ được chế tạo từ nhôm 6063 và gia công bằng phương pháp phay CNC Đây là bản vẽ gia công phay cho part gá động cơ cùng với file vẽ cắt laser mica.

Hình 4.17 Xe AGV hoàn chỉnh (Render trên SOLIDWORKS)

Hình 4.18 Kích thước xe so với người cao 1m74 (Render trên SOLIDWORKS) n

Hình 4.19 Bản vẽ gia công phay CNC

Hình 4.20 File vẽ cắt mica n

Thiết kế và gia công mạch ra chân

Mạch ra chân được thiết kế để cung cấp nguồn cho vi điều khiển và cảm biến một cách gọn gàng, bao gồm domino nguồn 5V cho vi điều khiển và cảm biến, domino nguồn cho servo, cùng với domino nguồn 24V cho cảm biến quang điện IFM O1D100 Việc sử dụng dây bus cắm vào các header trên mạch giúp tối ưu hóa việc cấp nguồn và lấy tín hiệu cho cảm biến Mạch cũng cho phép bật tắt giao tiếp UART giữa hai vi điều khiển, điều này rất quan trọng trong quá trình nạp chương trình, nhằm tránh tình trạng mất dữ liệu hoặc hư hỏng vi điều khiển Thêm vào đó, mạch được trang bị cầu phân áp để đọc tín hiệu trả về từ cảm biến quang điện IFM O1D100, cùng với còi báo và mạch đo dung lượng pin.

Hình 4.21 Sơ đồ kết nối các phần tử mạch điện n

4.2.2 Sơ đồ nguyên lý và layout PCB Để thiết kế và gia công được mạch, đầu tiên ta cần thiết kế sơ đồ nguyên lý (Schematic)

Sau khi hoàn thành sơ đồ nguyên lý, bước tiếp theo là sắp xếp linh kiện và tiến hành đi dây cho mạch, tức là thiết kế PCB Do hạn chế về kinh tế, tôi quyết định tự làm mạch và chọn thiết kế mạch phù hợp với nhu cầu của mình.

Hình 4.22 Sơ đồ nguyên lý mạch ra chân

Hình 4.23 Mặt trước và sau của PCB n

Sau khi hoàn tất việc thiết kế, ta tiến hành xuất file pdf để in mạch

4.2.3 Gia công mạch ra chân cho vi điều khiển

Em chọn làm mạch in bằng phương pháp ủi thủ công, đây là phương pháp làm đơn giản nhất và không cần các máy móc phức tạp

- Đầu tiên ta tiến hành xuất và in file đường mạch cần ủi lên giấy in mạch chuyên dụng

- Tiếp đến ta tiến hành đo kích thước mạch và cắt phíp đồng theo kích thước tương tự

Sử dụng giấy nhám hoặc bùi nhùi chà xoong để chà sạch lớp phíp đồng giúp loại bỏ những vết bẩn và lớp đồng bị oxi hóa, từ đó làm lộ lớp đồng mới bên dưới Sau khi chà, hãy dùng khăn ướt để lau sạch và sau đó dùng khăn giấy để lau khô bề mặt.

Hình 4.24 Thiết kế đường mạch cho PCB

Hình 4.25 Đường mạch in 1 lớp n

Kế tiếp, chúng ta áp phần giấy in mạch lên bề mặt đồng của phíp đồng, cần căn chỉnh cho khớp chính xác Sử dụng phần thừa của giấy in mạch để dán cố định giấy với phíp đồng.

- Ta tiến hành sử dụng bàn ủi để ủi mạch Ủi trực tiếp lên phần giấy có in mạch trong khoảng 10 phút

- Đợi cho board nguội hẳn rồi bóc lớp giấy ra

Hình 4.26 Chà bỏ lớp phủ chống Oxi hóa

Hình 4.28 Mạch sau khi ủi nhiệt n

Để tiến hành quá trình pha acid và ngâm mạch, cần sử dụng Acid Hydrochloric kết hợp với Hydro Peroxide để tác động lên đồng Dung dịch ngâm ban đầu sẽ chuyển từ trong suốt sang màu xanh lam do sự hình thành Cupric Chloride Cần ngâm mạch cho đến khi lớp đồng bị ăn mòn hoàn toàn, nhưng không nên ngâm quá lâu để tránh làm mỏng và dễ bong tróc đường mạch.

- Kế tiếp ta sử dụng Axeton để lau hết đường mực dính trên mạch Ta tiến hành khoan các lỗ cắm chân linh kiện bằng máy khoan mini

Hình 4.29 Ngâm mạch đã ủi nhiệt trong acid

Cuối cùng, chúng ta hàn các linh kiện vào bo mạch Để bảo vệ lớp đồng trên mặt sau của bo mạch khỏi sự oxy hóa, hãy sử dụng dung dịch gồm một ít nhựa thông và axeton phủ lên bề mặt này.

4.3 Thiết kế và lập trình ứng dụng điện thoại

4.3.1 Thiết kếvà lập trình giao diện đăng nhập

Firebase là nền tảng phát triển ứng dụng di động và web, cung cấp API mạnh mẽ mà không cần backend Firebase Authentication hỗ trợ lập trình viên với SDK dễ sử dụng và thư viện UI để xác thực người dùng, cho phép lưu trữ tài khoản và mật khẩu một cách bảo mật Hiện nay, nhiều lập trình viên lựa chọn Firebase Authentication cho các dự án cần đăng nhập nhờ vào tính nhanh chóng của nó Trong dự án này, tôi sử dụng Firebase Authentication để lưu trữ tài khoản và đăng nhập vào ứng dụng, với giao diện gồm hai ô nhập Email và mật khẩu, cùng hai nút SIGN UP và LOGIN Ngoài ra, dưới cùng giao diện có hai nút để truy cập trang Facebook và YouTube của nhà phát triển ứng dụng.

Hình 4.31 Mạch sau khi đã hàn hoàn chỉnh n

Trong file Java của activity_login, sự kiện quan trọng là khi người dùng nhấn nút LOGIN Ứng dụng sẽ kiểm tra dữ liệu từ hai Edit Text; nếu rỗng, sẽ hiển thị thông báo "Input your Email/Password" Nếu không rỗng, ứng dụng sẽ so sánh Email và Password với cơ sở dữ liệu Firebase Authentication Nếu đúng, thông báo "Login successful" sẽ xuất hiện và chuyển sang fragment_home Ngoài ra, khi nhấn nút SIGN UP, ứng dụng sẽ chuyển ngay sang activity_signup Khi nhấn vào hai biểu tượng Facebook hoặc Youtube, ứng dụng sẽ truy cập vào trang Facebook hoặc Youtube của nhà phát hành.

Hình 4.32 Giao diện đăng nhập và đăng kí tài khoản

Hình 4.33 Phần hàm login viết trên Android Studio n

Trong file Java của activity_signup, khi người dùng nhấn nút SIGN_UP, ứng dụng sẽ tạo tài khoản cho họ trên Firebase Authentication và chuyển hướng đến fragment_home Hiện tại, việc tạo tài khoản được để ở chế độ mở, cho phép bất kỳ ai cũng có thể đăng ký mà không cần xác nhận Tuy nhiên, trong thực tế, quá trình đăng ký tài khoản cần phải được xác nhận qua email Ngoài ra, tùy theo yêu cầu của công ty, thiết kế và tính bảo mật của ứng dụng sẽ được điều chỉnh để phù hợp hơn.

4.3.2 Thiết kế và lập trình giao diện Navigation Drawer

Giao diện Navigation cho phép người dùng dễ dàng chuyển đổi giữa các trang khác nhau trong ứng dụng Chúng ta sử dụng Fragment trong Activity chính để quản lý các trang này, với Fragment được coi là các Activity con độc lập Mỗi Fragment đi kèm với một file Java và file giao diện XML Khi tạo giao diện cho Navigation, người dùng có thể nhấn vào các Item để chuyển đến giao diện tương ứng của Fragment Ngoài ra, Navigation còn cho phép truy cập các đường link đã lưu trong ứng dụng Khi người dùng nhấn vào một Item, ứng dụng sẽ kiểm tra ID của Item đó; nếu ID khác với ID của Fragment hiện tại, ứng dụng sẽ chuyển đổi trang.

Hình 4.34 Navigation Drawer và một phần thuật toán của giao diện n

Navigation và chuyển sang Fragment mới còn nếu ID được chọn trùng với ID của Fragment hiện tại thì sẽ không có chuyện gì xảy ra

4.3.3 Thiết kế và lập trình trang chủ – Home

Trang chủ (Fragment FRAGMENT_HOME) hiển thị các thông số xe như ID, dung lượng pin, tốc độ động cơ, phương hướng, tọa độ hiện tại, tọa độ nhận và trả hàng, tốc độ mong muốn, vật cản, tiến trình thực hiện, và trạng thái kết nối Những thông số này được lấy từ cơ sở dữ liệu thời gian thực Realtime Database với tốc độ gần như tức thời khi điện thoại kết nối mạng ổn định Trang chủ có 3 ô Edit Text cho phép người dùng nhập tốc độ điều khiển xe mong muốn, tọa độ lấy hàng và tọa độ trả hàng Nút Send cho phép gửi dữ liệu đã nhập lên Realtime Database để điều khiển xe Dữ liệu chỉ được gửi thành công khi các ô nhập không để trống, tốc độ nằm trong khoảng 30-250 (PWM), và tọa độ phải nằm trong số tọa độ có sẵn Nếu gửi thành công, sẽ hiển thị thông báo “Data sent successfully”, ngược lại sẽ thông báo “Input your Desire speed/ Pick up”.

Hình 4.35 Một phần code của trang chủ Home n

Khi nhập dữ liệu, người dùng có thể gặp thông báo lỗi như "Vị trí đón/trả không tồn tại!" hoặc "Vui lòng nhập tốc độ mong muốn từ 30 đến 250" Ở nửa dưới màn hình điện thoại, bản đồ hiển thị vị trí của xe AGV, với mỗi chấm tròn tương ứng với một nút tọa độ hoặc thẻ RFID Chấm tròn màu đỏ chỉ ra vị trí hiện tại của xe AGV, trong khi mũi tên bên trong chấm tròn cho biết phương hướng di chuyển Khi người dùng chạm vào bất kỳ chấm tròn nào, điện thoại sẽ hiển thị thông báo Toast về tọa độ, ví dụ như “Vị trí: 32”.

Sau khi xe vận chuyển hàng đến tọa độ mong muốn, ứng dụng sẽ Toast lên thông báo

“Package sent successfully” và đợi để được nhập dữ liệu mới vào

4.3.4 Thiết kế và lập trình trang lịch sử di chuyển – History

Fragment lịch sử di chuyển (FRAGMENT_HISTORY) hiển thị các tọa độ mà xe đã đi qua cùng với thời gian đến địa điểm đó Trong Fragment này, có một ListView trình bày danh sách thời gian và tọa độ đã di chuyển của xe, và danh sách này được cập nhật tự động khi có thêm dữ liệu mới.

Hình 4.36 Giao diện Home của ứng dụng n

Lịch sử di chuyển của xe được cập nhật và lưu trữ trực tiếp lên Realtime Database Ứng dụng sẽ lấy dữ liệu từ nhánh History của Realtime Database và hiển thị dưới dạng ListView Dưới ListView có một nút cho phép người dùng xóa lịch sử di chuyển bằng cách xóa trực tiếp dữ liệu trong nhánh History của Realtime Database.

4.3.5 Thiết kế và lập trình trang tra cứu thông tin – Information

Trang tra cứu thông tin (FRAGMENT_INFORMATION) được thiết kế để tra cứu các thông tin liên quan đến tọa độ Người dùng có thể tự viết và lưu trữ thông tin, chẳng hạn như chi tiết về vật phẩm được xếp tại tọa độ cụ thể Tất cả thông tin này được lưu trữ trên Realtime Database, cho phép người dùng thay đổi dữ liệu, và ứng dụng sẽ lấy thông tin để hiển thị dưới dạng ListView.

4.3.6 Thiết kế và lập trình trang gửi đánh giá, phản hồi – Feedback

Lập trình vi điều khiển

Trong dự án này, vi điều khiển STM32F103C8T6 đảm nhận vai trò chính trong việc đọc cảm biến, điều khiển các cơ cấu chấp hành, xử lý thuật toán và gửi dữ liệu Đồng thời, ESP32 hoạt động như một vi điều khiển giao tiếp, giúp STM32F103C8T6 kết nối với mạng Wifi, nhận và gửi dữ liệu lên Realtime Database Ngoài ra, ESP32 còn hỗ trợ hiển thị LED, buzzer để báo trạng thái và đo dung lượng pin.

Hình 4.38 Fragment Feedback của ứng dụng

Hình 4.39 Nơi lưu trữ Feedback của người dùng trên Firebase n

ESP32 có mã nguồn đơn giản do không đảm nhiệm quá nhiều tác vụ Đầu tiên, cần khai báo SSID và mật khẩu Wifi, cũng như Host Name và Database Secrets để ESP32 kết nối với Realtime Database Ngoài ra, cần khai báo đường dẫn cần thiết.

Để ESP32 có thể lấy thời gian thực, cần sử dụng “pool.ntp.org” và khai báo hàm ngắt timer cho đèn báo trạng thái Việc khai báo các chân cho vi điều khiển là rất quan trọng Tiếp theo, chúng ta cần cấu hình trạng thái hoạt động cho các chân vi điều khiển, thiết lập tốc độ truyền nhận dữ liệu cho bộ UART2, cài đặt bộ đếm cho timer, kết nối Wifi, Realtime Database và tiến hành lấy thời gian thực.

Phần giải thuật của ESP32 bao gồm việc đọc dữ liệu từ STM32F103C8T6 và kiểm tra gói dữ liệu Nếu byte 0 khác 255, việc lấy dữ liệu thất bại, đèn báo trạng thái sẽ nháy và tín hiệu trạng thái kết nối thất bại được gửi lên Realtime Database Ngược lại, nếu byte 0 là 255, ESP32 sẽ lưu các dữ liệu như phương hướng, tọa độ, tốc độ và vật cản bằng cách phân tách mảng giá trị nhận được Sau đó, ESP32 kiểm tra các giá trị mới; nếu khác với lần chạy trước, dữ liệu sẽ được cập nhật lên Realtime Database, nếu không, sẽ bỏ qua bước này Khi xe đến tọa độ mới, thời gian thực sẽ được lấy và lưu cùng tọa độ vào nhánh History của Realtime Database Cuối cùng, ESP32 sẽ lấy dữ liệu điều khiển từ Realtime Database và gửi đến STM32F103C8T6, đồng thời cập nhật lại Pre_Data cho vòng lặp này.

4.4.2 Cấu hình ngoại vi trên STM32CubeMX

Khi chuyển sang vi điều khiển ARM từ các dòng truyền thống như AVR hay PIC, người mới có thể cảm thấy choáng ngợp trước sự phức tạp Nếu học ARM với tư duy của AVR hay PIC, việc nhớ từng register và chức năng của từng bit có thể khiến bạn bỏ cuộc Thay vì ghi nhớ những chi tiết nhàm chán đó, các nhà sản xuất đã phát triển thư viện và driver chuẩn cho các chip của họ, giúp việc học và làm quen với ARM trở nên dễ dàng hơn.

Hãng ST đã từng cung cấp thư viện ngoại vi chuẩn (Standard Peripheral Libraries) để hỗ trợ người dùng, nhưng việc sử dụng chúng có thể khá phức tạp, đặc biệt là đối với những người mới bắt đầu với thế giới ARM, dễ gây cảm giác nản lòng.

Hình 4.40 Lưu đồ giải thuật của ESP32 n

81 việc khởi tạo phần cứng ( Cài đặt RCC cho hệ thống, cài đặt ngoại vi…) cũng khá phức tạp

Sau khi ra mắt công cụ STM32 MicroExplorer, ST đã phát triển thành STM32CubeMX, một chương trình hoàn thiện giúp lập trình trên STM32 dễ dàng hơn Đầu tiên, người dùng cần chọn loại vi điều khiển để cấu hình Trong phần System Core, cần cấu hình thạch anh ngoài và chế độ debug cho vi điều khiển Ở phần Clock Configuration, cấu hình vi điều khiển hoạt động ở tần số tối đa 72MHz để đảm bảo tính toán và xử lý nhanh chóng Mặc dù hoạt động ở tần số cao yêu cầu dòng điện lớn, nhưng do dự án không yêu cầu tiết kiệm năng lượng, nên hiệu năng của vi điều khiển được ưu tiên hơn.

Hình 4.41 Cấu hình System Core cho vi điều khiển STM32F103C8Tx n

Cảm biến quang điện IFM O1D100 cung cấp tín hiệu Analog với điện áp từ 0 – 10VDC, tương ứng với khoảng cách từ 0 – 10m Tuy nhiên, STM32 chỉ có khả năng đọc tín hiệu có điện áp từ 0 – 3.3VDC Do đó, cần thiết kế một mạch cầu phân áp để giảm điện áp từ 10V xuống 3.3V, giúp STM32 có thể nhận diện tín hiệu từ cảm biến Sơ đồ nguyên lý của mạch cầu phân áp sẽ được trình bày trong bài viết.

Vout là điện áp ngõ ra của mạch chia áp, giá trị điện áp này phải nhỏ hơn 3.3V, chọn

Vout được thiết lập ở mức khoảng 3.1V để đảm bảo an toàn, tránh việc điện áp có thể vượt quá 3.3V do sai số ở điện trở Đầu vào Vin được chọn là 10V Công thức tính giá trị Vout là yếu tố quan trọng trong quá trình thiết kế mạch điện.

Hình 4.42 Cấu hình xung Clock cho vi điều khiển STM32F103C8Tx

Hình 4.43 Mạch cầu phân áp n

Để giảm dòng điện chạy qua điện trở, cần lựa chọn giá trị điện trở R1 và R2 cao Theo các giá trị điện trở phổ biến trên thị trường, chọn điện trở công suất 1W với R1 là 22000Ω và R2 là 10000Ω Khi đó, giá trị Vout sẽ được xác định.

Để cấu hình bộ ADC của STM32 nhằm đọc giá trị tương tự từ cảm biến, ta kết nối Vout từ mạch cầu phân áp với chân PB1, được thiết lập là ngõ vào kênh IN9 của bộ ADC1 Phần mềm cho phép cấu hình chế độ, số kênh và tốc độ chuyển đổi của bộ ADC 12bit Chúng ta sẽ cấu hình chế độ chuyển đổi liên tục, sử dụng 1 kênh và tốc độ lấy mẫu là 239.5 chu kỳ.

STM32F103C8T6 có tổng cộng 7 Timer, bao gồm 1 Systick Timer và 2 Watchdog Timer, để lại 4 Timer cho các chức năng như ngắt, Timer Base, PWM, Encoder và Input capture Trong số đó, TIM1 là Timer đặc biệt, chuyên dụng cho việc xuất xung với các mode xuất xung và bảo vệ đầy đủ hơn so với các Timer khác TIM1 thuộc khối clock APB2, trong khi TIM2, TIM3 và TIM4 thuộc nhóm APB1 Trong dự án này, tôi sử dụng 3 bộ Timer: TIM2 cho mục đích ngắt Timer, TIM3 để điều khiển động cơ và TIM4 để đọc giá trị encoder.

Hình 4.44 Cấu hình ADC cho vi điều khiển STM32F103C8Tx n

Để xử lý giải thuật cho xe, chúng ta sử dụng bộ TIM2 và ngắt Timer với chu kỳ lặp lại mỗi 2ms Đầu tiên, cần chọn chế độ Internal Clock cho Clock Source và tính toán bộ chia Với tần số APB2 là 72MHz, ta có thể xác định tần số của timer là 72MHz/720 = 100kHz Counter Period là giá trị đếm tối đa, khi vượt quá giá trị này sẽ xảy ra tràn và kích hoạt ngắt Cụ thể, Counter Period = 199 có nghĩa là đếm từ 0 đến 199, và khi đếm lên 200 sẽ xảy ra tràn, do đó chu kỳ tràn là 200 (1/100kHz) = 0.002s = 2ms.

Để điều khiển Servo MG995 bằng TIM3, chúng ta chọn chế độ PWM Generation CH1 và CH2 cho các chân PB4 và PB5 của vi điều khiển Với giá trị Prescaler là 1440 và Counter Period là 999, chu kỳ PWM được thiết lập là 20ms, tương ứng với 1000 khoảng dùng để điều chỉnh độ rộng xung Theo nhà sản xuất, Servo MG995 hoạt động hiệu quả với độ rộng xung từ 0.5ms (góc 0°) đến 2.5ms (góc 180°), do đó, độ rộng xung cần thiết để điều khiển động cơ nằm trong khoảng từ 25 đến 125.

Hình 4.45 Cấu hình Timer2 cho vi điều khiển STM32F103C8Tx n

Để đọc giá trị Encoder trên STM32, phần cứng của Timer hỗ trợ đọc Encoder 2 kênh AB Cần chọn chế độ Encoder, đặt Prescaler là 0, và thiết lập Counter Period với giá trị tối đa 0xFFFF Đồng thời, chọn chế độ Encoder TI1 và TI2 để có thể đọc Encoder qua chân PB6 và PB7.

Hình 4.46 Cấu hình Timer3 ở chế độ tạo PWM cho vi điều khiển STM32F103C8Tx

Hình 4.47 Cấu hình Timer4 ở chế độ encoder cho vi điều khiển STM32F103C8Tx n

Chạy thử nghiệm

Trong quá trình thử nghiệm, tất cả các tính năng của xe đều hoạt động tốt, bao gồm việc nhận dữ liệu từ điện thoại, dò line, xoay góc, và nâng hạ kệ hàng Tuy nhiên, quá trình cập nhật dữ liệu lên điện thoại gặp phải sự trì hoãn lớn do giao tiếp giữa ESP32 và Firebase chậm, mất tới 300ms cho mỗi lần gửi hoặc nhận dữ liệu từ Realtime Database Điều này dẫn đến việc các giá trị cập nhật như tốc độ xe, vị trí, và phương hướng bị trễ, khiến ứng dụng có thể bị chậm lên đến 1,8 giây Mặc dù không ảnh hưởng đến di chuyển của xe, nhưng sự trễ này gây khó khăn cho người dùng trong việc nhận dữ liệu.

4.6 Tìm lỗi và cải thiện Để khắc phục vấn đề trì hoãn trong giao tiếp, trước tiên ta cần phải xác định rõ vấn đề đến từ đâu Thông qua thử nghiệm và kiểm tra lại các thuật toán, em đã xác định được sự trì hoãn trong quá trình giao tiếp đến từ Realtime Database Tuy nhiên việc trì hoãn này chỉ xảy ra khi ta tiến hành gửi hoặc lấy dữ liệu từ Realtime Database, việc giao tiếp giữa Realtime Database với các thiết bị như smartphone hầu như xảy ra tức thì Lý do trì hoãn

Hình 4.58 Hình ảnh chạy thử nghiệm của xe AGV n

Trong việc trao đổi dữ liệu với Realtime Database, việc gửi trước các đường truyền là cần thiết để xác nhận giao tiếp và bảo mật của Firebase Thời gian trì hoãn trong quá trình gửi dữ liệu phụ thuộc vào tốc độ mạng; với mạng Wifi gia đình, thời gian trì hoãn khoảng 290 – 310ms, trong khi với mạng 4G từ điện thoại, thời gian này có thể dao động từ 800ms đến 1200ms Điều khiển thiết bị có thể thực hiện qua hai phương pháp: điều khiển cục bộ và điều khiển qua đám mây Hệ thống đang phát triển theo hướng Cloud control, cho phép điều khiển và giám sát từ xa, tuy nhiên cần chấp nhận một mức độ trì hoãn trong giao tiếp Để giảm thiểu trì hoãn khi gửi dữ liệu lên Realtime Database, dữ liệu sẽ được nén thành một gói và gửi một lần trong mỗi vòng lặp của ESP32, chỉ mất khoảng 300ms (có thể tối ưu hơn tùy theo tốc độ mạng) để gửi toàn bộ dữ liệu của xe Việc lấy dữ liệu từ Realtime Database chỉ thực hiện khi xe ở vị trí chờ (Step = 0) và sẽ ngừng khi đã nhận dữ liệu thành công, tiếp tục lấy dữ liệu sau khi hoàn thành quy trình hoạt động Gói dữ liệu Data_package chứa các thông số của xe như lượng pin, tốc độ động cơ, phương hướng, tọa độ, vật cản, tiến trình và kết nối, được xác định bằng 12 ký tự.

Hình 4.59 Cơ sở dữ liệu lưu trên Realtime Database n

Trong bài viết này, chúng tôi sẽ trình bày các thông số quan trọng liên quan đến xe tự hành Đầu tiên, % Pin cho biết lượng pin hiện tại của xe, dao động từ 0% đến 100% Tốc độ động cơ được tính bằng số xung trên 2ms, phản ánh tốc độ thực tế của xe Phương hướng cho biết hướng di chuyển của xe, với các giá trị 0, 1, 2, và 3 tương ứng với Bắc, Đông, Nam và Tây Tọa độ thể hiện vị trí hiện tại của xe trên bản đồ Vật cản cho biết liệu xe có gặp phải vật cản hay không, với 0 là không có và 1 là có Tiến trình mô tả giai đoạn của xe trong quy trình, từ việc chờ nhiệm vụ đến hạ kệ hàng Cuối cùng, kết nối thể hiện trạng thái kết nối của xe với vi điều khiển, với 0 là ngắt kết nối và 1 là kết nối tốt Đối với gói dữ liệu Instruction_package, đây là gói dữ liệu do người dùng gửi từ điện thoại thông minh đến Realtime Database, bao gồm 7 ký tự được xác định rõ ràng.

Tốc độ di chuyển của xe được xác định trong khoảng từ 30 đến 250, cho phép điều chỉnh theo nhu cầu Tọa độ lấy hàng là vị trí mà xe di chuyển đến để nhấc kệ hàng, trong khi tọa độ trả hàng là điểm đến để trả kệ hàng và hoàn tất quy trình.

% Pin Tốc độ động cơ Tọa độ

Phương hướng Vật cản Tiến trình

Tốc độ di chuyển Tọa độ lấy hàng

Kết quả thu được đã đáp ứng đầy đủ các yêu cầu đã đề ra, với xe có khả năng tự hành từ điểm xuất phát đến điểm nhận hàng và vận chuyển hàng hóa đến địa điểm quy định Giao tiếp giữa xe và Realtime Database được duy trì ổn định, trong khi ứng dụng điện thoại hiển thị các thông số của xe một cách rõ ràng Độ trễ được giữ ở mức 300ms cho mỗi lần làm mới thông tin trên ứng dụng Xe di chuyển theo đường đi ổn định và xoay góc chính xác nhờ vào encoder của động cơ Hệ thống nâng hạ kệ hoạt động ổn định với tải trọng 2kg, trong khi tốc độ động cơ được điều khiển chính xác thông qua encoder và thuật toán PID Cảm biến vật cản cùng với cơ cấu xoay cảm biến đã giúp xử lý hiệu quả các tình huống có vật cản, đảm bảo xe dừng đúng lúc Các chức năng như đăng nhập và đăng ký tài khoản của ứng dụng hoạt động tốt, cùng với khả năng gửi phản hồi và tra cứu thông tin tại các địa điểm của sa bàn.

Hình 4.60 Sản phẩm hoàn thiện n

Link video về quy trình thực hiện đề tài và chạy xe trên sa bàn: https://www.youtube.com/watch?v=XcqXCyezCec

Hình 4.61 Phần trong xe sau khi đã hoàn thành

Hình 4.62 Xe đang di chuyển trên sa bàn n

Kết quả

Kết quả đạt được đã đáp ứng đầy đủ các yêu cầu đề ra, với xe có khả năng tự hành từ điểm xuất phát đến điểm nhận hàng để vận chuyển hàng hóa đến địa điểm quy định Giao tiếp giữa xe và Realtime Database ổn định, ứng dụng điện thoại hiển thị thông số của xe một cách rõ ràng Độ trễ được duy trì ở mức 300ms cho mỗi lần làm mới thông tin trên ứng dụng Xe di chuyển theo đường đi ổn định và xoay góc chính xác nhờ vào encoder của động cơ Hệ thống nâng hạ kệ hoạt động ổn định với tải trọng 2kg Tốc độ động cơ được điều khiển chính xác nhờ vào encoder và thuật toán điều khiển PID Cảm biến vật cản và cơ cấu xoay cảm biến đã giúp xử lý hiệu quả các tình huống có vật cản, đảm bảo xe dừng đúng lúc Các chức năng như đăng nhập và đăng ký tài khoản của ứng dụng hoạt động trơn tru, cùng với khả năng gửi phản hồi và tra cứu thông tin tại các địa điểm của sa bàn cũng hoạt động tốt.

Hình 4.60 Sản phẩm hoàn thiện n

Link video về quy trình thực hiện đề tài và chạy xe trên sa bàn: https://www.youtube.com/watch?v=XcqXCyezCec

Hình 4.61 Phần trong xe sau khi đã hoàn thành

Hình 4.62 Xe đang di chuyển trên sa bàn n

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI

Kết luận

Sau quá trình thực hiện đề tài, em đã tiếp thu nhiều kiến thức mới về các dòng xe tự hành AGV trong công nghiệp và ngôn ngữ lập trình Java Em đã làm quen với IDE Android Studio và tự tay phát triển một ứng dụng di động Bên cạnh đó, em cũng học cách thiết kế mạch PCB trên Altium Designer và thực hiện mạch PCB thủ công Em thiết kế xe bằng phần mềm Solidworks, gia công và lắp ráp xe hoàn chỉnh, cũng như lập trình trên hai dòng vi điều khiển khác nhau và giao tiếp giữa chúng.

Sau thời gian nghiên cứu, tôi đã hoàn thành mục tiêu đề tài "Nghiên cứu, thiết kế và chế tạo xe AGV điều khiển từ xa bằng điện thoại" Qua đó, tôi đã tích lũy được kiến thức về chế tạo máy, lập trình nhúng và phát triển ứng dụng điện thoại trên hệ điều hành Android Các mục tiêu cụ thể mà tôi đã đạt được bao gồm việc nắm vững các kỹ thuật thiết kế và lập trình liên quan đến xe AGV.

- Thiết kế xe trên phần mềm Solidworks

- Nắm được các ngôn ngữ lập trình C, Java

- Hiểu được vi điều khiển họ ARM – STM32F103C8T6

- Hiểu được vi điều khiển ESP32

- Nắm được các chuẩn giao tiếp UART, SPI và sử dụng chúng

- Tính toán và sử dụng mạch chuyển đổi tương tự ra số

- Nắm được nguyên lý và điều khiển được động DC có kèm encoder

- Tính toán và lựa chọn động cơ phù hợp với thực tế

- Sử dụng mạch đọc thẻ RFID và dò line

- Thiết kế ứng dụng điện thoại có trang đăng nhập và hiển thị các dữ liệu với nhiều trang khác nhau (Navigation) n

- Thiết kế và chế tạo cảm biến quét vật cản với góc quét 180 độ dựa vào cảm biến Laser đo khoảng cách

- Giao tiếp giữa 2 vi điều khiển, gửi và lấy dữ liệu từ cơ sở dữ liệu Realtime Database

- Thiết kế mạch ra chân trên Altium

- Hoàn thành chiếc xe tự hành AGV

Nhìn chung đề tài đã đạt được các yêu cầu đặt ra tuy nhiên vẫn còn nhiều hạn chế cần được khắc phục và cải thiện như:

Việc đo dung lượng pin chỉ dựa vào điện áp trong quá trình sử dụng là không chính xác, vì khi động cơ hoạt động, hiện tượng sụt áp sẽ xảy ra, dẫn đến sự thay đổi điện áp của pin.

- Phần vỏ của xe hiện đang được làm từ mica và chưa được bọc kín toàn bộ xe

Cơ cấu nâng kệ hàng sử dụng Servo làm cơ cấu chấp hành, tuy nhiên, tải trọng nâng của Servo hiện tại vẫn còn thấp so với yêu cầu tải trọng trong ngành công nghiệp.

- Hệ thống xử lý vật cản còn rất đơn giản

Hệ thống cơ sở dữ liệu hiện tại chưa có tính liên kết, dẫn đến việc nếu có nhiều hơn một chiếc xe AGV, chúng sẽ hoạt động độc lập mà không có sự phối hợp để tìm ra giải pháp tối ưu cho thuật toán tìm đường.

5.2 Hướng phát triển Đây là một đề tài mang tính thực tiễn rất cao, hiện tại xe tự hành AGV đã được sử dụng trong nhiều nhà máy, nhà kho với mục đích vận chuyển Mẫu mã và hệ thống đa dạng, phương pháp dẫn hướng cũng khác nhau Đề tài vẫn còn rất nhiều hướng để phát triển Đầu tiên ta cần khắc phục đề tài mà em đã thực hiện:

Do hạn chế về kinh phí, sản phẩm hiện tại chưa đạt yêu cầu về khả năng chịu lực Cần cải thiện phần vỏ bằng vật liệu chịu lực cao như thép Perform 700, loại thép có cường độ và giới hạn chảy cao gấp 2-3 lần so với thép carbon thông thường, đồng thời có khả năng chống ăn mòn và mài mòn tốt Thép Perform 700 được ứng dụng rộng rãi trong sản xuất các sản phẩm như xe ép rác, xe container, cẩu trục, cánh quạt và máy nông nghiệp.

Cơ cấu nâng tối ưu cho các ứng dụng hiện đại là sử dụng xylanh điện, nhờ vào kích thước nhỏ gọn và hiệu suất cao Xylanh điện hoạt động với nguồn năng lượng 12V, tiêu thụ dòng điện thấp nhưng vẫn cung cấp lực đẩy lớn từ 1500N trở lên, thường một xe cần 2 xylanh điện Hệ thống nâng chữ X cho phép quỹ đạo nâng theo phương thẳng đứng và dễ dàng kết hợp với xylanh điện, mang lại hiệu quả tối ưu cho các thiết bị nâng.

- Phát triển hệ thống đo dung lượng pin ở trạng thái pin đang hoạt động

Hệ thống xử lý vật cản hiện đã phát triển mạnh mẽ về phần cơ khí, nhưng thuật toán xử lý vẫn cần được cải thiện Để nâng cao hiệu suất, hệ thống cần có khả năng xử lý các tình huống phức tạp hơn trong thực tế.

2 xe tiến về phía nhau thẳng hướng hoặc vuông góc Cần ưu tiên xe nào khi tình huống này xảy

Hệ thống quản lý cơ sở dữ liệu cần xử lý ưu tiên cho xe, cho phép xe nghỉ chuyển đến vị trí khác khi các xe khác đang hoạt động Tìm đường đi tối ưu bằng cách kết hợp tọa độ hiện tại của các xe sẽ nâng cao hiệu quả và tính thông minh của hệ thống.

- Phát triển hệ thống quản lý thông qua trang web Xây dựng cơ sở dữ liệu trên web cá nhân

Sử dụng camera xử lý ảnh cho phép xe di chuyển mà không cần thay đổi kết cấu nhà xưởng hoặc kho, tránh việc trang bị các line từ, line màu, thẻ RFID hay mã QR dưới sàn Tuy nhiên, việc chỉ dựa vào camera để xử lý ảnh có thể dẫn đến độ chính xác không cao, đồng thời vẫn tồn tại độ nhiễu và tính nguy hiểm trong hệ thống.

Xe tự hành AGV sử dụng cảm biến quét để tạo bản đồ môi trường xung quanh Dựa vào bản đồ kết hợp với la bàn số, AGV có khả năng xác định chính xác môi trường và lựa chọn lộ trình tối ưu để tránh vật cản.

5.3 Ứng dụng vào ngành ô tô

Với khả năng điều khiển và giám sát xe qua điện thoại di động, ứng dụng này mang lại nhiều tiện ích cho ngành ô tô Người dùng có thể điều khiển xe từ xa, phục vụ cho việc đưa đón trẻ em đến trường, vận chuyển hàng hóa, hoặc cung cấp dịch vụ cho thuê xe.

106 chuyển trên đường một cách tự động, không có sự can thiệp của người vào vấn đề lái còn là một bài toán khó

Không giống như xe AGV, ô tô di chuyển bên ngoài phải đối mặt với nhiều tham số môi trường và tình huống khác nhau Sự kết hợp giữa xe tự hành và xe người lái tạo ra một hệ thống chưa được kiểm soát Các hệ thống camera hiện tại chỉ hỗ trợ xử lý ảnh mà chưa thể giải quyết tất cả tình huống xảy ra Để cải thiện tình hình, có thể xem xét nhiều giải pháp như tạo làn đường riêng cho xe tự hành hoặc thay đổi cơ sở hạ tầng để phù hợp với chúng Tuy nhiên, bất kỳ giải pháp nào cũng đòi hỏi thời gian và chi phí đáng kể cho việc cải tiến.

[1] https://vietnamnet.vn/vn/kinh-doanh/dau-tu/mua-sam-online-bung-no-rao-riet-tim- kho-chua-hang-698884.html

[2] https://phenikaa-x.com/mot-loai-agv-moi-tai-viet-nam-do-nguoi-viet-lam-chu-cong- nghe/

[3] https://loupfunds.com/agv-deep-dive-how-amazons-2012-acquisition-sparked-a-10b- market/

[4] https://en.wikipedia.org/wiki/Automated_guided_vehicle

[5] https://tpa-fas.com.vn/Tin/tong-quan-ve-xe-tu-hanh-agv-trong-nha-may-va-loi-ich- cua-xe-tu-hanh agv

[7] https://wiki.matbao.net/firebase-la-gi-giai-phap-lap-trinh-khong-can-backend-tu- google/

[8] https://firebase.google.com/docs/database

[9] https://advancecad.edu.vn/khai-niem-co-ban-ve-truyen-thong-uart-so-do-khoi-ung- dung/

[11] ESP32 WROOM32 datasheet by Espressif Systems October 8, 2016

[12] https://www.ifm.com/us/en/product/O1D100

[13] https://hshop.vn/products/mach-rfid-rc522-nfc-13-56mhz

[14] https://hshop.vn/products/the-nhua-nfc-rfid-13-56-mhz

[15] https://www.denic.vn/vi/su-kien/tin-cong-nghe/encoder-la-gi

[16] Motor Maxon ỉ25 mm, Graphite Brushes, 20 Watt datasheet by Maxongroup

[17] https://icdayroi.com/servo-mg995

[18] https://vihoth.com/phan-mem-thiet-ke-2d-3d/solidworks/tong-quan-phan-mem- solidworks-solidworks-la-gi

[19] https://quantrimang.com/android-studio-la-gi-149713 n

[20] http://blog.thanhnt.com/stm32cubemx-cong-cu-ho-tro-cau-hinh-mcu-stm32/

[21] https://dientutuonglai.com/arduino-ide-la-gi n

Ngày đăng: 20/11/2023, 06:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN