Оглавление:

Raspberry Tank с веб-интерфейсом и потоковым видео: 8 шагов (с изображениями)
Raspberry Tank с веб-интерфейсом и потоковым видео: 8 шагов (с изображениями)

Видео: Raspberry Tank с веб-интерфейсом и потоковым видео: 8 шагов (с изображениями)

Видео: Raspberry Tank с веб-интерфейсом и потоковым видео: 8 шагов (с изображениями)
Видео: Raspberry Pi - Что нужно знать? Что нужно иметь? Достаточно купить только плату? 2024, Ноябрь
Anonim
Raspberry Tank с веб-интерфейсом и потоковым видео
Raspberry Tank с веб-интерфейсом и потоковым видео

Мы собираемся увидеть, как я реализовал небольшой WiFi Tank, способный удаленно управлять Интернетом и транслировать потоковое видео.

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

Я прикинул 12 часов работы с нуля до готовности к запуску. Общая стоимость всех компонентов 70 €.

Шаг 1: спецификация

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

1 - Танк-шасси для роботов с дистанционным управлением - 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 - SD-карта 16 ГБ - 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 - батарея 9в

Разъем Dupont для смешанного макетного кабеля

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

Шаг 2: Характеристики основных компонентов

Мотор

Мотор-редуктор постоянного тока JGA25-370

Этот двигатель имеет D-образный выходной вал.

Характеристики

· Рабочее напряжение: от 6 В до 18 В

· Номинальное напряжение: 12 В

· Скорость холостого хода при 12 В: 399 об / мин

· Ток холостого хода при 12 В: 50 мА

· Ток покоя при 12 В: 1200 мА

· Крутящий момент при 12В: 2,2 кг · см

· Передаточное число: 1:21

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

· Вес: 84 г

Двухканальная плата драйвера двигателя постоянного тока L298N

Драйвер двигателя с двойным Н-мостом, может управлять двумя двигателями постоянного тока или 4-проводным двухфазным шаговым двигателем. Встроенный TSD для защиты от остановки двигателя.

Характеристики

· Напряжение питания модуля: 2-10 В постоянного тока

· Входное напряжение сигнала: 1,8-7 В постоянного тока

· Единичный рабочий ток: 1,5 А

· Пиковый ток до 2,5 А

· Низкий ток в режиме ожидания (менее 0,1 мкА)

· Встроенная цепь общей проводимости, входная клемма свободна, двигатель исправен.

· Размер: 24,7 х 21 х 7 мм

Шаг 3: ПОДКЛЮЧЕНИЕ

ПРОВОДКА
ПРОВОДКА
ПРОВОДКА
ПРОВОДКА

Это будет последняя проводка, но ПОДОЖДИТЕ, прежде чем нам нужно будет установить некоторые

программное обеспечение, и неплохо было бы протестировать его с помощью более простого подключения, когда оно будет готово, возвращайтесь сюда.

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

Драйвер двигателя Dual Channel L298N DC Motor Driver Board (максимальное входное напряжение 2–10 В постоянного тока) питается от батареи 9 В, а Raspberry Pi использует стандартный аккумулятор USB 5 В.

Вывод GND драйвера мотора будет подключен к минусу батареи и Raspberry Pi (GND). Контакты GPIO Raspberry Pi подключены к драйверу двигателя в виде таблицы.

Шаг 4: ПОДГОТОВКА МАЛИНЫ O. S

Это стандартная установка для операционной системы Raspbian, вы можете найти

много подробных руководств по поиску в Интернете, в основном шаги:

1. Загрузите iso RASPBIAN STRETCH WITH DESKTOP с

2. Отформатируйте SD-карту на 16 ГБ. Я использовал SD Formatter

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

Теперь ваша малина готова к загрузке, подключите ее к источнику питания USB (5 В, 2 А) и подготовьтесь к настройке первой загрузки. Вы можете сделать это двумя способами: с помощью внешних устройств, таких как мышь, клавиатура и монитор, или с помощью ПК и удаленного подключения к 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), мы не можем использовать процесс автоматической установки (предназначенный для процессора ARMv7), и нам нужно сделать это вручную:

Загрузите Nodejs локально (я использовал версию 7.7.2 для ARMv6, другие версии можно посмотреть здесь

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

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

После этого извлеките сжатый файл:

пи @ малина: ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz

Скопируйте и установите файлы в / user / local

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

Добавьте место, где мы устанавливаем nodejs, в путь, отредактируйте файл «.profile»:

pi @ raspberry: ~ $ nano ~ /.profile

Добавьте следующую строку в конец файла, сохраните и выйдите

ПУТЬ = $ ПУТЬ: / usr / local / bin

Удалите загруженный файл:.

пи @ малина: ~ $ rm ~ / node-v7.7.2-linux-armv6l.tar.gz

пи @ малина: ~ $ rm -r ~ / node-v7.7.2-linux-armv6l

Введите следующие команды, чтобы проверить установку nodejs:

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

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

Вы должны прочитать v7.7.2 и v4.1.2 в качестве ответа.

Если все прошло хорошо, создайте новую папку для размещения ваших файлов nodejs:

pi @ raspberry: ~ $ mkdir nodehome

Переместитесь в новую папку:

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

Установите дополнительный модуль, необходимый для управления GPIO самым простым способом, ВКЛ и ВЫКЛ:

pi @ raspberry: ~ $ npm установить вкл.

Пришло время протестировать наш первый проект «Blink.js». Результатом будет… мигающий светодиод.

pi @ raspberry: ~ $ nano blink.js

Вставьте следующий код, сохраните и выйдите:

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

var LED = new Gpio (3, 'out'); // использовать GPIO 3

var blinkInterval = setInterval (blinkLED, 250);

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

function blinkLED () {// функция, чтобы начать мигать

если

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

LED.writeSync (1);

// устанавливаем состояние вывода на 1 (включаем светодиод)

} еще {

LED.writeSync (0);

// устанавливаем состояние вывода на 0 (выключаем светодиод)

}

}

function endBlink () {// функция, чтобы перестать мигать

clearInterval (blinkInterval); // Остановить интервалы мигания

LED.writeSync (0); // Выключаем светодиод

LED.unexport (); // Отключаем GPIO на свободные ресурсы

}

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

Подключите светодиод, резистор (200 Ом), как показано на схеме, и запустите проект:

pi @ raspberry: ~ $ node blink.js

Узел готов.

SOCKET. IO

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

Установите socket.io:

pi @ raspberry: ~ $ npm install socket.io --save

Переместитесь внутрь nodejs home, созданного ранее:

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

И создайте новую папку «public»:

pi @ raspberry: ~ $ mkdir public

Создайте новый образец веб-сервера, назовите его «webserver.js»

pi @ raspberry: ~ $ nano webserver.js

Вставьте следующий код, сохраните и выйдите:

var http = require ('http'). createServer (обработчик); // требуется http-сервер и создаем сервер с функцией handler ()

var fs = require ('fs'); // требуется модуль файловой системы

http.listen (8080); // слушаем порт 8080

function handler (req, res) {// создать сервер

fs.readFile (_ dirname + '/public/index.html', function (err, data) {// читать

файл index.html в общей папке

if (err) {

res.writeHead (404, {'Content-Type': 'text / html'}); // отображение 404 при ошибке

return res.end ( 404 Not

Нашел );

}

res.writeHead (200, {'Content-Type': 'text / html'}); // пишем HTML

res.write (данные); // записываем данные

из index.html

вернуть res.end ();

});

}

Этот веб-сервер будет прослушивать ваш порт Raspberry 8080 и предоставлять файл для любого подключенного к нему веб-клиента. Теперь нам нужно создать что-то для размещения и предоставления нашим клиентам: Переместитесь в «общую» папку: pi @ raspberry: ~ $ cd public

Создайте новый html-файл «index.html»:

pi @ raspberry: ~ $ nano index.html

Вставьте код из прикрепленного «HelloWorld.txt», сохраните и выйдите.

Переместитесь в папку nodejs "nodehome":

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

Запустить веб-сервер

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:

пи @ малина: ~ $ git clone

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

Сменить каталог:

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

Скомпилировать:

pi @ raspberry: ~ $ очистить все

Заменить старый mjpg-streamer:

пи @ малина: ~ $ sudo rm -rf / opt / mjpg-streamer

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

/ opt / mjpg-streamer

пи @ малина: ~ $ sudo rm -rf ~ / mjpg-streamer

Создайте новый файл «start_stream.sh», скопируйте и вставьте из прикрепленного файла «start_stream.txt».

Сделайте его исполняемым (создайте сценарии оболочки):

пи @ малина: ~ $ chmod + x start_stream.sh

Запустить потоковый сервер:

пи @ малина: ~ $./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)

Рекомендуемые: