Вэб интерфэйс ба видео дамжуулалттай бөөрөлзгөнө сав: 8 алхам (зурагтай)
Вэб интерфэйс ба видео дамжуулалттай бөөрөлзгөнө сав: 8 алхам (зурагтай)
Anonim
Вэб интерфэйс, видео дамжуулалттай бөөрөлзгөнө сав
Вэб интерфэйс, видео дамжуулалттай бөөрөлзгөнө сав

Алсаас вэб хяналт, видео дамжуулах чадвартай бяцхан WiFi савыг хэрхэн олж авснаа бид харах болно.

Энэ нь цахим болон програм хангамжийн анхан шатны мэдлэг шаарддаг зааварчилгаанд зориулагдсан болно. Энэ шалтгааны улмаас би танк явах эд ангиудыг (3D принтер ашиглан хэвлэхийн оронд дараа нь шинэчлэх боломжтой) болон батерейг багтаасан нийт 6 бүрэлдэхүүн хэсгийг сонгосон. Програм хангамжийн хувьд та суулгах процессыг алхам алхамаар дагаж мөрдөж, програмчлалыг хамгийн бага хэмжээнд байлгадаг бөгөөд Raspberry -ийн талаархи үндсэн мэдлэг нь тусалж чадна.

Би 0 -ээс бэлэн танк хүртэл 12 цаг ажилласан гэж тооцоолсон. Бүх бүрэлдэхүүн хэсгүүдийн нийт зардал 70 евро.

Алхам 1: Монголбанк

Монголбанк
Монголбанк
Монголбанк
Монголбанк
Монголбанк
Монголбанк
Монголбанк
Монголбанк

1 - DIY RC робот явах эд анги танк - 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 GB SD карт - 5, 50 (€)

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

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

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

1 - Power Bank 5V

1 - 9в батерей

Холимог талхны кабель Dupont холбогч

Бөөрөлзгөнө тохируулах хулгана, гар, дэлгэц эсвэл ТВ (заавал биш, зөвхөн эхний тохиргоог хялбар болгох)

Алхам 2: Үндсэн бүрэлдэхүүн хэсгүүдийн үзүүлэлтүүд

Мотор

JGA25-370 тогтмол гүйдлийн хөдөлгүүр

Энэхүү мотор нь D хэлбэрийн гаралтын голтой.

Үзүүлэлтүүд

· Ажиллах хүчдэл: 6 В -оос 18 В хүртэл

· Нэрлэсэн хүчдэл: 12 В.

· Чөлөөт гүйдлийн хурд 12 В: 399 эрг / мин

· 12 В: 50 мА хүчдэлтэй чөлөөт гүйдэл

· Тасалгааны гүйдэл 12V: 1200 мА

· 12V хүчдэлийн зогсолтын эргэлт: 2.2 кг.см

· Арааны харьцаа: 1:21

· Редукторын хэмжээ: 19 мм

· Жин: 84 гр

Хос суваг L298N DC моторт драйверын самбар

H-гүүрний хос мотор жолооч, хоёр тогтмол гүйдлийн мотор эсвэл 4 утастай хоёр фазын шатлалт мотор жолооддог. Баригдсан TSD, моторын лангуунаас хамгаалах.

Үзүүлэлтүүд

· Модулийн тэжээлийн хүчдэл: DC 2V-10V

· Дохионы оролтын хүчдэл: DC 1.8-7V

· Нэг ажлын гүйдэл: 1.5А

· 2.5А хүртэл оргил гүйдэл

· Бага зогсолтын гүйдэл (0.1uA -аас бага)

· Баригдсан нийтлэг дамжуулах хэлхээ, оролтын терминал хоосон, мотор эвдрэхгүй

· Хэмжээ: 24.7 x 21 x 7 мм

Алхам 3: ЦАХИЛГААН

УТАС
УТАС
УТАС
УТАС

Энэ нь эцсийн утас байх болно, гэхдээ заримыг нь суулгахаас өмнө ХҮЛЭЭНЭ

програм хангамж, үүнийг бэлэн болсны дараа энгийн утсаар туршиж үзэх нь зүйтэй юм.

Бидэнд хоёр өөр тэжээлийн эх үүсвэр хэрэгтэй болно, нэг нь мотор, нөгөө нь бөөрөлзгөнө.

Хөдөлгүүрийн хос суваг L298N DC моторт драйверын самбар (хамгийн их оролтын хүчдэл DC 2V-10V) нь 9В батерейгаар тэжээгддэг бөгөөд Raspberry Pi нь 5V USB аккумляторын стандартыг ашигладаг.

Мотор драйверын GND зүү нь зайны хасах ба Raspberry Pi (GND) -тай холбогдоно. Raspberry Pi -ийн GPIO тээглүүр нь мотор драйвертай хүснэгт хэлбэрээр холбогддог.

Алхам 4: RASPBERRY БЭЛТГЭХ O. S

Энэ бол Raspbian үйлдлийн системийн стандарт суулгалт бөгөөд та олж болно

вэб дээр хайлт хийх олон нарийвчилсан зааварчилгаа, үндсэн алхамууд нь:

1. https://www.raspberrypi.org/downloads/raspbian/ дээрээс iso RASPBIAN STRETCH -ийг Десктоптой татаж аваарай.

2. 16 GB хэмжээтэй SD картыг форматлаарай, би SD форматлагчийг ашигласан

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 node-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 -г асаах, унтраах ажлыг үндсэн хэлбэрээр удирдахад шаардлагатай нэмэлт модулийг суулгана уу.

pi@бөөрөлзгөнө: ~ $ npm onoff суулгах

Бидний анхны "Blink.js" төслийг туршиж үзэх цаг боллоо, үр дүн нь LED анивчих болно

pi@бөөрөлзгөнө: ~ $ нано blink.js

Дараах кодыг буулгаад хадгалаад гарна уу.

var Gpio = шаардлагатай ('унтраах'). Gpio; // унтраах орно

var LED = шинэ Gpio (3, 'out'); // GPIO 3 ашиглах

var blinkInterval = setInterval (blinkLED, 250);

// 250 м тутамд LED анивчих

функц 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@бөөрөлзгөнө: ~ $ 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. сонсох (8080); // 8080 портыг сонсоорой

функц зохицуулагч (req, res) {// сервер үүсгэх

fs.readFile (_ dirname + '/public/index.html', функц (алдаа, өгөгдөл) {// унших

public index.html файлыг нийтийн хавтсанд байрлуулна

хэрэв (алдаа) {

res.writeHead (404, {'Агуулгын төрөл': 'текст/html'}); // 404 алдааг харуулна

буцах res.end ( 404 Үгүй

Олсон );

}

res.writeHead (200, {'Агуулгын төрөл': 'текст/html'}); // HTML бичих

res.write (өгөгдөл); // өгөгдөл бичих

index.html дээрээс

буцах res.end ();

});

}

Энэ вэб сервер нь таны Raspberry 8080 портыг сонсож, түүнийг холбосон ямар ч вэб клиентэд файл өгөх болно. Одоо бид үйлчлүүлэгчиддээ зориулан зохион байгуулж өгөх зүйл бий болгох хэрэгтэй байна: "public" фолдер дотор зөөх: pi@raspberry: ~ $ cd public

Шинэ "index.html" html файл үүсгэх:

pi@бөөрөлзгөнө: ~ $ нано индекс.html

Хавсаргасан "HelloWorld.txt" дээрх кодыг оруулаад хадгалаад гарна уу.

Nodejs фолдер доторх "nodehome" руу шилжих:

pi@бөөрөлзгөнө: ~ $ cd nodehome

HTTP вэб серверийг эхлүүлэх:

pi@бөөрөлзгөнө: ~ $ node webserver.js

Вэбсайтыг https:// Raspberry_IP: 8080/ашиглан хөтөч дээр нээнэ үү (Raspberry_IP -ийг IP хаягаараа солино уу)

Алхам 6: ВИДЕО ҮЗЭХ ЧАДВАР НЭМЭХ

Бөөрөлзгөнө дээр видео дамжуулалтыг хэрэгжүүлэх өөр өөр арга байдаг

Мигель Мотагийн төсөл дээр суурилсан гайхалтай гүйцэтгэлийг вэб интерфэйсд нэгтгэх боломжтой гэдгийг би өнөөг хүртэл олж мэдсэн.

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

Баярлалаа Мигель! Түүний блогоос эдгээр алхмууд нь:

Libjpeg8 ба cmake бүрэлдэхүүн хэсгүүдийг суулгана уу:

pi@бөөрөлзгөнө: ~ $ sudo apt-get libjpeg8 суулгаарай

pi@бөөрөлзгөнө: ~ $ sudo apt-get libjpeg8-dev суулгаарай

pi@бөөрөлзгөнө: ~ $ sudo apt-get install cmake

Raspicam залгаас ашиглан mjpg-дамжуулагчийг татаж авах:

pi@бөөрөлзгөнө: ~ $ git клон

github.com/jacksonliam/mjpg-streamer.git ~/mjpg-дамжуулагч

Лавлахыг өөрчлөх:

pi@бөөрөлзгөнө: ~ $ cd ~/mjpg-цацагч/mjpg-дамжуулагч-туршилтын

Эмхэтгэх:

pi@бөөрөлзгөнө: ~ $ бүгдийг цэвэрлэ

Хуучин-j.webp

pi@бөөрөлзгөнө: ~ $ sudo rm -rf /opt /-j.webp

pi@бөөрөлзгөнө: ~ $ sudo mv ~/mjpg-цацагч/mjpg-цацагч-туршилтын

/opt/mjpg-дамжуулагч

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: ХЯНАЛТЫН ХӨРӨНГӨӨ, СТРЕМИНГИЙН СЕРВЕРИЙГ ЭХЛЭХ

ХЯНАЛТЫН ХӨРӨНГӨӨ, СТРЕМИНГИЙН ҮЙЛЧИЛГЭЭГ ЭХЛЭХ
ХЯНАЛТЫН ХӨРӨНГӨӨ, СТРЕМИНГИЙН ҮЙЛЧИЛГЭЭГ ЭХЛЭХ

Үйлчилгээг эхлүүлэхийн тулд хоёр терминал цонхыг нээгээд эдгээр тушаалуудыг ажиллуулна уу.

зангилаа nodehome/webserver.js

./nodehome/start_stream.sh

Вэбсайтыг https:// Raspberry_IP: 8080 ашиглан хөтөч дээр нээнэ үү (Raspberry_IP -ийг IP хаягаараа солино уу)

Зөвлөмж болгож буй: