Obsah:

Automobil RasbperryPi s kamerou FPV. Ovládání pomocí webového prohlížeče: 31 kroků (s obrázky)
Automobil RasbperryPi s kamerou FPV. Ovládání pomocí webového prohlížeče: 31 kroků (s obrázky)

Video: Automobil RasbperryPi s kamerou FPV. Ovládání pomocí webového prohlížeče: 31 kroků (s obrázky)

Video: Automobil RasbperryPi s kamerou FPV. Ovládání pomocí webového prohlížeče: 31 kroků (s obrázky)
Video: Self-driving mini-car -- testing color / shape recognition with Raspberry Pi + Pi Camera + openCV 2024, Listopad
Anonim
Image
Image

Postavíme 4wd auto - řízení bude podobné jako v tanku - k otočení jedné strany se kola budou otáčet jinou rychlostí než ostatní. U auta bude umístěna kamera na speciální držák, kde můžeme měnit polohu kamery. Robot bude řízen webovým prohlížečem (chrom nebo firefox na stolním počítači nebo Firefox na mobilním telefonu), v prohlížeči získáme video z kamery (pouze s latencí 200 ms) a z prohlížeče můžeme ovládat pohyby auta a pozice kamery. Aby byla komunikace snazší, používal jsem systém app.remoteme.org, funguje také ovládání tohoto typu auta, takže nemusíte psát svůj vlastní kód, ale samozřejmě můžete upravit skripty nové možnosti atd.

Před připojením napájení k desce plošných spojů zkontrolujte všechna připojení

Krok 1: Několik informací o App.remoteme.org

Systém má tři části

  • webová aplikace - když hostujete své kontrolní webové stránky a propojuje veškerou komunikaci
  • program rasbperryPi - program, který odesílá video, spravuje vaše skripty pythonu
  • knihovny, kde najdete definice tříd, funkcí

Remoteme.org je rychlý systém Propojíte všechna svá zařízení dohromady, můžete tam hostovat své webové stránky, vidět svá připojená zařízení. Systém Remoteme.org byl vytvořen, aby vám pomohl začít s realizací vašich projektů, bez starostí s komunikací protokolů. Hlavní myšlenkou je odesílání binárních zpráv mezi různými zařízeními, jako jsou webové stránky, RasbeprryPI, arduino a skripty.

Na druhou stranu vám Remoteme.org poskytuje plnou kontrolu nad vašimi soubory, můžete jej snadno upravit tak, že napíšete vlastní funkce

V tomto tutoriálu vám ukážu, jak vytvořit úžasný projekt, aniž byste museli psát jakýkoli kód.

Na konci tohoto tutoriálu jsem vložil užitečné odkazy, které vám pomohou porozumět systému remoteme.org.

Krok 2: Co je potřeba:

Co je potřeba
Co je potřeba
Co je potřeba
Co je potřeba
  • Raspberry PI Zero W
  • Vyhrazená kamera
  • Adafruit 16kanálový 12bitový ovladač PWM/servo - rozhraní I2C - PCA9685 nebo jeho klon
  • Dva servomechanismy kompatibilní s držákem kamery
  • Držák kamery
  • Baterie - V tutoriálu dvě možnosti připojení
  • H můstek TB6612FNG, pro ovládání speer kola
  • Soubory orla PCB Je snadné to udělat metodou tepelného přenosu DC-DC
  • Step Down Converter Module DC
  • Pouzdro na robot

Krok 3: Připojení

Připojení
Připojení

Servopohon Raspberry pi ovládá modul PWM a rychlost motoru můstkem H, který je připojen k pinům RasbperryPi, vstup PWM do můstku H je generován stejným modulem, jaký jsem použil pro serva (které části zmiňuji výše, nejsou potřeba žádné logické převodníky)

Krok 4: PCB

PCB
PCB
PCB
PCB

Zde si můžete stáhnout soubory orla PCB Cesty jsou tlusté, takže je snadné je vyrobit metodou tepelného přenosu

Krok 5: Výstupy DPS

Výstupy DPS
Výstupy DPS
Výstupy DPS
Výstupy DPS
  1. Vstup PWM pro hnací motory by měl být připojen k modulu PWM 15´ a 16pin (zaškrtněte zelený obdélník na obrázku modulu PWM)
  2. Příkon pro hnací motory (zkontrolujte, s jakým maximálním napětím mohou vaše motory pracovat)
  3. Výkon pro modul RasbperryPi a PWM - musí být přesně
  4. Výstupy hnacího motoru (existují dva výstupy, protože spárujeme hnací motory)
  5. Výkon servomechanismu - také Musíte zkontrolovat, jaké napětí je pro ně dobré
  6. Propojením současného výkonu z 5. vstupu budete napájet také motory, takže ke vstupu 2 není třeba nic připojovat
  7. Propojka, pokud je k dispozici RasbperryPi bude napájen z 3. vstupu - před vložením propojky sem zkontrolujte, zda jsou připojení v pořádku - Nechcete vypálit RPi
  8. Pojďme zde pájet kabely, protože nepotřebujeme logické převaděče

Krok 6: Jak to funguje?

Na RasbperryPi existuje skript pythonu, který používá dvě knihovny

  • import RPi. GPIO jako GPIO-pro piny 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (označení BCM), které jsou připojeny k H můstku
  • import Adafruit_PCA9685 pro modul PWM

Piny Rpi jsou připojeny následovně 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) a režim ovládání H můstku (dopředu, dozadu, zastavení, krátká přestávka). Most H také potřebuje dva signály PWM, abychom mohli ovládat rychlost nebo otáčení motoru. Protože v projektu již máme PWM řadič (používaný pro servo), použijeme jej také ke generování PWM pro H můstek.

Modul PWM používá komunikační protokol I2C. Použil jsem práci po vybalení z krabice Adafruit_PCA9685. knihovna

Krok 7: Sestavení auta - kola

Montáž auta - kola
Montáž auta - kola
Montáž auta - kola
Montáž auta - kola

Začneme od připojení hnacích motorů ke skříni auta. Motory na levé/boční straně se spojují dohromady a oba se spárují připojením k nějakému napájecímu kabelu, který bude později připojen k desce plošných spojů. Důležitá poznámka při připojování motorových kol na každé straně se musí otáčet ve stejném směru.

Krok 8: Napájení (dobíjecí baterie AA) Možnost 1/2

Napájení (dobíjecí baterie AA) Možnost 1/2
Napájení (dobíjecí baterie AA) Možnost 1/2
Napájení (dobíjecí baterie AA) Možnost 1/2
Napájení (dobíjecí baterie AA) Možnost 1/2
Napájení (dobíjecí baterie AA) Možnost 1/2
Napájení (dobíjecí baterie AA) Možnost 1/2
Napájení (dobíjecí baterie AA) Možnost 1/2
Napájení (dobíjecí baterie AA) Možnost 1/2

Napíšu dvě možnosti napájení První auto je z dobíjecích baterií 10xAA Na posledním obrázku jsem nakreslil propojky červené barvy, které je třeba umístit.

Krok 9: Napájení (baterie Li-Po 7,2 V) Možnost 2/2

Napájení (baterie Li-Po 7,2 V) Možnost 2/2
Napájení (baterie Li-Po 7,2 V) Možnost 2/2
Napájení (baterie Li-Po 7,2 V) Možnost 2/2
Napájení (baterie Li-Po 7,2 V) Možnost 2/2

A druhou možností je 7,2 LI-PO baterie. V tomto případě jsme dostali 3 napětí - 5 V pro Rpi a modul, 6 V pro serva a přímo z baterií 7,2 V pro hnací motory. Musel jsem použít dva sestupné moduly

Možnost 2 s LI-PO je lepší:

  • Baterie mají větší kapacitu - auto bude jezdit déle
  • Větší napětí u hnacích motorů - auto pojede rychleji
  • Menší pravděpodobnost, že poté, co se začnou lokalizovat hnací motory, bychom mohli mít obrovský pokles napětí a restartovat RPI.

Krok 10: Pájení

Pájení
Pájení
Pájení
Pájení
Pájení
Pájení
Pájení
Pájení

Na desku plošných spojů jsem vložil nějaké rozpěrky pro modul PWM. Není co psát, stačí se podívat na obrázky, jak vše pájet dohromady

Krok 11: Fotoaparát

Fotoaparát
Fotoaparát

připojujeme kameru, zde je napsáno, jak vycentrovat servomechanismy před montáží do držáku kamery, ale nejkratší cestou je jemně ručně zkontrolovat maximální polohu otáčení a nastavit serva na středovou polohu. Toto vycentrované servomechanismy jsme vložili do držáku kamery ve střední poloze (kamera míří rovně dopředu jako na fotografii)

Krok 12: Sestavení dílů automobilu dohromady

Skládání autodílů
Skládání autodílů
Skládání autodílů
Skládání autodílů
Skládání autodílů dohromady
Skládání autodílů dohromady

Pro PCB jsem vytvořil malý plexisklový stůl

Krok 13: Konfigurace App.remoteme.org

Konfigurace App.remoteme.org
Konfigurace App.remoteme.org

Použil jsem bezplatný systém app.remoteme.org, který vám pomůže navázat spojení, a již obsahuje skripty, které potřebujeme

Na tomto pokynu ukážu krok za krokem, co je třeba udělat pro řízení auta (zde najdete další podrobnosti)

  • Po registraci zazpívejte na https://app.remoteme.org Budete automaticky přihlášeni
  • vlevo otevřete kartu Token, poté klikněte na „nový token“, zadejte nějaké jméno a klikněte na OK, právě jsme vytvořili nový token (obrázek na obrazovce)
  • v tomto případě je hodnota tokenu: ~ 1_ & p@+BNnZ@A+x8 (vaše bude jiná;))

Krok 14: Konfigurace RasbperryPi

Konfigurace RasbperryPi
Konfigurace RasbperryPi

na konzole tmelu (zde jak nastavit náš RPi zapnout komunikaci kamery I2c)

git clone git: //github.com/remoteme/remoteme.git

cd dálkový ovladač

python3.5 install.py

  • Instalator nám položí několik otázek pro všechny odpovědi [Y] es a potvrdíme [enter]
  • když instalace požádá o token, vložíme (posuneme+vložíme) token zkopírovaný z aplikace a Enter
  • název například Rpi
  • ID zařízení 1 Zadejte
  • po instalaci - spusťte program

./runme.sh

Krok 15: Kontrola připojení

Kontrola připojení
Kontrola připojení

Vraťme se na

Na kartě zařízení uvidíme naše připojené RPi (ikona zeleného odkazu znamená, že RPi je připojeno právě teď)

Krok 16: Přidání skriptu Python

Přidání skriptu Python
Přidání skriptu Python
Přidání skriptu Python
Přidání skriptu Python

Nyní přidáme skript pythonu, který je již v šablonách, takže nemusíme nic programovat.

Na kartě zařízení otevřete nabídku RasbperryPi a zvolte „Přidat externí skript“.

Když se objeví nové okno, zadejte informace jako na obrázku výše

Nezapomeňte vybrat šablonu „car4wd“. Po těchto krocích remoteme.org přidá skript pythonu do našeho RasbperryPi a restartuje ho

Krok 17: Kontrola, zda byl skript Pythonu úspěšně přidán

Kontrola, zda byl skript Pythonu úspěšně přidán
Kontrola, zda byl skript Pythonu úspěšně přidán

Na kartě zařízení by mělo být přidáno nové skriptovací zařízení pythonu a jeho ID zařízení je 2. Do tohoto ID zařízení bude webová stránka odesílat zprávy k ovládání auta

Krok 18: Přidání webové stránky do Control Car

Přidání webové stránky k ovládání auta
Přidání webové stránky k ovládání auta

na kartě zařízení klikněte na „Nový“a poté na „Webová stránka“. Prostě přidáme další zařízení - webovou stránku, pomocí které budeme ovládat naše auto. A protože jsme na webové stránce použili šablonu „car4wdDesktop“, jsou soubory již téměř připraveny k použití

Krok 19: Konfigurace zařízení WebPage pro ovládání auta 1/2

Nakonfigurujte zařízení WebPage pro ovládání auta 1/2
Nakonfigurujte zařízení WebPage pro ovládání auta 1/2

Rozbalte Webovou stránku na kartě zařízení, klikněte na index.html a poté na Otevřít

Krok 20: Konfigurace zařízení WebPage k ovládání vozu 2/2

Nakonfigurujte zařízení WebPage pro ovládání vozu 2/2
Nakonfigurujte zařízení WebPage pro ovládání vozu 2/2

Zobrazí se okno, pak musíme poskytnout deviceId našeho python skriptu v našem případě deviceId je 2. Pojďme změnit místo zobrazené na obrázku

Krok 21: Otevřete Car Control Center

Otevřete Car Control Center
Otevřete Car Control Center
Otevřete Car Control Center
Otevřete Car Control Center

Nyní je čas otevřít naši stránku a zjistit, jak funguje. Na kartě zařízení klikněte na index.html a poté na „Otevřít na nové kartě“Chcete -li získat náhled videa, musíte použít prohlížeč Chrome nebo Firefox, jiný prohlížeč webRTC plně nepodporuje

Krok 22: Konfigurace kamery 1/2

Konfigurace kamery 1/2
Konfigurace kamery 1/2

Když přesuneme myš na oblast videa, kamera by měla změnit polohu a měla by fungovat přesně jako ve hrách FPS. Pravděpodobně se nebude pohybovat správně

Krok 23: Konfigurace kamery 2/2

Konfigurace kamery 2/2
Konfigurace kamery 2/2

Otevřete script.js (karta zařízení rozbalte webovou stránku, poté klikněte na script.js a poté otevřete) a najděte místo, které jsem ukázal na obrazovce

v mém případě je středová poloha 560 a 430 a rozsah pohybů je pro obě osy 200

S těmito čísly musíte experimentovat, abyste získali střed polohy kamery a plynulé pohyby. Pokud jste použili tento tutoriál, zkopírujte vložené hodnoty

Krok 24: Řízení 1/2

Řízení 1/2
Řízení 1/2

Pokud stisknete šipku nahoru na klávesnici, měřidla by měla změnit polohu a auto by mělo řídit. Pokud stisknete šipku „nahoru“a auto se otáčí, musíte na místech na obrazovce přidat/odebrat mínus.

Po této operaci po zásahu šipky „nahoru“by auto mělo jet vpřed a auto se šipkou dolů by mělo jet dozadu.

Krok 25: Řízení 2/2

Řízení 2/2
Řízení 2/2

Nyní se otáčí - pokud auto odbočuje doprava, stiskněte šipku doleva Musíte překlopit kabely (podívejte se na obrázek výše)

Pokud pájíte tyto kabely, můžete je změnit ve skriptu.js stačí změnit pořadí odesílacích motorů, před:

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

po:

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

a teď musíte hrát s mínusy jako jeden krok předtím, aby to fungovalo správně;). Jak jste si pravděpodobně všimli, po zásahu nahoru auto šípu nejede plnou rychlostí, aby se auto pohybovalo rychleji, stačí rychle uvolnit šipku nahoru, když je v maximální poloze a znovu jej stiskněte a podržte

Krok 26: Jak to funguje

Webová stránka odesílá zprávy 9. bajtu do skriptu pythonu ve formátu:

  • 1 byte jeden bajt celočíselná hodnota 1
  • 2 bajty celočíselná poloha kamery X
  • 2 bajty celočíselná poloha Y kamery
  • 1bytový celočíselný levý motorový režim (3 = zpět, 1 = vpřed, 2 = zastavení)
  • 1 bajt celé číslo levé rychlosti motoru
  • 1 bajtový celočíselný pravý motorový režim (3 = zpět, 1 = dopředu, 2 = zastavení)
  • 1 bajt celé číslo pravé rychlosti motoru

odesílání zpráv se provádí v souboru script.js ve funkci "sendNow ()"

na RasbperryPi python.py dostává tuto zprávu ve funkci "onUserMessage"

Můžete si to prohlédnout a trochu si zahrát, abyste věděli, co se děje.

popis funkcí třídy zde

Krok 27: Tablet, mobilní řízení

Tablet, mobilní řízení
Tablet, mobilní řízení

Přidáváme novou webovou stránku přesně jako dříve, ale nyní jsme vybrali šablonu „car4wdMobile“

Dále vše nakonfigurujeme v souboru script.js, jako jsme to udělali pro webovou stránku pro ovládání počítače. Formát zprávy je úplně stejný, takže nemusíme měnit skript python.py.

Krok 28: Otevřete stránku na mobilním telefonu

Otevřete stránku na mobilním telefonu
Otevřete stránku na mobilním telefonu
Otevřete stránku na mobilním telefonu
Otevřete stránku na mobilním telefonu

Namísto přihlášení ke svému účtu z mobilu jednoduše naskenujte libovolnou URL adresy QR.

podrobnosti o QR zde

Pokud vaše mobilní ovládání funguje, když jsou RPi a mobilní zařízení na stejné síti Wi -Fi, ale pokud používáte mobilní internet, pak musíte přidat turn server, jak to udělat, napsal jsem zde

Krok 29: Přidání serveru Turn

Přidání Turn serveru
Přidání Turn serveru
Přidání Turn serveru
Přidání Turn serveru
Přidání Turn serveru
Přidání Turn serveru

Někdy (když jste za NAT nebo některými nastaveními brány firewall) Nemůžete svého robota připojit z jiné sítě, než je připojen váš robot. Není to velký problém a pak musíte přidat turn server.

Testoval jsem server od společnosti XIRSYS (je zdarma pro vývojáře) a ukážu, jak konfigurovat turn server pomocí systému XIRSYS

Registrovat:

global.xirsys.net/dashboard/signup

potom kliknutím na „plus“přidejte aplikaci

vpravo pod „přihlašovací údaje ke statickému otočení“Máte všechna potřebná data. Zkopírujte jej do souboru webrtc_streamer.conf a přejděte na

rozbalte RaspberryPi deivces

klikněte na soubor webrtc_streamer.conf

klikněte otevřít

a přidejte informace

turn_server = turn_username =

turn_credential =

po ukončení úprav Měli byste mít něco jako obrazovku.

poté klikněte na Uložit a restartovat You Rpi, kliknutím na nabídku na zařízení RasbperryPi a zvolte restart

Po restartování programu RPi Na mobilním telefonu můžete vidět náhled videa, i když používáte mobilní internet.

Krok 30: Mobilní řízení

Mobilní řízení
Mobilní řízení

v kruhu 1 umístíme levý palec, 2 vpravo - nemusí být přesně v těchto bodech - webová stránka nastaví nulovou pozici hned po dotyku obrazovky a pohybem palců (levé řízení, poloha pravé kamery) můžete ovládat tvé auto

Krok 31: Shrnutí

Doufám, že se vám tento návod líbil, jak jsem psal dříve v tomto tutoriálu jsou další podrobnosti o tom, jak funguje pod pokličkou.

nějaké odkazy:

remoteme.org - domovská stránka remoteme.org tam najdete dokumentaci a návody

FB fanpage - Facebook fanpage nejnovější informace o remoteme.org

Youtube - nějaká videa z projektu, návody

Na zdraví, Maciek

Doporučuje: