Съдържание:

Кола RasbperryPi с FPV камера. Управление чрез уеб браузър: 31 стъпки (със снимки)
Кола RasbperryPi с FPV камера. Управление чрез уеб браузър: 31 стъпки (със снимки)

Видео: Кола RasbperryPi с FPV камера. Управление чрез уеб браузър: 31 стъпки (със снимки)

Видео: Кола RasbperryPi с FPV камера. Управление чрез уеб браузър: 31 стъпки (със снимки)
Видео: Простой робот с камерой | Orange pi | Raspberry pi | OpenCV 2024, Ноември
Anonim
Image
Image

Ще изградим 4WD кола - кормилното управление ще бъде подобно като в резервоар - за да завъртите едната страна на колелата ще се върти с различна скорост от другата. При колата ще бъде поставена камера на специален държач, където можем да променим позицията на камерата. Роботът ще се управлява от уеб браузър (chrome или firefox на десктоп, или firefox на мобилен телефон), в браузъра, ще получим видео с камера (само с 200ms латентност), а от браузъра можем да контролираме движението на колата и позиция на камерата. За да улесня комуникацията, използвах системата app.remoteme.org, има и разработка, която контролира този вид кола, така че не е нужно да пишете свой собствен код, но разбира се можете да променяте скриптове, добавяйки нови възможности и др.

Преди да свържете захранването към вашата печатна платка, моля, проверете отново всички връзки

Стъпка 1: Малко информация за App.remoteme.org

Системата има три части

  • webapplication - когато хоствате контролните си уеб страници и тя свързва цялата комуникация
  • rasbperryPi програма - програма, която изпраща видео, управлява вашите скриптове на python
  • библиотеки, където можете да намерите определения на класове, функции

Remoteme.org е системно бърз. Свързвате всичките си устройства заедно, можете да хоствате там вашите уеб страници, да виждате свързаните си устройства. Системата Remoteme.org е създадена, за да ви помогне да започнете да правите вашите проекти, без да се притеснявате за протоколните комуникации, основната идея е да изпращате двоични съобщения между различни устройства като уеб страници, RasbeprryPI, arduino и скриптове.

От друга страна Remoteme.org ви дава пълен контрол върху вашите файлове, можете лесно да го промените, като напишете собствена функционалност

В този урок ще ви покажа как да направите страхотен проект почти без да пишете код.

В края на този урок сложих полезни връзки, които ще ви помогнат да разберете системата remoteme.org.

Стъпка 2: Какво е необходимо:

Какво е необходимо
Какво е необходимо
Какво е необходимо
Какво е необходимо
  • Малина PI Zero W
  • Специална камера
  • 16 -канален 12 -битов PWM/Servo драйвер Adafruit - I2C интерфейс - PCA9685 или негов клон
  • Два серво механизма, съвместими с държача на камерата
  • Поставка за камера
  • Батерии - В урока две възможности за свързване
  • H мост TB6612FNG, за управление на колелото
  • PCB орел файлове Лесно е да го направите метод за термичен трансфер DC-DC
  • Стъпка надолу преобразувател модул DC
  • Калъф за роботи

Стъпка 3: Връзки

Връзки
Връзки

Серво механизъм за управление на Raspberry pi чрез PWM модул и скорост на двигателя чрез H мост, който е свързан към щифтовете RasbperryPi, PWM входът към H мост се генерира от същия модул, който използвах за сервомоторите (кои части споменавам по -горе, не са необходими логически преобразуватели)

Стъпка 4: ПХБ

Печатни платки
Печатни платки
Печатни платки
Печатни платки

Можете да изтеглите файлове за печатни платки от тук

Стъпка 5: PCB изходи

PCB изходи
PCB изходи
PCB изходи
PCB изходи
  1. ШИМ входът за задвижващи двигатели трябва да бъде свързан към 15 -ти и 16 -ти щифт на ШИМ модул (проверете зеления правоъгълник на изображението на ШИМ модула)
  2. Входна мощност за задвижващи двигатели (проверете с какво максимално напрежение могат да работят вашите двигатели)
  3. Захранването за RasbperryPi и PWM модула - трябва да бъде точно
  4. Изходи на задвижващ двигател (има два изхода, защото ще сдвоим задвижващи двигатели)
  5. Захранване на сервомеханизмите - също трябва да проверите кое напрежение е добро за тях
  6. Прекъсвачът, сегашната му мощност от 5 -ти вход ще захранва и двигатели, така че няма нужда да свързвате нищо към вход 2
  7. Прекъсвач, ако има RasbperryPi ще се захранва от 3 -ти вход - преди да поставите джъмпера тук проверете дали връзките са ОК - Не искате да запишете вашия RPi
  8. Позволяваме тук да запояваме кабели, тъй като нямаме нужда от логически преобразуватели

Стъпка 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 сигнала, за да можем да контролираме скоростта или въртенето на двигателя. Тъй като в проекта вече имаме PWM контролер (използван за серво), ще го използваме и за генериране на PWM за H мост.

PWM модулът използва I2C комуникационен протокол. Използвал съм изработка от кутията Adafruit_PCA9685. библиотека

Стъпка 7: Сглобяване на автомобил - Колела

Сглобяване на кола - Колела
Сглобяване на кола - Колела
Сглобяване на кола - Колела
Сглобяване на кола - Колела

Ще започнем от свързването на задвижващи двигатели към кутията на колата. Двигателите отляво/отстрани се свързват заедно и двата чифта се свързват към някакъв захранващ кабел, който по -късно ще бъде свързан към печатна платка. Важна забележка, докато свързвате колелата на двигателя от всяка страна, трябва да се въртят в една и съща посока.

Стъпка 8: Захранване (AA батерии за зареждане) Опция 1/2

Захранване (батерии за зареждане AA) Опция 1/2
Захранване (батерии за зареждане AA) Опция 1/2
Захранване (AA батерии за зареждане) Опция 1/2
Захранване (AA батерии за зареждане) Опция 1/2
Захранване (AA батерии за зареждане) Опция 1/2
Захранване (AA батерии за зареждане) Опция 1/2
Захранване (AA батерии за зареждане) Опция 1/2
Захранване (AA батерии за зареждане) Опция 1/2

Ще напиша две възможности за захранване Колата първа е от 10xAA презареждащи се батерии.

Стъпка 9: Захранване (Li-Po 7.2V батерии) Опция 2/2

Захранване (Li-Po 7.2V батерии) Опция 2/2
Захранване (Li-Po 7.2V батерии) Опция 2/2
Захранване (Li-Po 7.2V батерии) Опция 2/2
Захранване (Li-Po 7.2V батерии) Опция 2/2

И вторият вариант е 7.2 LI-PO батерия. В този случай имаме 3 напрежения - 5v за Rpi и модул, 6V за серво и директно от батерии 7.2 волта за задвижващи двигатели. Трябваше да използвам два стъпаловидни модула

Вариант 2 с LI-PO е по-добър:

  • Батериите имат по -голям капацитет - колата ще се движи по -дълго
  • По -голямо напрежение за задвижващи двигатели - колата ще кара по -бързо
  • По -малка вероятност, след като задвижващите двигатели започнат да локализират, можем да имаме огромен спад на напрежението и RPI да се рестартира.

Стъпка 10: Запояване

Запояване
Запояване
Запояване
Запояване
Запояване
Запояване
Запояване
Запояване

Поставих на печатни платки някои дистанционни елементи за PWM модул. Няма какво да напишете, просто проверете изображенията как да запоите всичко заедно

Стъпка 11: Камера

Камера
Камера

свързваме камерата, тук е написано как да центрираме сервомеханизмите, преди да ги монтираме в държача на камерата, но най -краткият начин е внимателно ръчно да проверите максималната позиция на въртене и да настроите серво в централна позиция. Този центриран серво механизъм поставяме в държача на камерата в централната позиция (камерата е насочена право напред, както на снимката)

Стъпка 12: Сглобяване на части за автомобили

Сглобяване на части за автомобили
Сглобяване на части за автомобили
Сглобяване на части за автомобили
Сглобяване на части за автомобили
Сглобяване на части за автомобили
Сглобяване на части за автомобили

За печатни платки направих малка масичка от плексиглас

Стъпка 13: Конфигурация на App.remoteme.org

App.remoteme.org Конфигурация
App.remoteme.org Конфигурация

Използвах безплатна система app.remoteme.org, която ви помага да правите връзки и вече има скриптове, от които се нуждаем

В тази инструкция просто ще покажа стъпка по стъпка какво трябва да се направи, за да карате кола (тук ще намерите повече подробности)

  • Пейте на https://app.remoteme.org след регистрация Ще бъдете автоматично влезли
  • отворете раздела Token вляво, след това щракнете върху „new token“предоставете някакво име и щракнете върху OK, Току -що създадохме нов жетон (изображение на екрана)
  • в този пример стойността на символа е: ~ 1_ & p@+BNnZ@A+x8 (вашият ще бъде различен;))

Стъпка 14: Конфигурация на RasbperryPi

Конфигурация на RasbperryPi
Конфигурация на RasbperryPi

на конзолата за замазка (тук как да настроим нашия RPi включете камерата I2c комуникация)

git клониране git: //github.com/remoteme/remoteme.git

cd дистанционно

python3.5 install.py

  • Инсталаторът ще ни зададе няколко въпроса за всички отговори (Д) и ще потвърди с [въведете]
  • когато инсталацията поиска токен, ние поставяме (shift+insert) токен, копиран от приложението, и Enter
  • името например Rpi
  • deviceId 1 Въведете
  • след инсталиране - стартирайте програма

./runme.sh

Стъпка 15: Проверка на връзките

Проверка на връзките
Проверка на връзките

Да се върнем на

В раздела устройства ще видим свързаните RPi (зелената икона на връзка означава, че RPi е свързан в момента)

Стъпка 16: Добавяне на скрипт на Python

Добавяне на скрипт на Python
Добавяне на скрипт на Python
Добавяне на скрипт на Python
Добавяне на скрипт на Python

Сега ще добавим скрипт на python, той вече е в шаблоните, така че не е нужно да програмираме нищо.

В раздела устройства отворете менюто RasbperryPi и изберете „Добавяне на външен скрипт“.

Когато се появи нов прозорец, предоставете информация, както на изображението по -горе

Не забравяйте да изберете шаблон „car4wd“. След тези стъпки, remoteme.org ще добави python скрипт към нашия RasbperryPi и ще го рестартира

Стъпка 17: Проверете дали скриптът на Python е добавен успешно

Проверка дали скриптът на Python е добавен успешно
Проверка дали скриптът на Python е добавен успешно

В раздела устройства трябва да се добави ново устройство на скрипт на python и неговият идентификатор на устройство е 2. В това уебсайт на идентификатора на устройството ще се изпращат съобщения до контролната кола

Стъпка 18: Добавяне на уеб страница към контролна кола

Добавяне на уеб страница към Control Car
Добавяне на уеб страница към Control Car

в раздела устройства щракнете върху „Ново“, след това върху „Уеб страница“. Просто добавяме друго устройство - webPage, което ще го използваме, за да контролираме колата си. И тъй като използвахме шаблона „car4wdDesktop“на уеб страницата, вече са файлове, почти готови за използване

Стъпка 19: Конфигурирайте WebPage Device за управление на автомобил 1/2

Конфигурирайте WebPage Device за управление на автомобил 1/2
Конфигурирайте WebPage Device за управление на автомобил 1/2

Разгънете WebPage в раздела устройство и щракнете върху index.html, след което отворете

Стъпка 20: Конфигурирайте WebPage Device за управление на автомобил 2/2

Конфигурирайте WebPage Device за управление на автомобил 2/2
Конфигурирайте WebPage Device за управление на автомобил 2/2

Прозорецът се появява, след което трябва да предоставим deviceId на нашия python скрипт в нашия случай deviceId е 2. Нека променим мястото, показано на изображението

Стъпка 21: Отворете Центъра за управление на автомобила

Отворете Центъра за управление на автомобила
Отворете Центъра за управление на автомобила
Отворете Центъра за управление на автомобила
Отворете Центъра за управление на автомобила

Сега е време да отворим нашата страница и да видим как работи. В раздела устройство щракнете върху index.html и след това „Отваряне в нов раздел“За да получите визуализация на видеоклипа Трябва да използвате браузър chrome или firefox други браузъри не поддържат напълно webRTC

Стъпка 22: Конфигурация на камерата 1/2

Конфигурация на камерата 1/2
Конфигурация на камерата 1/2

Когато преместваме мишката върху видео зоната, камерата трябва да промени позицията си и тя трябва да работи точно както в FPS игрите. Вероятно няма да се движи правилно

Стъпка 23: Конфигурация на камерата 2/2

Конфигурация на камерата 2/2
Конфигурация на камерата 2/2

Отворете script.js (раздела за устройства разгънете уеб страницата, след това щракнете върху script.js, след което отворете) и намерете мястото, което показах на екрана

в моя случай централната позиция е 560 и 430, а обхватът на движение е за двете оси 200

Трябва да експериментирате с тези числа, за да получите центъра на позицията на камерата и плавни движения. Ако сте използвали този урок, просто копирайте поставените зададени стойности

Стъпка 24: Шофиране 1/2

Шофиране 1/2
Шофиране 1/2

Ако натиснете стрелка нагоре към клавиатурата, измервателните уреди трябва да променят позициите си и колата да кара. Ако натиснете стрелката “нагоре” и колата се върти, тогава трябва да добавите/премахнете минус на места на екрана.

След тази операция след натискане на стрелката „нагоре“колата трябва да кара напред и надолу колата със стрелка трябва да се движи назад.

Стъпка 25: Шофиране 2/2

Шофиране 2/2
Шофиране 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: Отворете страницата на мобилен телефон

Отворете страницата на мобилен телефон
Отворете страницата на мобилен телефон
Отворете страницата на мобилен телефон
Отворете страницата на мобилен телефон

Вместо да влизате в акаунта си от мобилен телефон, просто сканирайте QR произволен URL адрес.

подробности за QR тук

Ако Вашият мобилен контрол работи, когато RPi и mobile са на един и същ wifi, но не, ако използвате мобилен интернет, тогава трябва да добавите сървър за завъртане, как да го направя, написах тук

Стъпка 29: Добавяне на Turn Server

Добавяне на Turn Server
Добавяне на Turn Server
Добавяне на Turn Server
Добавяне на Turn Server
Добавяне на Turn Server
Добавяне на Turn Server

Понякога (когато сте зад NAT или някои настройки на защитната стена) не можете да свържете вашия робот от друга мрежа, тогава вашият робот е свързан. Не е голям проблем и след това трябва да добавите сървър за завъртане.

Тествал съм сървър от компания XIRSYS (безплатен е за използване от разработчиците) и ще покажа как да конфигурирам сървъра за завъртане, използвайки системата XIRSYS

регистрирам:

global.xirsys.net/dashboard/signup

след това щракнете върху „плюс“, за да добавите приложение

вдясно под „статични идентификационни данни за завой“Имате всички необходими данни. Копирайте го във файл webrtc_streamer.conf, за да направите това, отидете на

разгънете RaspberryPi deivces

щракнете върху файла webrtc_streamer.conf

щракнете върху отвори

и добавете информация

turn_server = turn_username =

turn_credential =

след като приключите с редактирането, трябва да имате нещо подобно на екрана.

след това щракнете върху Запазване и рестартирайте You Rpi, като щракнете върху менюто на устройството RasbperryPi и изберете рестартиране

След рестартиране на програмата RPi Можете да видите визуализация на видео на мобилния си телефон, дори ако използвате мобилен интернет.

Стъпка 30: Мобилно управление

Мобилно управление
Мобилно управление

в кръг 1 поставяме палеца наляво, на 2 вдясно - не е задължително да бъде точно в тази точка - уеб страницата ще зададе нулева позиция веднага след докосване на екрана, и чрез преместване на палци (ляво шофиране, дясна позиция на камерата) Можете да контролирате твоята кола

Стъпка 31: Обобщение

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

някои линкове:

remoteme.org - начална страница на remoteme.org там Можете да намерите документация и уроци

Фен страница на FB - фен страница на Facebook най -новата информация за remoteme.org

Youtube - няколко видеоклипа на проекта, уроци

Наздраве, Мациек

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