
Оглавление:
- Шаг 1. Некоторая информация о App.remoteme.org
- Шаг 2: Что необходимо:
- Шаг 3: Подключения
- Шаг 4: печатная плата
- Шаг 5: Выходы печатной платы
- Шаг 6. Как это будет работать
- Шаг 7: Сборка автомобиля - колеса
- Шаг 8: Питание (аккумуляторы AA) Вариант 1/2
- Шаг 9: Питание (Li-Po батареи 7,2 В), вариант 2/2
- Шаг 10: пайка
- Шаг 11: Камера
- Шаг 12: Собираем детали автомобилей вместе
- Шаг 13: настройка App.remoteme.org
- Шаг 14: Настройка RasbperryPi
- Шаг 15: Проверка подключений
- Шаг 16: Добавление скрипта Python
- Шаг 17: Проверка успешности добавления скрипта Python
- Шаг 18: добавление веб-страницы для управления автомобилем
- Шаг 19: Настройте устройство веб-страницы для управления автомобилем 1/2
- Шаг 20. Настройте устройство веб-страницы для управления автомобилем 2/2
- Шаг 21: Откройте Центр управления автомобилем
- Шаг 22: Конфигурация камеры 1/2
- Шаг 23: Конфигурация камеры 2/2
- Шаг 24: Вождение 1/2
- Шаг 25: Вождение 2/2
- Шаг 26: как это работает
- Шаг 27: планшет, мобильное рулевое управление
- Шаг 28: Откройте страницу на мобильном телефоне
- Шаг 29: добавление Turn Server
- Шаг 30: мобильное рулевое управление
- Шаг 31: Резюме
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05


Мы построим полноприводную машину - рулевое управление будет как в танке - при повороте одна сторона колеса будет вращаться с другой скоростью, чем другая. В машине будет размещена камера на специальном держателе, где мы сможем изменить положение камеры. Роботом будет управлять веб-браузер (Chrome или firefox на рабочем столе или firefox на мобильном телефоне), в браузере мы будем получать видео с камеры (с задержкой всего 200 мс), а из браузера мы можем контролировать движения автомобиля и положение камеры. Чтобы упростить общение, я использовал систему app.remoteme.org, также существует возможность управления этим типом автомобилей из коробки, поэтому вам не нужно писать собственный код, но, конечно, вы можете изменять скрипты, добавляя новые возможности и т. д.
Перед подключением питания к печатной плате дважды проверьте все соединения
Шаг 1. Некоторая информация о App.remoteme.org
Система состоит из трех частей
- веб-приложение - когда вы размещаете свои управляющие веб-страницы и связывает все коммуникации
- rasbperryPi program - программа, которая отправляет видео, управляет вашими скриптами на Python
- библиотеки, в которых вы найдете определения классов, функций
Remoteme.org является системным. Вы связываете все свои устройства вместе, вы можете размещать там свои веб-страницы, просматривать ваши подключенные устройства. Система Remoteme.org была создана, чтобы помочь вам начать создавать свои проекты, не беспокоясь о связи по протоколу. Основная идея состоит в том, чтобы отправлять двоичные сообщения между различными устройствами, такими как веб-страницы, RasbeprryPI, arduino и скрипты.
С другой стороны, Remoteme.org дает вам полный контроль над вашими файлами, вы можете легко изменить его, написав свои собственные функции.
В этом уроке я покажу Вам, как создать отличный проект почти без написания кода.
В конце этого руководства я поместил полезные ссылки, которые помогут вам разобраться в системе remoteme.org.
Шаг 2: Что необходимо:


- Малина PI Zero W
- Выделенная камера
- 16-канальный 12-битный ШИМ / сервопривод Adafruit - интерфейс I2C - PCA9685 или его клон
- Два сервомеханизма, совместимые с держателем камеры
- Держатель камеры
- Батареи - в учебнике две возможности подключения
- Н-мост TB6612FNG, для контроля скорости вращения колес
- Файлы PCB Eagle Легко сделать метод термопереноса DC-DC
- Модуль понижающего преобразователя постоянного тока
- Чехол для робота
Шаг 3: Подключения

Сервомеханизм управления Raspberry Pi через модуль PWM и скорость двигателя с помощью моста H, который подключен к контактам RasbperryPi, вход PWM на мост H генерируется тем же модулем, который я использовал для сервоприводов (какие части я упоминал выше, логические преобразователи не нужны)
Шаг 4: печатная плата


Вы можете скачать файлы PCB eagle отсюда. Пути толстые, поэтому их легко сделать методом термопереноса.
Шаг 5: Выходы печатной платы


- Вход ШИМ для приводных двигателей должен быть подключен к 15 и 16 контактам модуля ШИМ (проверьте зеленый прямоугольник на изображении модуля ШИМ)
- Потребляемая мощность для приводных двигателей (проверьте, с каким максимальным напряжением могут работать ваши двигатели)
- Питание для модуля RasbperryPi и PWM - должно быть ровно
- Выходы приводных двигателей (есть два выхода, потому что мы будем объединять приводные двигатели)
- Питание сервомеханизмов - также вы должны проверить, какое напряжение для них подходит
- Установите перемычкой его нынешнюю мощность с 5-го входа, чтобы запитать также двигатели, поэтому нет необходимости подключать что-либо ко входу 2.
- Перемычка, если присутствует RasbperryPi будет питанием от 3-го входа - перед тем, как поставить перемычку, проверьте, в порядке ли соединения - вы не хотите сжигать свой RPi
- Паяем сюда кабели, ведь нам не нужны логические преобразователи.
Шаг 6. Как это будет работать
В RasbperryPi есть скрипт python, который использует две библиотеки
- импортировать RPi. GPIO как GPIO - для контактов 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (обозначение BCM), которые подключены к мосту H
- импортировать Adafruit_PCA9685 для модуля PWM
Контакты Rpi подключаются следующим образом: 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) и режим управления H-мостом (вперед, назад, остановка, короткий перерыв). Мост H также нуждается в двух сигналах PWM, чтобы мы могли контролировать скорость или вращение двигателя. Поскольку в проекте у нас уже есть ШИМ-контроллер (используемый для сервопривода), мы будем использовать его также для генерации ШИМ для H-моста.
Модуль PWM использует протокол связи I2C. Я использовал разработку из коробки Adafruit_PCA9685. библиотека
Шаг 7: Сборка автомобиля - колеса


Начнем с подключения приводных двигателей к корпусу автомобиля. Двигатели с левой / боковой стороны подключаются друг к другу, и обе пары подключаются к некоторому силовому кабелю, который позже будет подключен к печатной плате. Важное примечание: при подключении двигателей колеса с каждой стороны должны вращаться в одном направлении.
Шаг 8: Питание (аккумуляторы AA) Вариант 1/2




Я напишу две возможности питания. Автомобиль. Первый - от аккумуляторов 10xAA. На последнем изображении я нарисовал красные перемычки, которые нужно поставить.
Шаг 9: Питание (Li-Po батареи 7,2 В), вариант 2/2


И второй вариант - аккумулятор 7.2 LI-PO. В данном случае мы получили 3 напряжения - 5 В для Rpi и модуля, 6 В для сервоприводов и непосредственно от аккумуляторов 7,2 В для приводных двигателей. Пришлось использовать два понижающих модуля
Вариант 2 с LI-PO лучше:
- Аккумуляторы больше ёмкости - машина дольше будет ездить
- Большее напряжение на приводные двигатели - машина будет ехать быстрее
- Меньшая вероятность того, что после того, как приводные двигатели начнут обнаруживать, у нас может быть огромное падение напряжения и перезапуск RPI.
Шаг 10: пайка




Я поставил на печатную плату несколько проставок для модуля ШИМ. Нечего писать, просто посмотрите изображения, как все спаять вместе
Шаг 11: Камера

подключаем камеру, здесь написано, как центрировать сервомеханизмы перед установкой в держатель камеры, но самый короткий способ - аккуратно вручную проверить максимальное положение поворота и установить сервоприводы в центральное положение. Этот центрированный сервомеханизм мы помещаем в держатель камеры в центральном положении (камера направлена прямо, как на фото).
Шаг 12: Собираем детали автомобилей вместе



Для печатной платы сделал небольшой стол из оргстекла.
Шаг 13: настройка App.remoteme.org

Я использовал бесплатную систему app.remoteme.org, она помогает вам устанавливать связи, и в ней уже есть скрипты, которые нам нужны
В этом руководстве я просто шаг за шагом покажу, что нужно сделать, чтобы автомобиль водил (здесь вы найдете более подробную информацию).
- Зарегистрируйтесь на https://app.remoteme.org после регистрации Вы будете автоматически авторизованы
- откройте вкладку «Токен» слева, затем нажмите «новый токен», введите имя и нажмите «ОК». Мы только что создали новый токен (изображение на экране)
- в этом примере значение токена: ~ 1_ & p @ + BNnZ @ A + x8 (ваше будет другим;))
Шаг 14: Настройка RasbperryPi

на консоли шпатлевки (здесь, как настроить наш RPi, включить связь камеры I2c)
git clone git: //github.com/remoteme/remoteme.git
cd remoteme
python3.5 install.py
- Установщик задаст нам несколько вопросов на все ответы, которые мы ответим [Да], и подтвердит, нажав [ввод]
- при установке запросит токен вставляем (shift + insert) токен, скопированный из приложения и Enter
- имя например Rpi
- deviceId 1 Введите
- после установки - запустить программу
./runme.sh
Шаг 15: Проверка подключений

Вернемся на
На вкладке устройств мы увидим наш подключенный RPi (зеленый значок ссылки означает, что RPi подключен прямо сейчас)
Шаг 16: Добавление скрипта Python


Теперь мы добавим скрипт python, он уже находится в шаблонах, поэтому нам не нужно ничего программировать.
На вкладке устройств откройте меню RasbperryPi и выберите «Добавить внешний скрипт».
Когда появится новое окно, предоставьте информацию, как на изображении выше.
Не забудьте выбрать шаблон car4wd. После этих шагов remoteme.org добавит скрипт python в наш RasbperryPi и перезапустит его.
Шаг 17: Проверка успешности добавления скрипта Python

На вкладке устройств должно быть добавлено новое устройство сценария Python, и его deviceId равняется 2. Веб-страница с идентификатором устройства будет отправлять сообщения для управления автомобилем.
Шаг 18: добавление веб-страницы для управления автомобилем

на вкладке устройств нажмите «Создать», затем «Веб-страница». Мы просто добавляем еще одно устройство - webPage, которое мы будем использовать для управления нашей машиной. И поскольку мы использовали шаблон car4wdDesktop на веб-странице, файлы уже почти готовы к использованию.
Шаг 19: Настройте устройство веб-страницы для управления автомобилем 1/2

Разверните веб-страницу на вкладке устройства и щелкните index.html, затем откройте
Шаг 20. Настройте устройство веб-страницы для управления автомобилем 2/2

Появится окно, и нам нужно предоставить deviceId нашего скрипта python в нашем случае deviceId - 2. Давайте изменим место, показанное на изображении.
Шаг 21: Откройте Центр управления автомобилем


Теперь пора открыть нашу страницу и посмотреть, как она работает. На вкладке устройства нажмите index.html, а затем «Открыть в новой вкладке». Чтобы получить предварительный просмотр видео, вы должны использовать браузер Chrome или Firefox, другие браузеры не поддерживают webRTC полностью.
Шаг 22: Конфигурация камеры 1/2

Когда мы перемещаем мышь в области видео, камера должна менять положение, и это должно работать точно так же, как в играх FPS. Вероятно, он не будет двигаться правильно
Шаг 23: Конфигурация камеры 2/2

Откройте script.js (вкладка устройств разверните веб-страницу, затем щелкните script.js, затем откройте) и найдите место, которое я показал на экране.
в моем случае центральное положение 560 и 430, а диапазон перемещений для обеих осей 200
Вы должны поэкспериментировать с этими числами, чтобы получить центр положения камеры и плавные движения. Если вы использовали этот учебник, просто скопируйте вставленные заданные значения.
Шаг 24: Вождение 1/2

Если u нажмет стрелку вверх на клавиатуре, датчики должны изменить положение и автомобиль должен ехать. Если Вы нажмете стрелку «вверх» и машина поворачивает, то Вам нужно добавить / убрать минус в местах на экране.
После этой операции после нажатия стрелки «вверх» автомобиль должен двигаться вперед, а автомобиль со стрелкой вниз - назад.
Шаг 25: Вождение 2/2

Теперь поворачиваем - нажмите стрелку влево, если машина поворачивает направо. Вам нужно перевернуть кабели (проверьте изображение выше)
Если вы припаяете эти кабели, вы можете изменить его в script.js, просто измените порядок отправки скорости двигателей, до:
pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ())); pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed () * 255));
pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));
pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed () * 255));
после:
pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));
pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed () * 255));
pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ()));
pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed () * 255));
и теперь вам нужно поиграть с минусами, например, за один шаг до того, чтобы он работал правильно;). Как вы, вероятно, заметили после нажатия стрелки вверх, автомобиль не едет на полной скорости, чтобы заставить машину двигаться быстрее, просто быстро отпустите стрелку вверх, когда она находится в максимальном положении и снова нажмите и удерживайте
Шаг 26: как это работает
Веб-страница отправляет 9-байтовые сообщения в скрипт Python в формате:
- 1 байт однобайтное целочисленное значение 1
- 2 байта целое число X положение камеры
- 2 байта целое число Y положение камеры
- 1-байтовый целочисленный режим левого двигателя (3 = назад, 1 = вперед, 2 = останов)
- 1 байт целое число скорость левого двигателя
- 1-байтовый целочисленный режим правого двигателя (3 = назад, 1 = вперед, 2 = останов)
- 1 байт целое число скорость правого двигателя
отправка сообщения производится в файле script.js в функции "sendNow ()"
в RasbperryPi python.py получает это сообщение в функции «onUserMessage»
Вы можете проверить это и немного поиграть, чтобы знать, что происходит.
описание функций класса здесь
Шаг 27: планшет, мобильное рулевое управление

Мы добавляем новую веб-страницу точно так же, как и в прошлый раз, но теперь выбираем шаблон "car4wdMobile"
Затем мы настраиваем все в script.js, как мы это делали для веб-страницы управления рабочим столом. Формат сообщения точно такой же, поэтому нам не нужно изменять скрипт python.py.
Шаг 28: Откройте страницу на мобильном телефоне


Вместо того, чтобы входить в свою учетную запись с мобильного телефона, просто отсканируйте любой URL-адрес QR.
детали QR здесь
Если ваше мобильное управление работает, когда RPi и мобильный телефон подключены к одному и тому же Wi-Fi, но не работает, если вы используете мобильный Интернет, тогда вам нужно добавить сервер поворота, как это сделать, я написал здесь
Шаг 29: добавление Turn Server



Иногда (когда вы находитесь за NAT или некоторыми настройками брандмауэра) вы не можете подключить своего робота из другой сети, тогда ваш робот подключен. Это не большая проблема, и тогда вам нужно добавить сервер поворота.
Я протестировал сервер от компании XIRSYS (бесплатный для разработчиков) и покажу, как настроить сервер поворота с помощью системы XIRSYS.
регистр:
global.xirsys.net/dashboard/signup
затем нажмите «плюс», чтобы добавить приложение
справа под «статическими кредитными данными» у вас есть все необходимые данные. Скопируйте его в файл webrtc_streamer.conf, чтобы сделать это, перейдите на
развернуть устройства RaspberryPi
щелкните файл webrtc_streamer.conf
нажмите открыть
и добавить информацию
turn_server = turn_username =
turn_credential =
после того, как вы закончите редактирование, у вас должно появиться что-то подобное на экране.
затем нажмите Сохранить и перезапустите You Rpi, щелкнув меню на устройстве RasbperryPi и выберите перезапуск
После перезапуска программы RPi Вы можете просматривать видео на своем мобильном телефоне, даже если Вы пользуетесь мобильным интернетом.
Шаг 30: мобильное рулевое управление

в круг 1 мы помещаем большой палец левой руки, в 2 справа - не обязательно точно в этих точках - веб-страница установит нулевое положение сразу после того, как вы прикоснетесь к экрану, и перемещая большие пальцы (левое движение, правое положение камеры), вы можете управлять Ваш автомобиль
Шаг 31: Резюме
Надеюсь, вам понравился этот урок, поскольку я уже писал ранее, что в этом уроке есть более подробная информация о том, как он работает под капотом.
некоторые ссылки:
remoteme.org - домашняя страница remoteme.org там вы найдете документацию и руководства.
FB fanpage - фан-страница Facebook самая свежая информация о remoteme.org
Youtube - некоторые видео проекта, уроки
Ваше здоровье, Maciek
Рекомендуемые:
Автомобиль-робот с Bluetooth, камерой и приложением MIT Inventor2: 12 шагов (с изображениями)

Автомобиль-робот с Bluetooth, камерой и приложением MIT Inventor2: Вы когда-нибудь хотели построить свой собственный автомобиль-робот? Что ж … это твой шанс !! В этом руководстве я расскажу, как создать автомобиль-робот, управляемый через Bluetooth и приложение MIT Inventor2. Имейте в виду, что я новичок и это мой первый институт
Собака-бот: робот-вездеход Lego с веб-камерой: 17 шагов (с изображениями)

Собака-робот: робот-вездеход Lego с веб-камерой: вот как сделать робота Lego, которым можно управлять с любого экрана по Wi-Fi. У него также есть веб-камера, чтобы вы могли видеть, куда вы идете, и светодиодные фонари для глаз! Это отличный проект для ваших детей, поскольку они могут создавать логотипы, а вы можете
ESP8266-NODEMCU WiFi-модуль №2 за 3 доллара - беспроводное управление контактами через веб-страницу: 9 шагов (с изображениями)

ESP8266-NODEMCU WiFi-модуль №2 за 3 доллара - беспроводное управление контактами через веб-страницу. Наступил новый мир этих микрокомпьютеров, и эта вещь - ESP8266 NODEMCU. Это первая часть, которая показывает, как вы можете установить среду esp8266 в вашу IDE Arduino через видео о начале работы и как части в
Управление радиоуправляемым автомобилем через веб-интерфейс: 6 шагов (с изображениями)

Управление радиоуправляемой машиной через веб-интерфейс: Привет, друзья! В этом руководстве я научу вас создавать радиоуправляемую машину через веб-интерфейс. Мы будем управлять им по беспроводной сети через собственный сервер. Используя метод, который я вам покажу, нам не потребуется использовать RC-приемник. Чтобы разместить в Интернете
Система слежения за веб-камерой через USB: 10 шагов

Система слежения за веб-камерой через USB: создайте свою собственную веб-камеру слежения с помощью ракетной установки USB