Mundarija:

FPV kamerali RasbperryPi avtomobili. Veb -brauzer yordamida boshqarish: 31 qadam (rasmlar bilan)
FPV kamerali RasbperryPi avtomobili. Veb -brauzer yordamida boshqarish: 31 qadam (rasmlar bilan)

Video: FPV kamerali RasbperryPi avtomobili. Veb -brauzer yordamida boshqarish: 31 qadam (rasmlar bilan)

Video: FPV kamerali RasbperryPi avtomobili. Veb -brauzer yordamida boshqarish: 31 qadam (rasmlar bilan)
Video: Простой робот с камерой | Orange pi | Raspberry pi | OpenCV 2024, Noyabr
Anonim
Image
Image

Biz 4WD avtomashinasini quramiz - Rulda tankdagi kabi bo'ladi - g'ildiraklarning bir tomonini burish uchun boshqasidan farqli tezlik bilan aylanadi. Mashinada kamera maxsus ushlagichga joylashtiriladi, u erda biz kameraning o'rnini o'zgartirishimiz mumkin. Robot veb -brauzer tomonidan boshqariladi (ish stolida Chrome yoki Firefox, yoki mobil telefonda Firefox), biz brauzerda kamerali video olamiz (faqat 200ms kechikish bilan) va brauzer orqali biz avtomobil harakatini va kamera joylashuvi. Aloqa qilishni osonlashtirish uchun men app.remoteme.org tizimidan foydalandim, shuningdek, bunday mashinani boshqarish mumkin, shuning uchun siz o'zingizning kodingizni yozishingiz shart emas, lekin, albatta, siz skriptlarni o'zgartirishingiz mumkin. yangi imkoniyatlar va boshqalar.

PCBga quvvat ulashdan oldin, barcha ulanishlarni qayta tekshirib ko'ring

1 -qadam: App.remoteme.org haqida ba'zi ma'lumotlar

Tizim uch qismdan iborat

  • veb -ilovalar - Agar siz nazorat veb -sahifalarini joylashtirsangiz va u barcha aloqalarni bog'lasa
  • rasbperryPi dasturi - python skriptlarini boshqaradigan, video yuboradigan dastur
  • kutubxonalar, bu erda siz sinf, funktsiyalar ta'rifini topasiz

Remoteme.org - bu tizim tezligi Siz barcha qurilmalaringizni bir -biriga bog'laysiz, u erda o'z veb -sahifalaringizni joylashtirishingiz, ulangan qurilmalaringizni ko'rishingiz mumkin. Remoteme.org tizimi sizga loyihalaringizni protokolli aloqa haqida tashvishlanmasdan boshlashingizga yordam beradi, asosiy g'oya har xil qurilmalar, masalan, veb -sahifalar, RasbeprryPI, arduino va skriptlar orqali ikkilik xabarlarni yuborishdir.

Boshqa tomondan, Remoteme.org sizga fayllaringizni to'liq nazorat qilish imkoniyatini beradi, uni o'zingizning funksiyangiz bilan o'zgartirishingiz mumkin.

Bu qo'llanmada men sizga hech qanday kod yozmasdan qanday qilib ajoyib loyihani qanday qilib yasashni ko'rsataman.

Qo'llanma oxirida men sizga remoteme.org tizimini tushunishga yordam beradigan foydali havolalarni joylashtirdim.

2 -qadam: nima kerak:

Nima kerak
Nima kerak
Nima kerak
Nima kerak
  • Raspberry PI Zero W
  • Maxsus kamera
  • Adafruit 16 -kanalli 12 -bitli PWM/Servo drayveri - I2C interfeysi - PCA9685 yoki uning kloni
  • Kamera ushlagichiga mos keladigan ikkita servo mexanizm
  • Kamera ushlagichi
  • Batareyalar - Qo'llanmada ikkita ulanish imkoniyati
  • TB6612FNG ko'prigi, g'ildirak tezligini boshqarish uchun
  • PCB burgut fayllari DC-DC termal uzatish usulini yaratish juda oson
  • DC pastga aylantirish moduli
  • Robot qutisi

3 -qadam: ulanishlar

Ulanishlar
Ulanishlar

Raspberry pi boshqaruv servo mexanizmi PWM moduli va vosita tezligi RasbperryPi pinlariga ulangan H ko'prigi orqali, H ko'prigiga PWM kirishi men servo uchun ishlatilgan modul tomonidan ishlab chiqariladi (yuqorida aytib o'tilgan qismlarga mantiqiy konvertorlar kerak emas)

4 -qadam: PCB

PCB
PCB
PCB
PCB

PCB burgut fayllarini bu erdan yuklab olishingiz mumkin, yo'llar semiz, shuning uchun uni issiqlik uzatish usuli bilan bajarish oson

5 -qadam: PCB chiqishlari

PCB chiqishlari
PCB chiqishlari
PCB chiqishlari
PCB chiqishlari
  1. Dvigatel dvigatellari uchun PWM usuli PWM modulining 15 va 16 -pinlariga ulangan bo'lishi kerak (PWM moduli tasviridagi yashil to'rtburchakni tekshiring)
  2. Dvigatel dvigatellari uchun quvvat manbai (motoringiz qanday maksimal kuchlanish bilan ishlashini tekshiring)
  3. RasbperryPi va PWM moduli uchun quvvat aniq bo'lishi kerak
  4. Dvigatel dvigatelining chiqishlari (ikkita chiqish bor, chunki biz haydovchi dvigatellarni birlashtiramiz)
  5. Servo mexanizmlarining kuchi - shuningdek, ular uchun qanday kuchlanish yaxshi ekanligini tekshirish kerak
  6. 5 -chi kirish joyidan o'tish quvvati dvigatellarni ham boshqaradi, shuning uchun 2 -kirishga hech narsa ulashning hojati yo'q
  7. Agar o'tish joyi bo'lsa, RasbperryPi 3 -chi kirishdan quvvat oladi - o'tish joyiga qo'yishdan oldin, ulanishlar to'g'riligini tekshiring - RPi -ni yoqishni xohlamaysiz.
  8. Kabellarni lehimlashga ruxsat bering, chunki bizga mantiqiy konvertorlar kerak emas

6 -qadam: Bu qanday ishlaydi

RasbperryPi -da ikkita kutubxonadan foydalanadigan python skript mavjud

  • RPi. GPIO-ni GPIO sifatida import qilish-H ko'prigiga ulangan 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 pinlari uchun (BCM belgisi).
  • PWM moduli uchun Adafruit_PCA9685 -ni import qiling

Rpi pinlari 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) va H ko'prigining boshqaruv rejimi (oldinga, orqaga, to'xtash, qisqa tanaffus) quyidagicha ulanadi. H ko'prigi ikkita PWM signaliga muhtoj, shuning uchun biz tezlikni yoki dvigatelning aylanishini boshqaramiz. Chunki loyihada bizda PWM boshqaruvchisi mavjud (servo uchun ishlatiladi), biz undan H ko'prigi uchun PWM ishlab chiqarish uchun ham foydalanamiz.

PWM moduli I2C aloqa protokolidan foydalanadi. Men Adafruit_PCA9685 qutisidan ishlashni ishlatganman. kutubxona

7 -qadam: Avtomobil yig'ish - g'ildiraklar

Avtomobil yig'ish - g'ildiraklar
Avtomobil yig'ish - g'ildiraklar
Avtomobil yig'ish - g'ildiraklar
Avtomobil yig'ish - g'ildiraklar

Biz dvigatellarni avtoulov qutisiga ulashdan boshlaymiz. Chap/yon dvigatellar bir -biriga ulanadi va ikkalasi ham keyinchalik PCBga ulanadigan quvvat kabeliga ulanadi. Dvigatellarni ulashda har ikki tomonning g'ildiragi bir xil yo'nalishda aylanishi kerak.

8 -qadam: Quvvat (AA zaryadlovchi batareyalari) 1/2 variant

Quvvat (AA zaryadlovchi batareyalari) variant 1/2
Quvvat (AA zaryadlovchi batareyalari) variant 1/2
Quvvat (AA zaryadlovchi batareyalari) 1/2 variant
Quvvat (AA zaryadlovchi batareyalari) 1/2 variant
Quvvat (AA zaryadlovchi batareyalari) 1/2 variant
Quvvat (AA zaryadlovchi batareyalari) 1/2 variant
Quvvat (AA zaryadlovchi batareyalari) 1/2 variant
Quvvat (AA zaryadlovchi batareyalari) 1/2 variant

Men kuchning ikkita variantini yozaman, birinchisi - 10xAA zaryadlanuvchi batareyalardan. Oxirgi rasmda men qizil rangdagi o'tish moslamalarini chizishim kerak.

9-qadam: Quvvat (Li-Po 7.2V batareyalar) 2/2 variant

Quvvat (Li-Po 7.2V batareyalar) 2/2 variant
Quvvat (Li-Po 7.2V batareyalar) 2/2 variant
Quvvat (Li-Po 7.2V batareyalar) 2/2 variant
Quvvat (Li-Po 7.2V batareyalar) 2/2 variant

Va ikkinchi variant-7.2 LI-PO batareyasi. Bu holda bizda 3 ta kuchlanish bor - Rpi va modul uchun 5v, servo uchun 6V va to'g'ridan -to'g'ri haydovchi motorlar uchun 7,2 voltli batareyalardan. Men pastga tushadigan ikkita modulni ishlatishim kerak edi

LI-PO bilan 2-variant yaxshiroq:

  • Batareyalar katta quvvatga ega - mashina uzoqroq yuradi
  • Dvigatel dvigatellari uchun katta kuchlanish - mashina tezroq harakat qiladi
  • Dvigatel dvigatellari topila boshlagach, bizda katta kuchlanish pasayishi va RPI qayta boshlanishi ehtimoli kamroq.

10 -qadam: Lehimlash

Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash

Men PCB -ga PWM moduli uchun bir nechta bo'shliqlarni qo'ydim. Yozish uchun hech narsa yo'q, hamma narsani qanday qilib lehimlash mumkin, rasmlarga qarang

11 -qadam: kamera

Kamera
Kamera

Biz kamerani ulaymiz, bu erda kamera ushlagichiga o'rnatishdan oldin servo mexanizmlarni qanday markazlashtirish kerakligi yozilgan, lekin eng qisqa yo'l - qo'lda maksimal aylanish holatini qo'lda tekshirish va servolarni markaziy holatiga o'rnatish. Bu markazlashtirilgan servo mexanizmlar, biz kamera ushlagichiga markaziy holatda joylashtiramiz (kamera xuddi rasmdagi kabi oldinga qaragan)

12 -qadam: Avtomobil qismlarini birlashtirish

Avtomobil qismlarini birlashtirish
Avtomobil qismlarini birlashtirish
Avtomobil qismlarini birlashtirish
Avtomobil qismlarini birlashtirish
Avtomobil qismlarini birlashtirish
Avtomobil qismlarini birlashtirish

PCB uchun men pleksiglasli kichik stol yasadim

13 -qadam: App.remoteme.org konfiguratsiyasi

App.remoteme.org konfiguratsiyasi
App.remoteme.org konfiguratsiyasi

Men bepul app.remoteme.org tizimidan foydalanganman, bu sizga ulanishga yordam beradi va bizda allaqachon kerak bo'lgan skriptlar mavjud

Bu yo'riqnomada men asta -sekin mashinada haydash uchun nima qilish kerakligini ko'rsataman (bu erda siz batafsil ma'lumotni topasiz)

  • Ro'yxatdan o'tgandan so'ng https://app.remoteme.org saytida qo'shiq kuylang, siz avtomatik ravishda tizimga kirasiz
  • chapdagi Token yorlig'ini oching, so'ng "yangi token" ni bosing va OK ni bosing, biz yangi token yaratdik (ekrandagi rasm)
  • bu misolda token qiymati: ~ 1_ & p@+BNnZ@A+x8 (sizniki boshqacha bo'ladi;))

14 -qadam: RasbperryPi konfiguratsiyasi

RasbperryPi konfiguratsiyasi
RasbperryPi konfiguratsiyasi

macun konsolida (bu erda kamera I2c aloqasini RPi -ni qanday sozlash kerak)

git klon git: //github.com/remoteme/remoteme.git

CD remoteme

python3.5 install.py

  • O'rnatuvchi bizga barcha javoblar uchun ba'zi savollar beradi va [enter] orqali tasdiqlaydi.
  • o'rnatish paytida token so'ralganda, biz ilovadan nusxa ko'chiramiz (shift+qo'shish) va Enter
  • masalan, Rpi nomi
  • deviceId 1 kiriting
  • O'rnatishdan so'ng - dasturni ishga tushiring

./runme.sh

15 -qadam: ulanishlarni tekshirish

Ulanishlarni tekshirish
Ulanishlarni tekshirish

Https://app.remoteme.org sahifasiga qaytamiz

Qurilmalar ko'rinishida biz ulangan RPi -ni ko'ramiz (yashil havola belgisi RPi hozir ulanganligini bildiradi)

16 -qadam: Python skriptini qo'shish

Python skriptini qo'shish
Python skriptini qo'shish
Python skriptini qo'shish
Python skriptini qo'shish

Endi biz python skriptini qo'shamiz, u allaqachon shablonlarda, shuning uchun biz hech narsani dasturlashimiz shart emas.

Qurilmalar ko'rinishida RasbperryPi menyusini oching va "Tashqi skript qo'shish" -ni tanlang.

Yangi oyna paydo bo'lganda, yuqoridagi rasmdagidek ma'lumot bering

"Car4wd" shablonini tanlashni unutmang. Ushbu qadamlardan so'ng, remoteme.org bizning RasbperryPi -ga python skriptini qo'shadi va uni qayta ishga tushiradi

17 -qadam: Python skriptining muvaffaqiyatli qo'shilganligini tekshirish

Python skriptining muvaffaqiyatli qo'shilganligini tekshirish
Python skriptining muvaffaqiyatli qo'shilganligini tekshirish

Qurilmalar yorlig'iga yangi python skript qurilmasi qo'shilishi kerak va uning qurilma identifikatori 2 - bu qurilmaga Id veb -sahifasi mashinani boshqarish uchun xabarlar yuboradi.

18 -qadam: Avtomobilni boshqarish uchun veb -sahifani qo'shish

Avtomobilni boshqarishga veb -sahifa qo'shish
Avtomobilni boshqarishga veb -sahifa qo'shish

qurilmalar ko'rinishida "Yangi" ni, keyin "Veb -sahifani" bosing. Biz faqat boshqa qurilmani qo'shamiz - webPage biz uni mashinamizni boshqarish uchun ishlatamiz. Va biz "car4wdDesktop" shablonini veb -sahifada ishlatganimiz uchun allaqachon ishlatishga tayyor bo'lgan fayllar mavjud

19 -qadam: Avtomobilni boshqarish uchun veb -sahifa qurilmasini sozlash 1/2

Avtomobilni boshqarish uchun veb -sahifa qurilmasini sozlash 1/2
Avtomobilni boshqarish uchun veb -sahifa qurilmasini sozlash 1/2

Qurilma ko'rinishida veb -sahifani kengaytiring va index.html -ni bosing, so'ng Ochish -ni bosing

20 -qadam: Veb -sahifa qurilmasini avtomobilni 2/2 nazorat qilish uchun sozlang

Avtomobil sahifasini boshqarish uchun veb -sahifa qurilmasini sozlang 2/2
Avtomobil sahifasini boshqarish uchun veb -sahifa qurilmasini sozlang 2/2

Oyna paydo bo'ladi, keyin biz qurilmamizdagi Python skriptining deviceId -ni ta'minlashimiz kerak deviceId 2 - Rasmda ko'rsatilgan joyni o'zgartiramiz.

21 -qadam: Avtomobilni boshqarish markazini oching

Avtomobilni boshqarish markazini oching
Avtomobilni boshqarish markazini oching
Avtomobilni boshqarish markazini oching
Avtomobilni boshqarish markazini oching

Endi sahifamizni ochish va uning qanday ishlashini ko'rish vaqti keldi. Qurilma yorlig'ida index.html -ni bosing va keyin "Yangi varaqda ochish" -ni bosing. Videoni oldindan ko'rish uchun siz Chrome yoki Firefox brauzeridan foydalanishingiz kerak, boshqalari webRTC -ni to'liq qo'llab -quvvatlamaydi.

22 -qadam: Kamera konfiguratsiyasi 1/2

Kamera konfiguratsiyasi 1/2
Kamera konfiguratsiyasi 1/2

Biz sichqonchani video maydonga surganimizda, kamera o'rnini o'zgartirishi kerak va u xuddi FPS o'yinlaridagi kabi ishlashi kerak. Ehtimol, u to'g'ri harakat qilmaydi

23 -qadam: Kamera konfiguratsiyasi 2/2

Kamera konfiguratsiyasi 2/2
Kamera konfiguratsiyasi 2/2

Script.js -ni oching (qurilmalar yorlig'i veb -sahifani kengaytiradi, keyin script.js -ni bosing va keyin oching) va ekranda ko'rsatgan joyimni toping.

Mening holatimda markazning pozitsiyasi 560 va 430, harakatlarning diapazoni esa har ikkala eksa uchun 200

Siz bu raqamlar bilan tajriba o'tkazishingiz kerak, shunda siz kameraning joylashuvi va silliq harakatlariga ega bo'lasiz, agar siz ushbu qo'llanmadan foydalansangiz, berilgan qiymatlarni nusxa ko'chiring.

24 -qadam: 1/2 haydash

Haydash 1/2
Haydash 1/2

Agar siz klaviaturadagi o'qni bosgan bo'lsangiz, o'lchagichlar joyini o'zgartirishi va mashina haydashi kerak. Agar siz "yuqoriga" o'qini bosganingizda va mashina aylanayotgan bo'lsa, ekrandagi joylarga minus qo'shishingiz/o'chirishingiz kerak.

Ushbu operatsiyadan so'ng, "yuqoriga" o'qi bosilgandan keyin oldinga va pastga o'qni orqaga haydash kerak.

25 -qadam: 2/2 haydash

Haydash 2/2
Haydash 2/2

Endi burilmoqda - agar mashina o'ngga burilayotgan bo'lsa, chap o'qni bosing, siz kabellarni burishingiz kerak (yuqoridagi rasmga qarang)

Agar siz bu kabellarni lehimlasangiz, uni script.js -da o'zgartirishingiz mumkin, faqat motor tezligini yuborish tartibini o'zgartiring, oldin:

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));

keyin:

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));

va endi siz uni to'g'ri ishlashi uchun bir qadam oldin minuslar bilan o'ynashingiz kerak;). Siz o'q otganingizdan keyin sezganingizdek, mashina tezroq harakatlanmasligi uchun to'liq tezlikda harakatlanmayapti, o'qni maksimal holatida tez qo'yib yuboring. va yana bosib turing

26 -qadam: Bu qanday ishlaydi

Veb-sahifa 9-baytli xabarlarni python skriptiga yuboradi:

  • 1 bayt bitta baytli tamsayı qiymati 1
  • 2 bayt tamsayı X kameraning joylashuvi
  • 2 bayt tamsayı Y kamerasining joylashuvi
  • Chap motor rejimida 1 bayt tamsayı (3 = orqaga, 1 = oldinga, 2 = to'xtash)
  • Chap motor tezligi 1 bayt tamsayı
  • 1 bayt tamsayı o'ng vosita rejimi (3 = orqaga, 1 = oldinga, 2 = to'xtash)
  • 1 bayt tamsayı o'ng vosita tezligi

xabarni yuborish script.js faylida "sendNow ()" funktsiyasida amalga oshiriladi.

RasbperryPi -da python.py bu xabarni "onUserMessage" funktsiyasida oladi.

Siz buni tekshirib, biroz o'ynashingiz mumkin, shunda nima bo'layotganini bilib olasiz.

bu erda sinf funktsiyalarining tavsifi

27 -qadam: Planshet, mobil boshqaruv

Planshet, mobil boshqaruv
Planshet, mobil boshqaruv

Biz yangi veb -sahifani avvalgidek qo'shamiz, lekin hozir biz "car4wdMobile" shablonini tanlaymiz.

Keyinchalik, biz hamma narsani script.js -da ish stolini boshqarish veb -sahifasida bo'lgani kabi sozlaymiz Xabar formati aynan bir xil, shuning uchun biz python.py skriptini o'zgartirishimiz shart emas.

28 -qadam: Mobil telefonda sahifani oching

Sahifani mobil telefonda oching
Sahifani mobil telefonda oching
Sahifani mobil telefonda oching
Sahifani mobil telefonda oching

Hisobingizga mobil telefondan kirish o'rniga, QR -ning istalgan URL manzilini skanerlang.

QR tafsilotlari bu erda

Agar sizning mobil boshqaruvingiz RPi va mobil bir xil Wi -Fi tarmog'ida ishlayotgan bo'lsa, lekin ishlamaydi, agar siz mobil internetdan foydalansangiz, navbat serverini qo'shishingiz kerak, buni men bu erda yozganman.

29 -qadam: Turn serverini qo'shish

Burilish serverini qo'shish
Burilish serverini qo'shish
Burilish serverini qo'shish
Burilish serverini qo'shish
Burilish serverini qo'shish
Burilish serverini qo'shish

Ba'zida (NAT yoki xavfsizlik devori sozlamalari orqasida bo'lganingizda), siz robotni boshqa tarmoqdan ulay olmaysiz, shunda sizning robotingiz ulanadi. Bu katta muammo emas, keyin siz navbat serverini qo'shishingiz kerak.

Men XIRSYS kompaniyasining serverini sinab ko'rdim (uni ishlab chiquvchilar uchun bepul) va men XIRSYS tizimi yordamida navbat serverini qanday sozlashni ko'rsataman.

ro'yxatdan o'tish:

global.xirsys.net/dashboard/signup

keyin dasturni qo'shish uchun "ortiqcha" ni bosing

o'ng tomonda "statik burilish ma'lumotlari" ostida sizda barcha kerakli ma'lumotlar bor. Uni Webrtc_streamer.conf fayliga nusxalash uchun https://app.remoteme.org/en/#/app/devices sahifasiga o'ting.

RaspberryPi dasturlarini kengaytirish

webrtc_streamer.conf faylini bosing

ochishni bosing

va ma'lumot qo'shing

turn_server = turn_username =

turn_credential =

Tahrirlashni tugatgandan so'ng sizda ekranda shunday narsa bo'lishi kerak.

keyin RasbperryPi qurilmasidagi menyuni bosish orqali Saqlash va You Rpi -ni qayta ishga tushirish -ni bosing va qayta ishga tushirish -ni tanlang

RPi dasturi qayta ishga tushirilgandan so'ng, siz mobil Internetdan foydalanayotgan bo'lsangiz ham, videoni oldindan ko'rishni mobil telefoningizda ko'rishingiz mumkin.

30 -qadam: Mobil boshqaruv

Mobil boshqaruv
Mobil boshqaruv

1 -doira ichida biz bosh barmog'imizni chapga, 2 o'ngga qo'yamiz - aynan shu nuqtada bo'lmasligimiz kerak - veb -sahifa nol holatini sensorli ekranga qo'ygandan so'ng o'rnatadi va bosh barmog'ingizni siljitish orqali (chapda haydash, kameraning o'ng pozitsiyasi) Siz boshqarishingiz mumkin. sizning mashinangiz

31 -qadam: Xulosa

Umid qilamanki, sizga bu darslik yoqdi, men ilgari yozganimdek, bu qopqoq ostida qanday ishlashi haqida batafsilroq.

ba'zi havolalar:

remoteme.org - bu erda remoteme.org ning bosh sahifasi Siz hujjatlar va o'quv qo'llanmalarni topasiz

FB fan -sahifasi - Facebook fan -sahifasi remoteme.org haqida eng yangi ma'lumotlar

Youtube - loyihaning ba'zi videolari, darsliklar

Salom, Maciek

Tavsiya: