Inhoudsopgave:
- Stap 1: Enige informatie over App.remoteme.org
- Stap 2: Wat is nodig:
- Stap 3: Aansluitingen
- Stap 4: PCB
- Stap 5: PCB-uitgangen
- Stap 6: Hoe het gaat werken
- Stap 7: Automontage - Wielen
- Stap 8: Voeding (AA-batterijen opladen) Optie 1/2 "
- Stap 9: Voeding (Li-Po 7.2V-batterijen) Optie 2/2
- Stap 10: Solderen
- Stap 11: Camera
- Stap 12: auto-onderdelen in elkaar zetten
- Stap 13: App.remoteme.org-configuratie
- Stap 14: RasbberryPi-configuratie
- Stap 15: Verbindingen controleren
- Stap 16: Python-script toevoegen
- Stap 17: Controleren of Python-script met succes is toegevoegd
- Stap 18: Webpagina toevoegen aan Control Car
- Stap 19: Webpagina-apparaat configureren om auto te besturen 1/2 "
- Stap 20: Webpagina-apparaat configureren om auto te besturen 2/2
- Stap 21: Open Car Control Center
- Stap 22: Cameraconfiguratie 1/2
- Stap 23: Cameraconfiguratie 2/2
- Stap 24: 1/2. rijden
- Stap 25: rijden 2/2
- Stap 26: Hoe werkt het?
- Stap 27: Tablet, mobiel sturen
- Stap 28: Pagina openen op mobiele telefoon
- Stap 29: Turn-server toevoegen
- Stap 30: Mobiele besturing
- Stap 31: Samenvatting
Video: RasbberryPi-auto met FPV-camera. Bediening via webbrowser: 31 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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:
- 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
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
U kunt hier PCB-adelaarbestanden downloaden. Paden zijn dik, dus het is gemakkelijk te maken met de thermische overdrachtsmethode
Stap 5: PCB-uitgangen
- PWM-ingang voor aandrijfmotoren Moet worden aangesloten op PWM-module 15'th en 16th pins (controleer groene rechthoek op afbeelding PWM-module)
- Opgenomen vermogen voor aandrijfmotoren (controleer met welke maximale spanning uw motoren kunnen werken)
- Voeding voor RasbberryPi en PWM-module - moet precies zijn
- Aandrijfmotoruitgangen (er zijn twee uitgangen omdat we aandrijfmotoren koppelen)
- Servo Mechanismen vermogen - ook U moet controleren welke spanning goed voor hen is
- 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
- 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
- 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
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"
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
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
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
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
Voor PCB heb ik een kleine plexiglas tafel gemaakt
Stap 13: 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
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
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
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
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
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"
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
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
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
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
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
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
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
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
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
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
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:
Shadow Light Box - Bediening via IR-afstandsbediening met Arduino - Ajarnpa
Shadow Light Box - Bediening via IR-afstandsbediening met Arduino: deze instructie zal u helpen om een schaduwlichtbak te maken voor de volgende kerst. Je kunt het voor jezelf maken om je kamer te versieren, of het voor je vriend als cadeau maken. Deze schaduwdoos kan verschillende soorten kleuren maken door kleuren te mengen met rode, blauwe, groene kleuren
ESP8266 RGB LED STRIP WIFI-bediening - NODEMCU Als een IR-afstandsbediening voor ledstrip, bestuurd via wifi - RGB LED STRIP Smartphone-bediening: 4 stappen
ESP8266 RGB LED STRIP WIFI-bediening | NODEMCU Als een IR-afstandsbediening voor ledstrip, bestuurd via wifi | RGB LED STRIP Smartphone-bediening: Hallo allemaal, in deze tutorial zullen we leren hoe we nodemcu of esp8266 kunnen gebruiken als een IR-afstandsbediening om een RGB LED-strip te bedienen en Nodemcu zal worden bestuurd door smartphone via wifi. Dus in principe kun je de RGB LED STRIP bedienen met je smartphone
Neopixel Wifi-bediening via NodeMCU - Ajarnpa
Neopixel Wifi-bediening via NodeMCU: Voorbij zijn de tijden dat je RGB-LED's wilde bedienen, je moest omgaan met een overvloed aan draden, het steeds weer ontwarren ervan kan irritant zijn. Met Neopixel heb je de mogelijkheid om de led van stroom te voorzien met twee draden en slechts één draad, namelijk dat
ESP8266-01 LED-bediening: 7 stappen (met afbeeldingen)
ESP8266-01 LED-bediening: ESP8266 is een wifi-SOC (systeem op een chip) geproduceerd door Espressif Systems. Het is een sterk geïntegreerde chip die is ontworpen om volledige internetconnectiviteit te bieden in een klein pakket. En het kan ook worden bestuurd door onze smartphone met behulp van een app. In deze tot
Bediening via servomotortoetsenbord - Ajarnpa
Bediening servomotortoetsenbord: Eerst moet de servomotor worden ingesteld. Middelste draad gaat naar de 5V poortDe linker gaat naar de GND poort Sluit de laatste (de stuurdraad) aan op poort 9