Inleiding (bijgewerkt 26/12/15)
Dit is ooit mijn eerste poging tot het bouwen van een web controlled robot met gebouwd in autonome modus. Het project begon als een Arduino Nano gebaseerd botsing vermijden robot gebouwd voor basisschool kinderen inspireren en de ontwikkeling van een belang in computer- en elektronica.
Aanvankelijk was de robot een simpele botsing vermijden robot waaraan ik dan een Raspberry Pi toegevoegd. Aangesloten op de Pi was een PIR-bewegingsmelder en een Logitech C270 Web Cam, alle gemonteerd op de top. Ik samen een kleine python programma fswebcam gebruiken om foto's met behulp van de Web-Cam, wanneer de PIR-bewegingsmelder gedetecteerd motion, die was de hele tijd dat de robot bewoog. De stilstaande beelden werden later vervangen door een live video-stream, uitgevoerd met behulp van een programma van de python genaamd MJPG-Streamer.
Na veel onderzoek was de Pi aangesloten op de Nano via een i2c seriële (twee draad) interface voor webpagina's die kunnen worden gebruikt voor het verzenden en ontvangen van commando's naar controle van de beweging van de robot en de videostroom bekijkt.
Dit is nog steeds een work in progress en is verre van voltooid, maar ik vond het tijd die ik heb een blog op de bouw gemaakt. Als ik krijg keer op een later tijdstip die zal ik een stap voor stap, in de tussentijd voel je vrij om te vragen mij vragen en als ik kan zal ik helpen.
Onderdelenlijst:
1. de raspberry Pi Model B
2. Logitech C270 webcam
3. Arduino Nano AT-Mega328P (Chinese kopie)
4. PIR Detector (Redundant in de laatste build)
5. EasyAcc 10000mAh USB Battery Pack (voor het aandrijven van de Raspberry Pi)
6. LiPo 7.4V accu
7. WiFi Dongle
8. HC-SR04 ultrasone Sensormodule
9. L298N Dual 'H' Bridge Motor Driver Board
10. 9g Micro Servo
10. perspex Chassis (met 2 x gelijkstroommotoren en Caster wiel)
11. foxes biscuit en G-Shock horloge tin
12. man-man en Male naar vrouwelijke Jumper Kabels
13. solderless Breadboard
De bouwstijl
In eerste instantie, zoals ik hierboven vermeld, de robot begon in het leven als gevolg van de noodzaak een botsing te vermijden om robot te bouwen voor een school robotica club. Het idee was om het identificeren van onderdelen goedkoop genoeg is het bouwen van een robot om betaalbaar te maken voor clubleden die in Y5 en Y6 op de basisschool waartegen ik ben momenteel de opleiding waren. De eerste robot was gebaseerd op een Arduino Nano AT-Mega328P, om de kosten omlaag. Het verwerkt ook een Perspex Chassis Kit die 2 x gelijkstroommotoren en een wiel Castor opgenomen. Botsingdetectie opgericht met behulp van een ultrasone Sensor en een Dual H brug Motor Driver gebruikt om te controleren van de motoren. Macht werd in eerste instantie verstrekt van 1 x PP3 9v batterij (geen onderzoek gedaan inzake batterijen en stroomvereisten op dit punt).
Dit eerste plan was om de ultrasone Sensor te worden gemonteerd op de 9g Micro Servo echter de keuze van de arme en on-onderzocht batterij bleek ontoereikend is om te rijden van alles met de servo gekoppeld.
Met de servo weggelaten de robot functioneerde bewonderenswaardig en bleek te zijn een favoriet en bleef de versie gekocht en gebouwd door de kinderen.
Stroomvereisten
Zoals hierboven vermeld werd de robot aanvankelijk aangedreven door een 9v PP3 batterij. Dit was fijn om alleen de motoren en de ultrasone sensor echter te drijven, om deze versie van de robot te hebben een ultrasone sensor gemonteerd op een roterende servo het zou moeten een betere voeding. Na onderzoek stroomvereisten op Robots laten maken, werd ik geadviseerd te sloot de 9v PP3 (die overigens zijn ontworpen voor zeer laag stroom verbruik items zoals rookdetectors) en kiezen voor AA batterijen, bij voorkeur oplaadbare met rond een 2000mAh rating. Ik kreeg te horen te gebruiken 6 als oplaadbare AA uitgang rond 1.2V in tegenstelling tot 1.5V output door het niet - oplaadbare-type.
Een andere optie die ik te horen kreeg te voeren moest gebruiken Lithium-polymeer (LiPo) accu's, gebruikte onder de Robotica broederschap. Terwijl de batterijen zijn redelijk geprijsd (ongeveer £11 voor een 2 cellen Pack - 7.4V) u zal ook nodig een evenwicht lader die zijn duur. Dit is een hoge aanloopkosten maar is een eenmalige kosten.
Uiteindelijk kocht ik een 7.4V (Turnigy) LiPo oplaadbare batterij:
http://www.hobbyking.com/hobbyking/Store/__9172__T...
En een Imax B6ACBalance lader:
http://www.hobbyking.com/hobbyking/Store/__58285 __...
Het is ook aanbevolen dat je een LiPo opladen tas die brand is bewijs, deze batterijen zijn redelijk veilig, maar als een beschadigd is en betaalt dat kunnen zij verwant aan het licht een vuurwerk in uw huis!
Deze batterij met deze lader die ik had om te solderen op een andere connector op het einde van de batterij.
Hieronder vindt u details van hoe de batterij is aangesloten.
De Raspberry Pi wordt aangedreven met behulp van een USB oplaadbare Power Pack, in mijn geval ik gebruikte een EasyAcc 10000mAh pack die als volledig belast laatste leeftijden (niet een technische eenheid van maatregel, maar je krijgt mijn drift).
Chassis Upgrade
Wijzigen het visuele aspect van de robot te geven het een lichaam ik een tin vossen biscuit bovenop de perspex chassis gemonteerd en al de elektronica binnenkant van van het gehuisvest. De ultrasone Sensor was ingebouwd in een tin die kwam met een nieuwe Casio G-Shock. De tin werd gesneden met behulp van een mix van Tin Snips, schaar en een Stanley mes, zodra knippen voorzichtig als de randen haarscherp zijn, ik hen geschuurd, maar hen ook bedekt met PVC-tape.
Microprocessors
Op het moment van schrijven van deze robot beschikt over twee microprocessoren, een Raspberry Pi en een Arduino Nano. De Arduino Nano drijft de DC-motoren en de ultrasone Sensor en de RPi biedt de WiFi / webbesturingselement, loopt een webcamera en kunnen verder verbeteren / uitbreiden van deze robot heeft.
De Nano en de RPi worden verbonden met een ic2 twee draads verbinding, de Nano is ingesteld als een slave-apparaat en de RPi is de meester. Met behulp van de Nano te rijden van de motoren en de sensoren op deze manier vermijdt Koppelverkoop up de Pis GPIO pinnen die zorgt voor uitbreidbaarheid.
Als een beginner, het opzetten van de i2c nam een grote hoeveelheid onderzoek en hoewel het werkt de motorische controle moet nog fijn afstemmen.
Elektronica
De 2 x gelijkstroommotoren zijn aangesloten op een L298N H brug Motor Driver moederbord, deze platen inschakelen de controle van gelijkstroommotoren om ze te rijden voorwaarts als achteruit. De L298 is tevens voorzien van een ingebouwde 5v spanningsregelaar. De L298 is een goedkope optie maar heeft te kampen met een grote spanningsval dus zorg ervoor dat uw batterij meer dan groot genoeg is.
De batterij is aangesloten op de L298 via een eenvoudige één Pole één gooien (SPST) aan / uit schakelaar. De L298 biedt dan 5v stroom naar het solderless breadboard waarin op zijn beurt macht naar de HC-SR04 ultrasone Sensor, de 9g Micro Servo op die de sensor wordt gemonteerd en de Arduino Nano.
Hoe het werkt
De RPi is opstelling met RAS en zodra ingeschakeld ik inloggen met behulp van SSH (Secure Shell) en start het Python programma dat fungeert als de i2c master programma om te controleren de Arduino. Van binnen het Python programma dat een bash-script wordt uitgevoerd die een ander Python programma om te dienen een webpagina met behulp van WebIOPi een Python programma voor webbesturingselement begint, daarom ook een ander Python programma, mjpg-streamer die schakelaars op het Web Cam en stromen mjpg frames die worden weergegeven op de webpagina's geserveerd door WebIOPi. De web-pagina die ik heb gemaakt bevat een eenvoudig bedieningspaneel met knoppen gemarkeerd vooruit, achteruit, links, rechts en Stop. Ik voegde ook een paar knoppen te draaien van de servo dat het hoofd is gemonteerd op.
Wanneer de robot zelf is ingeschakeld de Nano branden op en begint te luisteren naar opdrachten komen via de i2c-interface van de Pi (wanneer een knop wordt ingedrukt op het bedieningspaneel van web-pagina). Ik heb ook opstelling een 'autonome Mode', die voor een opgegeven periode wacht en als er geen commando's zijn ontvangen de robot begint met auto navigeren aan zijn omgeving.
De Code
Er zijn drie programma's die zijn gekoppeld aan dit project, HTML, Python en schets.
Het HTML-bestand is de webpagina's geserveerd door de Pi met behulp van WebIOpi, de Python-code de i2c master programma wordt gestart, start WebIOPi en roept mjpg-streamer voor het streamen van de video-feed. De code van de schets is geüpload naar de Arduino deze instellen als een slaaf te wachten en actie opdrachten ontvangen van de Pi, alsmede de autonome modus bieden.
YouTube
Hier is een link naar een YouTube filmpje van de robot in actie (alleen op de autonome modus), hij verpletterde een paar tijd maar ik bewerkten die :-)
Actuele thema 's
Er zijn twee kwesties met de huidige versie op het tijdstip van deze update:
1. verkeer (vooral links en rechts). Controle over de webinterface moet verdere werkzaamheden, te klikken op een knop op het bedieningspaneel van web-pagina (een .html muis omlaag gebeurtenis) zorgt ervoor dat de robot te bewegen, er is al te veel vertraging tussen het verzenden van de opdracht stop (de muis omhoog gebeurtenis wanneer de gebruiker de muisknop loslaat) en de robot stoppen de huidige opdracht. Hoewel dit niet met name merkbaar wanneer vooruit en achteruit, als elke keer prima waardoor ongeveer 270 graden draaien van de robot draait controle niet onmogelijk. Meer werk vereist?
2. autonome modus. Autonome modus begint na ongeveer een minuut van inactiviteit echter wanneer de gebruiker probeert om de controle weer eerder dat autonome modus ophouden, het draagt op wat resulteert in een gevecht tussen de gebruiker en de robots AI voor controle! Waarschijnlijk een simpele fix echter opnieuw meer werk nodig.
Ik heb opstelling een GitHub account naar host de code, maar ik nooit Git Hub gebruikt heb voordat dus ik moeite om het allemaal uit werken zodra ik doen ik van de link naar de verschillende code die wordt gebruikt in dit project posten zal.
Ik hoop dat je deze blog / project en als u hulp nodig heeft met het gelieve te voelen vrij om een reactie achterlaten, of me vinden op LMR.