Trải nghiệm chế tạo robot đầu tiên trên Arduino (robot “thợ săn”)

Xin chào

Trong bài viết này tôi muốn mô tả quá trình lắp ráp robot đầu tiên của mình bằng Arduino. Tài liệu này sẽ hữu ích cho những người mới bắt đầu như tôi, những người muốn làm một loại “xe đẩy tự chạy”. Bài viết mô tả các giai đoạn làm việc với các bổ sung của tôi về các sắc thái khác nhau. Liên kết đến mã cuối cùng (rất có thể không phải là mã lý tưởng nhất) được đưa ra ở cuối bài viết.

Trải nghiệm chế tạo robot đầu tiên trên Arduino (robot “thợ săn”)

Bất cứ khi nào có thể, tôi đều cho con trai tôi (8 tuổi) tham gia. Chính xác thì điều gì đã hiệu quả với nó và điều gì không - Tôi đã dành một phần của bài viết cho vấn đề này, có lẽ nó sẽ hữu ích cho ai đó.

Mô tả chung về robot

Đầu tiên, một vài lời về bản thân robot (ý tưởng). Tôi thực sự không muốn lắp ráp một cái gì đó tiêu chuẩn ngay từ đầu. Đồng thời, bộ linh kiện khá chuẩn - khung gầm, động cơ, cảm biến siêu âm, cảm biến đường truyền, đèn LED, loa tweeter. Ban đầu, một robot được phát minh từ “bộ súp” này để bảo vệ lãnh thổ của nó. Anh ta lái xe về phía người phạm tội đã vượt qua vạch tròn rồi quay trở lại trung tâm. Tuy nhiên, phiên bản này yêu cầu một đường vẽ, cộng thêm phép toán bổ sung để luôn ở trong vòng tròn.

Vì vậy, sau một hồi suy nghĩ, tôi đã thay đổi ý định một chút và quyết định chế tạo một chú robot “thợ săn”. Khi bắt đầu, nó quay quanh trục của mình, chọn mục tiêu (người) gần đó. Nếu phát hiện được “con mồi”, “thợ săn” sẽ bật đèn nhấp nháy và còi báo động rồi bắt đầu lái xe về phía nó. Khi người đó di chuyển/bỏ chạy, robot sẽ chọn mục tiêu mới và truy đuổi mục tiêu đó, v.v. Một robot như vậy không cần vòng tròn giới hạn và nó có thể hoạt động ở những khu vực rộng mở.

Như bạn có thể thấy, đây rất giống một trò chơi đuổi bắt. Mặc dù cuối cùng, robot không đủ nhanh nhưng nó tương tác một cách trung thực với những người xung quanh. Trẻ em đặc biệt thích nó (tuy nhiên, đôi khi tưởng chừng như chúng sắp giẫm phải, tim chúng lỡ nhịp…). Tôi nghĩ đây là một giải pháp tốt để phổ biến thiết kế kỹ thuật.

Cấu trúc robot

Vì vậy, chúng tôi đã quyết định ý tưởng, hãy chuyển sang cách trình bày. Danh sách các phần tử được hình thành từ những gì robot có thể làm. Mọi thứ ở đây đều khá rõ ràng, vì vậy chúng ta hãy xem ngay cách đánh số:

Trải nghiệm chế tạo robot đầu tiên trên Arduino (robot “thợ săn”)

“Bộ não” của robot là một bo mạch arduino uno (1); là một bộ được đặt hàng từ Trung Quốc. Đối với mục đích của chúng tôi, nó là khá đủ (chúng tôi tập trung vào số lượng chân được sử dụng). Từ cùng một bộ sản phẩm, chúng tôi lấy một khung xe làm sẵn (2), trên đó gắn hai bánh dẫn động (3) và một bánh sau (quay tự do) (4). Bộ sản phẩm còn bao gồm một ngăn đựng pin làm sẵn (5). Phía trước robot có cảm biến siêu âm (HC-SR04) (6), phía sau có bộ điều khiển động cơ (L298N) (7), ở giữa có đèn flash LED (8), và một chút để bên cạnh có loa tweeter (9).

Ở giai đoạn bố trí, chúng tôi xem xét:

- để mọi thứ phù hợp
- để được cân bằng
- được đặt một cách hợp lý

Các đồng nghiệp Trung Quốc của chúng tôi đã phần nào làm được điều này cho chúng tôi. Vì vậy, ngăn chứa pin nặng được đặt ở trung tâm và các bánh dẫn động nằm gần bên dưới nó. Tất cả các bảng khác đều nhẹ và có thể được đặt ở ngoại vi.

Các vấn đề:

  1. Khung xe từ bộ sản phẩm có rất nhiều lỗ xuất xưởng, nhưng tôi vẫn chưa hiểu logic trong đó là gì. Động cơ và bộ pin đã được cố định mà không gặp vấn đề gì, sau đó việc "điều chỉnh" bắt đầu bằng việc khoan các lỗ mới để cố định bảng này hoặc bảng kia.
  2. Các giá đỡ bằng đồng và các dây buộc khác từ khu vực lưu trữ đã giúp ích rất nhiều (đôi khi chúng tôi phải lấy chúng ra).
  3. Tôi chuyển các thanh cái từ mỗi bảng qua các kẹp (một lần nữa, tôi tìm thấy chúng trong kho). Rất thuận tiện, tất cả các dây đều nằm đẹp và không bị lủng lẳng.

Khối riêng lẻ

Bây giờ tôi sẽ đi qua khối và tôi sẽ kể riêng cho bạn nghe về từng điều đó.

ngăn chứa pin

Rõ ràng là robot phải có nguồn năng lượng tốt. Tùy chọn có thể khác nhau, tôi chọn tùy chọn có 4 pin AA. Tổng cộng chúng cung cấp khoảng 5 V và điện áp này có thể được cấp trực tiếp vào chân 5V của bo mạch arduino (bỏ qua bộ ổn định).

Tất nhiên, tôi đã thận trọng một chút, nhưng giải pháp này khá khả thi.

Vì cần có nguồn điện ở mọi nơi nên để thuận tiện, tôi đã tạo hai đầu nối ở trung tâm của robot: một đầu nối “phân phối” mặt đất (ở bên phải) và đầu nối thứ hai - 5 V (ở bên trái).

Trải nghiệm chế tạo robot đầu tiên trên Arduino (robot “thợ săn”)

Động cơ và trình điều khiển

Đầu tiên, về việc lắp động cơ. Giá đỡ được sản xuất tại nhà máy nhưng có dung sai lớn. Nói cách khác, động cơ có thể lắc lư vài mm sang trái và phải. Đối với nhiệm vụ của chúng tôi, điều này không quan trọng, nhưng ở một số nơi, nó có thể có tác dụng (robot sẽ bắt đầu di chuyển sang một bên). Để đề phòng, tôi đặt các động cơ song song nghiêm ngặt và cố định chúng bằng keo.

Trải nghiệm chế tạo robot đầu tiên trên Arduino (robot “thợ săn”)

Để điều khiển động cơ, như tôi đã viết ở trên, trình điều khiển L298N được sử dụng. Theo tài liệu, nó có ba chân cho mỗi động cơ: một để thay đổi tốc độ và một cặp chân cho hướng quay. Có một điểm quan trọng ở đây. Hóa ra là nếu điện áp cung cấp là 5 V thì bộ điều khiển tốc độ đơn giản là không hoạt động! Tức là nó không quay chút nào hoặc nó chuyển sang mức tối đa. Đây chính là đặc điểm khiến tôi phải “giết chết” vài buổi tối. Cuối cùng, tôi tìm thấy một đề cập ở đâu đó trên một trong các diễn đàn.

Nói chung, tôi cần tốc độ quay thấp khi xoay robot - để nó có thời gian quét không gian. Tuy nhiên, vì ý tưởng này không xuất hiện nên tôi phải thực hiện theo cách khác: rẽ nhỏ - dừng - rẽ - dừng, v.v. Một lần nữa, không quá tao nhã nhưng có thể thực hiện được.

Tôi cũng sẽ nói thêm ở đây rằng sau mỗi lần truy đuổi, robot sẽ chọn một hướng ngẫu nhiên cho một ngã rẽ mới (theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ).

thiết bị cảm biến sóng siêu âm

Trải nghiệm chế tạo robot đầu tiên trên Arduino (robot “thợ săn”)

Một phần cứng khác mà chúng tôi phải tìm kiếm giải pháp thỏa hiệp. Cảm biến siêu âm tạo ra những con số không ổn định trên chướng ngại vật thực tế. Trên thực tế, điều này đã được mong đợi. Lý tưởng nhất là nó hoạt động ở đâu đó trong các cuộc thi có bề mặt nhẵn, đều và vuông góc, nhưng nếu chân của ai đó “lướt qua” trước nó thì cần phải thực hiện xử lý bổ sung.

Khi xử lý như vậy tôi đặt Bộ lọc trung vị cho ba lần đếm. Dựa trên các thử nghiệm trên trẻ em thực sự (không có trẻ em nào bị tổn hại trong quá trình thử nghiệm!), việc bình thường hóa dữ liệu hóa ra là khá đủ. Nguyên lý vật lý ở đây rất đơn giản: chúng ta có các tín hiệu phản xạ từ cần thiết các vật thể (đưa ra khoảng cách cần thiết) và phản xạ từ những vật ở xa hơn, chẳng hạn như các bức tường. Cái sau là các phát xạ ngẫu nhiên trong các phép đo có dạng 45, 46, 230, 46, 46, 45, 45, 310, 46... Chính những thứ này đã bị bộ lọc trung vị cắt bỏ.

Sau khi xử lý xong, chúng ta sẽ có được khoảng cách đến đối tượng gần nhất. Nếu nó nhỏ hơn một giá trị ngưỡng nhất định, thì chúng ta sẽ bật báo động và lái thẳng về phía “kẻ xâm nhập”.

Flasher và còi báo động

Có lẽ là yếu tố đơn giản nhất trong tất cả những điều trên. Chúng có thể được nhìn thấy trong các bức ảnh trên. Không có gì để viết về phần cứng ở đây cả, bây giờ chúng ta hãy chuyển sang phần .

Chương trình điều khiển

Tôi không hiểu mục đích của việc mô tả mã chi tiết, ai cần nó - liên kết ở cuối bài viết, mọi thứ đều khá dễ đọc ở đó. Nhưng sẽ tốt hơn nếu giải thích cấu trúc chung.

Điều đầu tiên chúng tôi phải hiểu là robot là một thiết bị thời gian thực. Chính xác hơn thì phải nhớ, vì trước đây và bây giờ tôi vẫn làm nghề điện tử. Thế là chúng ta quên ngay thử thách sự chậm trễ(), mà họ thích sử dụng trong các bản phác thảo mẫu và chỉ đơn giản là “đóng băng” chương trình trong một khoảng thời gian nhất định. Thay vào đó, theo lời khuyên của những người có kinh nghiệm, chúng tôi giới thiệu bộ tính giờ cho từng khối. Khoảng thời gian yêu cầu đã trôi qua - hành động đã được thực hiện (tăng độ sáng của đèn LED, bật động cơ, v.v.).

Bộ hẹn giờ có thể được kết nối với nhau. Ví dụ: loa tweeter hoạt động đồng bộ với đèn flash. Điều này đơn giản hóa chương trình một chút.

Đương nhiên, chúng ta chia mọi thứ thành các chức năng riêng biệt (đèn nhấp nháy, âm thanh, rẽ, di chuyển về phía trước, v.v.). Nếu bạn không làm điều này, thì bạn sẽ không thể biết được điều gì đến từ đâu và ở đâu.

Sắc thái của sư phạm

Tôi đã làm mọi thứ được mô tả ở trên vào thời gian rảnh vào buổi tối. Một cách nhàn nhã, tôi đã dành khoảng ba tuần cho robot. Chuyện này có thể đã kết thúc ở đây nhưng tôi cũng đã hứa sẽ kể cho bạn nghe về việc làm việc với một đứa trẻ. Có thể làm gì ở tuổi này?

Làm việc theo hướng dẫn

Trước tiên, chúng tôi đã kiểm tra từng chi tiết riêng biệt - đèn LED, loa tweeter, động cơ, cảm biến, v.v. Có một số lượng lớn các ví dụ được tạo sẵn - một số ngay trong môi trường phát triển, một số khác có thể tìm thấy trên Internet. Điều này chắc chắn làm tôi hạnh phúc. Chúng tôi lấy mã, kết nối bộ phận, đảm bảo rằng nó hoạt động, sau đó chúng tôi bắt đầu thay đổi nó cho phù hợp với nhiệm vụ của mình. Trẻ thực hiện các kết nối theo sơ đồ và dưới sự giám sát của tôi. Điều này tốt. Bạn cũng cần có khả năng làm việc đúng theo hướng dẫn.

Thứ tự công việc (“từ cụ thể đến chung”)

Đây là một điểm khó khăn. Bạn cần biết rằng một dự án lớn (“chế tạo robot”) bao gồm các nhiệm vụ nhỏ (“kết nối cảm biến”, “kết nối động cơ”...), và những nhiệm vụ đó lần lượt bao gồm các bước nhỏ hơn (“tìm một chương trình,” “kết nối bảng mạch.” ", "tải chương trình cơ sở"...). Bằng cách thực hiện ít nhiều các nhiệm vụ dễ hiểu của cấp độ thấp hơn, chúng ta “đóng” các nhiệm vụ của cấp độ trung bình và từ đó hình thành kết quả chung. Tôi đã giải thích, nhưng tôi nghĩ sự nhận ra sẽ không đến sớm. Ở đâu đó, có lẽ là ở tuổi thiếu niên.

Lắp đặt

Khoan, ren, ốc vít, đai ốc, hàn và mùi nhựa thông - chúng ta sẽ ở đâu nếu không có nó? Đứa trẻ đã nhận được kỹ năng cơ bản “Làm việc với mỏ hàn” - nó đã hàn được một số mối nối (tôi giúp một chút, tôi sẽ không giấu). Đừng quên giải thích về an toàn.

Công việc máy tính

Tôi đã viết chương trình cho robot, nhưng tôi vẫn đạt được một số kết quả thuận lợi.

Thứ nhất: tiếng Anh. Họ mới bắt đầu học ở trường nên chúng tôi đang cố gắng tìm ra pishalka, migalka, yarkost và các phiên âm khác là gì. Ít nhất chúng tôi đã hiểu điều này. Tôi cố tình không sử dụng các từ tiếng Anh bản địa vì chúng tôi chưa đạt đến trình độ này.

Thứ hai: làm việc hiệu quả. Chúng tôi đã dạy các tổ hợp phím nóng và cách thực hiện nhanh chóng các thao tác tiêu chuẩn. Định kỳ, khi chúng tôi viết chương trình, tôi và con trai đổi chỗ cho nhau và tôi nói những việc cần làm (thay thế, tìm kiếm, v.v.). Tôi đã phải lặp đi lặp lại nhiều lần: “nhấp đúp vào chọn”, “giữ Shift”, “giữ Ctrl”, v.v. Quá trình học ở đây không nhanh nhưng tôi nghĩ các kỹ năng sẽ dần dần được lắng đọng “trong vỏ não”.

Văn bản bị ẩnBạn có thể nói rằng những điều trên là gần như hiển nhiên. Nhưng thành thật mà nói, mùa thu năm nay tôi có cơ hội dạy khoa học máy tính ở lớp 9 tại một trường. Điều đó thật kinh khủng. Học sinh không biết những điều cơ bản như Ctrl + Z, Ctrl + C và Ctrl + V, chọn văn bản trong khi giữ Shift hoặc nhấp đúp vào một từ, v.v. Điều này bất chấp thực tế là họ đang học năm thứ ba về khoa học máy tính... Hãy tự rút ra kết luận.

Thứ ba: gõ bằng cảm ứng. Tôi giao những nhận xét trong đoạn mã cho trẻ gõ (để trẻ thực hành). Chúng ta ngay lập tức đặt tay chính xác để các ngón tay dần dần ghi nhớ vị trí các phím.

Như bạn có thể thấy, chúng tôi vẫn chỉ mới bắt đầu. Chúng ta sẽ tiếp tục trau dồi kỹ năng và kiến ​​thức của mình; chúng sẽ hữu ích trong cuộc sống.

Nhân tiện, về tương lai...

Phát triển hơn nữa

Robot được tạo ra, lái xe, nhấp nháy và phát ra tiếng bíp. Gì bây giờ? Lấy cảm hứng từ những gì chúng tôi đã đạt được, chúng tôi có kế hoạch cải tiến nó hơn nữa. Có một ý tưởng chế tạo một chiếc điều khiển từ xa - giống như một chiếc xe thám hiểm mặt trăng. Sẽ rất thú vị khi ngồi trước một chiếc điều khiển từ xa để điều khiển chuyển động của một robot đang lái ở một nơi hoàn toàn khác. Nhưng đó sẽ là một câu chuyện khác...

Và cuối cùng, trên thực tế, những anh hùng của bài viết này (video bằng cách nhấp vào):

Trải nghiệm chế tạo robot đầu tiên trên Arduino (robot “thợ săn”)

Cảm ơn bạn!

Liên kết mã

Nguồn: www.habr.com

Thêm một lời nhận xét