Isi kandungan:

Tangki Raspberry Dengan Antara Muka Web dan Streaming Video: 8 Langkah (dengan Gambar)
Tangki Raspberry Dengan Antara Muka Web dan Streaming Video: 8 Langkah (dengan Gambar)

Video: Tangki Raspberry Dengan Antara Muka Web dan Streaming Video: 8 Langkah (dengan Gambar)

Video: Tangki Raspberry Dengan Antara Muka Web dan Streaming Video: 8 Langkah (dengan Gambar)
Video: 3 Bocah Terlindas Truk Saat Selfie Di Atas Motor 2024, Disember
Anonim
Tangki Raspberry Dengan Antara Muka Web dan Streaming Video
Tangki Raspberry Dengan Antara Muka Web dan Streaming Video

Kami akan melihat bagaimana saya menyedari tangki WiFi kecil, yang mampu mengawal Web dan Streaming Video jarak jauh.

Ini bertujuan untuk menjadi tutorial yang memerlukan pengetahuan asas mengenai pengaturcaraan elektronik dan perisian. Atas sebab ini, saya telah memilih Kit casis Tank (daripada mencetaknya menggunakan pencetak 3D, mungkin peningkatan kemudian) dan sejumlah 6 komponen termasuk bateri. Di sisi perisian, anda dapat mengikuti langkah demi langkah proses pemasangan dan pengaturcaraan minimum, pengetahuan asas mengenai perkara Raspberry dapat membantu.

Saya menganggarkan 12 jam kerja dari 0 hingga tangki siap pakai. Jumlah kos 70 € untuk semua komponen.

Langkah 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - Tangki Chassis Robot RC DIY - 32 (€)

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

1 - Papan Pemandu Motor Dual Channel L298N DC - 1, 39 (€)

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

1 - Kit Permulaan Raspberry Pi Zero W - 26 (€)

amzn.eu/1ugAaMP

Kad SD 1 - 16 GB - 5, 50 (€)

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

1 - Kamera Web Modul Kamera Raspberry Pi 5MP untuk Model Zero - 8 (€)

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

1 - Power Bank 5V

Bateri 1 - 9v

Penyambung Dupont Kabel Breadboard Campuran

Tetikus, papan kekunci, Monitor atau TV untuk penyediaan Raspberry (pilihan, hanya untuk membuat persediaan pertama lebih mudah)

Langkah 2: Spesifikasi Komponen Utama

Motor

Motor gear JGA25-370 DC

Motor ini mempunyai poros keluaran berbentuk D.

Spesifikasi

· Voltan operasi: antara 6 V dan 18 V

· Voltan nominal: 12 V

· Kelajuan larian bebas pada 12 V: 399 RPM

· Arus bebas pada 12 V: 50 mA

· Stall arus pada 12V: 1200 mA

· Torsi terhenti pada 12V: 2.2 kg.cm

· Nisbah gear: 1:21

· Ukuran reduktor: 19 mm

· Berat: 84 g

Papan Pemandu Motor Dual Channel L298N DC

Pemandu motor Dual H-bridge, boleh menggerakkan dua motor DC atau motor stepper dua fasa 4-wayar. TSD terbina dalam, untuk melindungi dari gerai motor.

Spesifikasi

· Voltan bekalan modul: DC 2V-10V

· Voltan input isyarat: DC 1.8-7V

· Arus kerja tunggal: 1.5A

· Puncak arus hingga 2.5A

· Arus sedia rendah (kurang dari 0.1uA)

· Litar konduksi biasa terbina dalam, terminal input kosong, motor tidak berfungsi

· Saiz: 24.7 x 21 x 7mm

Langkah 3: WIRING

WIRING
WIRING
WIRING
WIRING

Ini akan menjadi pendawaian terakhir, tetapi TUNGGU, sebelum kita perlu memasang beberapa

perisian dan adalah idea yang baik untuk mengujinya dengan pendawaian yang lebih mudah, apabila siap, kembali ke sini.

Kami memerlukan dua sumber kuasa yang berbeza, satu untuk motor dan satu lagi untuk Raspberry.

Pemandu motor Dual Channel L298N DC Motor Driver Board (voltan input maksimum DC 2V-10V) dikuasakan dengan menggunakan bateri 9V dan Raspberry Pi menggunakan penumpuk USB standard 5V.

Pin GND pemandu motor akan disambungkan ke bateri tolak dan Raspberry Pi (GND). Pin GPIO Raspberry Pi disambungkan ke pemandu motor seperti jadual.

Langkah 4: MENYEDIAKAN RASPBERRY O. S

Ini adalah pemasangan standard untuk sistem operasi Raspbian, anda boleh dapatkan

banyak tutorial terperinci mencari di web, pada dasarnya langkahnya adalah:

1. Muat turun iso RASPBIAN STRETCH WITH DESKTOP dari

2. Format Kad SD 16 GB, saya telah menggunakan SD Formatter

3. Bakar fail. IMG, saya telah menggunakan Win32DiskImager

Sekarang raspberry anda sudah siap untuk boot, sambungkan ke sumber kuasa USB (5V, 2A) dan bersiap untuk persediaan boot pertama. Anda boleh melakukannya dengan dua cara, menggunakan peranti luaran seperti tetikus, papan kekunci dan monitor atau menggunakan PC anda dan sambungan jauh ke Raspberry. Terdapat banyak tutorial mengenai ini, salah satunya adalah:

Langkah 5: CARA MENGAWAL TANK WIFI KAMI DENGAN NODE. JS DAN WEBSOCKET. IO

CARA MENGAWAL TANK WIFI KAMI DENGAN NODE. JS DAN WEBSOCKET. IO
CARA MENGAWAL TANK WIFI KAMI DENGAN NODE. JS DAN WEBSOCKET. IO

Sekarang kita mempunyai pemasangan baru PC mikro Raspberry kita yang siap menjalankan tugas kita, jadi … apa yang kita gunakan untuk mengeluarkan perintah ke tangki?

Python adalah bahasa yang sangat mudah digunakan yang biasanya digunakan untuk menjalankan pasir projek Rapsberry dapat digunakan dengan mudah juga untuk berinteraksi dengan pin input dan output Rapsberry (GPIO)

Tetapi, tujuan saya adalah untuk menghubungkan wi-fi tangki saya dari mana-mana peranti (PC, telefon bimbit, tablet …) menggunakan penyemak imbas web biasa dan juga mengalirkan video daripadanya. Oleh itu, lupakan Python buat masa ini, dan mari teruskan NODE. JS dan SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) adalah kerja kerangka pelayan sumber terbuka berdasarkan bahasa js. Oleh kerana saya menggunakan Raspberry Pi Zero (CPU ARMv6) kami tidak dapat menggunakan proses pemasangan automatik (ditujukan untuk CPU ARMv7) dan kami perlu melakukannya secara manual:

Muat turun Nodejs secara tempatan, (Saya telah menggunakan versi 7.7.2 untuk ARMv6, periksa versi lain di sini

pi @ raspberry: ~ $ wget

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

Setelah selesai, ekstrak fail yang dimampatkan:

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

Salin dan Pasang fail ke / pengguna / tempatan

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

Tambahkan lokasi tempat kami memasang nodejs ke jalan, edit fail ".profile":

pi @ raspberry: ~ $ nano ~ /.profile

Tambahkan baris berikut di akhir fail, simpan dan keluar

PATH = $ PATH: / usr / local / bin

Keluarkan fail yang dimuat turun:.

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

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

Taipkan arahan berikut untuk memeriksa pemasangan nodejs:

pi @ raspberry: ~ $ simpul -v

pi @ raspberry: ~ $ npm -v

Anda harus membaca v7.7.2 dan v4.1.2 sebagai tindak balas.

Sekiranya semuanya berjalan lancar, buat folder baru untuk menghoskan fail nodejs anda:

pi @ raspberry: ~ $ mkdir angguk

Pindah ke dalam folder baru:

pi @ raspberry: ~ $ cd angguk

Pasang modul tambahan yang diperlukan untuk menguruskan GPIO dengan cara paling asas, AKTIF dan MATI:

pi @ raspberry: ~ $ npm pasang onoff

Sekarang adalah masa untuk menguji projek pertama kami "Blink.js", hasilnya akan menjadi … LED berkedip

pi @ raspberry: ~ $ nano blink.js

Tampal kod berikut, simpan dan keluar:

var Gpio = memerlukan ('onoff'). Gpio; // termasuk onoff

var LED = Gpio baru (3, 'keluar'); // gunakan GPIO 3

var blinkInterval = setInterval (blinkLED, 250);

// LED berkelip setiap 250ms

fungsi blinkLED () {// fungsi untuk mula berkelip

sekiranya

(LED.readSync () === 0) {// periksa keadaan pin, jika keadaannya 0 (atau mati)

LED.writeSync (1);

// tetapkan keadaan pin ke 1 (hidupkan LED)

} lain {

LED.writeSync (0);

// tetapkan keadaan pin ke 0 (matikan LED)

}

}

fungsi endBlink () {// fungsi untuk berhenti berkelip

clearInterval (berkelipInterval); // Hentikan selang kedip

LED.writeSync (0); // Matikan LED

LED.unexport (); // Unexport GPIO untuk membebaskan sumber

}

setTimeout (endBlink, 5000); // berhenti berkelip selepas 5 saat

Kabel LED, Perintang (200ohms) seperti yang ditunjukkan dalam skema dan jalankan projek:

pi @ raspberry: ~ $ node blink.js

Node sudah siap.

SOCKET. IO

WebSocket adalah protokol komunikasi komputer, berdasarkan koneksi TCP, menyediakan programmer untuk membuat pelayan dan klien. Pelanggan menyambung ke pelayan dan mengeluarkan dan menerima mesej ke dan dari pelayan. Pelaksanaan WebSocket untuk Node.js disebut Socket.io (https://socket.io/).

Pasang socket.io:

pi @ raspberry: ~ $ npm pasang socket.io --simpan

Pindah ke dalam rumah nodejs, dibuat dengan sengaja:

pi @ raspberry: ~ $ cd angguk

Dan buat folder baru "awam":

pi @ raspberry: ~ $ mkdir awam

Buat pelayan web sampel baru, namakan "webserver.js"

pi @ raspberry: ~ $ nano webserver.js

Tampal kod berikut, simpan dan keluar:

var http = memerlukan ('http'). createServer (pengendali); // memerlukan pelayan http, dan buat pelayan dengan pengendali fungsi ()

var fs = memerlukan ('fs'); // memerlukan modul sistem fail

http.listen (8080); // dengar port 8080

pengendali fungsi (req, res) {// buat pelayan

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

file index.html di folder awam

jika (salah) {

res.writeHead (404, {'Content-Type': 'text / html'}); // paparan 404 pada kesilapan

return res.end ( 404 Tidak

Dijumpai );

}

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

res.write (data); // tulis data

dari index.html

kembali res.end ();

});

}

Pelayan web ini akan mendengar port Raspberry 8080 anda dan menyediakan fail untuk mana-mana pelanggan web yang menghubungkannya. Sekarang kita perlu membuat sesuatu untuk dihoskan dan diberikan kepada pelanggan kita: Masuk ke dalam folder "awam": pi @ raspberry: ~ $ cd awam

Buat fail html baru "index.html":

pi @ raspberry: ~ $ nano index.html

Tampal kod dari "HelloWorld.txt" terlampir, simpan dan keluar.

Pindah ke dalam folder nodejs "nodehome":

pi @ raspberry: ~ $ cd angguk

Mulakan pelayan web

pi @ raspberry: ~ $ node webserver.js

Buka laman web dalam penyemak imbas menggunakan https:// Raspberry_IP: 8080 / (ganti Raspberry_IP dengan IP anda)

Langkah 6: MENAMBAHKAN KEUPAYAAN STREAMING VIDEO

Terdapat cara yang berbeza untuk melaksanakan streaming video pada Raspberry, paling mudah

seperti yang saya dapati sehingga sekarang, bahawa prestasi yang hebat dan dapat disatukan dalam antara muka web adalah berdasarkan projek dari Miguel Mota:

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

Terima kasih Miguel! Dari blognya ini adalah langkah-langkahnya:

Pasang komponen libjpeg8 dan cmake:

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

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

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

Muat turun mjpg-streamer dengan pemalam raspicam:

pi @ raspberry: ~ $ git klon

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

Tukar direktori:

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

Susun:

pi @ raspberry: ~ $ buat bersih semua

Gantikan mjpg-streamer lama:

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

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

/ opt / mjpg-streamer

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

Buat fail "start_stream.sh" baru, salin dan tampal dari fail "start_stream.txt" yang dilampirkan.

Jadikannya dapat dilaksanakan (buat skrip shell):

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

Mula Streaming pelayan:

pi @ raspberry: ~ $./start_stream.sh

Buka laman web dalam penyemak imbas menggunakan https:// Raspberry_IP: 9000 (ganti Raspberry_IP dengan IP anda)

Langkah 7: PROGRAM TANK

Semuanya sudah siap, sekarang kita harus membuat laman web kita untuk mengawal tangki (index.html) dan pelayan web kita untuk mendengar perintah kita (webserver.js). Jadi, ganti fail yang dilihat sehingga sekarang (hanya contoh untuk menguji sistem) dengan webserver.txt dan index.txt yang dilampirkan.

Langkah 8: MULAI SERVER INTERFACE DAN STREAMING SERVER

MULAI KAWALAN INTERFACE DAN STREAMING SERVER
MULAI KAWALAN INTERFACE DAN STREAMING SERVER

Untuk memulakan perkhidmatan, buka dua tetingkap terminal dan jalankan arahan berikut:

simpul nodehome / pelayan laman web.js

./nodehome/start_stream.sh

Buka laman web dalam penyemak imbas menggunakan https:// Raspberry_IP: 8080 (ganti Raspberry_IP dengan IP anda)

Disyorkan: