Inhoudsopgave:

RasbberryPi-auto met FPV-camera. Bediening via webbrowser: 31 stappen (met afbeeldingen)
RasbberryPi-auto met FPV-camera. Bediening via webbrowser: 31 stappen (met afbeeldingen)

Video: RasbberryPi-auto met FPV-camera. Bediening via webbrowser: 31 stappen (met afbeeldingen)

Video: RasbberryPi-auto met FPV-camera. Bediening via webbrowser: 31 stappen (met afbeeldingen)
Video: Raspberry Pi Party Autonomous drone demo + fire 2024, November
Anonim
Image
Image

We zullen een 4WD-auto bouwen - de besturing zal vergelijkbaar zijn als in een tank - om de ene kant van de wielen te draaien, zal deze met een andere snelheid draaien dan de andere. Bij de auto wordt een camera op een speciale houder geplaatst waar we de camerapositie kunnen veranderen. De robot wordt bestuurd door een webbrowser (chrome of firefox op desktop, of firefox op mobiele telefoon), in de browser, we zullen cameravideo krijgen (met slechts 200 ms latentie), en vanuit de browser kunnen we de autobewegingen en camerapositie. Om de communicatie gemakkelijker te maken heb ik het app.remoteme.org systeem gebruikt, er is ook out of the box besturing van dit soort auto's, dus je hoeft niet je eigen code te schrijven, maar natuurlijk kun je scripts aanpassen toevoegen nieuwe mogelijkheden enz.

Controleer alle aansluitingen voordat u de stroom op uw printplaat aansluit

Stap 1: Enige informatie over App.remoteme.org

Het systeem bestaat uit drie delen:

  • webapplicatie - wanneer u uw besturingswebpagina's host en alle communicatie koppelt
  • rasbperryPi-programma - programma dat video verzendt, uw python-scripts beheert
  • bibliotheken waar u klasse, functiedefinities vindt

Remoteme.org is systeem snel U koppelt al uw apparaten aan elkaar, U kunt daar Uw webpagina's hosten, uw aangesloten apparaten bekijken. Het Remoteme.org-systeem is gemaakt om u te helpen bij het maken van uw projecten, zonder dat u zich zorgen hoeft te maken over protocolcommunicatie, het belangrijkste idee is om binaire berichten tussen verschillende apparaten te verzenden, zoals webpagina's, RasbeprryPI, arduino en scripts.

Aan de andere kant geeft Remoteme.org u volledige controle over uw bestanden, u kunt het gemakkelijk wijzigen door uw eigen functionaliteit te schrijven

In deze tutorial laat ik je zien hoe je bijna een geweldig project kunt maken zonder code te schrijven.

Aan het einde van deze tutorial heb ik nuttige links geplaatst die je zullen helpen het remoteme.org-systeem te begrijpen.

Stap 2: Wat is nodig:

Wat nodig is
Wat nodig is
Wat nodig is
Wat nodig is
  • Raspberry PI Zero W
  • Toegewijde camera
  • Adafruit 16-kanaals 12-bit PWM/Servo-stuurprogramma - I2C-interface - PCA9685 of zijn kloon
  • Twee servomechanismen die compatibel zijn met de camerahouder
  • Camerahouder
  • Batterijen - In tutorial twee aansluitmogelijkheden
  • H-brug TB6612FNG, om de speer te bedienen
  • PCB-adelaarbestanden Het is gemakkelijk om het een thermische overdrachtsmethode te maken DC-DC
  • Step Down Converter Module DC
  • Robotbehuizing:

Stap 3: Aansluitingen

Verbindingen
Verbindingen

Raspberry pi-besturingsservomechanisme via PWM-module en motorsnelheid door H-brug die is verbonden met RasbperryPi-pinnen, PWM-invoer naar H-brug wordt gegenereerd door dezelfde module die ik heb gebruikt voor servo's (welke onderdelen ik hierboven vermeld, er zijn geen logische converters nodig)

Stap 4: PCB

PCB
PCB
PCB
PCB

U kunt hier PCB-adelaarbestanden downloaden. Paden zijn dik, dus het is gemakkelijk te maken met de thermische overdrachtsmethode

Stap 5: PCB-uitgangen

PCB-uitgangen
PCB-uitgangen
PCB-uitgangen
PCB-uitgangen
  1. PWM-ingang voor aandrijfmotoren Moet worden aangesloten op PWM-module 15'th en 16th pins (controleer groene rechthoek op afbeelding PWM-module)
  2. Opgenomen vermogen voor aandrijfmotoren (controleer met welke maximale spanning uw motoren kunnen werken)
  3. Voeding voor RasbberryPi en PWM-module - moet precies zijn
  4. Aandrijfmotoruitgangen (er zijn twee uitgangen omdat we aandrijfmotoren koppelen)
  5. Servo Mechanismen vermogen - ook U moet controleren welke spanning goed voor hen is
  6. Jumper zijn huidige vermogen vanaf de 5e ingang zal ook de motoren aandrijven, dus het is niet nodig om iets aan te sluiten op ingang 2
  7. Jumper indien aanwezig RasbperryPi wordt gevoed door de 3e ingang - voordat u de jumper hier plaatst, controleert u of de verbindingen in orde zijn - U wilt uw RPi niet verbranden
  8. Laten we hier kabels solderen omdat we geen logische converters nodig hebben

Stap 6: Hoe het gaat werken

Bij RasbperryPi is er een python-script dat twee bibliotheken gebruikt

  • importeer RPi. GPIO als GPIO - voor pinnen 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM-notatie) die zijn aangesloten op H-brug
  • importeer Adafruit_PCA9685 voor PWM-module

Rpi-pinnen zijn als volgt aangesloten 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) en besturingsmodus van H-brug (vooruit, achteruit, stop, korte pauze). H-brug heeft ook twee PWM-signalen nodig, zodat we de snelheid of de motorrotatie kunnen regelen. Omdat we bij het project al een PWM-controller hebben (gebruikt voor servo), zullen we deze ook gebruiken om PWM voor H-brug te genereren.

PWM-module gebruikt I2C-communicatieprotocol. Ik heb out-of-the-box Adafruit_PCA9685 gebruikt. bibliotheek

Stap 7: Automontage - Wielen

Automontage - Wielen
Automontage - Wielen
Automontage - Wielen
Automontage - Wielen

We beginnen met het aansluiten van aandrijfmotoren op de autobehuizing. Motoren aan de linker-/zijkant worden met elkaar verbonden, en beide paren, worden aangesloten op een voedingskabel die later op de PCB wordt aangesloten. Belangrijke opmerking bij het aansluiten van motoren moeten de wielen aan elke kant in dezelfde richting draaien.

Stap 8: Voeding (AA-batterijen opladen) Optie 1/2"

Voeding (AA oplaadbare batterijen) Optie 1/2
Voeding (AA oplaadbare batterijen) Optie 1/2
Voeding (AA oplaadbare batterijen) Optie 1/2
Voeding (AA oplaadbare batterijen) Optie 1/2
Voeding (AA oplaadbare batterijen) Optie 1/2
Voeding (AA oplaadbare batterijen) Optie 1/2
Voeding (AA oplaadbare batterijen) Optie 1/2
Voeding (AA oplaadbare batterijen) Optie 1/2

Ik zal twee mogelijkheden van macht schrijven Auto eerste is van 10xAA batterijen opladen. Als laatste afbeelding heb ik getekend door rode kleuren jumpers die moeten worden gezet.

Stap 9: Voeding (Li-Po 7.2V-batterijen) Optie 2/2

Voeding (Li-Po 7,2V-batterijen) Optie 2/2
Voeding (Li-Po 7,2V-batterijen) Optie 2/2
Voeding (Li-Po 7,2V-batterijen) Optie 2/2
Voeding (Li-Po 7,2V-batterijen) Optie 2/2

En de tweede optie is een 7.2 LI-PO-batterij. In dit geval kregen we 3 spanningen - 5v voor Rpi en module, 6V voor servo's en rechtstreeks van batterijen 7,2 volt voor aandrijfmotoren. Ik moest twee step-down-modules gebruiken

Optie 2 met LI-PO is beter:

  • Batterijen hebben een grotere capaciteit - de auto rijdt langer
  • Hogere spanning voor aandrijfmotoren - de auto rijdt sneller
  • Minder kans dat nadat de aandrijfmotoren beginnen te lokaliseren, we een enorme spanningsval kunnen hebben en RPI opnieuw wordt opgestart.

Stap 10: Solderen

Solderen
Solderen
Solderen
Solderen
Solderen
Solderen
Solderen
Solderen

Ik heb op PCB wat afstandhouders voor PWM-module geplaatst. Er valt niets te schrijven, bekijk gewoon afbeeldingen hoe je alles aan elkaar soldeert

Stap 11: Camera

Camera
Camera

we verbinden de camera, hier staat beschreven hoe de servomechanismen moeten worden gecentreerd voordat ze in de camerahouder worden gemonteerd, maar de kortste manier is om voorzichtig handmatig de maximale rotatiepositie te controleren en de servo's in het midden te plaatsen. Deze gecentreerde servomechanismen hebben we in de camerahouder in het midden geplaatst (camera wijst recht vooruit zoals op de foto)

Stap 12: auto-onderdelen in elkaar zetten

Onderdelen van auto's samenstellen
Onderdelen van auto's samenstellen
Onderdelen van auto's samenstellen
Onderdelen van auto's samenstellen
Onderdelen van auto's samenstellen
Onderdelen van auto's samenstellen

Voor PCB heb ik een kleine plexiglas tafel gemaakt

Stap 13: App.remoteme.org-configuratie

App.remoteme.org-configuratie
App.remoteme.org-configuratie

Ik heb het gratis app.remoteme.org-systeem gebruikt, het helpt je om verbindingen te maken, en het heeft al scripts die we nodig hebben

Op deze instructable zal ik stap voor stap laten zien wat er moet gebeuren om autorijden te maken (hier vindt u meer details)

  • Meld u aan op https://app.remoteme.org na aanmelding U wordt automatisch aangemeld
  • open het Token-tabblad aan de linkerkant, klik vervolgens op "nieuwe token" geef een naam op en klik op OK, we hebben zojuist een nieuwe token gemaakt (afbeelding op het scherm)
  • in dit voorbeeld is de tokenwaarde: ~1_&p@+BNnZ@A+x8 (de jouwe zal anders zijn;))

Stap 14: RasbberryPi-configuratie

RasbberryPi-configuratie
RasbberryPi-configuratie

bij putty console (hier hoe u onze RPi instelt, zet camera I2c-communicatie aan)

git kloon git://github.com/remoteme/remoteme.git

cd afstandsbediening

python3.5 install.py

  • Instalator zal ons enkele vragen stellen voor alles wat we antwoorden [Ja] en bevestigen door [enter]
  • wanneer de installatie om token vraagt, plakken we (shift+insert) token gekopieerd uit de applicatie en Enter
  • de naam bijvoorbeeld Rpi
  • apparaat-ID 1 Voer in
  • na installatie – programma uitvoeren

./runme.sh

Stap 15: Verbindingen controleren

Verbindingen controleren
Verbindingen controleren

Laten we teruggaan naar

Op het tabblad apparaten zien we onze verbonden RPi (groen linkpictogram betekent dat RPi nu is verbonden)

Stap 16: Python-script toevoegen

Python-script toevoegen
Python-script toevoegen
Python-script toevoegen
Python-script toevoegen

Nu zullen we python-script toevoegen, het staat al bij de sjablonen, dus we hoeven niets te programmeren.

Open op het tabblad apparaten het RasbperryPi-menu en kies "Extern script toevoegen".

Wanneer een nieuw venster verschijnt, geef dan informatie op zoals in de afbeelding hierboven

Vergeet niet om sjabloon "car4wd" te kiezen. Na deze stappen zal remoteme.org het python-script toevoegen aan onze RasbperryPi en het opnieuw opstarten

Stap 17: Controleren of Python-script met succes is toegevoegd

Controleren of Python-script met succes is toegevoegd
Controleren of Python-script met succes is toegevoegd

Op het tabblad apparaten moet een nieuw python-scriptapparaat worden toegevoegd en de apparaat-ID is 2. In deze apparaat-ID-webpagina stuurt u berichten om de auto te besturen

Stap 18: Webpagina toevoegen aan Control Car

Webpagina toevoegen aan Control Car
Webpagina toevoegen aan Control Car

klik op het tabblad apparaten op "Nieuw" en vervolgens op "Webpagina". We voegen gewoon een ander apparaat toe - webpagina die we zullen gebruiken om onze auto te besturen. En omdat we het sjabloon "car4wdDesktop" op de webpagina hebben gebruikt, zijn de bestanden al bijna klaar voor gebruik

Stap 19: Webpagina-apparaat configureren om auto te besturen 1/2"

Configureer webpagina-apparaat om auto te besturen 1/2 "
Configureer webpagina-apparaat om auto te besturen 1/2 "

Vouw webpagina uit op het apparaattabblad en klik op index.html en vervolgens op Openen

Stap 20: Webpagina-apparaat configureren om auto te besturen 2/2

Configureer webpagina-apparaat om auto 2/2 te besturen
Configureer webpagina-apparaat om auto 2/2 te besturen

Het venster verschijnt en dan moeten we deviceId van ons python-script opgeven in ons geval deviceId is 2. Laten we de plaats wijzigen die in de afbeelding wordt getoond

Stap 21: Open Car Control Center

Autocontrolecentrum openen
Autocontrolecentrum openen
Autocontrolecentrum openen
Autocontrolecentrum openen

Nu is het tijd om onze pagina te openen en te zien hoe het werkt. Klik op het apparaattabblad op index.html en vervolgens op "Openen in nieuw tabblad" Om een videovoorbeeld te krijgen, moet u de Chrome- of Firefox-browser gebruiken. Andere browser ondersteunt webRTC niet volledig

Stap 22: Cameraconfiguratie 1/2

Cameraconfiguratie 1/2
Cameraconfiguratie 1/2

Wanneer we de muis naar het videogebied bewegen, moet de camera van positie veranderen en het zou precies moeten werken zoals in FPS-games. Het zal waarschijnlijk niet correct bewegen

Stap 23: Cameraconfiguratie 2/2

Cameraconfiguratie 2/2
Cameraconfiguratie 2/2

Open script.js (tabblad apparaten vouw webpagina uit en klik vervolgens op script.js en open vervolgens) en zoek de plaats die ik op het scherm liet zien

in mijn geval is de middenpositie 560 en 430 en het bewegingsbereik is voor beide assen 200

Je moet met deze nummers experimenteren, dus je krijgt het midden van de camerapositie en vloeiende bewegingen. Als je deze tutorial hebt gebruikt, kopieer je gewoon de gegeven waarden

Stap 24: 1/2. rijden

1/2
1/2

Als u op het toetsenbord op de pijl omhoog drukt, moeten de meters van positie veranderen en moet de auto rijden. Als u op de pijl omhoog drukt en de auto draait, dan moet u op plaatsen op het scherm min toevoegen/verwijderen.

Na deze handeling moet de auto met de pijl omhoog rijden vooruit rijden en de auto met de pijl omlaag achteruit rijden.

Stap 25: rijden 2/2

Rijden 2/2
Rijden 2/2

Draait nu - druk op de pijl naar links als de auto naar rechts draait. Je moet de kabels omdraaien (zie de afbeelding hierboven)

Als u deze kabels soldeert, kunt u deze wijzigen op script.js gewoon de volgorde van het verzenden van de motorsnelheid wijzigen, voordat:

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

na:

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

en nu moet je met minnen spelen zoals een stap eerder om het correct te laten werken;). Zoals je waarschijnlijk hebt gemerkt nadat de pijl omhoog is geschoten, rijdt de auto niet op volle snelheid om de auto sneller te laten rijden, laat de pijl snel los wanneer deze zich in de maximale positie bevindt en houd het nogmaals ingedrukt

Stap 26: Hoe werkt het?

Webpagina verzendt 9e-byte berichtberichten naar pythonscript in de indeling:

  • 1 byte een byte integer waarde 1
  • 2 bytes integer X camerapositie
  • 2 bytes integer Y camerapositie
  • 1 byte integer linker motormodus (3= achteruit, 1= vooruit, 2=stop)
  • 1 byte integer linker motorsnelheid
  • 1 byte integer rechts motormodus (3= achteruit, 1= vooruit, 2=stop)
  • 1 byte integer rechter motorsnelheid

het verzenden van een bericht wordt gemaakt in het bestand script.js met de functie "sendNow()"

op RasbperryPi python.py krijgt dit bericht in de functie "onUserMessage"

Je kunt het bekijken en een beetje spelen, zodat je weet wat er aan de hand is.

class functies beschrijving hier:

Stap 27: Tablet, mobiel sturen

Tablet, mobiele besturing
Tablet, mobiele besturing

We voegen een nieuwe webpagina precies toe zoals we de vorige keer deden, maar nu kiezen we voor sjabloon "car4wdMobile"

Vervolgens configureren we alles in script.js zoals we deden voor de webpagina voor desktopbesturing. Het berichtformaat is precies hetzelfde, dus we hoeven het python.py-script niet te wijzigen.

Stap 28: Pagina openen op mobiele telefoon

Pagina openen op mobiele telefoon
Pagina openen op mobiele telefoon
Pagina openen op mobiele telefoon
Pagina openen op mobiele telefoon

In plaats van in te loggen op uw account vanaf uw mobiele telefoon, scant u gewoon de QR-url.

details van QR hier

Als uw mobiele bediening werkt wanneer RPi en mobiel op dezelfde wifi zitten, maar niet als u mobiel internet gebruikt, dan moet u een turn-server toevoegen, hoe u dat doet, heb ik hier geschreven

Stap 29: Turn-server toevoegen

Turn-server toevoegen
Turn-server toevoegen
Turn-server toevoegen
Turn-server toevoegen
Turn-server toevoegen
Turn-server toevoegen

Soms (wanneer u zich achter NAT of sommige firewall-instellingen bevindt) kunt u uw robot niet verbinden vanaf een ander netwerk dan is uw robot verbonden. Het is geen groot probleem en dan moet je de turn-server toevoegen.

Ik heb de server van het XIRSYS-bedrijf getest (het is gratis voor gebruik door ontwikkelaars) en ik zal laten zien hoe de turn-server kan worden geconfigureerd met behulp van het XIRSYS-systeem

register:

global.xirsys.net/dashboard/signup

klik vervolgens op "plus" om toepassing toe te voegen

rechts onder "static turn creditentials" Je hebt alle gegevens die je nodig hebt. Kopieer het naar het bestand webrtc_streamer.conf om dat te doen, ga naar

uitbreiden RaspberryPi-apparaten

klik op bestand webrtc_streamer.conf

klik open

en informatie toevoegen

turn_server=turn_gebruikersnaam=

turn_credential=

nadat je klaar bent met bewerken. Je zou zoiets op het scherm moeten hebben.

klik vervolgens op Opslaan en herstart You Rpi, door op het menu op het RasbberryPi-apparaat te klikken en opnieuw op te starten

Nadat het RPi-programma opnieuw is gestart, kunt u een videovoorbeeld op uw mobiele telefoon zien, zelfs als u mobiel internet gebruikt.

Stap 30: Mobiele besturing

Mobiele besturing
Mobiele besturing

bij cirkel 1 plaatsen we linkerduim, bij 2 rechts - hoeft niet precies op deze punten te zijn - webpagina zal de nulpositie instellen net nadat u het scherm aanraakt, en door uw duimen te bewegen (links rijden, rechter camerapositie) U kunt de jouw auto

Stap 31: Samenvatting

Ik hoop dat je deze tutorial leuk vond, zoals ik eerder schreef in deze tutorial is meer informatie over hoe het werkt onder de motorkap.

enkele linken:

remoteme.org - homepage van remoteme.org daar vindt u documentatie en tutorials

FB-fanpagina - Facebook-fanpagina nieuwste informatie over remoteme.org

Youtube - enkele video's van het project, tutorials

Proost, Maciek

Aanbevolen: