четверг, 4 августа 2016 г.

Raspberry Pi робот

Если уже имеются некоторые навыки работы с Raspberry PI 3 то можно попробовать сделать простейшего робота который будет передавать изображение с камеры на компьютер и выполнять посылаемые ему команды, например робот имеет возможность перемещаться в пространстве на своих колёсах и будет некоторое количество команд для управления двигателями. Raspberry PI 3 имеет встроенный WIFI модуль скорости передачи информации которого достаточно для передачи качественного изображения, однако этого не всегда получается добиться но всё же передача хоть какого то видео для начала - это уже хорошо (см. Raspberry pi камера). Если проблема с передачей видео решена то можно приступить к решению проблемы управления двигателями. У Raspberry Pi имеются выводы общего назначения которыми можно управлять через скрипты на языке "питон" (см. http://electe.blogspot.ru/2016/05/raspberry-pi-3-gpio-wifi.html) но такой способ управления не очень удобен. Для решения этой проблемы можно реализовать управление выводами через веб интерфейс, для этого на Raspberry pi нужно установить какой либо веб сервер например lighttpd или apache и интерпретатор языка php, ещё понадобиться установить wiringpi, после чего можно будет написать простой код с html тэгами и вставками php и javascript скриптов необходимых для реализации удобного управления двигателями. Веб сервер lighttpd занимает меньше места в памяти и работает быстрее чем apache но apache более популярен и распространён, поэтому если возникнет какая либо проблема (например с его установкой) то её можно будет проще решить спросив ответ у знающих людей. Установить apache и php можно по инструкции на странице https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md. Перед выполнением инструкций надо выполнить команду

sudo apt-get update

(о том как отправлять команды на Raspberry pi 3 смотрите на странице http://electe.blogspot.ru/2016/05/raspberry-pi-3-gpio-wifi.html) Дальше будут всего две обязательные команды:

sudo apt-get install apache2 -y

и

sudo apt-get install php5 libapache2-mod-php5 -y

после успешного выполнения которых Raspberry pi "превращается" в сервер.
Далее необходимо установить wiringpi, если он не установлен. В полной версии Raspbian, как правило, wiringpi уже присутствует. Для того чтобы проверит наличие wiringpi нужно ввести команду

gpio readall

если после ввода этой команды появиться таблица с состоянием выводов то это значит что wiringpi уже установлен, Если такой таблицы не появилось то wiringpi можно установить по инструкциям с сайта https://thedrhax.pw/?p=1460. Далее можно прямо в терминале писать команды ля управления выводами, например командой

gpio mode 21 out

мы переводим вывод gpio 5 raspberry pi в режим выхода,
командой

gpio write 21 1

мы выводим лог. 1 на вывод gpio 5 raspberry pi.
Почему пишется 21 а выводится на 5? Это можно увидеть если ввести команду

gpio readall

и в появившейся таблице будет данное соответствие.
Двигатели можно подключить через драйверы например как на схеме:
Рисунок 1 - Подключение драйверов и двигателей к Raspberry pi 3

Вместо L6203 можно использовать какие либо другие драйверы но достаточно мощные двигатели подключать лучше к таким. Для упрощения сборки в схеме отсутствует резистор с сопротивлением 0.1 Ом между выводом 10 и землёй но при желании его можно поставить, по нему драйвер будет определять ток и в случае необходимости отключиться чтобы не перегореть (очень хорошая вещь, советую поставить, у меня просто не было такого резистора). Так же желательно поставить предохранитель по питанию.
Далее надо удалить файл index.html командой:

rm /var/www/html/index.html

и создать новый

sudo nano /var/www/html/index.php

в который вставить этот код. После чего сохранить нажатием CTRL+O и ENTER и выйти нажатиtм CTRL+X.
В строке

system("gpio write 25 0");

происходит установка на выводе 26 напряжения логического нуля. Вместо этого можно написать например

exec("gpio write 25 0");

В общем через system и exec можно выполнять в php те команды которые выполняются в консоли кроме тех что идут с sudo в начале, т.е. например если написать exec("sudo halt"); то Raspberry pi не выключиться.

В строке

xhr.open('GET', 'http://192.168.1.252/?act=1', true); xhr.send();

и ей подобных, вместо 192.168.1.252 надо поставить ip адрес вашего Raspberry PI

Тест драйв и некоторую дополнительную информацию можно посмотреть в видео

Заказать необходимые детали можно по ссылкам
Raspberry pi 3 http://ali.pub/91xb2
usb камера http://ali.pub/acv3q
повербанк для питания Raspberry pi http://ali.pub/6e170
двигатели http://ali.pub/4lurj
драйвер L6203 http://ali.pub/sltb8


КАРТА БЛОГА (содержание)