Мазмуну:

Малина танкы веб интерфейси жана видео агымы менен: 8 кадам (сүрөттөр менен)
Малина танкы веб интерфейси жана видео агымы менен: 8 кадам (сүрөттөр менен)

Video: Малина танкы веб интерфейси жана видео агымы менен: 8 кадам (сүрөттөр менен)

Video: Малина танкы веб интерфейси жана видео агымы менен: 8 кадам (сүрөттөр менен)
Video: Саркофаг Ленина 2024, Декабрь
Anonim
Малина танкы веб интерфейси жана видео агымы менен
Малина танкы веб интерфейси жана видео агымы менен

Мен алыстан Желе көзөмөлү жана Видео Агымга жөндөмдүү кичинекей WiFi Танкын кантип ишке ашырганымды көрөбүз.

Бул электрондук жана программалык камсыздоонун негизги билимдерин талап кылган окуу куралы болуп саналат. Ушул себептен улам мен танк шасси комплектин (3D принтер менен басып чыгаруунун ордуна, кийинчерээк жаңыртылышы мүмкүн) жана батарейкаларды кошкондо 6 компонентти тандап алдым. Программалык камсыздоо жагында сиз этап -этабы менен орното аласыз жана программалоо минималдуу сакталат, Raspberry нерселеринин негизги билими жардам берет.

Мен танкты иштетүүгө даяр болгон 0 сааттан 12 саатка чейин бааладым. Бардык компоненттер үчүн 70 € жалпы наркы.

1 -кадам: БОМ

БОМ
БОМ
БОМ
БОМ
БОМ
БОМ
БОМ
БОМ

1 - DIY RC робот шасси танкы - 32 (€)

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

1 - Dual Channel L298N DC Motor Driver Board - 1, 39 (€)

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

1 - Raspberry Pi Zero W баштоочу топтому - 26 (€)

amzn.eu/1ugAaMP

1 - 16 ГБ SD карта - 5, 50 (€)

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

1 - Zero Model үчүн Raspberry Pi 5MP Камера Модулунун Веб Камерасы - 8 (€)

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

1 - Power Bank 5V

1-9В батарейка

Аралаш Breadboard Cable Dupont Connector

Raspberry орнотуу үчүн чычкан, клавиатура, монитор же сыналгы (милдеттүү эмес, жөн гана биринчи орнотууну жеңилдетүү үчүн)

2 -кадам: Негизги компоненттердин өзгөчөлүктөрү

Мотор

JGA25-370 DC редуктору

Бул кыймылдаткычта D түрүндөгү чыгуучу вал бар.

Мүнөздөмөлөр

· Иштөө чыңалуусу: 6 В жана 18 В ортосунда

· Номиналдык чыңалуу: 12 В.

· Эркин чуркоо ылдамдыгы 12 V: 399 RPM

· Эркин чуркоо 12 В: 50 мА

· 12V токтоочу ток: 1200 мА

· 12Vдагы токтоочу момент: 2,2 кг.см

· Тиш катышы: 1:21

· Редуктордун өлчөмү: 19 мм

· Салмагы: 84 гр

Dual Channel L298N DC Motor Driver Board

Кош H-көпүрө мотор айдоочусу, эки DC моторун же 4 зымдуу эки фазалуу тепкич моторун айдай алат. Кыймылсыз TSD, мотор дүкөнүнөн коргоо үчүн.

Мүнөздөмөлөр

· Модул менен камсыздоо чыңалуусу: DC 2V-10V

· Сигнал киргизүү чыңалуусу: DC 1.8-7V

· Бир жумушчу ток: 1.5A

· Чокусу 2,5Ага чейин

· Төмөн күтүү ток (0.1uA кем)

· Камтылган жалпы өткөрүү схемасы, бош терминал бош, мотор иштебейт

· Өлчөмү: 24.7 x 21 x 7mm

3 -кадам: WIRING

WIRING
WIRING
WIRING
WIRING

Бул акыркы зым болот, бирок кээ бирлерин орнотуудан мурун КҮТҮҮ

программалык камсыздоо жана бул жерге кайтып келгенден кийин, аны жөнөкөй зым менен сынап көрүү жакшы идея.

Бизге эки башка энергия булагы керек, бири мотор үчүн, экинчиси Малина үчүн.

Мотор айдоочу Dual Channel L298N DC Motor Driver Board (максималдуу киргизүү чыңалуусу DC 2V-10V) 9V батарейканы колдонуу менен иштейт жана Raspberry Pi 5V USB аккумуляторунун стандарттарын колдонот.

Мотор айдоочусунун GND пини батарейканын минусуна жана Raspberry Pi (GND) менен туташат. Raspberry Piнин GPIO казыктары мотор драйверине стол катары туташкан.

4 -кадам: РАСПБЕРРИГЕ ДАЯРДЫК О. С

Бул Raspbian оперативдүү системасы үчүн стандарттык орнотуу, сиз таба аласыз

Интернетте издөө боюнча көптөгөн деталдуу үйрөткүчтөр, негизинен, кадамдар:

1. https://www.raspberrypi.org/downloads/raspbian/дан iso RASPBIAN STRETCHти Десктоп менен жүктөп алыңыз

2. 16 ГБ SD картаны форматтаңыз, мен SD Formatterди колдондум

3.. IMG файлын күйгүзүңүз, мен Win32DiskImager колдондум

Эми сиздин малинаңыз жүктөлүп, аны USB кубат булагына (5V, 2A) туташтырып, биринчи жүктөө орнотууга даяр. Сиз муну эки жол менен жасай аласыз, чычкан, клавиатура жана монитор сыяктуу тышкы түзүлүштөрдү колдонуп же компьютериңизди жана Raspberryге алыскы туташууну колдонсоңуз болот. Бул боюнча көптөгөн үйрөткүчтөр бар, бири:

5 -кадам: WIFI ТАНКЫБЫЗДЫ NODE. JS ЖАНА WEBSOCKET. IO МЕНЕН КАНТИП БАШКАРУУ КЕРЕК?

WIFI ТАНКЫБЫЗДЫ NODE. JS ЖАНА WEBSOCKET. IO МЕНЕН КАНТИП БАШКАРУУ КЕРЕК?
WIFI ТАНКЫБЫЗДЫ NODE. JS ЖАНА WEBSOCKET. IO МЕНЕН КАНТИП БАШКАРУУ КЕРЕК?

Азыр бизде Raspberry микро ПКнын жаңы орнотмосу бар, ал биздин жумушубузду аткарууга даяр, андыктан… танкка буйрук берүү үчүн эмнени колдонобуз?

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 CPU) колдонуп жаткандыктан, биз автоматтык орнотуу процессин колдоно албайбыз (ARMv7 CPU үчүн арналган) жана биз аны кол менен жасашыбыз керек:

Nodejsти жергиликтүү түрдө жүктөп алыңыз, (мен ARMv6 үчүн 7.7.2 версиясын колдондум, башка версияларын бул жерден караңыз

pi@малина: ~ $ wget

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

Бүткөндөн кийин, кысылган файлды алыңыз:

pi@малина: ~ $ tar -xzf түйүнү-v7.7.2-linux-armv6l.tar.gz

Файлдарды көчүрүү жана орнотуу /user /local

pi@малина: ~ $ sudo cp -R node-v7.7.2-linux-armv6l/*/usr/local/

Жолго nodejs орноткон жерибизди кошуп, ".profile" файлын түзөтүңүз:

pi@малина: ~ $ нано ~/.профил

Файлдын аягына төмөнкү сапты кошуңуз, сактаңыз жана чыгыңыз

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@малина: ~ $ түйүнү -v

pi@малина: ~ $ npm -v

Сиз жооп катары v7.7.2 жана v4.1.2 окушуңуз керек.

Эгерде баары жакшы болсо, nodejs файлдарыңызды жайгаштыруу үчүн жаңы папка түзүңүз:

pi@малина: ~ $ mkdir nodehome

Жаңы папканын ичине жылдыруу:

pi@малина: ~ $ cd nodehome

Негизги жол менен GPIO башкаруу үчүн кошумча модулду орнотуу, ON жана OFF:

pi@малина: ~ $ npm onoff орнотуу

Эми биздин биринчи "Blink.js" долбоорубузду сыноо убактысы келди, анын натыйжасы… жаркыраган LED болот

pi@малина: ~ $ nano blink.js

Төмөнкү кодду чаптаңыз, сактаңыз жана чыгыңыз:

var Gpio = required ('onoff'). Gpio; // өчүрүү кирет

var LED = жаңы Gpio (3, 'out'); // GPIO 3 колдонуңуз

var blinkInterval = setInterval (blinkLED, 250);

// ар бир 250 мс жарык диодун өчүрүңүз

функциясы 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, резистор (200ohms) зымдап, долбоорду иштетиңиз:

pi@малина: ~ $ node blink.js

Түйүн даяр.

SOCKET. IO

WebSocket - бул TCP туташуусуна негизделген компьютердик байланыш протоколу, ал программистке серверди жана кардарды түзүүнү камсыздайт. Кардар серверге туташып, серверге жана серверден билдирүүлөрдү чыгарат жана алат. Node.js үчүн WebSocket ишке ашыруу Socket.io деп аталат (https://socket.io/).

Socket.io орнотуу:

pi@малина: ~ $ npm socket.io орнотуу -сактоо

Nodejs үйүнүн ичинде жылдыруу, алдын ала түзүлгөн:

pi@малина: ~ $ cd nodehome

Жана "жалпыга ачык" жаңы папканы түзүңүз:

pi@малина: ~ $ mkdir коомдук

Жаңы үлгүдөгү веб -серверди түзүңүз, аны "webserver.js" деп атаңыз

pi@малина: ~ $ нано веб -сервер.js

Төмөнкү кодду чаптаңыз, сактаңыз жана чыгыңыз:

var http = талап кылуу ('http'). createServer (иштетүүчү); // http серверин талап кылыңыз жана функция иштеткичи менен серверди түзүңүз ()

var fs = талап кылуу ('fs'); // файл системасынын модулун талап кылат

http.listen (8080); // 8080 портун угуңуз

функция иштетүүчү (req, res) {// сервер түзүү

fs.readFile (_ dirname + '/public/index.html', функция (ката, маалыматтар) {// окуу

index.html файлын жалпы папкада

эгер (ката) {

res.writeHead (404, {'Content-Type': 'text/html'}); // катада 404 көрсөтүү

return res.end ( 404 Жок

Табылды );

}

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

res.write (маалыматтар); // маалыматтарды жазуу

index.html дан

return res.end ();

});

}

Бул веб -сервер сиздин Raspberry 8080 портуңузду угат жана аны туташтырган каалаган веб -кардарга файл берет. Эми биз кардарларыбызга хостинг кылуу үчүн бир нерсе түзүшүбүз керек: "Жалпыга ачык" папканын ичинде жылыңыз: pi@raspberry: ~ $ cd public

Жаңы "index.html" HTML файлын түзүңүз:

pi@малина: ~ $ нано индекси.html

Тиркелген "HelloWorld.txt" кодун чаптаңыз, сактаңыз жана чыгыңыз.

"Nodehome" nodejs папкасынын ичине жылыңыз:

pi@малина: ~ $ cd nodehome

HTTP веб -серверин баштоо:

pi@малина: ~ $ node webserver.js

Вебсайтты https:// Raspberry_IP: 8080/аркылуу браузерде ачыңыз (Raspberry_IPти IP менен алмаштырыңыз)

6 -кадам: VIDEO STREAMING МҮМКҮНЧҮЛҮГҮН КОШУУ

Малинада видео агымын ишке ашыруунун ар кандай жолдору бар, эң оңой

Мигель Мота долбоорунун негизинде эң сонун аткаруу жана веб -интерфейске интеграциялануу мүмкүн экенин ушул убакка чейин таптым.

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

Рахмат Мигель! Анын блогунан бул кадамдар:

Libjpeg8 жана cmake компоненттерин орнотуңуз:

pi@малина: ~ $ sudo apt-get libjpeg8 орнотуу

pi@малина: ~ $ sudo apt-get libjpeg8-dev орнотуу

pi@малина: ~ $ sudo apt-get cmake орнотуу

Raspicam плагини менен mjpg-стримерди жүктөп алыңыз:

pi@малина: ~ $ git клон

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

Каталогду өзгөртүү:

pi@малина: ~ $ cd ~/mjpg-streamer/mjpg-streamer-эксперименталдык

Түзүү:

pi@малина: ~ $ баарын тазалоо

Эски mjpg-стримерди алмаштырыңыз:

pi@малина: ~ $ sudo rm -rf /opt /-j.webp

pi@малина: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-эксперименталдык

/opt/mjpg-streamer

pi@малина: ~ $ sudo rm -rf ~/mjpg -стример

Жаңы "start_stream.sh" файлын түзүңүз, тиркелген "start_stream.txt" файлынан көчүрүп чаптаңыз.

Аны аткарылуучу кылыңыз (кабык скрипттерин түзүңүз):

pi@малина: ~ $ 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 -кадам: CONTROL INTERFACE ЖАНА СТРАМИНГ КЫЗМАТКЕРИН БАШТАҢЫЗ

ИНТЕРФАЙСТИ ЖАНА СТРИМИНГ КЫЗМАТЧЫНЫ БАШКАРУУ
ИНТЕРФАЙСТИ ЖАНА СТРИМИНГ КЫЗМАТЧЫНЫ БАШКАРУУ

Кызматтарды баштоо үчүн эки терминалдык терезени ачыңыз жана бул буйруктарды аткарыңыз:

түйүн nodehome/webserver.js

./nodehome/start_stream.sh

Вебсайтты https:// Raspberry_IP: 8080 аркылуу браузерде ачыңыз (Raspberry_IPти IP менен алмаштырыңыз)

Сунушталууда: