Mündəricat:

Veb interfeysi və video axını olan moruq tankı: 8 addım (şəkillərlə)
Veb interfeysi və video axını olan moruq tankı: 8 addım (şəkillərlə)

Video: Veb interfeysi və video axını olan moruq tankı: 8 addım (şəkillərlə)

Video: Veb interfeysi və video axını olan moruq tankı: 8 addım (şəkillərlə)
Video: Жёлтые парижские жилеты: горит ли Париж? Ярость и гнев парижан из жёлтых жилетов и французов! 2024, Noyabr
Anonim
Veb İnterfeysi və Video Axını olan Moruq Tankı
Veb İnterfeysi və Video Axını olan Moruq Tankı

Uzaqdan Veb İdarəetmə və Video Yayımına qadir olan kiçik bir WiFi Tankını necə həyata keçirdiyimi görəcəyik.

Bu, elektron və proqramlaşdırma proqramları haqqında ilkin biliklər tələb edən bir dərs olacaq. Bu səbəbdən bir Tank şassi dəsti (3D printerdən istifadə etməklə çap etmək əvəzinə, daha sonra təkmilləşdirilə bilər) və batareyalar da daxil olmaqla ümumilikdə 6 komponent seçdim. Proqram tərəfində, quraşdırma prosesini addım -addım izləyə bilərsiniz və proqramlaşdırma minimum səviyyədə saxlanılır, Raspberry şeyləri haqqında əsas məlumat kömək edə bilər.

12 saatlıq işimi 0 -dan hazır tanka qədər hesabladım. Bütün komponentlər üçün ümumi dəyəri 70 €.

Addım 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - DIY RC Robot Şassi Tankı - 32 (€)

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

1 - Dual Channel L298N DC Motor Sürücü Kartı - 1, 39 (€)

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

1 - Raspberry Pi Zero W Başlanğıc Kit - 26 (€)

amzn.eu/1ugAaMP

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

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

1 - Model Zero üçün Raspberry Pi 5MP Kamera Modulu Veb Kamerası - 8 (€)

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

1 - Power Bank 5V

1-9V batareya

Qarışıq Breadboard Kabeli Dupont Konnektoru

Raspberry qurulması üçün siçan, klaviatura, Monitor və ya TV (isteğe bağlı, yalnız ilk qurulmanı asanlaşdırmaq üçün)

Addım 2: Əsas komponentlərin xüsusiyyətləri

Motor

JGA25-370 DC dişli motor

Bu mühərrik D formalı çıxış milinə malikdir.

Xüsusiyyətlər

· İşləmə gərginliyi: 6 V və 18 V arasında

· Nominal gərginlik: 12 V.

· 12 V-da sərbəst sürət: 399 RPM

· 12 V: 50 mA-da sərbəst axın

· 12V -da dayanma axını: 1200 mA

· 12V -də dayanma torku: 2,2 kq.sm

· Dişli nisbəti: 1:21

· Redüktör ölçüsü: 19 mm

· Çəkisi: 84 q

İki Kanallı L298N DC Motor Sürücü Kartı

İki H-körpü motor sürücüsü, iki DC mühərriki və ya 4 telli iki fazalı pilləli mühərrikləri idarə edə bilər. Motor dayanacağından qorumaq üçün quraşdırılmış TSD.

Xüsusiyyətlər

· Modul təchizatı gərginliyi: DC 2V-10V

· Siqnal giriş gərginliyi: DC 1.8-7V

· Tək iş cərəyanı: 1.5A

· 2.5A -a qədər maksimum cərəyan

· Aşağı gözləmə axını (0.1uA -dan az)

· Daxili ümumi keçirici dövrə, giriş terminalı boşdur, motorda nasazlıq yoxdur

· Ölçüsü: 24.7 x 21 x 7 mm

Addım 3: QABLAMA

QABLAMA
QABLAMA
QABLAMA
QABLAMA

Bu, son naqillər olacaq, amma bəzilərini quraşdırmadan əvvəl gözləyin

proqram təminatıdır və hazır olduqda buraya qayıtdıqdan sonra onu daha sadə məftillərlə sınamaq yaxşı olar.

İki fərqli enerji mənbəyinə ehtiyacımız var: biri motor üçün, biri də Moruq üçün.

Motor sürücüsü Dual Channel L298N DC Motor Sürücü Kartı (maksimum giriş gərginliyi DC 2V-10V) 9V batareya ilə təchiz edilir və Raspberry Pi standartlar 5V USB akkumulyatorundan istifadə edir.

Motor sürücüsünün GND pimi mənfi batareya və Raspberry Pi (GND) ilə bağlanacaq. Raspberry Pi -nin GPIO pinləri motor sürücüsünə masa kimi bağlanır.

Addım 4: Raspberry hazırlamaq O. S

Bu tapa biləcəyiniz Raspbian əməliyyat sistemi üçün standart bir quraşdırmadır

İnternetdə bir çox ətraflı təlimat, əsasən addımlar bunlardır:

1. https://www.raspberrypi.org/downloads/raspbian/ saytından iso RASPBIAN STRETCH MASASI ÜZRƏ yükləyin.

2. 16 GB SD Kartı Formatlayın, SD Formatter istifadə etdim

3.. IMG faylını yazın, Win32DiskImager istifadə etdim

İndi moruq açılmağa hazırdır, onu bir USB enerji mənbəyinə (5V, 2A) qoşun və ilk açılış qurulmasına hazırlaşın. Siçan, klaviatura və monitor kimi xarici cihazlardan istifadə edərək və ya PC və Raspberry ilə uzaqdan əlaqədən istifadə edərək bunu iki yolla edə bilərsiniz. Bu mövzuda bir çox dərs var, bunlardan biri:

Addım 5: NODE. JS VE WEBSOCKET. IO İLƏ WIFI TANKIMIZI NECƏ NƏZARƏT EDİRİK

NODE. JS VE WEBSOCKET. IO İLƏ WIFI TANKIMIZA NECƏ NƏZARƏT EDİRİK
NODE. JS VE WEBSOCKET. IO İLƏ WIFI TANKIMIZA NECƏ NƏZARƏT EDİRİK

İndi işimizi yerinə yetirməyə hazır olan Raspberry mikro PC -nin yeni bir qurğusu var, buna görə … tanka əmr vermək üçün nədən istifadə edirik?

Python, Rapsberry proyektini işlətmək üçün çox istifadə olunan bir dildir, Rapsberry giriş və çıxış pinləri (GPIO) ilə qarşılıqlı əlaqə qurmaq üçün də istifadə edilə bilər

Ancaq məqsədim ümumi bir veb brauzerdən istifadə edərək tank wi-fi-ni hər hansı bir cihazdan (PC, cib telefonu, planşet …) bağlamaq və ondan video yayımlamaq idi. Beləliklə, Python -u hələlik unudun və NODE. JS və SOCKET. IO -ya keçək.

NODE.js

Node.js (https://github.com/nodejs/node/wiki), js dilinə əsaslanan açıq mənbə server çərçivə işidir. Raspberry Pi Zero (ARMv6 CPU) istifadə etdiyim üçün avtomatik quraşdırma prosesini (ARMv7 CPU üçün nəzərdə tutulmuş) istifadə edə bilmərik və bunu əl ilə etməliyik:

Nodejs -i yerli olaraq yükləyin (ARMv6 üçün 7.7.2 versiyasını istifadə etdim, digər versiyaları buradan yoxlayın

pi@moruq: ~ $ wget

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

Bitirdikdən sonra sıxılmış faylı çıxarın:

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

Faylları /user /local -a kopyalayın və quraşdırın

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

Nodejs qurduğumuz yeri yola əlavə edin, ".profile" faylını redaktə edin:

pi@moruq: ~ $ nano ~/.profil

Faylın sonuna aşağıdakı sətri əlavə edin, qeyd edin və çıxın

YOL = $ PATH:/usr/local/bin

Yüklənmiş faylı silin:.

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

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

Nodejs quraşdırılmasını yoxlamaq üçün aşağıdakı əmrləri yazın:

pi@moruq: ~ $ node -v

pi@moruq: ~ $ npm -v

Cavab olaraq v7.7.2 və v4.1.2 oxumalısınız.

Hər şey yaxşı gedirsə, nodejs fayllarınızı yerləşdirmək üçün yeni bir qovluq yaradın:

pi@moruq: ~ $ mkdir nodehome

Yeni qovluğun içərisinə keçin:

pi@moruq: ~ $ cd nodehome

Açıq və Kapalı olaraq GPIO -nu ən sadə şəkildə idarə etmək üçün lazım olan əlavə modulu quraşdırın:

pi@moruq: ~ $ npm yükləyin

İlk layihəmiz "Blink.js" ni sınamağın vaxtıdır, nəticə… yanıb -sönən LED olacaq

pi@moruq: ~ $ nano blink.js

Aşağıdakı kodu yapışdırın, qeyd edin və çıxın:

var Gpio = tələb edin ('açma'). Gpio; // offoff daxildir

var LED = yeni Gpio (3, 'çıxdı'); // GPIO 3 istifadə edin

var blinkInterval = setInterval (yanıb -sönən, 250);

// hər 250 ms -də LED yanıb -sönür

yanıb -sönməyə başlamaq üçün funksiya blinkLED () {// funksiyası

əgər

(LED.readSync () === 0) {// vəziyyət 0 (və ya söndürülmüşsə) pin vəziyyətini yoxlayın

LED.writeSync (1);

// pin vəziyyətini 1 olaraq təyin edin (LED yandırın)

} başqa {

LED.writeSync (0);

// pin vəziyyətini 0 olaraq təyin edin (LED söndürün)

}

}

endBlink () {// yanıb sönməyi dayandırmaq funksiyası

clearInterval (blinkInterval); // Göz qırpma aralıqlarını dayandırın

LED.writeSync (0); // LED söndürün

LED.unexport (); // Pulsuz mənbələrə GPIO ixrac edin

}

setTimeout (endBlink, 5000); // 5 saniyədən sonra yanıb sönməyi dayandırın

Şemada göstərildiyi kimi bir LED, bir Rezistor (200ohms) bağlayın və layihəni işləyin:

pi@moruq: ~ $ node blink.js

Node hazırdır.

SOCKET. IO

WebSocket, bir server və müştəri yaratmaq üçün bir proqramçı təmin edən TCP bağlantısına əsaslanan bir kompüter ünsiyyət protokoludur. Müştəri serverə qoşulur və serverdən və serverdən mesajlar alır və alır. Node.js üçün WebSocket tətbiqi Socket.io adlanır (https://socket.io/).

Socket.io qurun:

pi@moruq: ~ $ npm socket.io qurun -saxla

Əvvəlcədən yaradılmış nodejs evinin içərisinə keçin:

pi@moruq: ~ $ cd nodehome

Və "ictimai" yeni bir qovluq yaradın:

pi@moruq: ~ $ mkdir ictimai

Yeni bir nümunə veb server yaradın, ona "webserver.js" deyin

pi@moruq: ~ $ nano webserver.js

Aşağıdakı kodu yapışdırın, qeyd edin və çıxın:

var http = tələb ('http'). createServer (işləyici); // http serveri tələb edin və funksiya işləyicisi ilə server yaradın ()

var fs = tələb ('fs'); // fayl sistemi modulu tələb olunur

http. dinlə (8080); // 8080 portunu dinləyin

funksiya işləyicisi (req, res) {// server yaradın

fs.readFile (_ dirname + '/public/index.html', funksiya (səhv, məlumat) {// oxu

ümumi qovluqdakı index.html fayl

əgər (səhv) {

res.writeHead (404, {'Content-Type': 'text/html'}); // xətada 404 göstərin

qayıt res.end ( 404 Xeyr

Tapıldı );

}

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

res.write (məlumatlar); // məlumat yaz

index.html saytından

qayıt res.end ();

});

}

Bu veb server, 8080 Raspberry portunuzu dinləyəcək və onu birləşdirən hər hansı bir veb müştəriyə fayl təqdim edəcək. İndi müştərilərimizə ev sahibliyi etmək və təqdim etmək üçün bir şey yaratmalıyıq: "İctimai" qovluğa keçin: pi@moruq: ~ $ cd ictimai

Yeni "index.html" html faylı yaradın:

pi@moruq: ~ $ nano index.html

Əlavə edilmiş "HelloWorld.txt" dən kodu yapışdırın, qeyd edin və çıxın.

"Nodehome" nodejs qovluğuna keçin:

pi@moruq: ~ $ cd nodehome

HTTP veb serverini işə salın:

pi@moruq: ~ $ node webserver.js

Veb saytı https:// Raspberry_IP: 8080/istifadə edərək brauzerdə açın (Raspberry_IP -i IP ilə əvəz edin)

Addım 6: VİDEO YAYMA QABİLİYYƏTİNİ ƏLAVƏ EDİN

Bir Moruqda video axını həyata keçirməyin ən asan yolu var

İndiyə qədər gördüyüm yol, əla bir performans və bir veb interfeysinə inteqrasiya oluna biləcəyinin Miguel Mota layihəsinə əsaslanır:

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

Təşəkkürlər Migel! Onun blogundan bu addımlar:

Libjpeg8 və cmake komponentlərini quraşdırın:

pi@moruq: ~ $ sudo apt-get libjpeg8 qurun

pi@moruq: ~ $ sudo apt-get libjpeg8-dev quraşdırın

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

Raspicam plugin ilə mjpg-streamer yükləyin:

pi@moruq: ~ $ git klon

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

Kataloqu dəyişdirin:

pi@moruq: ~ $ cd ~/mjpg-streamer/mjpg-streamer-təcrübi

Kompilyasiya edin:

pi@moruq: ~ $ hamısını təmizləyin

Köhnə-j.webp

pi@moruq: ~ $ sudo rm -rf /opt /-j.webp

pi@moruq: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-təcrübi

/opt/-j.webp

pi@moruq: ~ $ sudo rm -rf ~/mjpg -axın

Yeni bir "start_stream.sh" faylı yaradın, əlavə edilmiş "start_stream.txt" faylından kopyalayın və yapışdırın.

İcra olun (qabıq skriptləri yaradın):

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

Axın serverinə başlayın:

pi@moruq: ~ $./start_stream.sh

Veb saytı https:// Raspberry_IP: 9000 istifadə edərək brauzerdə açın (Raspberry_IP -i IP ilə əvəz edin)

Addım 7: TANK PROQRAMI

Hər şey hazırdır, indi tankı idarə etmək üçün web səhifəmizi (index.html) və əmrlərimizi dinləmək üçün web serverimizi (webserver.js) yaratmalıyıq. Beləliklə, indiyə qədər görünən faylları (sistemi sınamaq üçün yalnız nümunələr) əlavə edilmiş webserver.txt və index.txt ilə əvəz edin.

Addım 8: NƏZARƏT ARAYİŞİNƏ VƏ STREAMING SERVERİNİ BAŞLAYIN

NƏZARƏT ARAYİŞİNƏ VƏ STREAMING SERVERİNİ BAŞLAYIN
NƏZARƏT ARAYİŞİNƏ VƏ STREAMING SERVERİNİ BAŞLAYIN

Xidmətlərə başlamaq üçün iki terminal pəncərəsini açın və bu əmrləri yerinə yetirin:

qovşaq nodehome/webserver.js

./nodehome/start_stream.sh

Veb saytı https:// Raspberry_IP: 8080 istifadə edərək brauzerdə açın (Raspberry_IP -i IP ilə əvəz edin)

Tövsiyə: