Съдържание:

Малинов резервоар с уеб интерфейс и видео стрийминг: 8 стъпки (със снимки)
Малинов резервоар с уеб интерфейс и видео стрийминг: 8 стъпки (със снимки)

Видео: Малинов резервоар с уеб интерфейс и видео стрийминг: 8 стъпки (със снимки)

Видео: Малинов резервоар с уеб интерфейс и видео стрийминг: 8 стъпки (със снимки)
Видео: МАЛЬДИВЫ, которые в самое сердце. Большой выпуск. 4K 2024, Декември
Anonim
Малинов резервоар с уеб интерфейс и видео стрийминг
Малинов резервоар с уеб интерфейс и видео стрийминг

Ще видим как съм реализирал малък WiFi резервоар, способен за дистанционно уеб управление и видео стрийминг.

Това е предназначено да бъде урок, който изисква основни познания по електронно и софтуерно програмиране. Поради тази причина избрах комплект шаси Tank (вместо да го отпечатвам с 3D принтер, може да бъде по -късен ъпгрейд) и общо 6 компонента, включително батерии. От страна на софтуера можете да следвате стъпка по стъпка процеса на инсталиране и програмирането е сведено до минимум, основните познания за нещата от малината могат да ви помогнат.

Изчислих 12 часа работа от 0 до готов за работа резервоар. Обща цена от 70 € за всички компоненти.

Стъпка 1: Спецификация

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - Резервоар за шаси за роботи RC - 32 (€)

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

1 - Двуканална платка за двигател с постоянен ток L298N - 1, 39 (€)

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

1 - Начален комплект Raspberry Pi Zero W - 26 (€)

amzn.eu/1ugAaMP

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

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

1 - Raspberry Pi 5MP камера модул уеб камера за модел Zero - 8 (€)

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

1 - Power Bank 5V

1 - 9v батерия

Смесен кабелен кабел Dupont конектор

Мишка, клавиатура, монитор или телевизор за настройка на Raspberry (по избор, само за да улесните първата настройка)

Стъпка 2: Спецификации на основните компоненти

Мотор

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

Този двигател разполага с D-образен изходен вал.

Спецификации

· Работно напрежение: между 6 V и 18 V

· Номинално напрежение: 12 V

· Скорост на свободно движение при 12 V: 399 оборота в минута

· Свободен ток при 12 V: 50 mA

· Ток на застой при 12V: 1200 mA

· Въртящ момент при застой при 12V: 2,2 кг.см

· Предавателно отношение: 1:21

· Редуктор размер: 19 мм

· Тегло: 84 g

Двуканална платка за двигател с постоянен ток на L298N DC

Двоен двигател с H-мост, може да задвижва два DC двигателя или 4-жични двуфазни стъпкови двигатели. Вграден TSD, за защита от спиране на двигателя.

Спецификации

· Захранващо напрежение на модула: DC 2V-10V

· Входно напрежение на сигнала: DC 1.8-7V

· Единичен работен ток: 1.5A

· Пиков ток до 2.5A

· Нисък ток в режим на готовност (по -малко от 0,1uA)

· Вградена обща проводима верига, входният терминал е свободен, двигателят не работи неизправно

· Размер: 24.7 x 21 x 7 мм

Стъпка 3: СВЪРЗВАНЕ

ЕЛЕКТРИЧЕСКИ ИНСТАЛАЦИИ
ЕЛЕКТРИЧЕСКИ ИНСТАЛАЦИИ
ЕЛЕКТРИЧЕСКИ ИНСТАЛАЦИИ
ЕЛЕКТРИЧЕСКИ ИНСТАЛАЦИИ

Това ще бъде последното окабеляване, но ПОЧАКАЙТЕ, преди да се наложи да инсталираме някои

софтуер и е добра идея да го тествате с по -опростено окабеляване, когато сте готови, върнете се тук.

Нуждаем се от два различни източника на енергия, един за двигателя и един за малината.

Двуканалната платка за двигател с двуканален двигател L298N DC (максимално входно напрежение DC 2V-10V) се захранва от 9V батерия, а Raspberry Pi използва стандартния 5V USB акумулатор.

GND щифтът на драйвера на двигателя ще бъде свързан към минуса на батерията и Raspberry Pi (GND). GPIO щифтовете на Raspberry Pi са свързани към драйвера на двигателя като таблица.

Стъпка 4: ПОДГОТОВКА НА МАЛИНА O. S

Това е стандартна инсталация за операционна система Raspbian, можете да намерите

много подробни уроци за търсене в мрежата, основно стъпките са:

1. Изтеглете iso RASPBIAN STRETCH WITH DESKTOP от

2. Форматирайте 16 GB SD карта, използвал съм SD Formatter

3. Запишете. IMG файл, използвах Win32DiskImager

Сега вашата малинка е готова за зареждане, свържете я към USB източник на захранване (5V, 2A) и се подгответе за първата настройка на зареждане. Можете да го направите по два начина, като използвате външни устройства като мишка, клавиатура и монитор или използвате вашия компютър и отдалечена връзка с Raspberry. Има много уроци по този въпрос, един от тях е:

Стъпка 5: КАК ДА КОНТРОЛИРАМЕ НАШИЯ WIFI TANK С NODE. JS И WEBSOCKET. IO

КАК ДА КОНТРОЛИРАМЕ НАШИЯ WIFI TANK С NODE. JS И WEBSOCKET. IO
КАК ДА КОНТРОЛИРАМЕ НАШИЯ WIFI TANK С 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 локално (използвах версия 7.7.2 за ARMv6, проверете други версии тук

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

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

След като приключите, извлечете компресирания файл:

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

Копирайте и инсталирайте файловете в /user /local

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

Добавете местоположението, където инсталираме nodejs, към пътя, редактирайте файла „.profile“:

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

Добавете следния ред в края на файла, запишете и излезте

PATH = $ PATH:/usr/local/bin

Премахнете изтегления файл:.

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

pi@raspberry: ~ $ 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@raspberry: ~ $ cd nodehome

Инсталирайте допълнителен модул, необходим за управление на GPIO по най -основния начин, ВКЛЮЧЕНО и ИЗКЛЮЧЕНО:

pi@raspberry: ~ $ npm инсталирайте onoff

Сега е време да тестваме първия ни проект „Blink.js“, резултатът ще бъде … мигащ светодиод

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

Поставете следния код, запишете и излезте:

var Gpio = require ('onoff'). Gpio; // включва onoff

var LED = нов Gpio (3, 'out'); // използвайте GPIO 3

var blinkInterval = setInterval (blinkLED, 250);

// мига светодиод на всеки 250ms

функция blinkLED () {// функция, за да започне да мига

ако

(LED.readSync () === 0) {// проверете състоянието на извода, ако състоянието е 0 (или изключено)

LED.writeSync (1);

// задайте състояние на щифт на 1 (включете светодиода)

} else {

LED.writeSync (0);

// задайте състояние на пина на 0 (изключете светодиода)

}

}

функция endBlink () {// функция за спиране на мигането

clearInterval (blinkInterval); // Спиране на интервалите на мигане

LED.writeSync (0); // Изключете LED

LED.unexport (); // Деекспортирайте GPIO в безплатни ресурси

}

setTimeout (endBlink, 5000); // спира да мига след 5 секунди

Свържете LED, резистор (200ohms), както е показано на схемата, и стартирайте проекта:

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

Възелът е готов.

SOCKET. IO

WebSocket е компютърен комуникационен протокол, базиран на TCP връзка, той предоставя програмист за създаване на сървър и клиент. Клиентът се свързва със сървъра и излъчва и получава съобщения до и от сървъра. Реализацията на WebSocket за Node.js се нарича Socket.io (https://socket.io/).

Инсталирайте socket.io:

pi@raspberry: ~ $ npm инсталирайте socket.io --save

Преместете се в nodejs home, създаден преди това:

pi@raspberry: ~ $ cd nodehome

И създайте нова папка „обществена“:

pi@малинка: ~ $ mkdir обществено

Създайте нов примерен уеб сървър, наречете го „webserver.js“

pi@raspberry: ~ $ nano webserver.js

Поставете следния код, запишете и излезте:

var http = require ('http'). createServer (манипулатор); // изискват http сървър и създават сървър с манипулатор на функции ()

var fs = require ('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

връщане res.end ();

});

}

Този уеб сървър ще слуша вашия Raspberry порт 8080 и ще предостави файл за всеки уеб клиент, който го свързва. Сега трябва да създадем нещо, което да хостваме и да предоставяме на нашите клиенти: Преместете се в „публичната“папка: pi@raspberry: ~ $ cd public

Създайте нов html файл „index.html“:

pi@малинка: ~ $ nano index.html

Поставете код от прикачения "HelloWorld.txt", запишете и излезте.

Преместване в папката nodejs „nodehome“:

pi@raspberry: ~ $ cd nodehome

Стартирайте HTTP уеб сървър:

pi@raspberry: ~ $ node webserver.js

Отворете уебсайта в браузър, използвайки https:// Raspberry_IP: 8080/(заменете Raspberry_IP с вашия IP)

Стъпка 6: ДОБАВЯНЕ НА ВИДЕО СТРЕЙМИРАНЕ

Има различни начини за реализиране на видео стрийминг на Raspberry, най -лесният

по начина, по който открих досега, че като отлична производителност и може да бъде интегрирана в уеб интерфейс, се основава на проекта от Мигел Мота:

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

Благодаря Мигел! От блога му това са стъпките:

Инсталирайте компоненти libjpeg8 и cmake:

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

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

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

Изтеглете mjpg-streamer с raspicam плъгин:

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

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

Промяна на директорията:

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

Компилиране:

pi@малинка: ~ $ почисти всички

Заменете стария mjpg-стример:

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

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

/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)

Препоръчано: