Mục lục:

Robot camera ESP32 - FPV: 6 bước
Robot camera ESP32 - FPV: 6 bước

Video: Robot camera ESP32 - FPV: 6 bước

Video: Robot camera ESP32 - FPV: 6 bước
Video: Surveillance Car using ESP32 Cam module | ESP32 Camera wi-fi car 🚓 2024, Tháng bảy
Anonim
Image
Image
Robot camera ESP32 - FPV
Robot camera ESP32 - FPV
Robot camera ESP32 - FPV
Robot camera ESP32 - FPV

Mô-đun Camera ESP32 là một PLC rẻ tiền và mạnh mẽ. Nó thậm chí còn bao gồm cả nhận dạng khuôn mặt!

Hãy xây dựng một rô bốt Góc nhìn người thứ nhất mà bạn lái qua giao diện web trên bo mạch!

Dự án này sử dụng mô-đun Geekcreit ESP32 với Camera OV2640. Nó dựa trên mô-đun AIThinker.

Có rất nhiều bản sao Máy ảnh ESP32 khác nhau trên mạng. Một số hoạt động, một số thì không. Tôi khuyên bạn nên sử dụng cùng một mô-đun mà tôi đã làm để bạn có cơ hội thành công.

Robot hoạt động như sau.

ESP32 phát một URL web tới mạng của bạn, trình bày luồng video trực tiếp với một số hộp kiểm để vận hành một số chức năng của máy ảnh. Nó cũng nhận các phím bấm được gửi đến trang web từ bàn phím là lệnh định hướng cho robot. Bạn có thể muốn chế tạo tấm chắn phím điều khiển USB để có thể điều khiển robot bằng phím điều khiển thay vì nhập lệnh bàn phím.

Khi ESP32 nhận được các lần nhấn phím, nó sẽ chuyển tiếp các byte đó tới Arduino Nano, sau đó điều khiển các động cơ để làm cho robot di chuyển.

Dự án này có độ khó trung bình-cao. Xin vui lòng dành thời gian của bạn.

Bắt đầu nào!

Quân nhu

  • Mô-đun Máy ảnh ESP-32 với Máy ảnh OV2640 - Tôi muốn giới thiệu sản phẩm Geekcreit
  • Ăng-ten gắn bên ngoài cho ESP-32 để tối đa hóa cường độ tín hiệu
  • Arduino Nano
  • Arduino Leonardo cho mô-đun Joystick (chúng tôi cần mô phỏng bàn phím USB do Leonardo cung cấp)
  • Mô-đun Joystick chung
  • Chip cầu L293D Quad H
  • Bộ chuyển đổi DC-DC Buck với đầu ra 5V để cấp nguồn cho ESP32
  • Bộ điều hợp nối tiếp FTDI để lập trình ESP32
  • Một khung gầm rô bốt chung với hai động cơ giảm tốc - bất kỳ khung gầm nào cũng sẽ hoạt động. Động cơ 3 đến 6V được khuyến nghị
  • 2 x pin LiPo 7.4V 1300mAh (hoặc tương tự) để cấp nguồn cho ESP32 và động cơ
  • Pin 1 x 9V để cấp nguồn cho Arduino Nano

Bước 1: Lập trình máy ảnh ESP32

Lập trình máy ảnh ESP32
Lập trình máy ảnh ESP32
Lập trình máy ảnh ESP32
Lập trình máy ảnh ESP32

Sử dụng bảng mạch, kết nối Máy ảnh ESP32 của bạn với bộ điều hợp FTDI như sau:

FTDI ESP32

3,3V ----------- 3,3V

GND ----------- GND

TX ----------- U0R

Rx ----------- U0T

Ngoài ra, kết nối chân IO0 ("eye-oh-zero") với GND. Bạn cần làm điều này để đưa ESP32 vào chế độ lập trình.

Giải nén tệp esp32CameraWebRobotforInstructable.zip.

Có 4 tệp trong dự án này:

esp32CameraWebRobotforInstructable.ino là bản phác thảo Arduino.

ap_httpd.cpp là mã quản lý máy chủ web và xử lý việc thiết lập các tính năng camera từ trang web và nhận các phím bấm từ trang web.

camera_index.h chứa mã HTML / JavaScript cho ứng dụng web dưới dạng mảng byte. Việc sửa đổi ứng dụng web nằm ngoài phạm vi của dự án này. Tôi sẽ bao gồm một liên kết để biết cách sửa đổi HTML / JavaScript sau.

camera_pins.h là tệp tiêu đề liên quan đến cấu hình pin của máy ảnh ESP32.

Để đặt ESP32 vào Chế độ lập trình, bạn phải kết nối IO0 ("eye-oh-zero") với Ground.

Khởi chạy Arduino IDE của bạn và đi tới Công cụ / Bảng / Trình quản lý bảng. Tìm kiếm esp32 và cài đặt thư viện esp32.

Mở dự án trong IDE Arduino của bạn.

Đặt ID mạng của bộ định tuyến của BẠN và mật khẩu của BẠN vào các dòng được đánh dấu trong hình trên. Lưu dự án.

Vào menu Công cụ và thực hiện các lựa chọn như trong hình trên.

Ban: ESP32 Wrover

Tốc độ tải lên: 115200

Lược đồ phân vùng: "ỨNG DỤNG khổng lồ (3MB không có OTA)"

và chọn cổng mà bộ điều hợp FTDI của bạn được kết nối.

Nhấp vào nút "Tải lên".

Bây giờ, đôi khi, ESP32 sẽ không bắt đầu tải lên. Vì vậy, hãy sẵn sàng nhấn nút ĐẶT LẠI ở mặt sau của ESP32 khi bạn bắt đầu thấy các ký tự… ---… xuất hiện trong bảng điều khiển trong quá trình tải lên. Sau đó nó sẽ bắt đầu tải lên.

Khi bạn thấy 'nhấn RST' trên bảng điều khiển, quá trình tải lên đã hoàn tất.

NGẮT KẾT NỐI IO0 khỏi mặt đất. Ngắt kết nối đường 3.3V giữa bộ điều hợp FTDI và ESP32.

Máy ảnh ESP32 yêu cầu nhiều dòng điện để hoạt động tốt. Kết nối bộ đổi nguồn 5V 2A với chân 5V và GND trên ESP32.

Mở Serial Monitor, đặt tốc độ truyền thành 115200 và sau đó xem khi ESP32 khởi động lại. Cuối cùng, bạn sẽ thấy URL của máy chủ.

Truy cập Trình duyệt của bạn và nhập URL. Khi trang web tải, hãy nhấp vào nút 'Bắt đầu phát trực tuyến' và luồng video trực tiếp sẽ bắt đầu. Nếu bạn nhấp vào hộp kiểm 'Floodlight', đèn LED flash trên bo mạch sẽ sáng. Coi chừng! ĐÓ LÀ SÁNG!

Bước 2: Chế tạo Robot

Chế tạo Robot
Chế tạo Robot

Bạn cần một khung robot hai bánh. Bất kỳ ai sẽ làm. Lắp ráp khung theo hướng dẫn của nhà sản xuất.

Sau đó, nối dây robot theo sơ đồ. Hãy để các kết nối pin ngay bây giờ.

L293D được sử dụng để điều khiển động cơ. Lưu ý rằng một nửa tai thỏ trên chip là HƯỚNG DẪN ĐẾN ESP32.

Thông thường, cần có 6 chân trên Arduino để điều khiển hai động cơ.

Robot này chỉ yêu cầu 4 chân và vẫn hoạt động đầy đủ.

Các chân 1 và 9 được kết nối với nguồn 5V của Arduino nên chúng ở mức CAO vĩnh viễn. Nối dây cho robot theo cách này có nghĩa là chúng ta cần ít chân hơn trên Arduino để điều khiển động cơ.

Theo hướng chuyển tiếp, các chân INPUT được đặt thành LOW và các chân Điều chế sóng xung động cơ được đặt thành các giá trị từ 0 đến 255 với 0 nghĩa là TẮT và 255 nghĩa là tốc độ tối đa.

Theo hướng ngược lại, các chân INPUT được đặt thành CAO và các giá trị PWM được đảo ngược. 0 có nghĩa là tốc độ tối đa và 255 có nghĩa là tắt.

Giải nén và tải bản phác thảo ArduinoMotorControl lên Arduino Nano.

Bước 3: ANH ƠI! Đợi một chút! Tại sao tôi cần Arduino Nano?

Có thể bạn đang nghĩ, "Này! Có ít nhất 4 chân IO trên máy ảnh ESP32. Tại sao tôi không thể sử dụng chúng để điều khiển động cơ?"

Vâng, đó là sự thật, có các chân trên ESP32 như sau:

IO0 - cần thiết để đưa ESP32 vào chế độ lập trình

IO2 - có sẵn

IO4 - đèn LED flash

IO12, IO13, IO14, IO15, IO16 - các chân GPIO bổ sung.

Nếu bạn chỉ tải một bản phác thảo cơ bản lên ESP32 để điều khiển các chân bằng lệnh PWM, chúng sẽ hoạt động.

TUY NHIÊN, sau khi bạn kích hoạt các thư viện CAMERA trong bản phác thảo của mình, các chân này sẽ không còn nữa.

Vì vậy, điều dễ dàng nhất để làm là chỉ cần sử dụng Nano để điều khiển động cơ thông qua PWM và gửi các lệnh từ ESP32 bằng giao tiếp nối tiếp qua một dây (ESP32 U0T đến Arduino Rx0) và GND. Rất đơn giản.

Bước 4: Nối Cần điều khiển USB (Tùy chọn)

Bạn có thể điều khiển robot bằng cách gửi các phím bấm đến trang web như sau:

8 - Chuyển tiếp

9 - Chuyển tiếp sang phải

7 - Chuyển tiếp sang trái

4 - Xoay trái

5 - Dừng lại

1 - Đảo ngược trái

2 - Đảo ngược

3 - Ngược Phải.

Bản phác thảo cần điều khiển USB chuyển các đầu vào của cần điều khiển thành các phím bấm và gửi chúng đến giao diện web để chuyển tiếp chúng đến Arduino để điều khiển robot.

Kết nối cần điều khiển với Arduino LEONARDO như sau:

Cần điều khiển Leonardo

5V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

Mở bản phác thảo usbJoyStick, chọn Arduino Leonardo làm bảng và tải nó lên Leonardo.

Nếu bạn muốn kiểm tra nó, chỉ cần mở một trình soạn thảo văn bản trên máy tính của bạn, nhấp chuột vào cửa sổ và bắt đầu di chuyển cần điều khiển. Bạn sẽ thấy các giá trị từ 1 đến 9 hiển thị trong cửa sổ

Bước 5: HÃY ĐI XE

Hãy dành chút thời gian và xem lại hệ thống dây điện của bạn để đảm bảo tất cả đều chính xác.

Tiếp theo, kết nối pin của bạn như sau.

1. Bật nguồn Máy ảnh ESP32. Nó cần một vài giây để khởi động máy chủ web.

2. Tăng sức mạnh cho Arduino Nano.

3. Tăng sức mạnh cho động cơ.

Khởi chạy trình duyệt của bạn và truy cập URL cho ESP32.

Nhấp vào nút Bắt đầu phát trực tuyến.

Nhấp chuột vào vị trí nào đó trên màn hình trình duyệt để màn hình hiện là tiêu điểm.

Bắt đầu điều khiển robot của bạn bằng cần điều khiển (hoặc bàn phím).

Tôi thấy rằng kích thước khung hình mặc định hoạt động ổn để phát video trực tiếp khá phản hồi qua WiFi. Tuy nhiên, khi bạn tăng kích thước khung hình, luồng sẽ trở nên bị ngắt quãng hơn vì bạn đang cố truyền hình ảnh lớn hơn.

Đây là một dự án đầy thử thách mang đến cho bạn cơ hội bắt đầu làm việc với tính năng phát video trực tiếp và điều khiển rô bốt qua WiFi. Tôi hy vọng bạn tìm thấy nó vui vẻ!

NGAY BÂY GIỜ HÃY ĐI VÀ LÀM MỘT CÁCH THẬT TUYỆT VỜI!

Cập nhật tháng 1 năm 2020 - Những bức ảnh cuối cùng cho thấy phiên bản cuối cùng của robot, được hàn cứng và gắn chặt vào khung.

Ba công tắc gắn phía trước như sau:

Trái - Pin nguồn động cơ

Trung tâm - Pin Arduino

Phải - Pin máy ảnh ESP32

Tôi có thể sử dụng một pin lớn với một số máy biến áp tăng cường (tôi sử dụng một pin cho ESP32 - nó ở phía dưới bên phải của bức ảnh phía trước), nhưng để đơn giản, tôi chỉ giữ lại 3 pin.

Robot hiện có trên Access Point

Tôi thấy việc trình diễn rô bốt này bên ngoài nhà của mình rất phức tạp vì mạng doanh nghiệp của trường tôi không cho phép tôi kết nối máy chủ web rô bốt với nó. Như một giải pháp, tôi đã nghiên cứu về việc sử dụng tính năng Access Point của máy chủ web ESP32. Phải mất một số công việc, nhưng yêu cầu những thay đổi khá nhỏ đối với bản phác thảo robot chính để làm cho ESP32 phát sóng địa chỉ IP của chính nó. Nó không mạnh bằng một trung tâm phát wifi tốc độ cao chuyên dụng (đôi khi bị treo nếu bạn di chuyển quá nhanh), nhưng nó hoạt động khá tốt và bây giờ tôi có thể trình diễn robot ở bất cứ đâu tôi muốn mà không cần phải kết nối mạng! Sau khi robot hoạt động, hãy thử tự chuyển đổi nó thành Access Point!

Bước 6: Chi tiết về cách sửa đổi mã HTML / Javascript cho máy chủ trang web

Điều này là không cần thiết, nhưng tôi đã có một số yêu cầu.

Tôi đã cung cấp cho Google Tài liệu này thông tin chi tiết về cách sử dụng CyberChef để chuyển đổi qua lại giữa HTML / Javascript và các biểu diễn mảng byte trong tệp camera_index.h.

Đề xuất: