Mục lục:

Raspberry Tank với giao diện web và phát trực tuyến video: 8 bước (có hình ảnh)
Raspberry Tank với giao diện web và phát trực tuyến video: 8 bước (có hình ảnh)

Video: Raspberry Tank với giao diện web và phát trực tuyến video: 8 bước (có hình ảnh)

Video: Raspberry Tank với giao diện web và phát trực tuyến video: 8 bước (có hình ảnh)
Video: Hướng dẫn chi tiết cách stream video & nhận diện trên web - Mì AI 2024, Tháng mười một
Anonim
Raspberry Tank với giao diện web và phát trực tuyến video
Raspberry Tank với giao diện web và phát trực tuyến video

Chúng ta sẽ xem cách tôi đã nhận ra một Bể chứa WiFi nhỏ, có khả năng Điều khiển web từ xa và Phát trực tuyến video.

Đây là hướng dẫn yêu cầu kiến thức cơ bản về lập trình phần mềm và điện tử. Vì lý do này, tôi đã chọn Bộ khung xe tăng (thay vì in bằng máy in 3D, có thể là bản nâng cấp sau này) và có tổng cộng 6 thành phần bao gồm cả pin. Về mặt phần mềm, bạn có thể làm theo từng bước quá trình cài đặt và lập trình được giữ ở mức tối thiểu, kiến thức cơ bản về Raspberry có thể giúp ích cho bạn.

Tôi đã ước tính 12 giờ làm việc từ 0 đến khi xe tăng sẵn sàng chạy. Tổng chi phí 70 € cho tất cả các thành phần.

Bước 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - Xe tăng khung gầm robot RC DIY - 32 (€)

www.banggood.com/DIY-RC-Robot-Chassis-Tan…

1 - Bảng điều khiển động cơ DC kênh đôi L298N - 1, 39 (€)

www.banggood.com/Dual-Channel-L298N-DC-Mo…

1 - Bộ khởi động Raspberry Pi Zero W - 26 (€)

amzn.eu/1ugAaMP

Thẻ SD 1 - 16 GB - 5, 50 (€)

www.gearbest.com/memory-cards/pp_337819.h…

1 - Webcam mô-đun máy ảnh Raspberry Pi 5MP cho Model Zero - 8 (€)

www.gearbest.com/raspberry-pi/pp_612249.h…

1 - Ngân hàng điện 5V

1 - 9v pin

Đầu nối Dupont cáp Breadboard hỗn hợp

Chuột, bàn phím, Màn hình hoặc TV để thiết lập Raspberry (tùy chọn, chỉ để thiết lập lần đầu dễ dàng hơn)

Bước 2: Thông số thành phần chính

Động cơ

JGA25-370 DC gearmotor

Động cơ này có trục đầu ra hình chữ D.

Thông số kỹ thuật

· Điện áp hoạt động: từ 6 V đến 18 V

· Điện áp danh định: 12 V

· Tốc độ chạy tự do ở 12 V: 399 RPM

· Dòng chạy tự do ở 12 V: 50 mA

· Dòng điện ở mức 12V: 1200 mA

· Mô-men xoắn của gian hàng ở 12V: 2,2 kg.cm

· Tỷ số truyền: 1:21

· Kích thước dây dẫn: 19 mm

· Trọng lượng: 84 g

Bảng điều khiển động cơ DC kênh đôi L298N

Trình điều khiển động cơ cầu H kép, có thể điều khiển hai động cơ DC hoặc động cơ bước 4 dây hai pha. TSD tích hợp, để bảo vệ khỏi động cơ ngừng hoạt động.

Thông số kỹ thuật

· Điện áp cung cấp mô-đun: DC 2V-10V

· Điện áp đầu vào tín hiệu: DC 1.8-7V

· Dòng làm việc đơn: 1.5A

· Dòng điện cao nhất lên đến 2,5A

· Dòng điện chờ thấp (dưới 0,1uA)

· Tích hợp sẵn mạch dẫn chung, đầu vào bị bỏ trống, động cơ không hoạt động sai

· Kích thước: 24,7 x 21 x 7mm

Bước 3: DÂY

DÂY
DÂY
DÂY
DÂY

Đây sẽ là dây cuối cùng, nhưng CHỜ, trước khi chúng ta cần cài đặt một số

phần mềm và bạn nên kiểm tra nó với hệ thống dây điện đơn giản hơn, khi nào sẵn sàng, hãy quay lại đây.

Chúng ta cần hai nguồn điện khác nhau, một cho động cơ và một cho Raspberry.

Trình điều khiển động cơ Bảng mạch điều khiển động cơ DC Dual Channel L298N (điện áp đầu vào tối đa DC 2V-10V) được cấp nguồn bằng cách sử dụng pin 9V và Raspberry Pi sử dụng bộ tích lũy USB 5V tiêu chuẩn.

Chân GND của trình điều khiển động cơ sẽ được kết nối với pin trừ và Raspberry Pi (GND). Các chân GPIO của Raspberry Pi được kết nối với trình điều khiển động cơ dưới dạng bảng.

Bước 4: CHUẨN BỊ RASPBERRY O. S

Đây là bản cài đặt tiêu chuẩn cho hệ điều hành Raspbian, bạn có thể tìm thấy

rất nhiều hướng dẫn chi tiết tìm kiếm trên web, về cơ bản các bước là:

1. Tải xuống iso RASPBIAN STRETCH WITH DESKTOP từ

2. Định dạng thẻ SD 16 GB, tôi đã sử dụng SD Formatter

3. Ghi tệp. IMG, tôi đã sử dụng Win32DiskImager

Bây giờ mâm xôi của bạn đã sẵn sàng khởi động, hãy kết nối nó với nguồn điện USB (5V, 2A) và chuẩn bị cho thiết lập khởi động đầu tiên. Bạn có thể thực hiện theo hai cách, sử dụng các thiết bị bên ngoài như chuột, bàn phím và màn hình hoặc sử dụng PC và kết nối từ xa với Raspberry. Có rất nhiều hướng dẫn về điều này, một là:

Bước 5: CÁCH KIỂM SOÁT NGUỒN WIFI CỦA CHÚNG TÔI VỚI NODE. JS VÀ WEBSOCKET. IO

CÁCH KIỂM SOÁT NGUỒN WIFI CỦA CHÚNG TÔI VỚI NODE. JS VÀ WEBSOCKET. IO
CÁCH KIỂM SOÁT NGUỒN WIFI CỦA CHÚNG TÔI VỚI NODE. JS VÀ WEBSOCKET. IO

Bây giờ chúng tôi đã có một bản cài đặt mới của máy tính vi Raspberry của chúng tôi đã sẵn sàng để chạy công việc của chúng tôi, vì vậy… chúng tôi sử dụng gì để ra lệnh cho bể?

Python là một ngôn ngữ rất dễ sử dụng thường được sử dụng để chạy cát dự án Rapsberry cũng có thể được sử dụng dễ dàng để tương tác với các chân đầu vào và đầu ra của Rapsberry (GPIO)

Tuy nhiên, mục tiêu của tôi là kết nối wi-fi xe tăng của mình từ bất kỳ thiết bị nào (PC, điện thoại di động, máy tính bảng…) bằng trình duyệt web thông thường và cũng có thể phát trực tuyến video từ đó. Vì vậy, hãy quên Python ngay bây giờ và hãy chuyển sang NODE. JS và SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) là một khung máy chủ mã nguồn mở hoạt động dựa trên ngôn ngữ js. Vì tôi đang sử dụng Raspberry Pi Zero (CPU ARMv6), chúng tôi không thể sử dụng quy trình cài đặt tự động (dành cho CPU ARMv7) và chúng tôi cần thực hiện thủ công:

Tải xuống Nodejs cục bộ, (Tôi đã sử dụng phiên bản 7.7.2 cho ARMv6, hãy kiểm tra các phiên bản khác tại đây

pi @ raspberry: ~ $ wget

nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…

Sau khi hoàn tất, hãy giải nén tệp nén:

pi @ raspberry: ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz

Sao chép và cài đặt các tệp vào / user / local

pi @ raspberry: ~ $ sudo cp -R node-v7.7.2-linux-armv6l / * / usr / local /

Thêm vị trí mà chúng tôi cài đặt nodejs vào đường dẫn, chỉnh sửa tệp “.profile”:

pi @ raspberry: ~ $ nano ~ /.profile

Thêm dòng sau vào cuối tệp, lưu và thoát

PATH = $ PATH: / usr / local / bin

Xóa tệp đã tải xuống:.

pi @ raspberry: ~ $ rm ~ / node-v7.7.2-linux-armv6l.tar.gz

pi @ raspberry: ~ $ rm -r ~ / node-v7.7.2-linux-armv6l

Nhập các lệnh sau để kiểm tra cài đặt nodejs:

pi @ raspberry: ~ $ node -v

pi @ raspberry: ~ $ npm -v

Bạn nên đọc v7.7.2 và v4.1.2 dưới dạng phản hồi.

Nếu mọi thứ diễn ra tốt đẹp, hãy tạo một thư mục mới để lưu trữ các tệp nodejs của bạn:

pi @ raspberry: ~ $ mkdir nodehome

Di chuyển bên trong thư mục mới:

pi @ raspberry: ~ $ cd nodehome

Cài đặt mô-đun bổ sung cần thiết để quản lý GPIO theo cách cơ bản nhất, BẬT và TẮT:

pi @ raspberry: ~ $ npm cài đặt onoff

Bây giờ là lúc để kiểm tra dự án đầu tiên của chúng tôi “Blink.js”, kết quả sẽ là… một đèn LED nhấp nháy

pi @ raspberry: ~ $ nano flash.js

Dán mã sau, lưu và thoát:

var Gpio = demand ('onoff'). gpio; // bao gồm onoff

var LED = new Gpio (3, 'out'); // sử dụng GPIO 3

var flashInterval = setInterval (flashLED, 250);

// nhấp nháy LED sau mỗi 250ms

function flashLED () {// hàm bắt đầu nhấp nháy

nếu như

(LED.readSync () === 0) {// kiểm tra trạng thái pin, nếu trạng thái là 0 (hoặc tắt)

LED.writeSync (1);

// đặt trạng thái chân thành 1 (bật đèn LED)

} khác {

LED.writeSync (0);

// đặt trạng thái chân thành 0 (tắt đèn LED)

}

}

function endBlink () {// hàm dừng nhấp nháy

clearInterval (thời gian nhấp nháy); // Dừng khoảng thời gian nhấp nháy

LED.writeSync (0); // Tắt đèn LED

LED.unexport (); // Hủy xuất GPIO tới các tài nguyên miễn phí

}

setTimeout (endBlink, 5000); // ngừng nhấp nháy sau 5 giây

Nối dây đèn LED, điện trở (200ohms) như được hiển thị trong giản đồ và chạy dự án:

pi @ raspberry: ~ $ node flash.js

Nút đã sẵn sàng.

SOCKET. IO

WebSocket là một giao thức truyền thông máy tính, dựa trên kết nối TCP, nó cung cấp một lập trình viên để tạo một máy chủ và máy khách. Máy khách kết nối với máy chủ và phát và nhận tin nhắn đến và đi từ máy chủ. Triển khai WebSocket cho Node.js được gọi là Socket.io (https://socket.io/).

Cài đặt socket.io:

pi @ raspberry: ~ $ npm cài đặt socket.io --save

Di chuyển bên trong trang chủ nodejs, đã tạo trước:

pi @ raspberry: ~ $ cd nodehome

Và tạo một thư mục mới "công khai":

pi @ raspberry: ~ $ mkdir công khai

Tạo máy chủ web mẫu mới, gọi nó là “webserver.js”

pi @ raspberry: ~ $ nano webserver.js

Dán mã sau, lưu và thoát:

var http = request ('http'). createServer (trình xử lý); // yêu cầu máy chủ http và tạo máy chủ bằng trình xử lý hàm ()

var fs = request ('fs'); // yêu cầu mô-đun hệ thống tệp

http.listen (8080); // nghe cổng 8080

hàm xử lý (req, res) {// tạo máy chủ

fs.readFile (_ dirname + '/public/index.html', function (err, data) {// read

tệp index.html trong thư mục chung

nếu (sai) {

res.writeHead (404, {'Content-Type': 'text / html'}); // hiển thị lỗi 404

return res.end ( 404 Không phải

Tìm );

}

res.writeHead (200, {'Content-Type': 'text / html'}); // viết HTML

res.write (dữ liệu); // ghi dữ liệu

từ index.html

trả về res.end ();

});

}

Máy chủ web này sẽ lắng nghe cổng Raspberry 8080 của bạn và cung cấp tệp tin cho bất kỳ máy khách web nào kết nối nó. Bây giờ chúng ta cần tạo một thứ gì đó để lưu trữ và cung cấp cho khách hàng của mình: Di chuyển vào bên trong thư mục “public”: pi @ raspberry: ~ $ cd public

Tạo tệp html mới “index.html”:

pi @ raspberry: ~ $ nano index.html

Dán mã từ "HelloWorld.txt" được đính kèm, lưu và thoát.

Di chuyển bên trong thư mục nodejs "nodehome":

pi @ raspberry: ~ $ cd nodehome

Khởi động máy chủ web

pi @ raspberry: ~ $ node webserver.js

Mở trang web trong trình duyệt bằng https:// Raspberry_IP: 8080 / (thay Raspberry_IP bằng IP của bạn)

Bước 6: THÊM KHẢ NĂNG PHÁT HIỆN VIDEO

Có nhiều cách khác nhau để triển khai phát trực tuyến video trên Raspberry, đơn giản nhất

theo cách mà tôi nhận thấy cho đến bây giờ, rằng hiệu suất tuyệt vời và có thể được tích hợp trong giao diện web là dựa trên dự án của Miguel Mota:

miguelmota.com/blog/raspberry-pi-camera-bo…

Cảm ơn Miguel! Từ blog của anh ấy, đây là các bước:

Cài đặt các thành phần libjpeg8 và cmake:

pi @ raspberry: ~ $ sudo apt-get install libjpeg8

pi @ raspberry: ~ $ sudo apt-get install libjpeg8-dev

pi @ raspberry: ~ $ sudo apt-get install cmake

Tải xuống mjpg-streamer với plugin raspicam:

pi @ raspberry: ~ $ git clone

github.com/jacksonliam/mjpg-streamer.git ~ / mjpg-streamer

Thay đổi thư mục:

pi @ raspberry: ~ $ cd ~ / mjpg-streamer / mjpg-streamer-Experiment

Biên dịch:

pi @ raspberry: ~ $ làm sạch tất cả

Thay thế mjpg-streamer cũ:

pi @ raspberry: ~ $ sudo rm -rf / opt / mjpg-streamer

pi @ raspberry: ~ $ sudo mv ~ / mjpg-streamer / mjpg-streamer-testing

/ opt / mjpg-streamer

pi @ raspberry: ~ $ sudo rm -rf ~ / mjpg-streamer

Tạo tệp “start_stream.sh” mới, sao chép và dán từ tệp “start_stream.txt” được đính kèm.

Làm cho nó có thể thực thi (tạo các tập lệnh shell):

pi @ raspberry: ~ $ chmod + x start_stream.sh

Bắt đầu máy chủ phát trực tuyến:

pi @ raspberry: ~ $./start_stream.sh

Mở trang web trong trình duyệt bằng https:// Raspberry_IP: 9000 (thay Raspberry_IP bằng IP của bạn)

Bước 7: CHƯƠNG TRÌNH TANK

Mọi thứ đã sẵn sàng, bây giờ chúng ta phải tạo trang web của mình để điều khiển bể chứa (index.html) và máy chủ web của chúng ta để nghe lệnh của chúng ta (webserver.js). Vì vậy, chỉ cần thay thế các tệp được thấy cho đến bây giờ (chỉ là các ví dụ để kiểm tra hệ thống) bằng webserver.txt và index.txt đính kèm.

Bước 8: BẮT ĐẦU GIAO DIỆN ĐIỀU KHIỂN VÀ MÁY CHỦ TRUYỀN HÌNH

BẮT ĐẦU GIAO DIỆN ĐIỀU KHIỂN VÀ MÁY CHỦ TRUYỀN HÌNH
BẮT ĐẦU GIAO DIỆN ĐIỀU KHIỂN VÀ MÁY CHỦ TRUYỀN HÌNH

Để bắt đầu các dịch vụ, hãy mở hai cửa sổ đầu cuối và chạy các lệnh sau:

node nodehome / webserver.js

./nodehome/start_stream.sh

Mở trang web trong trình duyệt bằng https:// Raspberry_IP: 8080 (thay Raspberry_IP bằng IP của bạn)

Đề xuất: