Inhoudsopgave:

Raspberry SPy Robot - Ajarnpa
Raspberry SPy Robot - Ajarnpa

Video: Raspberry SPy Robot - Ajarnpa

Video: Raspberry SPy Robot - Ajarnpa
Video: Raspberry Spy Robot 2024, November
Anonim
Image
Image
Raspberry SPy-robot
Raspberry SPy-robot

Met dit project kun je een robot besturen via een webpagina en een livestream bekijken. Het kan worden gebruikt om huisdieren te bespioneren, ervoor te zorgen dat er niets in uw oven brandt en zelfs om vogels te spotten! DFRobot leverde de Raspberry Pi 3 en de Raspberry Pi cameramodule.

Stap 1: De robotelektronica

De robotelektronica
De robotelektronica

Ik begon met het monteren van de 2WD MiniQ-chassiskit van DFRobot. Ik schoof de wielen op de motorassen, plaatste ze in beugels en bevestigde ze aan het chassis. Als laatste heb ik de metalen steunen toegevoegd. Nu was het tijd om het moederbord te bouwen. De L293d-motordriver werd op zijn plaats gesoldeerd, samen met draden die naar de GPIO-pinnen van de Raspberry Pi liepen. Vervolgens heb ik een connector voor de batterij gesoldeerd, want die zal de hoofdstroom leveren. Nadat de stroombron was toegevoegd, installeerde ik een 5V-regelaar.

Stap 2: De Pi. instellen

De Pi. instellen
De Pi. instellen

DFRobot nam contact met me op en stuurde hun Raspberry Pi 3 en Raspberry Pi Camera Module. Dus nadat ik de dozen had geopend, ging ik meteen aan de slag door de SD-kaart in te stellen. Eerst ging ik naar de Raspberry Pi Downloads-pagina en downloadde de meest recente versie van Raspbian. Vervolgens heb ik het bestand uitgepakt en in een handige map geplaatst. Je kunt een.img-bestand niet zomaar naar een SD-kaart kopiëren/plakken, je moet het op de kaart "branden". U kunt een brandprogramma zoals Etcher.io downloaden om de OS-image eenvoudig over te zetten. Nadat het.img-bestand op mijn SD-kaart stond, stopte ik het in de Raspberry Pi en gaf het stroom. Na ongeveer 50 seconden heb ik het snoer losgekoppeld en de SD-kaart verwijderd. Vervolgens plaatste ik de SD-kaart terug in mijn pc en ging naar de "boot" -map. Ik opende Kladblok en bewaarde het als een leeg bestand met de naam "ssh" zonder extensie. Er was ook een bestand dat ik heb toegevoegd met de naam "wpa_supplicant.conf" en deze tekst erin heb gestopt:

netwerk={ ssid=psk= }

Daarna heb ik de kaart opgeslagen en uitgeworpen en terug in de Raspberry Pi 3 gestopt. Dit zou nu het gebruik van SSH en verbinding met wifi mogelijk moeten maken.

Stap 3: De camera gereed maken

De camera gereed maken
De camera gereed maken

Standaard is de camera uitgeschakeld op de Pi, dus je moet het terminaltype sudo raspi-config openen om het menu te openen. Ga naar "interface-opties" en schakel vervolgens de camera in. Selecteer nu gewoon "Voltooien" en steek de lintkabel van de cameramodule in het juiste gebied van de Pi.

Stap 4: Software installeren

Er zijn verschillende software die video kan streamen, zoals vlc en motion, maar ik besloot de mjpeg-streamer te gebruiken vanwege de lage latentie en eenvoudige installatie. Voer volgens de instructies op de site een git-kloon https://github.com/jacksonliam/mjpg-streamer.git uit in een map en typ vervolgens sudo apt-get install cmake libjpeg8-dev om de benodigde bibliotheken te installeren. Wijzig uw map in de map die u hebt gedownload en typ vervolgens make gevolgd door sudo make install om de software te compileren. Voer ten slotte export LD_LIBRARY_PATH= in. en om het uit te voeren typt u./mjpg_streamer -o "output_http.so -w./www" -i "input_raspicam.so" U kunt toegang krijgen tot de stream door naar https://:8080/stream.html te gaan om de stream te bekijken.

Stap 5: Controller

Controller
Controller
Controller
Controller

Toen kwam het gedeelte over het besturen van een Raspberry Pi via wifi, omdat Bluetooth te weinig bereik heeft. Ik besloot een Flask-server te gebruiken die op de Raspberry PI draait en een ESP8266 ESP12E-module om er gegevens naar te verzenden. De ESP8266 heeft slechts één analoge ingang, wat betekent dat ik de joystick niet rechtstreeks kon gebruiken, omdat er twee analoge ingangen nodig zijn. De beste optie was de ADS1115, een I2C-apparaat dat analoge signalen leest met een resolutie van 16 bits. Ik heb eenvoudig SDA op 4 en SCL op 5 aangesloten, samen met VCC en GND. De X-as van de joystick wordt aangesloten op A0 op de ADS1115 en de Y-as wordt aangesloten op A1. MAAR, ik heb per ongeluk de ADS1115 doorgebrand, dus ik moest mijn toevlucht nemen tot het op één na beste: knoppen! Dus nu is mijn setup een ESP8266 Sparkfun Thing Dev Board met 3 knoppen: vooruit, rechts en links. Wanneer er nu op wordt gedrukt, verzendt het gegevens om de wielen in die richting te draaien.

Stap 6: De code voor de robot

De code voor de robot
De code voor de robot

Ik heb een eerder project gemaakt dat de GPIO PWM-bibliotheek van de Pi gebruikte om motoren via json te besturen, dus ik heb de code opnieuw gebruikt om gegevens via een Flask-app te accepteren. Flask is een Python-bibliotheek die je Pi in wezen verandert in een webserver die gegevens kan verzenden en ontvangen. Door gebruik te maken van PWM kunnen de motoren nauwkeuriger worden aangestuurd in vergelijking met tankaandrijving. Dit betekent ook dat de robot met variabele snelheden kan gaan in plaats van met een vaste snelheid. Mijn flask-app is geconfigureerd om de PWM van de motoren te wijzigen zodra deze gegevens ontvangt van een GET-verzoek via http van de ESP12e. Het gebruikt ook de subproces. Popen-bibliotheek om het webstreaming-script op de achtergrond uit te voeren. Ik heb code aan de projectpagina toegevoegd, dus het enige dat nodig is, is een download.

Stap 7: Controllercode

De code was vrij eenvoudig, meet gewoon de 3 pinnen, voer ze door enkele if-statements om de wielrichting te bepalen en stuur die waarden uiteindelijk naar de Raspberry Pi. De toevoeging van de ESP8266-kaart voor de Arduino IDE wordt geleverd met de HTTPClient-bibliotheek, die headers verwerkt en gegevens verzendt. De Flask-server moet gegevens ontvangen via een POST-aanroep, dus de code start een verbinding met de Raspberry Pi-webserver, voegt vervolgens een header toe aan de gegevens om aan te geven dat het JSON-gecodeerd is, en ten slotte verzendt het de gegevens in de vorm van een JSON-object. Ik heb een vertraging van 40 ms toegevoegd om te voorkomen dat de Raspberry Pi overbelast raakt met gegevens.

Stap 8: De Raspberry SPy uitvoeren

De Raspberry SPy uitvoeren
De Raspberry SPy uitvoeren
De Raspberry SPy uitvoeren
De Raspberry SPy uitvoeren

Het enige dat nodig is, is sudo python.py typen! Je zou de camera moeten zien oplichten en door naar het webadres van de pi te gaan met de poort 8080 zou de stream zichtbaar moeten zijn. Nu kun je de controller overal in huis gebruiken en heb je ook een live feed.

Aanbevolen: