Mục lục:

Xe RasbperryPi Có Camera FPV. Điều khiển bằng Trình duyệt Web: 31 Bước (có Hình ảnh)
Xe RasbperryPi Có Camera FPV. Điều khiển bằng Trình duyệt Web: 31 Bước (có Hình ảnh)

Video: Xe RasbperryPi Có Camera FPV. Điều khiển bằng Trình duyệt Web: 31 Bước (có Hình ảnh)

Video: Xe RasbperryPi Có Camera FPV. Điều khiển bằng Trình duyệt Web: 31 Bước (có Hình ảnh)
Video: DEMO THỰC NGHIỆM HOÀN THÀNH XE ĐIỀU KHIỂN 2024, Tháng mười một
Anonim
Image
Image

Chúng ta sẽ chế tạo một chiếc xe 4wd - cách lái sẽ tương tự như trong một chiếc xe tăng - để quay một bên bánh xe sẽ quay với tốc độ khác với bên kia. Tại ô tô sẽ được đặt camera trên giá đỡ đặc biệt để chúng ta có thể thay đổi vị trí camera. Robot sẽ được điều khiển bằng trình duyệt web (chrome hoặc firefox trên máy tính để bàn hoặc firefox trên điện thoại di động), tại trình duyệt, Chúng tôi sẽ nhận được video camera (chỉ với độ trễ 200ms) và từ trình duyệt, chúng tôi có thể điều khiển chuyển động của ô tô và vị trí camera. Để giúp việc liên lạc dễ dàng hơn, tôi đã sử dụng hệ thống app.remoteme.org, hệ thống này cũng đang hoạt động để kiểm soát loại ô tô này, Vì vậy, Bạn không cần phải viết mã của riêng mình, nhưng tất nhiên Bạn có thể sửa đổi các tập lệnh thêm khả năng mới, v.v.

Trước khi kết nối nguồn với PCB của bạn, vui lòng kiểm tra kỹ tất cả các kết nối

Bước 1: Một số thông tin về App.remoteme.org

Hệ thống có ba phần

  • ứng dụng web - khi Bạn lưu trữ các trang web kiểm soát của mình và nó liên kết tất cả các giao tiếp
  • chương trình rasbperryPi - chương trình gửi video, quản lý các tập lệnh python của bạn
  • thư viện nơi Bạn tìm thấy định nghĩa lớp, hàm

Remoteme.org là hệ thống nhanh chóng Bạn liên kết tất cả các thiết bị của mình với nhau, Bạn có thể lưu trữ ở đó Trang web của bạn, xem các thiết bị được kết nối hình nón của bạn. Hệ thống Remoteme.org được tạo ra để giúp Bạn bắt đầu thực hiện các dự án của mình, không cần lo lắng về truyền thông giao thức, ý tưởng chính là gửi các thông điệp nhị phân qua các thiết bị khác nhau như webPages, RasbeprryPI, arduino và scripts.

Mặt khác, Remoteme.org cung cấp cho Bạn toàn quyền kiểm soát các tệp của mình, Bạn có thể dễ dàng sửa đổi nó bằng cách ghi chức năng của riêng bạn

Tại hướng dẫn này, tôi sẽ chỉ cho Bạn cách tạo một số dự án tuyệt vời mà không cần viết bất kỳ mã nào.

Ở phần cuối của hướng dẫn này, tôi đã đặt các liên kết hữu ích sẽ giúp Bạn hiểu hệ thống remoteme.org.

Bước 2: Những gì cần thiết:

Những gì cần thiết
Những gì cần thiết
Những gì cần thiết
Những gì cần thiết
  • Raspberry PI Zero W
  • Máy ảnh chuyên dụng
  • Adafruit 16-Kênh 12-bit PWM / Servo Driver - Giao diện I2C - PCA9685 hoặc bản sao của nó
  • Hai cơ chế servo tương thích với giá đỡ máy ảnh
  • Giá đỡ máy ảnh
  • Pin - Trong hướng dẫn hai khả năng kết nối
  • H cầu TB6612FNG, để điều khiển bánh xe chi tiết
  • Tập tin PCB Eagle Có thể dễ dàng thực hiện nó bằng phương pháp truyền nhiệtDC-DC
  • Mô-đun chuyển đổi bước xuống DC
  • Hộp đựng rô bốt

Bước 3: Kết nối

Kết nối
Kết nối

Cơ chế servo điều khiển Raspberry pi thông qua mô-đun PWM và tốc độ động cơ bằng cầu H được kết nối với các chân RasbperryPi, đầu vào PWM đến cầu H được tạo bởi cùng một mô-đun mà tôi đã sử dụng cho servo (những phần mà tôi đã đề cập ở trên không cần bộ chuyển đổi logic)

Bước 4: PCB

PCB
PCB
PCB
PCB

Bạn có thể tải xuống các tệp PCB Eagle từ đây Đường dẫn rất béo nên rất dễ chế tạo bằng phương pháp truyền nhiệt

Bước 5: Đầu ra PCB

Đầu ra PCB
Đầu ra PCB
Đầu ra PCB
Đầu ra PCB
  1. Đầu vào PWM cho động cơ truyền động Nên được kết nối với chân thứ 15 và 16 của mô-đun PWM (kiểm tra hình chữ nhật màu xanh lá cây ở hình ảnh mô-đun PWM)
  2. Đầu vào điện cho động cơ truyền động (kiểm tra điện áp tối đa mà động cơ của bạn có thể hoạt động)
  3. Nguồn cho mô-đun RasbperryPi và PWM - phải chính xác
  4. Đầu ra động cơ truyền động (có hai đầu ra vì chúng tôi sẽ ghép nối động cơ truyền động)
  5. Nguồn điện của Cơ chế Servo - ngoài ra Bạn phải kiểm tra điện áp nào là tốt cho chúng
  6. Jumper công suất hiện tại của nó từ đầu vào thứ 5 cũng sẽ cung cấp năng lượng cho động cơ do đó không cần kết nối bất cứ thứ gì với đầu vào 2
  7. Jumper nếu có RasbperryPi sẽ được cấp nguồn từ đầu vào thứ 3 - trước khi đặt jumper ở đây, hãy kiểm tra xem các kết nối có ổn không - Bạn không muốn ghi RPi của mình
  8. Cho phép hàn cáp ở đây vì chúng tôi không cần bộ chuyển đổi logic

Bước 6: Cách hoạt động

Tại RasbperryPi có tập lệnh python sử dụng hai thư viện

  • nhập RPi. GPIO làm GPIO - cho các chân 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (ký hiệu BCM) được kết nối với cầu H
  • nhập Adafruit_PCA9685 cho mô-đun PWM

Các chân Rpi được kết nối như sau 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) và chế độ điều khiển của cầu H (tiến, lùi, dừng, ngắt ngắn). Cầu H cũng cần hai tín hiệu PWM để chúng ta có thể điều khiển tốc độ hoặc vòng quay của động cơ. Vì tại dự án, chúng tôi đã có bộ điều khiển PWM (được sử dụng cho servo) nên chúng tôi cũng sẽ sử dụng nó để tạo PWM cho cầu H.

Mô-đun PWM sử dụng giao thức truyền thông I2C. Tôi đã sử dụng cách làm việc ngoài hộp Adafruit_PCA9685. thư viện

Bước 7: Lắp ráp ô tô - Bánh xe

Lắp ráp ô tô - Bánh xe
Lắp ráp ô tô - Bánh xe
Lắp ráp ô tô - Bánh xe
Lắp ráp ô tô - Bánh xe

Chúng tôi sẽ bắt đầu từ việc kết nối động cơ truyền động với vỏ xe hơi. Động cơ bên trái / bên kết nối với nhau và cả hai ghép nối, kết nối với một số cáp nguồn mà sau này sẽ được kết nối với PCB. Lưu ý quan trọng trong khi kết nối động cơ, các bánh xe ở mỗi bên phải quay cùng một hướng.

Bước 8: Nguồn (Pin sạc AA) Tùy chọn 1/2

Nguồn (Pin sạc AA) Tùy chọn 1/2
Nguồn (Pin sạc AA) Tùy chọn 1/2
Nguồn (Pin sạc AA) Tùy chọn 1/2
Nguồn (Pin sạc AA) Tùy chọn 1/2
Nguồn (Pin sạc AA) Tùy chọn 1/2
Nguồn (Pin sạc AA) Tùy chọn 1/2
Nguồn (Pin sạc AA) Tùy chọn 1/2
Nguồn (Pin sạc AA) Tùy chọn 1/2

Tôi sẽ viết hai khả năng cung cấp năng lượng cho Xe ô tô đầu tiên là từ pin sạc lại 10xAA Ở hình ảnh cuối cùng tôi đã vẽ bằng các jumper màu đỏ phải được đặt.

Bước 9: Nguồn (Pin Li-Po 7.2V) Tùy chọn 2/2

Nguồn (Pin Li-Po 7.2V) Tùy chọn 2/2
Nguồn (Pin Li-Po 7.2V) Tùy chọn 2/2
Nguồn (Pin Li-Po 7.2V) Tùy chọn 2/2
Nguồn (Pin Li-Po 7.2V) Tùy chọn 2/2

Và tùy chọn thứ hai là pin LI-PO 7.2. Trong trường hợp này, chúng tôi có 3 điện áp - 5v cho Rpi và mô-đun, 6V cho servo và trực tiếp từ pin 7,2 volt cho động cơ truyền động. Tôi đã phải sử dụng hai mô-đun bước xuống

Tùy chọn 2 với LI-PO tốt hơn:

  • Ắc quy có dung lượng lớn hơn - xe sẽ chạy lâu hơn
  • Điện áp lớn hơn cho động cơ truyền động - xe sẽ chạy nhanh hơn
  • Ít xác suất hơn là sau khi động cơ truyền động bắt đầu xác định vị trí, chúng tôi có thể bị sụt điện áp rất lớn và RPI khởi động lại.

Bước 10: Hàn

Hàn
Hàn
Hàn
Hàn
Hàn
Hàn
Hàn
Hàn

Tôi đã đặt PCB một số bộ đệm cho mô-đun PWM. Không có gì để viết chỉ cần xem hình ảnh cách hàn mọi thứ lại với nhau

Bước 11: Máy ảnh

Máy ảnh
Máy ảnh

chúng tôi kết nối máy ảnh, ở đây Được viết cách căn giữa Cơ chế servo trước khi lắp vào giá đỡ máy ảnh, nhưng cách ngắn nhất là kiểm tra thủ công nhẹ nhàng vị trí xoay tối đa và đặt Servo ở vị trí trung tâm. Cơ chế servo tập trung này chúng tôi đưa vào giá đỡ máy ảnh ở vị trí trung tâm (máy ảnh hướng thẳng về phía trước như trong ảnh)

Bước 12: Gắn các bộ phận của ô tô lại với nhau

Đặt các bộ phận của ô tô lại với nhau
Đặt các bộ phận của ô tô lại với nhau
Đặt các bộ phận của ô tô lại với nhau
Đặt các bộ phận của ô tô lại với nhau
Đặt các bộ phận của ô tô lại với nhau
Đặt các bộ phận của ô tô lại với nhau

Đối với PCB, tôi đã làm bảng plexiglass nhỏ

Bước 13: Cấu hình App.remoteme.org

Cấu hình App.remoteme.org
Cấu hình App.remoteme.org

Tôi đã sử dụng hệ thống app.remoteme.org miễn phí, hệ thống này giúp Bạn tạo kết nối và nó đã có các tập lệnh mà chúng tôi cần

Tại phần hướng dẫn này, tôi sẽ chỉ từng bước những việc cần làm để học lái xe ô tô (tại đây Bạn sẽ tìm thấy thêm chi tiết)

  • Đăng ký tại https://app.remoteme.org sau khi đăng ký Bạn sẽ được đăng nhập tự động
  • mở tab Mã thông báo ở bên trái, sau đó nhấp vào “mã thông báo mới” cung cấp một số tên và nhấp vào OK, Chúng tôi vừa tạo mã thông báo mới (hình ảnh ở màn hình)
  • trong ví dụ này, giá trị mã thông báo là: ~ 1_ & p @ + BNnZ @ A + x8 (của bạn sẽ khác;))

Bước 14: Cấu hình RasbperryPi

Cấu hình RasbperryPi
Cấu hình RasbperryPi

tại bảng điều khiển putty (đây là cách thiết lập RPi của chúng tôi để bật giao tiếp máy ảnh I2c)

git clone git: //github.com/remoteme/remoteme.git

cd remoteme

python3.5 install.py

  • Instalator sẽ hỏi chúng tôi một số câu hỏi cho tất cả những gì chúng tôi trả lời [Y] và xác nhận bằng [enter]
  • khi cài đặt sẽ yêu cầu mã thông báo, chúng tôi dán (shift + chèn) mã thông báo được sao chép từ ứng dụng và Enter
  • tên ví dụ Rpi
  • deviceId 1 Nhập
  • sau khi cài đặt - chạy chương trình

./runme.sh

Bước 15: Kiểm tra kết nối

Kiểm tra kết nối
Kiểm tra kết nối

Hãy quay lại

Tại tab thiết bị, chúng ta sẽ thấy RPi được kết nối của mình (biểu tượng liên kết màu xanh lục có nghĩa là RPi được kết nối ngay bây giờ)

Bước 16: Thêm tập lệnh Python

Thêm tập lệnh Python
Thêm tập lệnh Python
Thêm tập lệnh Python
Thêm tập lệnh Python

Bây giờ chúng ta sẽ thêm tập lệnh python, nó đã có sẵn trong các mẫu nên chúng ta không phải lập trình bất cứ thứ gì.

Tại tab thiết bị, mở menu RasbperryPi và chọn "Thêm tập lệnh bên ngoài".

Khi cửa sổ mới xuất hiện, cung cấp thông tin như hình trên

Đừng quên chọn mẫu "car4wd". Sau bước này, remoteme.org sẽ thêm tập lệnh python vào RasbperryPi của chúng tôi và khởi động lại nó

Bước 17: Kiểm tra xem tập lệnh Python đã được thêm thành công hay chưa

Kiểm tra xem tập lệnh Python có được thêm thành công hay không
Kiểm tra xem tập lệnh Python có được thêm thành công hay không

Tại tab thiết bị, thiết bị tập lệnh python mới sẽ được thêm vào và ID thiết bị của nó là 2. Vào trang web Id thiết bị này sẽ gửi thông báo đến điều khiển xe

Bước 18: Thêm trang web vào điều khiển ô tô

Thêm trang web vào điều khiển ô tô
Thêm trang web vào điều khiển ô tô

tại tab thiết bị, nhấp vào "Mới" sau đó nhấp vào "Trang web". Chúng tôi chỉ thêm một thiết bị khác - webPage, chúng tôi sẽ sử dụng nó để điều khiển ô tô của mình. Và vì chúng tôi đã sử dụng mẫu "car4wdDesktop" tại trang web nên các tệp gần như đã sẵn sàng để sử dụng

Bước 19: Định cấu hình thiết bị WebPage để điều khiển ô tô 1/2

Định cấu hình thiết bị WebPage để điều khiển ô tô 1/2
Định cấu hình thiết bị WebPage để điều khiển ô tô 1/2

Mở rộng Trang Web tại tab thiết bị và nhấp vào index.html sau đó Mở

Bước 20: Định cấu hình thiết bị WebPage để điều khiển ô tô 2/2

Định cấu hình thiết bị WebPage để điều khiển ô tô 2/2
Định cấu hình thiết bị WebPage để điều khiển ô tô 2/2

Cửa sổ xuất hiện, sau đó chúng tôi cần cung cấp deviceId của tập lệnh python của chúng tôi tại trường hợp deviceId của chúng tôi là 2. Hãy thay đổi vị trí được hiển thị trong hình ảnh

Bước 21: Mở Trung tâm điều khiển ô tô

Mở trung tâm điều khiển ô tô
Mở trung tâm điều khiển ô tô
Mở trung tâm điều khiển ô tô
Mở trung tâm điều khiển ô tô

Bây giờ đã đến lúc mở trang của chúng tôi và xem nó hoạt động như thế nào. Tại tab thiết bị, nhấp vào index.html và sau đó nhấp vào "Mở trong tab mới" Để xem trước video Bạn phải sử dụng trình duyệt chrome hoặc firefox, trình duyệt khác không hỗ trợ đầy đủ webRTC

Bước 22: Cấu hình máy ảnh 1/2

Cấu hình máy ảnh 1/2
Cấu hình máy ảnh 1/2

Khi chúng ta di chuyển chuột tại khu vực video, camera sẽ thay đổi vị trí và nó sẽ hoạt động giống như trong các trò chơi FPS. Nó có thể sẽ không di chuyển chính xác

Bước 23: Cấu hình máy ảnh 2/2

Cấu hình máy ảnh 2/2
Cấu hình máy ảnh 2/2

Mở script.js (tab thiết bị mở rộng trang web sau đó nhấp vào script.js rồi mở) và tìm vị trí tôi đã hiển thị trên màn hình

ở vị trí trung tâm trường hợp của tôi là 560 và 430 và phạm vi chuyển động dành cho cả hai trục 200

Bạn phải thử nghiệm với những con số này để Bạn có được trung tâm vị trí máy ảnh và chuyển động mượt mà, Nếu bạn đã sử dụng hướng dẫn này, chỉ cần sao chép các giá trị đã cho đã dán

Bước 24: Lái xe 1/2

Lái xe 1/2
Lái xe 1/2

Nếu bạn nhấn mũi tên lên trên bàn phím, đồng hồ đo sẽ thay đổi vị trí và xe sẽ lái. Nếu Bạn nhấn mũi tên “lên” và xe đang quay thì Bạn phải thêm / bớt dấu trừ tại các vị trí trên màn hình.

Sau khi thực hiện thao tác này sau khi nhấn mũi tên "lên" ô tô nên lái trước và ô tô mũi tên xuống nên lái lùi.

Bước 25: Lái xe 2/2

Lái xe 2/2
Lái xe 2/2

Bây giờ rẽ - nhấn mũi tên trái nếu ô tô đang rẽ phải Bạn phải lật dây cáp (kiểm tra hình trên)

Nếu bạn hàn cáp này, bạn có thể thay đổi nó tại script.jsjust thay đổi thứ tự tốc độ gửi động cơ, trước:

pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ())); pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed () * 255));

pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));

pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed () * 255));

sau:

pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));

pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed () * 255));

pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ()));

pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed () * 255));

và bây giờ Bạn phải chơi với minuses như một bước trước đây để làm cho nó hoạt động chính xác;). Như Bạn có thể nhận thấy sau khi trúng mũi tên lên, xe không lái với tốc độ tối đa để làm cho xe di chuyển nhanh hơn mà chỉ cần thả nhanh mũi tên lên khi nó ở vị trí tối đa và nhấn và giữ nó một lần nữa

Bước 26: Nó hoạt động như thế nào

Trang web đang gửi tin nhắn byte thứ 9 tới tập lệnh python ở định dạng:

  • 1 byte một byte giá trị số nguyên 1
  • 2 byte số nguyên X vị trí máy ảnh
  • 2 byte số nguyên Y vị trí camera
  • Chế độ động cơ bên trái số nguyên 1 byte (3 = lùi, 1 = tiến, 2 = dừng)
  • 1 byte số nguyên tốc độ động cơ bên trái
  • Chế độ động cơ bên phải số nguyên 1 byte (3 = lùi, 1 = tiến, 2 = dừng)
  • 1 byte số nguyên tốc độ động cơ bên phải

gửi tin nhắn được thực hiện tại tệp script.js tại chức năng "sendNow ()"

tại RasbperryPi python.py nhận được thông báo này trong chức năng "onUserMessage"

Bạn có thể kiểm tra nó và chơi một chút để Bạn biết những gì đang xảy ra.

mô tả các hàm lớp ở đây

Bước 27: Máy tính bảng, Chỉ đạo di động

Máy tính bảng, Chỉ đạo di động
Máy tính bảng, Chỉ đạo di động

Chúng tôi thêm trang web mới một cách xuất sắc như lần trước nhưng bây giờ chúng tôi chọn mẫu "car4wdMobile"

Tiếp theo, chúng tôi định cấu hình mọi thứ trong script.js như chúng tôi đã làm cho trang web điều khiển máy tính để bàn Định dạng thông báo hoàn toàn giống nhau nên chúng tôi không phải thay đổi tập lệnh python.py.

Bước 28: Mở trang trên điện thoại di động

Mở trang bằng điện thoại di động
Mở trang bằng điện thoại di động
Mở trang bằng điện thoại di động
Mở trang bằng điện thoại di động

Thay vì đăng nhập vào tài khoản của bạn từ điện thoại di động, chỉ cần quét QR url bất kỳ.

chi tiết về QR tại đây

Nếu Điều khiển di động của bạn hoạt động khi RPi và thiết bị di động kết nối cùng một wifi nhưng không hoạt động nếu Bạn sử dụng internet di động thì Bạn phải thêm máy chủ lần lượt, cách thực hiện mà tôi đã viết ở đây

Bước 29: Thêm Turn Server

Thêm Turn Server
Thêm Turn Server
Thêm Turn Server
Thêm Turn Server
Thêm Turn Server
Thêm Turn Server

Đôi khi (khi Bạn ở sau NAT hoặc một số cài đặt tường lửa) Bạn không thể kết nối rô bốt của mình từ mạng khác thì rô bốt của bạn đã được kết nối. Vấn đề không lớn của nó và sau đó Bạn phải thêm máy chủ lần lượt.

Tôi đã thử nghiệm máy chủ từ công ty XIRSYS (miễn phí cho nhà phát triển sử dụng) và tôi sẽ hướng dẫn cách định cấu hình máy chủ lần lượt bằng hệ thống XIRSYS

Đăng ký:

global.xirsys.net/dashboard/signup

sau đó nhấp vào "dấu cộng" để thêm ứng dụng

ở bên phải trong "thông tin đăng nhập lần lượt tĩnh" Bạn có tất cả dữ liệu Bạn cần. Sao chép nó vào tệp webrtc_streamer.conf để thực hiện việc đó, hãy truy cập

mở rộng RaspberryPi deivces

nhấp vào tệp webrtc_streamer.conf

bấm mở

và thêm thông tin

turn_server = turn_username =

turn_credential =

sau khi bạn kết thúc chỉnh sửa Bạn sẽ có một cái gì đó giống như màn hình.

sau đó nhấp vào Lưu và khởi động lại You Rpi, bằng cách nhấp vào menu trên thiết bị RasbperryPi và chọn khởi động lại

Sau khi chương trình RPi được khởi động lại Bạn có thể xem bản xem trước video trên điện thoại di động của mình ngay cả khi Bạn đang sử dụng Internet di động.

Bước 30: Chỉ đạo di động

Chỉ đạo di động
Chỉ đạo di động

tại vòng tròn 1, chúng tôi đặt ngón cái trái, ở 2 bên phải - không nhất thiết phải chính xác tại các điểm này - trang web sẽ đặt vị trí 0 ngay sau khi bạn chạm vào màn hình và bằng cách di chuyển các ngón tay cái của bạn (lái xe bên trái, vị trí máy ảnh bên phải), bạn có thể điều khiển xe hơi của bạn

Bước 31: Tóm tắt

Tôi hy vọng Bạn thích hướng dẫn này, như tôi đã viết trước đây tại hướng dẫn này là chi tiết hơn về cách nó hoạt động dưới mui xe.

một số liên kết:

remoteme.org - trang chủ của remoteme.org ở đó Bạn tìm thấy các tài liệu và hướng dẫn

FB fanpage - Facebook fanpage thông tin mới nhất về remoteme.org

Youtube - một số video về dự án, hướng dẫn

Chúc mừng, Maciek

Đề xuất: