FPV Kameralı RasbperryPi Araba. Web Tarayıcı ile Kontrol: 31 Adım (Resimlerle)
FPV Kameralı RasbperryPi Araba. Web Tarayıcı ile Kontrol: 31 Adım (Resimlerle)
Anonim
Image
Image

4wd araba yapacağız - direksiyon bir tanktaki gibi olacak - tekerleklerin bir tarafını döndürmek diğerinden farklı hızda dönecek. Arabada, kamera konumunu değiştirebileceğimiz özel tutucuya kamera yerleştirilecektir. Robot web tarayıcısı (masaüstünde chrome veya firefox veya cep telefonunda firefox) tarafından kontrol edilecek, tarayıcıda, Kamera videosu alacağız (sadece 200ms gecikme ile) ve tarayıcıdan araba hareketlerini kontrol edebileceğiz ve kamera konumu. İletişimi kolaylaştırmak için app.remoteme.org sistemini kullandım, ayrıca bu tür arabaların kutudan kontrol edilmesi de var, yani kendi kodunuzu yazmanıza gerek yok, ama elbette komut dosyalarını değiştirebilirsiniz. yeni olanaklar vb.

PCB'nize güç bağlamadan önce lütfen tüm bağlantıları iki kez kontrol edin

1. Adım: App.remoteme.org Hakkında Bazı Bilgiler

Sistemin üç bölümü vardır

  • web uygulaması - kontrol web sayfalarınızı barındırdığınızda ve tüm iletişimleri birbirine bağladığında
  • rasbperryPi programı - video gönderen, python komut dosyalarınızı yöneten program
  • sınıf, fonksiyon tanımlarını bulduğunuz kütüphaneler

Remoteme.org sistem hızlıdır Tüm cihazlarınızı birbirine bağlarsınız, Orada web sayfalarınızı barındırabilir, bağlı cihazlarınızı görebilirsiniz. Remoteme.org sistemi, protokol iletişimleri konusunda endişelenmeden projelerinizi yapmaya başlamanıza yardımcı olmak için yapılmıştır, ana fikir web sayfaları, RasbeprryPI, arduino ve scriptler gibi çeşitli cihazlar arasında ikili mesajlar göndermektir.

Öte yandan Remoteme.org size dosyalarınızın tam kontrolünü verir, kendi işlevselliğinizi yazarak kolayca değiştirebilirsiniz.

Bu derste Size neredeyse hiç kod yazmadan harika bir projeyi nasıl yapacağınızı göstereceğim.

Bu eğitimin sonunda, remoteme.org sistemini anlamanıza yardımcı olacak faydalı bağlantılar koydum.

Adım 2: Gerekenler:

İhtiyaç duyulan şey
İhtiyaç duyulan şey
İhtiyaç duyulan şey
İhtiyaç duyulan şey
  • Ahududu PI Sıfır W
  • Özel kamera
  • Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C arayüzü - PCA9685 veya klonu
  • Kamera tutucu ile uyumlu iki servo mekanizma
  • Kamera tutucu
  • Piller - Eğitimde iki bağlantı olasılığı
  • Tekerlek dönüşünü kontrol etmek için H köprüsü TB6612FNG
  • PCB kartal dosyaları Termal transfer yöntemi ile yapmak kolaydırDC-DC
  • Step Down Dönüştürücü Modül DC
  • robot durumda

3. Adım: Bağlantılar

Bağlantılar
Bağlantılar

Raspberry pi kontrol servo mekanizması PWM modülü üzerinden ve RasbperryPi pinlerine bağlı H köprüsü ile motor hızı, H köprüsüne PWM girişi servolar için kullandığım modül tarafından üretiliyor (yukarıda bahsettiğim parçalar hiçbir mantık dönüştürücüye gerek yok)

Adım 4: PCB

PCB
PCB
PCB
PCB

PCB kartal dosyalarını buradan indirebilirsiniz. Yollar yağlıdır, bu yüzden termal transfer yöntemiyle yapmak kolaydır.

Adım 5: PCB Çıkışları

PCB Çıkışları
PCB Çıkışları
PCB Çıkışları
PCB Çıkışları
  1. Tahrik motorları için PWM girişi PWM modülünün 15'inci ve 16'ncı pinlerine bağlanmalıdır (PWM modül görüntüsündeki yeşil dikdörtgeni kontrol edin)
  2. Tahrik motorları için güç girişi (motorlarınızın hangi maksimum voltajla çalışabileceğini kontrol edin)
  3. RasbperryPi ve PWM modülü için güç – tam olarak olmalıdır
  4. Sürücü motor çıkışları (tahrik motorlarını eşleştireceğimiz için iki çıkış vardır)
  5. Servo Mekanizmaların gücü - ayrıca onlar için hangi voltajın iyi olduğunu kontrol etmelisiniz
  6. Mevcut gücünü 5. girişten atlayın, aynı zamanda motorları da çalıştıracak, böylece giriş 2'ye herhangi bir şey bağlamaya gerek yok
  7. Varsa Jumper RasbperryPi 3. girişten güç alacaktır – jumper'ı buraya koymadan önce bağlantıların düzgün olup olmadığını kontrol edin – RPi'nizi yakmak istemezsiniz
  8. Mantık dönüştürücülere ihtiyacımız olmadığından kabloları burada lehimleyelim

Adım 6: Nasıl Çalışacak

RasbperryPi'de iki kitaplık kullanan python betiği var

  • RPi. GPIO'yu GPIO olarak içe aktar - H köprüsüne bağlı 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM gösterimi) pinleri için
  • PWM modülü için Adafruit_PCA9685'i içe aktar

Rpi pinleri aşağıdaki şekilde 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) ve H köprüsünün kontrol modu(ileri, geri, dur, kısa mola) bağlanır. H köprüsünün ayrıca iki PWM sinyaline ihtiyacı vardır, böylece hızı veya motor dönüşünü kontrol edebiliriz. Çünkü projede zaten PWM kontrolörümüz var (servo için kullanılıyor), onu H köprüsü için PWM üretmek için de kullanacağız.

PWM modülü, I2C iletişim protokolünü kullanır. Adafruit_PCA9685 kutusunun dışında çalışmayı kullandım. kütüphane

Adım 7: Araba Montajı - Tekerlekler

Araba Montajı - Tekerlekler
Araba Montajı - Tekerlekler
Araba Montajı - Tekerlekler
Araba Montajı - Tekerlekler

Tahrik motorlarını araba kasasına bağlamaktan başlayacağız. Sol/Yan motorlar birbirine bağlanır ve her ikisi de daha sonra PCB'ye bağlanacak olan bir güç kablosuna bağlanır. Önemli not, motorları bağlarken her iki taraftaki tekerleklerin aynı yönde dönmesi gerekir.

Adım 8: Güç (AA Şarjlı Piller) Seçenek 1/2

Güç (AA Şarjlı Piller) Seçenek 1/2
Güç (AA Şarjlı Piller) Seçenek 1/2
Güç (AA Şarjlı Piller) Seçenek 1/2
Güç (AA Şarjlı Piller) Seçenek 1/2
Güç (AA Şarjlı Piller) Seçenek 1/2
Güç (AA Şarjlı Piller) Seçenek 1/2
Güç (AA Şarjlı Piller) Seçenek 1/2
Güç (AA Şarjlı Piller) Seçenek 1/2

İki güç seçeneği yazacağım Araba ilki 10xAA şarjlı pillerden Son resimde kırmızı renkli jumperlarla çizdim ki bunlar koyulacak.

Adım 9: Güç (Li-Po 7.2V Piller) Seçeneği 2/2

Güç (Li-Po 7.2V Piller) Seçenek 2/2
Güç (Li-Po 7.2V Piller) Seçenek 2/2
Güç (Li-Po 7.2V Piller) Seçenek 2/2
Güç (Li-Po 7.2V Piller) Seçenek 2/2

İkinci seçenek ise 7.2 LI-PO pil. Bu durumda 3 voltajımız var - Rpi ve modül için 5v, servolar için 6V ve sürücü motorları için doğrudan akülerden 7.2 volt. İki kademeli modül kullanmak zorunda kaldım

LI-PO ile Seçenek 2 daha iyidir:

  • Pillerin kapasitesi daha fazladır - araba daha uzun sürer
  • Tahrik motorları için daha yüksek voltaj - araba daha hızlı gidecek
  • Tahrik motorlarının yerini tespit etmeye başladıktan sonra büyük voltaj düşüşü ve RPI'nin yeniden başlaması olasılığı daha düşüktür.

Adım 10: Lehimleme

Lehimleme
Lehimleme
Lehimleme
Lehimleme
Lehimleme
Lehimleme
Lehimleme
Lehimleme

PCB'ye PWM modülü için bazı ayırıcılar koydum. Yazacak bir şey yok, sadece her şeyi nasıl lehimleyebileceğinizi kontrol edin.

Adım 11: Kamera

Kamera
Kamera

kamerayı bağlarız, burada kamera tutucusuna monte edilmeden önce servo Mekanizmalarının nasıl ortalanacağı yazılmıştır, ancak en kısa yol maksimum dönüş konumunu nazikçe manuel olarak kontrol etmek ve servoları merkez konuma ayarlamaktır. Bu ortalanmış servo mekanizmayı kamera tutucusuna orta konumda yerleştiriyoruz (kamera fotoğraftaki gibi dümdüz ileriyi gösteriyor)

Adım 12: Araba Parçalarını Birleştirme

Araba Parçalarını Birleştirme
Araba Parçalarını Birleştirme
Araba Parçalarını Birleştirme
Araba Parçalarını Birleştirme
Araba Parçalarını Bir Araya Getirmek
Araba Parçalarını Bir Araya Getirmek

PCB için küçük pleksiglas masa yaptım

Adım 13: App.remoteme.org Yapılandırması

App.remoteme.org Yapılandırması
App.remoteme.org Yapılandırması

Ücretsiz app.remoteme.org sistemini kullandım, bağlantı kurmanıza yardımcı oluyor ve zaten ihtiyacımız olan komut dosyaları var.

Bu eğitici yazıda, araba sürmeyi yapmak için ne yapılması gerektiğini adım adım göstereceğim (burada daha fazla ayrıntı bulacaksınız)

  • Kaydolduktan sonra https://app.remoteme.org adresinden kaydolun Otomatik olarak oturum açacaksınız
  • soldaki Belirteç sekmesini açın, ardından "yeni belirteç" e tıklayın, bir ad sağlayın ve Tamam'a tıklayın, Yeni belirteç oluşturduk (ekrandaki görüntü)
  • bu örnekte, belirteç değeri: ~1_&p@+BNnZ@A+x8 (sizinki farklı olacaktır;))

Adım 14: RasbperryPi Yapılandırması

RasbperryPi Yapılandırması
RasbperryPi Yapılandırması

macun konsolunda (burada RPi açık kamera I2c iletişimimizi nasıl kuracağız)

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

cd uzaktan kumanda

python3.5 yükleme.py

  • Yükleyici, [Y]'lere yanıt verdiğimiz ve [enter] ile onayladığımız her şey için bize bazı sorular soracaktır.
  • kurulum jeton istediğinde, uygulamadan kopyalanan jetonu yapıştırırız (shift+insert) ve Enter
  • örneğin adı Rpi
  • deviceId 1 Girin
  • kurulumdan sonra - programı çalıştırın

./runme.sh

Adım 15: Bağlantıları Kontrol Etme

Bağlantıları Kontrol Etme
Bağlantıları Kontrol Etme

app.remoteme.org'a geri dönelim

Cihazlar sekmesinde, bağlı RPi'mizi göreceğiz (yeşil bağlantı simgesi, RPi'nin şu anda bağlı olduğu anlamına gelir)

Adım 16: Python Komut Dosyası Ekleme

Python Komut Dosyası Ekleme
Python Komut Dosyası Ekleme
Python Komut Dosyası Ekleme
Python Komut Dosyası Ekleme

Şimdi python betiğini ekleyeceğiz, bu zaten şablonlarda, bu yüzden hiçbir şey programlamamıza gerek yok.

Cihazlar sekmesinde RasbperryPi menüsünü açın ve "Harici komut dosyası ekle"yi seçin.

Yeni pencere göründüğünde, yukarıdaki resimdeki gibi bilgi sağlayın

"car4wd" şablonunu seçmeyi unutmayın. Bu adımlardan sonra remoteme.org, RasbperryPi'mize python betiği ekleyecek ve yeniden başlatacaktır.

Adım 17: Python Komut Dosyasının Başarıyla Eklenip Eklenmediğini Kontrol Etme

Python Komut Dosyasının Başarıyla Eklenip Eklenmediğini Kontrol Etme
Python Komut Dosyasının Başarıyla Eklenip Eklenmediğini Kontrol Etme

Cihazlar sekmesinde yeni python komut dosyası cihazı eklenmelidir ve cihaz kimliği 2'dir. Bu cihaz kimliği web sayfasına arabayı kontrol etmek için mesajlar gönderecektir.

Adım 18: Kontrol Arabasına Web Sayfası Ekleme

Kontrol Arabasına Web Sayfası Ekleme
Kontrol Arabasına Web Sayfası Ekleme

cihazlar sekmesinde "Yeni"yi ve ardından "Web Sayfası"nı tıklayın. Sadece başka bir cihaz ekliyoruz - web sayfasını arabamızı kontrol etmek için kullanacağız. Ve web sayfasında "car4wdDesktop" şablonunu kullandığımız için, dosyalar neredeyse kullanıma hazırdır.

Adım 19: Web Sayfası Aygıtını Araba 1/2'yi Kontrol Etmek için Yapılandırın

Web Sayfası Aygıtını Arabayı Kontrol Etmek İçin Yapılandırma 1/2
Web Sayfası Aygıtını Arabayı Kontrol Etmek İçin Yapılandırma 1/2

Cihaz sekmesinde Web Sayfasını genişletin ve index.html'yi ve ardından Aç'ı tıklayın.

Adım 20: Web Sayfası Aygıtını Araba 2/2 Kontrol Edecek Şekilde Yapılandırın

Web Sayfası Aygıtını Arabayı Kontrol Etmek İçin Yapılandırma 2/2
Web Sayfası Aygıtını Arabayı Kontrol Etmek İçin Yapılandırma 2/2

Pencere açılır, ardından python betiğimizin deviceId'sini durumumuzda deviceId 2 sağlamamız gerekir. Resimde gösterilen yeri değiştirelim.

Adım 21: Araba Kontrol Merkezini Açın

Araba Kontrol Merkezini Aç
Araba Kontrol Merkezini Aç
Araba Kontrol Merkezini Aç
Araba Kontrol Merkezini Aç

Şimdi sayfamızı açmanın ve nasıl çalıştığını görmenin zamanı geldi. Cihaz sekmesinde index.html'yi ve ardından "Yeni sekmede aç"ı tıklayın Video önizlemesini almak için Chrome veya firefox tarayıcı kullanmanız gerekir, diğer tarayıcılar webRTC'yi tam olarak desteklemiyor

Adım 22: Kamera Yapılandırması 1/2

Kamera Yapılandırması 1/2
Kamera Yapılandırması 1/2

Fareyi video alanında hareket ettirdiğimizde kamera pozisyonunu değiştirmeli ve tam olarak FPS oyunlarında olduğu gibi çalışmalıdır. Muhtemelen doğru hareket etmeyecek

Adım 23: Kamera Yapılandırması 2/2

Kamera Yapılandırması 2/2
Kamera Yapılandırması 2/2

script.js'yi açın (cihazlar sekmesi web sayfasını genişletin, ardından script.js'ye tıklayın ve açın) ve ekranda gösterdiğim yeri bulun

benim durumumda merkez konumu 560 ve 430 ve hareket aralığı her iki eksen için 200

Bu sayıları denemeniz gerekir, böylece kamera konum merkezi ve yumuşak hareketler elde edersiniz, Bu öğreticiyi kullandıysanız, verilen değerleri kopyalayıp yapıştırın

Adım 24: Sürüş 1/2

1/2 sürüş
1/2 sürüş

Klavyede yukarı oka basarsanız göstergeler pozisyon değiştirmeli ve araba sürmelidir. Yukarı oka basarsanız ve araba dönüyorsa ekrandaki yerlere eksi eklemeniz/çıkarmanız gerekir.

Bu işlemden sonra "yukarı" ok vuruşundan sonra araba ileri gitmeli ve aşağı ok araba geri gitmelidir.

Adım 25: Sürüş 2/2

2/2 sürüş
2/2 sürüş

Şimdi dönüyor – araba sağa dönüyorsa sol oka basın Kabloları çevirmeniz gerekiyor (yukarıdaki resme bakın)

Bu kabloları lehimlerseniz script.js'de değiştirebilirsiniz, sadece motorların hız gönderme sırasını değiştirin, önce:

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

sonrasında:

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

ve şimdi düzgün çalışması için bir adım öncesi gibi eksilerle oynamanız gerekiyor;). Muhtemelen fark ettiğiniz gibi, yukarı ok tuşuna bastıktan sonra araba tam hızda sürmüyor, arabayı daha hızlı hareket ettirmek için sadece maksimum konumdayken yukarı oku hızlı bırakın ve tekrar basılı tutun

Adım 26: Nasıl Çalışıyor?

Web sayfası, python betiğine 9. baytlık mesaj mesajlarını şu biçimde gönderiyor:

  • 1 bayt bir bayt tam sayı değeri 1
  • 2 bayt tamsayı X kamera konumu
  • 2 bayt tamsayı Y kamera konumu
  • 1 bayt tamsayı sol motor modu (3= geri, 1= ileri, 2=dur)
  • 1 bayt tamsayı sol motor hızı
  • 1 bayt tamsayı sağ motor modu (3= geri, 1= ileri, 2=dur)
  • 1 bayt tamsayı sağ motor hızı

mesaj gönderme script.js dosyasında "sendNow()" işlevinde yapılır

RasbperryPi'de python.py bu mesajı "onUserMessage" işlevinde alıyor

Kontrol edebilir ve biraz oynayabilirsiniz, böylece neler olduğunu bilirsiniz.

sınıf fonksiyonları açıklaması burada

27. Adım: Tablet, Mobil Direksiyon

Tablet, Mobil Direksiyon
Tablet, Mobil Direksiyon

Önceki sefer yaptığımız gibi yeni web sayfası ekledik ama şimdi "car4wdMobile" şablonunu seçiyoruz.

Daha sonra, script.js'deki her şeyi masaüstü kontrol web sayfası için yaptığımız gibi yapılandırıyoruz. Mesaj formatı tamamen aynı, bu yüzden python.py betiğini değiştirmek zorunda değiliz.

Adım 28: Cep Telefonunda Sayfayı Açın

Sayfayı Cep Telefonunda Açın
Sayfayı Cep Telefonunda Açın
Sayfayı Cep Telefonunda Açın
Sayfayı Cep Telefonunda Açın

Hesabınıza mobilden giriş yapmak yerine, herhangi bir QR url'sini tarayın.

QR'nin ayrıntıları burada

RPI ve mobil aynı wifi üzerindeyken mobil kumandanız çalışıyor ancak mobil internet kullanıyorsanız çalışmıyorsa turn server eklemeniz gerekir nasıl yapılır burada yazdım

Adım 29: Turn Server Ekleme

Dönüş Sunucusu Ekleme
Dönüş Sunucusu Ekleme
Dönüş Sunucusu Ekleme
Dönüş Sunucusu Ekleme
Dönüş Sunucusu Ekleme
Dönüş Sunucusu Ekleme

Bazen (NAT veya bazı güvenlik duvarı ayarlarının arkasında olduğunuzda) Robotunuzu başka bir ağdan bağlayamazsınız, ardından robotunuz bağlanır. Bu büyük bir sorun değil ve sonra sıra sunucusu eklemelisiniz.

XIRSYS şirketinden sunucuyu test ettim (geliştirici kullanımı için ücretsiz) ve XIRSYS sistemini kullanarak dönüş sunucusunun nasıl yapılandırılacağını göstereceğim

Kayıt ol:

global.xirsys.net/dashboard/signup

ardından uygulama eklemek için "artı" yı tıklayın

sağda "statik dönüş kredileri" altında İhtiyacınız olan tüm verilere sahipsiniz. Bunu yapmak için webrtc_streamer.conf dosyasına kopyalayın, https://app.remoteme.org/en/#/app/devices adresine gidin.

RaspberryPi aygıtlarını genişlet

webrtc_streamer.conf dosyasına tıklayın

tıkla aç

ve bilgi ekleyin

turn_server=turn_username=

turn_credential=

Düzenlemeyi bitirdikten sonra Ekranda şöyle bir şey olması gerekir.

daha sonra Kaydet'e tıklayın ve RasbperryPi cihazındaki menüye tıklayarak You Rpi'yi yeniden başlatın ve yeniden başlat'ı seçin

RPi programı yeniden başlatıldıktan sonra Mobil internet kullanıyor olsanız bile video ön izlemesini cep telefonunuzda görebilirsiniz.

Adım 30: Mobil Direksiyon

Mobil Direksiyon
Mobil Direksiyon

1. daireye sol başparmağımızı, 2. sağ başparmağımızı yerleştiriyoruz – tam olarak bu noktalarda olmak zorunda değilsiniz – web sayfası siz ekrana dokunduktan hemen sonra sıfır konumunu ayarlayacaktır ve başparmaklarınızı hareket ettirerek (sol sürüş, sağ kamera konumu) kontrol edebilirsiniz senin araban

31. Adım: Özet

Umarım bu öğreticiyi beğenmişsinizdir, daha önce bu eğitimde yazdığım gibi, kaputun altında nasıl çalıştığı hakkında daha fazla ayrıntı var.

bazı bağlantılar:

remoteme.org - remoteme.org'un ana sayfası orada belgeler ve öğreticiler bulabilirsiniz

FB hayran sayfası - Remoteme.org hakkında Facebook hayran sayfası en yeni bilgiler

Youtube - bazı proje videoları, öğreticiler

Şerefe, Maciek

Önerilen: