Мобильный робот с камерой на Raspberry Pi

Raspberry Pi это одноплатный компьютер, сделанный для обучения базовым компьютерным навыкам для школьников. В последствии получивший намного более широкое применение и популярность, чем ожидали его авторы.

Наша плата выглядит так:Raspberry Pi Model B

Данная версия платы оснащена процессором ARM11 фирмы Broadcom BCM2835[4] с тактовой частотой 700 МГц и модулем оперативной памяти на 256МБ/512МБ.

Raspberry Pi работает под управлением операционной системы Linux.
Мы, будем использовать плату версии «B» с установленной ОС Raspbian.

1. Сборка робота на базе гусеничной платформы

Raspberry Pi и камера будут установлены на гусеничную платформу. По сути это будет мобильная система видеонаблюдения.

Мобильный робот на Raspberry Pi

Сама Raspberry Pi с драйвером моторов будет закреплена с помощью конструктора Lego, так как на данной плате отсутствуют необходимые крепежные элементы.

Мобильный робот на Raspberry Pi

Электропитание платы и моторов раздельное. На моторы стоит 8 аккумуляторов по 1.2 вольта, на плату стоять 2 аккумулятора по 3.7 вольта. Все аккумуляторы включены последовательно. Моторы получают питание через драйвер моторов выполненный на L293D с помощью навесного монтажа.

Мобильный робот на Raspberry Pi, драйвер L293D

Электропитание самой платы осуществляется через линейный стабилизатор, так как требуется фиксированное напряжение в 5 вольт.

Что умеет данная платформа делать:
1. Сам перемещаться по площади (квартире и тд) используя датчик Ultrasonic HC-SR04 для обьезда препядствий.
2. Снимать через определенное время фото (видео кадр) снимок и отправлять его на яндекс или гугл диск.
3. Сам подъезжать на базу для подзарядки используя ИК-локатор.
4. Возможность ручного управления, используя браузер и интернет.

Стабилизатор для питания самой платы raspberry.
На макетной плате был собран драйвер управления моторами на L293 и установлен гироскоп mpu-6050, подключенный по шине I2C.

Мобильный робот на Raspberry Pi, стабилизатор питания

Общаться с интернетом будет за счет вот такого WiFi адаптера Tp-Link.

Мобильный робот на Raspberry Pi, WiFI

Завелся сразу из коробки, без установки дополнительного программного обеспечения.

Так же установлена камера для raspberry pi с CSI интерфейсом.

Мобильный робот на Raspberry Pi, CSI камера

Для поворота камеру использоваться будет вот такой механизм на двух сервоприводах.

Мобильный робот на Raspberry Pi, монтировка для камеры

Управлять им будет Raspberry напрямую с GPIO портов, как и моторами движения через микросхему L293D.

Зарядка робота будет осуществляется с док станции к которой надо будет подъехать. Для этого на передней части шасси установлены контакты для подзарядки.

Мобильный робот на Raspberry Pi, подзарядка

Была куплена в магазине вот такая макетная плата на которой все будет смонтировано. От деталей конструктора Lego для крепления Raspberry пришлось отказаться, так как  не все умещается.

Макетная плата

Прикрепив ее к шасси получаем.

Мобильный робот на Raspberry Pi, сборка

Далее на штырьки так крепим саму Raspberry Pi.

Мобильный робот на Raspberry Pi, сборка

Теперь на шасси.

Мобильный робот на Raspberry Pi, сборка

Примерно вот так будет ездить платформа:

2. Общая схема подключения

Мобильный робот на Raspberry Pi, электрическая схема

3. Подключение моторов

Подробно разберём схему подключения моторов с помощь L293D.

Мобильный робот на Raspberry Pi, схема подключения моторов

Порты GPIO Raspberry Pi к драйверу моторов подключаем следующим образом:

Левый мотор:
L293 IN1 on GPIO 9
L293 IN2 on GPIO 10
L293 EN1 on GPIO 11

Правый мотор:
L293 IN3 on GPIO 23
L293 IN4 on GPIO 24
L293 EN2 on GPIO 25

4. Настройка Raspberry Pi

Для того чтобы управлять данным шасси удалено, нужен белый IP адрес (постоянный), который можно сделать с помощью роутера находящегося в помещении.

Для удаленного управления и настройки нам понадобится программа PuTTY. Скачать ее можно на просторах интернета.

На Raspberry нужно включить SSH сервер, если вы этого не сделано то в консоли нужно набрать команду

sudo raspi-config

В пункте SSH нажать на Enable. Далее перезагрузить плату, теперь мы можем удаленно подключится.

Устанавливаем на нашем компьютере PuTTY и настраиваем ее. Для этого в вкладке «Сеанс» вводим IP адрес Raspberry Pi. IP адрес можно посмотреть в настройках роутера. Номер порта оставляем 22, тип соединения SSH. Нажимаем «Сохранить» введя при этом название сеанса. Теперь настройки сохранены.

Далее выбираем пункт Соединение -> Данные и вводим наши имя и пароль для входа на Raspberry. Если не меняли, то имя и пароль те же: pi и raspberry. Вводим мы это для того, чтобы не вводить каждый раз имя и пароль при входе.

Теперь выбираем пункт SSH ->X11 и ставим галочку напротив «Включить переадресацию X11», а в строчке «Отображение дисплея Х» необходимо написать

localhost:0

Вернемся в вкладку «Сеанс» и сохраняем все настройки под тем именем, что уже записали. Всё, настройка завершена! Нажимаем «Соединить» и входим в командную строку Raspberry Pi.

Теперь настраиваем картинку с камеры в браузер. Для этого в командной строке вводим:

sudo apt-get update

После завершения работы команды, пишем следующую:

sudo apt-get upgrade

Затем:

sudo raspi-config

и включаем поддержку камеры.

Перезагружаемся, снова запускаем PuTTY и соединяемся с raspberry. Далее устанавливаем приложения нужные для правильной работы mjpg-streamer:

sudo apt-get install libjpeg8-dev

Затем:

sudo apt-get install cmake

Скачиваем исходники mjpg-streamer:

wget github.com/jacksonliam/mjpg-streamer/archive/master.zip

Потом распаковываем полученный архив:

unzip ./master –d ./Valli (Vflli произвольное имя)

Заходим в папку

cd /Valli/mjpg-streamer-master/mjpg-streamer-experimental

далее вводим

make clean all

Командой nano меняем файл start.sh

sudo nano Valli/mjpg-streamer-master/mjpg-streamer-experimental/start.sh

удаляем там две незакомментрованные строки и пишем вместо них

cd etc/ms/mjpg-streamer-master/mjpg-streamer-experimental
 ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 10 -ex auto -awb auto -vs -ISO 100"

Выходим из редактора командой Ctrl+X, затем Enter (соглашаемся с изменением) и Y (да).

В папке mjpg-streamer-experimental запускаем наш скрипт:

 ./start.sh

Должно запуститься и в консоли будет много букв на камере загорится светодиод.
Команда Ctrl+C остановит скрипт и светодиод погаснет.

Открываем браузер, заходим по такой ссылке:

ip-address-raspberry:8080/?action=stream

(где ip-address-raspberry – это IP нашей raspberry) и попадаем на вебсервер, нажимаем на Stream и видим:

Raspberry Pi MJPG-streamer

Чтоб робот двигался необходимо установить веб-интерфейс, который будет управлять роботом. Устанавливаем. Для начала скачиваем WebIOPi

wget webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz

распаковываем

tar xvzf WebIOPi-0.6.0.tar.gz

Заходим в папку

cd WebIOPi-0.6.0

и запускаем файл установки командой

sudo ./setup.sh

После установки, командой:

update-rc.d webiopi defaults

делаем автозапуск интерфейса с raspberry.

Как всегда открываем браузер, заходим по такой ссылке: ip-address-raspberry:8000 и получаем

Raspberry Pi pinouts

В итоге получаем:

Всем удачи!

0

Изменено: