Բովանդակություն:

Ազնվամորու բաք վեբ ինտերֆեյսով և վիդեո հոսքով ՝ 8 քայլ (նկարներով)
Ազնվամորու բաք վեբ ինտերֆեյսով և վիդեո հոսքով ՝ 8 քայլ (նկարներով)

Video: Ազնվամորու բաք վեբ ինտերֆեյսով և վիդեո հոսքով ՝ 8 քայլ (նկարներով)

Video: Ազնվամորու բաք վեբ ինտերֆեյսով և վիդեո հոսքով ՝ 8 քայլ (նկարներով)
Video: Java Multithreading : AtomicReference, ScheduledExecutorService и монада Either. Многопоточность. 2024, Դեկտեմբեր
Anonim
Ազնվամորու բաք վեբ ինտերֆեյսով և վիդեո հոսքով
Ազնվամորու բաք վեբ ինտերֆեյսով և վիդեո հոսքով

Մենք կտեսնենք, թե ինչպես եմ ես հասկացել մի փոքրիկ WiFi տանկ, որը ունակ է հեռակառավարվող վեբ կառավարման և վիդեո հոսքի:

Սա նախատեսված է լինելու ձեռնարկ, որը պահանջում է էլեկտրոնային և ծրագրային ծրագրավորման հիմնական գիտելիքներ: Այդ պատճառով ես ընտրել եմ Tank chassis Kit- ը (3D տպիչով այն տպելու փոխարեն, կարող է լինել ավելի ուշ արդիականացում) և ընդհանուր առմամբ 6 բաղադրիչ, ներառյալ մարտկոցները: Softwareրագրային ապահովման կողմից դուք կարող եք քայլ առ քայլ հետևել տեղադրման գործընթացին և ծրագրավորմանը `նվազագույնի հասցնելով: Ազնվամորու իրերի հիմնական իմացությունը կարող է օգնել:

Ես գնահատել եմ 12 ժամ աշխատանք 0 -ից մինչև տանկը գործարկելու պատրաստ: Ընդհանուր արժեքը `70 € բոլոր բաղադրիչների համար:

Քայլ 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

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

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

1 - Երկակի ալիք L298N DC շարժիչային վարորդի տախտակ - 1, 39 (€)

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

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

amzn.eu/1ugAaMP

1 - 16 ԳԲ SD քարտ - 5, 50 (€)

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

1 - Raspberry Pi 5MP Camera Module Webcam Model Zero- ի համար - 8 (€)

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

1 - Power Bank 5V

1 - 9 վ մարտկոց

Խառը Breadboard Cable Dupont միակցիչ

Մկնիկ, ստեղնաշար, մոնիտոր կամ հեռուստացույց ազնվամորու տեղադրման համար (ըստ ցանկության, միայն առաջին կարգավորումն ավելի հեշտ դարձնելու համար)

Քայլ 2: Հիմնական բաղադրիչների բնութագրերը

Շարժիչ

JGA25-370 DC փոխանցման շարժիչ

Այս շարժիչն ունի D- ձևի ելքային լիսեռ:

Տեխնիկական պայմաններ

· Աշխատանքային լարումը `6 Վ -ից 18 Վ -ի սահմաններում

· Անվանական լարումը `12 Վ

· Անվճար գործարկման արագություն 12 Վ-ով ՝ 399 RPM

· Անվտանգ հոսանք 12 Վ-ում `50 մԱ

· Անջատիչ հոսանք 12 Վ -ում `1200 մԱ

· Անջատիչ ոլորող մոմենտը 12 Վ -ի դեպքում ՝ 2.2 կգ.սմ

· Գործիքի հարաբերակցությունը `1:21

· Կրճատիչի չափը `19 մմ

· Քաշը `84 գ

Երկակի ալիք L298N DC շարժիչով վարորդի տախտակ

Երկակի H-Bridge շարժիչով վարորդ, կարող է վարել երկու DC շարժիչ կամ 4-լարային երկաֆազ շարժիչային շարժիչ: Ներկառուցված TSD ՝ շարժիչային կանգառից պաշտպանվելու համար:

Տեխնիկական պայմաններ

· Մոդուլի մատակարարման լարումը `DC 2V-10V

· Ազդանշանի մուտքային լարումը `DC 1.8-7V

· Մեկ աշխատանքային հոսանք `1.5A

· Պիկ հոսանք մինչև 2,5 Ա

· Lowածր սպասման հոսանք (0.1uA- ից պակաս)

· Ներկառուցված ընդհանուր հաղորդակցության միացում, մուտքի տերմինալը դատարկ է, շարժիչը չի աշխատում

· Չափը ՝ 24,7 x 21 x 7 մմ

Քայլ 3: ԼՐԱՈՄ

ԼԵՌԱՈՄ
ԼԵՌԱՈՄ
ԼԵՌԱՈՄ
ԼԵՌԱՈՄ

Սա կլինի վերջնական էլեկտրագծերը, բայց ՍՊԱՍԵՔ, նախքան մենք պետք է որոշ տեղադրենք

ծրագրային ապահովում, և լավ գաղափար է այն փորձարկել ավելի պարզ էլեկտրագծերով, երբ պատրաստ լինեն, վերադառնալ այստեղ:

Մեզ անհրաժեշտ է երկու տարբեր էներգիայի աղբյուր ՝ մեկը շարժիչի և մյուսը ՝ ազնվամորու համար:

Շարժիչային վարորդ Dual Channel L298N DC Motor Driver Board (առավելագույն մուտքային լարումը DC 2V-10V) սնուցվում է 9 Վ մարտկոցի միջոցով, իսկ Raspberry Pi- ն օգտագործում է 5V ստանդարտ USB կուտակիչ:

Շարժիչի վարորդի GND կապը միացված կլինի մարտկոցին հանած և Raspberry Pi- ին (GND): Raspberry Pi- ի GPIO կապումները միացված են շարժիչի վարորդին որպես սեղան:

Քայլ 4. RASPBERRY O. S

Սա Raspbian օպերացիոն համակարգի ստանդարտ տեղադրում է, կարող եք գտնել

շատ մանրամասն ձեռնարկ, որը որոնում է համացանցը, հիմնականում քայլերն են.

1. Ներբեռնեք iso RASPBIAN STRETCH DESKTOP- ով ՝ https://www.raspberrypi.org/downloads/raspbian/ կայքից

2. Ձևաչափեք 16 ԳԲ SD քարտ, ես օգտագործել եմ SD ձևաչափ

3. Այրեք. IMG ֆայլը, ես օգտագործել եմ Win32DiskImager

Այժմ ձեր ազնվամորին պատրաստ է բեռնման, միացնել այն USB հոսանքի աղբյուրին (5V, 2A) և պատրաստվել առաջին բեռնման կարգավորմանը: Դուք կարող եք դա անել երկու եղանակով ՝ օգտագործելով արտաքին սարքեր, ինչպիսիք են մկնիկը, ստեղնաշարը և մոնիտորը, կամ օգտագործելով ձեր համակարգիչը և հեռավոր միացում ազնվամորիին: Այս մասին շատ ձեռնարկներ կան, մեկը ՝

Քայլ 5. Ինչպես վերահսկել մեր WIFI տանկը NODE. JS- ով և WEBSOCKET. IO- ով

ԻՆՉՊԵՍ ԿԱՌԱՎԱՐԵԼ ՄԵՐ WIFI ՏԱՆԿԸ NODE. JS- Ի ԵՎ WEBSOCKET. IO- ով
ԻՆՉՊԵՍ ԿԱՌԱՎԱՐԵԼ ՄԵՐ WIFI ՏԱՆԿԸ NODE. JS- Ի ԵՎ WEBSOCKET. IO- ով

Այժմ մենք ունենք մեր ազնվամորու միկրո համակարգչի թարմ տեղադրումը, որը պատրաստ է մեր աշխատանքը վարելու համար, ուստի … ինչո՞վ ենք մենք տանկին հրամաններ տալիս:

Python- ը շատ հեշտ օգտագործվող լեզու է, որը սովորաբար օգտագործվում է Rapsberry նախագծի ավազը գործարկելու համար, կարելի է հեշտությամբ օգտագործել նաև Rapsberry մուտքի և ելքի կապերի (GPIO) հետ փոխազդելու համար

Բայց, իմ նպատակն էր միացնել իմ տանկի wi-fi- ը ցանկացած սարքից (համակարգիչ, բջջային հեռախոս, պլանշետ…) ՝ օգտագործելով ընդհանուր վեբ զննարկիչ, ինչպես նաև տեսանյութեր հոսել դրանից: Այսպիսով, առայժմ մոռացեք Python- ը և թույլ տվեք շարժվել NODE. JS- ով և SOCKET. IO- ով:

NODE.js

Node.js (https://github.com/nodejs/node/wiki) բաց աղբյուրի սերվերի շրջանակային աշխատանք է ՝ հիմնված js լեզվի վրա: Քանի որ ես օգտագործում եմ Raspberry Pi Zero (ARMv6 պրոցեսոր), մենք չենք կարող օգտագործել ավտոմատ տեղադրման գործընթացը (նախատեսված է ARMv7 պրոցեսորի համար), և մենք պետք է դա անենք ձեռքով.

Ներբեռնեք Nodejs- ը տեղական մակարդակում, (ես օգտագործել եմ 7.7.2 տարբերակը ARMv6- ի համար, այլ տարբերակները ստուգեք այստեղ

pi@ազնվամորի: ~ $ wget

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

Ավարտելուց հետո հանեք սեղմված ֆայլը.

pi@ազնվամորի ՝ ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz

Պատճենեք և տեղադրեք ֆայլերը /օգտագործող /տեղական

pi@ազնվամորի: ~ $ sudo cp -R հանգույց-v7.7.2-linux-armv6l/*/usr/local/

Ավելացրեք այն վայրը, որտեղ մենք տեղադրում ենք nodejs ուղին, խմբագրեք «.profile» ֆայլը.

pi@ազնվամորի ՝ ~ $ nano ~/. պրոֆիլ

Ֆայլի վերջում ավելացրեք հետևյալ տողը, պահեք և դուրս եկեք

PATH = $ PATH:/usr/local/bin

Հեռացրեք ներբեռնված ֆայլը.

pi@ազնվամորի ՝ ~ $ rm ~/node-v7.7.2-linux-armv6l.tar.gz

pi@ազնվամորի ՝ ~ $ rm -r ~/node-v7.7.2-linux-armv6l

Մուտքագրեք հետևյալ հրամանները ՝ nodejs- ի տեղադրումը ստուգելու համար.

pi@ազնվամորի ՝ ~ $ node -v

pi@ազնվամորի ՝ ~ $ npm -v

Որպես պատասխան, դուք պետք է կարդաք v7.7.2 և v4.1.2:

Եթե ամեն ինչ լավ է ընթանում, ստեղծեք նոր թղթապանակ ՝ ձեր nodejs ֆայլերը հյուրընկալելու համար.

pi@ազնվամորի ՝ ~ $ mkdir nodehome

Տեղափոխել նոր թղթապանակի ներսում.

pi@ազնվամորի ՝ ~ $ cd nodehome

Տեղադրեք լրացուցիչ մոդուլ, որն անհրաժեշտ է GPIO- ն ամենահիմնական եղանակով կառավարելու և միացնելու համար.

pi@ազնվամորի. ~ $ npm տեղադրումը անջատված է

Այժմ ժամանակն է փորձարկել մեր առաջին նախագիծը ՝ «Blink.js», արդյունքը կլինի… թարթող լուսադիոդ

pi@ազնվամորի ՝ n $ nano blink.js

Տեղադրեք հետևյալ ծածկագիրը, պահեք և դուրս եկեք.

var Gpio = պահանջում («անջատում»): Gpio; // ներառել անջատում

var LED = նոր Gpio (3, «դուրս»); // օգտագործել GPIO 3

var blinkInterval = setInterval (blinkLED, 250);

// թարթել LED յուրաքանչյուր 250ms- ում

գործառույթը blinkLED () {// գործառույթը ՝ թարթել սկսելու համար

եթե

(LED.readSync () === 0) {// ստուգեք քորոցի վիճակը, եթե վիճակը 0 է (կամ անջատված է)

LED.writeSync (1);

// սահմանել քորոցի վիճակը 1 -ի վրա (միացնել LED- ը)

} ուրիշ {

LED.writeSync (0);

// սահմանել քորոցի վիճակը 0 -ի վրա (անջատել LED- ն)

}

}

գործառույթը endBlink () {// գործառույթը ՝ աչքերը թարթելը դադարեցնելու համար

clearInterval (blinkInterval); // Դադարեցրեք թարթելու միջակայքերը

LED.writeSync (0); // Անջատեք LED- ը

LED.unexport (); // GPIO- ն չարտահանել անվճար ռեսուրսներին

}

setTimeout (endBlink, 5000); // դադարեցնել թարթելը 5 վայրկյանից հետո

Հաղորդեք LED, դիմադրիչ (200 օհմ), ինչպես ցույց է տրված սխեմայում և գործարկեք նախագիծը.

pi@ազնվամորի ՝ ~ $ հանգույց blink.js

Հանգույցը պատրաստ է:

SOCKET. IO

WebSocket- ը համակարգչային հաղորդակցության արձանագրություն է, որը հիմնված է TCP կապի վրա, այն ծրագրավորողին տրամադրում է սերվեր և հաճախորդ ստեղծելու համար: Հաճախորդը միանում է սերվերին և թողարկում և ստանում հաղորդագրություններ դեպի սերվեր և դեպի այն: Node.js- ի համար WebSocket- ի իրականացումը կոչվում է Socket.io (https://socket.io/):

Տեղադրեք socket.io:

pi@raspberry: ~ $ npm տեղադրել socket.io -խնայել

Տեղափոխվեք nodejs home ներսում, որը ստեղծվել է նախապես.

pi@ազնվամորի ՝ ~ $ cd nodehome

Եվ ստեղծեք «հրապարակային» նոր թղթապանակ.

pi@ազնվամորի ՝ m $ mkdir հանրային

Ստեղծեք նոր վեբ սերվեր, անվանեք այն «webserver.js»

pi@ազնվամորի ՝ n $ nano webserver.js

Տեղադրեք հետևյալ ծածկագիրը, պահեք և դուրս եկեք.

var http = պահանջում ('http'): createServer (կառավարիչ); // պահանջում է http սերվեր և սերվեր ստեղծել գործառույթի կառավարիչով ()

var fs = պահանջել ('fs'); // պահանջում է ֆայլային համակարգի մոդուլ

http.listen (8080); // լսեք 8080 նավահանգիստը

գործառույթների կառավարիչ (պահանջ, res) {// սերվեր ստեղծել

fs.readFile (_ dirname + '/public/index.html', գործառույթ (սխալ, տվյալներ) {// կարդալ

ֆայլ index.html հանրային թղթապանակում

եթե (սխալ) {

res.writeHead (404, {'Բովանդակության տեսակ' ՝ 'text/html'}); // ցուցադրել սխալի 404 -ը

վերադարձ res.end ( 404 Not

Գտնվել է »);

}

res.writeHead (200, {'Բովանդակության տեսակ' ՝ 'text/html'}); // գրել HTML

res.write (տվյալներ); // գրել տվյալներ

index.html- ից

վերադարձ res.end ();

});

}

Այս վեբ սերվերը կլսի ձեր Raspberry նավահանգիստ 8080 -ը և ֆայլ կապահովի այն միացնող ցանկացած վեբ հաճախորդի համար: Այժմ մենք պետք է ինչ -որ բան ստեղծենք հյուրընկալելու և մեր հաճախորդներին տրամադրելու համար. Տեղափոխվեք «հանրային» թղթապանակի ներսում. Pi@raspberry: ~ $ cd public

Ստեղծեք նոր html ֆայլ «index.html»:

pi@ազնվամորի ՝ ~ $ nano index.html

Տեղադրեք ծածկագիրը կցված «HelloWorld.txt» - ից, պահեք և դուրս եկեք:

Տեղափոխեք nodejs պանակի «nodehome»:

pi@ազնվամորի ՝ ~ $ cd nodehome

Գործարկել HTTP վեբ սերվերը.

pi@raspberry: ~ $ node webserver.js

Բացեք կայքը դիտարկիչում ՝ օգտագործելով https:// Raspberry_IP: 8080/(փոխարինեք Raspberry_IP- ը ձեր IP- ով)

Քայլ 6. ՎԻԴԵՈ ԳՈՐՈ ՀՆԱՐԱՎՈՈԹՅԱՆ ԼՐԱՈՄ

Ազնվամորիով վիդեո հոսք իրականացնելու տարբեր եղանակներ կան, ամենահեշտը

Ինչպես ես գտել եմ մինչ այժմ, որ որպես գերազանց կատարում և հնարավոր է ինտեգրվել վեբ ինտերֆեյսի վրա, հիմնված է Միգել Մոտայի նախագծի վրա.

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

Շնորհակալություն Միգել! Նրա բլոգից հետևյալ քայլերն են.

Տեղադրեք libjpeg8 և cmake բաղադրիչները.

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

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

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

Ներբեռնեք mjpg-streamer- ը raspicam plugin- ով.

pi@ազնվամորի: ~ $ git կլոն

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

Փոխել գրացուցակը.

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

Կազմել:

pi@ազնվամորի: ~ $ մաքրել բոլորը

Փոխարինեք հին mjpg-streamer- ը ՝

pi@ազնվամորի ՝ su $ sudo rm -rf /opt /-j.webp

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

/opt/mjpg-streamer

pi@ազնվամորի ՝ su $ sudo rm -rf ~/mjpg -streamer

Ստեղծեք նոր «start_stream.sh» ֆայլ, պատճենեք և տեղադրեք կցված «start_stream.txt» ֆայլից:

Դարձրեք այն գործարկելի (ստեղծեք shell սցենարներ).

pi@ազնվամորի ՝ ch $ chmod +x start_stream.sh

Սկսեք հոսքային սերվեր.

pi@ազնվամորի ՝ ~ $./start_stream.sh

Բացեք կայքը դիտարկիչում ՝ օգտագործելով https:// Raspberry_IP: 9000 (փոխարինեք Raspberry_IP- ը ձեր IP- ով)

Քայլ 7: ՏԱՆԿԻ ՐԱԳԻՐ

Ամեն ինչ պատրաստ է, այժմ մենք պետք է ստեղծենք մեր վեբ էջը, որը կառավարելու է տանկը (index.html) և մեր վեբ սերվերը `մեր հրամանները լսելու համար (webserver.js): Այսպիսով, պարզապես փոխարինեք մինչ այժմ տեսած ֆայլերը (պարզապես համակարգի փորձարկման օրինակներ) կցված webserver.txt և index.txt- ով:

Քայլ 8. ՍԿՍԵԼ ՎԵՐԱՀՍԿՈՈԹՅԱՆ ՄԻTERԱFԳԱՅԻՆ ԵՎ STREAMING սերվեր

ՍԿՍԵԼ ՎԵՐԱՀՍԿՈՈԹՅԱՆ ՄԻTERԱFԳԱՅԻՆ ԵՎ STREAMING սերվեր
ՍԿՍԵԼ ՎԵՐԱՀՍԿՈՈԹՅԱՆ ՄԻTERԱFԳԱՅԻՆ ԵՎ STREAMING սերվեր

Առայությունները սկսելու համար բացեք երկու տերմինալային պատուհան և գործարկեք հետևյալ հրամանները.

հանգույց nodehome/webserver.js

./nodehome/start_stream.sh

Բացեք կայքը դիտարկիչում ՝ օգտագործելով https:// Raspberry_IP: 8080 (փոխարինեք Raspberry_IP- ը ձեր IP- ով)

Խորհուրդ ենք տալիս: