Mục lục:

Robot hiện diện ảo: 15 bước
Robot hiện diện ảo: 15 bước

Video: Robot hiện diện ảo: 15 bước

Video: Robot hiện diện ảo: 15 bước
Video: Khi bạn thua về cơ bắp thì hãy tập trung vào trí óc| Ben Eagle | Eagles Training Center | #Shorts 2024, Tháng mười một
Anonim
Image
Image
Xe Robot di động
Xe Robot di động

Robot di động này tương tác với xung quanh vật lý của nó, bằng cách đại diện cho "sự hiện diện ảo" của người điều khiển nó từ xa. Nó có thể được truy cập bởi bất kỳ ai, ở bất kỳ đâu trên thế giới, để phân phối các món ăn và chơi với bạn.

Công việc ở đây được phát triển bởi hai người (một ở Đức và một ở Mỹ) như một nỗ lực vượt ra khỏi các phương tiện truyền thông dựa trên internet truyền thống bằng cách tạo ra một giao diện vật lý để tương tác từ xa. Khi COVID-19 tiếp tục ảnh hưởng đến thế giới và mọi người có trách nhiệm hạn chế sự tiếp xúc cơ thể của chúng ta với mọi người, chúng tôi cố gắng khôi phục mối liên hệ hữu hình vốn là một phần của tương tác vật lý.

Nó dựa trên ESP32-Máy ảnh-Robot-FPV-Giáo viên-Nhập cảnh và được sửa đổi để bao gồm cảm biến khoảng cách, bộ phân phối xử lý và khả năng "điều khiển từ mọi nơi trên thế giới", miễn là bạn có kết nối internet ổn định.

Quân nhu

Dự án có 4 phần chính - Xe Robot di động, Máy phân phối chip, Cần điều khiển và Thiết lập giao tiếp mạng.

Xe Robot di động

  • Breadboard
  • Động cơ dẫn động 2 bánh và Bộ rô-bốt khung gầm (bao gồm bánh xe, động cơ DC, bảng gắn và vít)
  • Arduino Mega 2560 (nếu bạn xây dựng mà không có cảm biến khoảng cách hoặc Bộ phân phối chip, một Uno sẽ có đủ chân)
  • (3) Pin 9V (có thêm một vài viên nữa vì bạn sẽ rút hết pin khi gỡ lỗi)
  • Mô-đun cấp nguồn LM2596 Bộ điều chỉnh DC / DC Buck 3A (hoặc tương tự)
  • Mô-đun Wifi ESP32-CAM
  • FT232RL FTDI Bộ chuyển đổi nối tiếp USB sang TTL (để lập trình ESP32-CAM)
  • Cảm biến khoảng cách siêu âm HC-SR04
  • Trình điều khiển động cơ L298N
  • (3) LEDS (bất kỳ màu nào)
  • (3) Điện trở 220 Ohm

Máy rút chip

  • (2) SG90 Servos
  • Bìa cứng / bìa cứng

Cần điều khiển

  • Arduino Uno
  • Mô-đun cần điều khiển
  • Mini Breadboard, (1) LED, (1) Điện trở 220 Ohm (tùy chọn)

Khác

Rất nhiều dây cáp Jumper của bảng mạch ghim

Kiên nhẫn =)

Bước 1: Xe Robot di động

Khung xe Robot đóng vai trò như một nền tảng di động, với Arduino MEGA là bộ điều khiển vi mô chính điều khiển động cơ, đọc các giá trị cảm biến và vận hành các servo. Hầu hết các hành động được thực hiện bằng cách để Arduino MEGA nhận lệnh thông qua giao tiếp nối tiếp, được gửi từ ESP32-CAM. Trong khi ESP32 cung cấp tính năng phát trực tiếp bằng camera để điều khiển robot, chức năng khác của nó là quản lý kết nối không dây giữa robot và máy chủ, do đó cho phép người dùng điều khiển nó từ mọi nơi trên thế giới. ESP32 nhận lệnh từ trang web thông qua thao tác nhấn phím và gửi chúng đến Arduino MEGA dưới dạng giá trị ký tự. Dựa trên giá trị nhận được, chiếc xe sẽ tiến, lùi, v.v. Vì điều khiển từ xa qua internet phụ thuộc vào nhiều yếu tố bên ngoài bao gồm độ trễ cao, chất lượng luồng kém và thậm chí ngắt kết nối, một cảm biến khoảng cách được tích hợp để giữ cho robot không bị rơi * Do yêu cầu điện năng cao và dao động của chip ESP32, nên sử dụng Bộ điều chỉnh nguồn điện để sử dụng với nguồn pin (xem sơ đồ đấu dây).

Bước 2: Xe Robot di động - Sơ đồ mạch

Xe Robot di động - Sơ đồ mạch
Xe Robot di động - Sơ đồ mạch

Chúng tôi sẽ hướng dẫn bạn cách lắp ráp từng bước này.

Bước 3: Xe Robot di động - Lắp ráp (Động cơ)

Xe Robot di động - Lắp ráp (Động cơ)
Xe Robot di động - Lắp ráp (Động cơ)

Sau khi bạn lắp ráp khung 2WD, chúng tôi bắt đầu bằng cách kết nối động cơ và pin với Arduino MEGA thông qua trình điều khiển L298N.

Bước 4: Xe Robot di động - Lắp ráp (Cảm biến khoảng cách)

Xe Robot di động - Lắp ráp (Cảm biến khoảng cách)
Xe Robot di động - Lắp ráp (Cảm biến khoảng cách)

Vì có khá nhiều thành phần để kết nối, chúng ta hãy thêm một breadboard, để chúng ta có thể kết nối nguồn điện và mặt đất được chia sẻ dễ dàng hơn. Sau khi chúng tôi sắp xếp lại các dây, kết nối cảm biến khoảng cách và cố định nó ở phía trước của robot.

Bước 5: Xe Robot di động - Lắp ráp (ESP32 CAM)

Xe Robot di động - Lắp ráp (ESP32 CAM)
Xe Robot di động - Lắp ráp (ESP32 CAM)

Tiếp theo, kết nối mô-đun ESP32-CAM và cố định nó bên cạnh cảm biến khoảng cách gần phía trước của rô bốt. Hãy nhớ rằng thành phần khá ngốn điện này yêu cầu pin riêng và bộ điều chỉnh DC.

Bước 6: Xe Robot di động - Lắp ráp (Máy rút chip)

Xe Robot di động - Lắp ráp (Máy rút chip)
Xe Robot di động - Lắp ráp (Máy rút chip)

Bây giờ, hãy thêm bộ phân phối chip (thêm về điều này trong phần "Bộ phân phối chip"). Nối dây hai servo theo sơ đồ Fritzing và cố định bộ phân phối ở đuôi rô bốt.

Bước 7: Xe Robot di động - Lắp ráp (Cookie!)

Xe Robot di động - Lắp ráp (Cookie!)
Xe Robot di động - Lắp ráp (Cookie!)

Cuối cùng, chúng tôi thêm đồ ăn vặt vào bộ phân phối!

Bước 8: Xe Robot di động - Mã Arduino

RobotCar_Code là mã bạn sẽ cần tải trên Arduino Mega.

Đây là cách nó hoạt động: Arduino lắng nghe các byte được gửi từ ESP32 thông qua giao tiếp nối tiếp trên băng tần 115200. Dựa trên byte nhận được, xe sẽ di chuyển tới, lùi, sang trái, sang phải, v.v. bằng cách gửi điện áp CAO hoặc THẤP đến động cơ để điều khiển hướng, cũng như biến PWM trong khoảng 0-255 để điều khiển tốc độ. Để tránh va chạm, mã này cũng đọc các giá trị đến từ cảm biến khoảng cách và nếu khoảng cách nhỏ hơn một ngưỡng quy định, rô bốt sẽ không di chuyển về phía trước. Cuối cùng, nếu Arduino nhận được lệnh phân phối món ăn, nó sẽ kích hoạt các servos trong Bộ phân phối chip.

Bước 9: Xe Robot di động - Mã ESP32

ESP32 cho phép giao tiếp giữa máy chủ và Arduino thông qua Wifi. Nó được lập trình riêng với Arduino và có mã riêng:

  • ESP32_Code.ino là mã để ESP32 gửi thông tin đến Arduino
  • app_httpd.cpp là mã cần thiết cho máy chủ web ESP32 mặc định và đặt chức năng lắng nghe các lần nhấn phím. Tốt cho việc gỡ lỗi và thử nghiệm trên wifi cục bộ. Nó không được sử dụng để liên lạc bên ngoài mạng cục bộ.
  • camera_index.h là mã html cho ứng dụng web mặc định
  • camera_pins.h xác định các chân tùy thuộc vào kiểu ESP32

Mã ESP32 sử dụng thư viện Wifi cũng như Tiện ích bổ sung ESP32, có thể được cài đặt trong Arduino IDE bằng cách làm theo các bước sau:

  1. Trong IDE Arduino, đi tới Tệp> Tùy chọn
  2. Sau đó, trong tab Cài đặt bên dưới URL trình quản lý bảng bổ sung, hãy nhập thông tin sau "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Bây giờ hãy mở Trình quản lý bảng và đi tới Công cụ> Bảng> Trình quản lý bảng và tìm kiếm ESP32 bằng cách gõ "ESP32"
  4. Bạn sẽ thấy "esp32 của Espressif Systems". Nhấp vào Cài đặt.
  5. Bây giờ phần bổ trợ ESP32 sẽ được cài đặt. Để kiểm tra, hãy quay lại Arduino IDE và chuyển đến Tools> Board và chọn "ESP32 Wrover Module".
  6. Một lần nữa đi tới Công cụ> Tốc độ tải lên và đặt nó thành "115200".
  7. Cuối cùng, đi tới Công cụ> Sơ đồ phân vùng và đặt nó thành "ỨNG DỤNG khổng lồ (3MB Không OTA / 1MB SPIFFS)
  8. Khi bạn đã hoàn thành việc này, tôi khuyên bạn nên làm theo hướng dẫn này của RandomNerdTutorials, giải thích chi tiết cách hoàn thiện thiết lập ESP32 và tải lên mã bằng FTDI Programmer

Bước 10: Máy rút chip

Máy rút chip
Máy rút chip

Chip Dispenser là một bổ sung rẻ tiền cho robot di động cho phép nó ảnh hưởng đến môi trường địa phương và tương tác với người / động vật bằng cách để lại một món ăn ngon. Nó bao gồm một hộp bên ngoài bằng bìa cứng với 2 servo gắn bên trong, cũng như một hộp giấy bìa bên trong để chứa các vật phẩm (chẳng hạn như kẹo hoặc đồ ăn cho chó) để phân phối. Một servo hoạt động như một cổng trong khi servo kia đẩy vật phẩm ra ngoài.

*Tất cả các kích thước là bằng mm

Bước 11: Cần điều khiển

Cần điều khiển
Cần điều khiển

Mặc dù có thể thú vị khi điều khiển rô bốt bằng bàn phím, nhưng còn thú vị và trực quan hơn khi sử dụng cần điều khiển, nơi rô bốt phản ứng trực tiếp dựa trên hướng bạn đẩy. Vì robot này được kích hoạt thông qua các lần nhấn phím được ghi lại trên trang web, chúng tôi cần phím điều khiển để mô phỏng bàn phím. Bằng cách này, người dùng không có cần điều khiển vẫn có thể điều khiển robot trực tiếp từ bàn phím, nhưng những người khác có thể sử dụng cần điều khiển.

Đối với điều này, chúng tôi chỉ có Arduino Uno không có khả năng sử dụng thư viện vì vậy chúng tôi đã lập trình nó trực tiếp bằng cách sử dụng giao thức USB được gọi là Cập nhật phần mềm thiết bị (DFU) cho phép arduino được flash bằng phần mềm bàn phím USB HID chung.. Nói cách khác, khi arduino được cắm vào usb, nó không còn được nhận dạng là arduino nữa mà là bàn phím!

Bước 12: Cần điều khiển - Sơ đồ mạch

Cần điều khiển - Sơ đồ mạch
Cần điều khiển - Sơ đồ mạch

Đây là cách chúng tôi kết nối cần điều khiển.

Bước 13: Cần điều khiển - Trình mô phỏng bàn phím

Để Arduino Uno của bạn mô phỏng bàn phím, bạn cần phải lập trình trực tiếp chip Atmega16u2 trên Arduino thông qua Cập nhật chương trình cơ sở thiết bị thủ công (DFU). Các bước sau đây sẽ mô tả quy trình cho máy Windows và hy vọng sẽ giúp bạn tránh được một số sự cố mà chúng tôi gặp phải.

Bước đầu tiên là ghi thủ công trình điều khiển USB Atmel vào Arduino để nó được công nhận là USB chứ không phải Arduino, cho phép nó được flash bằng lập trình FLIP.

  1. Tải xuống Lập trình FLIP của Atmel từ đây
  2. Cắm Arduino Uno của bạn
  3. Đi tới Trình quản lý thiết bị và tìm Arduino. Nó sẽ nằm dưới COM hoặc Thiết bị không xác định. Cắm và rút ra để đảm bảo đây là thiết bị chính xác.
  4. Khi bạn đã tìm thấy Arduino Uno trong Trình quản lý thiết bị, hãy nhấp chuột phải vào nó và chọn thuộc tính> Trình điều khiển> Cập nhật trình điều khiển> Duyệt máy tính của tôi cho phần mềm trình điều khiển> Hãy để tôi chọn từ danh sách trình điều khiển có sẵn trên máy tính của tôi> Có đĩa> Duyệt đến tập tin "atmel_usb_dfu.inf" và chọn nó. Điều này phải nằm trong thư mục mà Bộ lập trình FLIP Atmel của bạn đã được cài đặt. Trên máy tính của tôi, nó ở đây: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Cài đặt trình điều khiển
  6. Bây giờ quay lại Trình quản lý thiết bị, bạn sẽ thấy "Thiết bị USB Atmel" với Arduino Uno hiện được gắn nhãn là ATmega16u2!

Bây giờ máy tính nhận ra Arduino Uno như một Thiết bị USB, chúng ta có thể sử dụng Trình lập trình FLIP để flash nó với 3 tệp riêng biệt và biến nó thành bàn phím.

Nếu bạn đã rút phích cắm Arduino Uno của mình sau phần đầu tiên, hãy cắm lại.

  1. Mở FLIP
  2. Đặt lại Arduino Uno bằng cách kết nối ngắn nguồn điện với mặt đất.
  3. Nhấp vào Lựa chọn thiết bị (biểu tượng giống như một vi mạch) và chọn ATmega16U2
  4. Nhấp vào Chọn phương tiện giao tiếp (biểu tượng giống như dây usb) và chọn USB. Nếu bạn hoàn thành phần đầu tiên một cách chính xác, các nút màu xám khác sẽ có thể sử dụng được.
  5. Đi tới Tệp> Tải tệp Hex> và tải tệp lên Arduino-usbserial-una.hex
  6. Trong cửa sổ FLIP, bạn sẽ thấy ba phần: Luồng hoạt động, Thông tin bộ đệm FLASH và ATmega16U2. Trong Luồng hoạt động, hãy chọn hộp cho Xóa, Chương trình và Xác minh, sau đó bấm Chạy.
  7. Khi quá trình này hoàn tất, hãy nhấp vào Bắt đầu ứng dụng trong phần ATmega16U2.
  8. Chu kỳ cắm arduino bằng cách rút phích cắm khỏi máy tính và cắm lại.
  9. Đặt lại Arduino Uno bằng cách kết nối ngắn nguồn điện với mặt đất.
  10. Mở Arduino IDE và tải tệp JoyStickControl_Code.ino lên bảng.
  11. Chu kỳ cắm arduino bằng cách rút phích cắm ra khỏi máy tính và cắm lại.
  12. Đặt lại arduino bằng cách kết nối ngắn nguồn điện với mặt đất.
  13. Quay lại FLIP, đảm bảo Lựa chọn thiết bị cho biết Atmega16U2
  14. Nhấp vào Chọn phương tiện giao tiếp và chọn USB.
  15. Đi tới Tệp> Tải tệp Hex> và tải tệp lên Arduino-keyboard-0.3.hex
  16. Trong cửa sổ FLIP, bạn sẽ thấy ba phần: Luồng hoạt động, Thông tin bộ đệm FLASH và ATmega16U2. Trong Luồng hoạt động, chọn hộp cho Xóa, Chương trình và Xác minh, sau đó bấm Chạy.
  17. Khi quá trình này hoàn tất, hãy nhấp vào Bắt đầu ứng dụng trong phần ATmega16U2.
  18. Chu kỳ cắm arduino bằng cách rút phích cắm ra khỏi máy tính và cắm lại.
  19. Bây giờ khi bạn đi tới Trình quản lý thiết bị, sẽ có Thiết bị bàn phím HID mới trong Bàn phím.
  20. Mở sổ ghi chú hoặc bất kỳ trình soạn thảo văn bản nào và bắt đầu di chuyển cần điều khiển. Bạn sẽ thấy những con số đang được đánh máy!

Nếu bạn muốn thay đổi mã trong bản phác thảo Arduino, chẳng hạn như viết lệnh mới vào cần điều khiển, bạn sẽ cần phải flash nó với cả 3 tệp mỗi lần.

Một số liên kết hữu ích: Không tìm thấy Arduino DFUAtLibUsbDfu.dll

Trình giả lập bàn phím này dựa trên hướng dẫn này của Michael vào ngày 24 tháng 6 năm 2012.

Bước 14: Giao tiếp mạng

Truyền thông mạng
Truyền thông mạng

Để nhận luồng video và gửi lệnh tới rô bốt từ mọi nơi trên thế giới, chúng tôi cần một cách lấy dữ liệu đến và đi từ ESP32-CAM. Điều này được thực hiện trong hai phần, một trình xử lý kết nối trên mạng cục bộ của bạn và một máy chủ công cộng. Tải xuống ba tệp để đạt được điều này:

  • Handlers.py: chuyển tiếp thông tin từ ESP32-CAM và máy chủ công cộng (được thử nghiệm trên Python 3.8)
  • Flask_app.py: xác định cách ứng dụng của bạn phản hồi các yêu cầu đến.
  • Robot_stream.html: hiển thị video trong trình duyệt của bạn và nghe lệnh thông qua bàn phím / phím điều khiển (được thử nghiệm trên Chrome)

Trình xử lý kết nối Bạn có thể viết mã này trực tiếp trong app_httpd.cpp, nhưng để gỡ lỗi dễ dàng hơn, chúng tôi sử dụng tập lệnh Python chạy trên PC được kết nối với cùng một mạng. Mở handlers.py và cập nhật địa chỉ IP và tên người dùng của riêng bạn và bạn đã sẵn sàng. Luồng sẽ bắt đầu khi bạn chạy tệp này.

Máy chủ công cộng Để truy cập mọi thứ trên internet, bạn có thể khởi động máy chủ với PaaS mà bạn chọn. Trên pythonanywhere (PA), việc thiết lập này mất chưa đầy 5 phút:

  1. Đăng ký tài khoản và đăng nhập
  2. Chuyển đến tab “Web” và nhấn “Thêm ứng dụng web mới”, chọn Flask và Python 3.6
  3. Sao chép flask_app.py vào thư mục / mysite
  4. Sao chép robot_stream.html vào thư mục / mysite / templates
  5. Nhấp vào “Tải lại”

Và… bạn đã sẵn sàng!

Tuyên bố từ chối trách nhiệm: Quy trình kết nối mạng này nhanh chóng và đơn giản nhưng rất xa lý tưởng. RTMP hoặc các ổ cắm sẽ thích hợp hơn để phát trực tuyến, nhưng chúng không được hỗ trợ trên PA và yêu cầu một số kinh nghiệm với mạng và thiết lập máy chủ. Bạn cũng nên thêm một số cơ chế bảo mật để kiểm soát quyền truy cập.

Bước 15: Kết hợp tất cả lại với nhau

Bây giờ, bật rô-bốt của bạn, chạy handlers.py trên máy tính (được kết nối với cùng mạng với rô-bốt) và bạn có thể điều khiển rô-bốt từ trình duyệt dựa trên url bạn đặt từ bất kỳ đâu bạn muốn. (ví dụ:

Đề xuất: