Zelfbouw robot Robbie1

Deze pagina is de online documentatie van een robot zelfbouw project (Robbie1) dat al in 2013 gestart is met het eerste prototype. Ik ben jarenlang embedded ontwikkelaar geweest en hardware ontwikkelaar en in de jaren 90 wilde ik al een robot ontwikkelen, samen met mijn zoon. Echter was de techniek nog niet zo ver en waren onderdelen groot en duur. Tegenwoordig zijn alle onderdelen die nodig zijn om een zeer geavanceerde robot te kunnen bouwen beschikbaar en zeer betaalbaar. Er is een zeer ruim aanbod aan onderdelen zoals: servo's, driver boards, stappenmotoren, CPU kits, ontwikkeltooling en een keur aan sensoren. Bij het bouwen van Robbie1 ben ik uitgegaan van een Raspberry pi in combinatie met een Arduino Mega board. Ook documenteer ik mijn ontwerpfouten zodat een ander ook hiervan kan leren, Vriendelijk groet, Hein Pragt.

Inhoudsopgave:

Globaal ontwerp
Espeak speech engine
Onderdelen
Ontwerpfouten

Globaal ontwerp Robbie1

Robbie1 global design

Het hart bestaat uit een Raspberry Pi en de sensoren en motoren worden aangestuurd door een Arduino Mega slave board. Voor het aansturen van de servo's gebruik ik de AdaFruit 16-Channel 12-bit PWM/Servo Driver met I2C interface, deze kan door middel van een paar draden met I2C vanuit de Raspberry Pi aangestuurd worden en kan daarna tot 16 servo's aansturen. De voeding van de kaart en van de servo's gescheiden waardoor de servo's op 5 Volt kunnen draaien en de elektronica op 3.3 Volt. Als servo voor de nek gebruik ik een standaard verkrijgbaar pan tilt die eigenlijk voor een camera bedoeld is met twee SG-90 TowerPro micro servo 9 Gram (4,8 Volt) voor de nek van de robot. Aan de Raspberry zit ook een kleine versterker met speaker in het hoofdje en via USB een webcam met ingebouwde microfoon en een digitale IR beweging sernsor om de nabijheid van een mens te detecteren. Aan de doorlus van de I2C van het Adafruid board zit een I2C 3v3 naar 5v converter en daaraan een LCD display (16 x 2) dat via I2C vanuit de Raspberry Pi is aan te sturen en een Arduino Mega die via I2C kan communiceren met de Raspberry Pi. Aan deze Arduino Mega zitten 5 HC03 ultrasone afstand detectoren, een motordriver board waar twee goede DC moteren aan zitten met ingebouwde gearset. Bij elke motor zit een schijf met strepen en een IR sensor als terugkoppeling naar de Arduino. Ook is er een temepratuur sensor aangesloten op de Arduino. De voeding bestaat uit een set oplaadbare batterijen die via een USB spanningsregelaar de onderdelen met 5 volt voeden.

De Arduino kan prima communiceren met de Raspberry via I2C waarbij de Raspberry master is en de Arduino Mega de slave. Ik kan nu via I2C commando's sturen met parameters (vooruit, 100cm) waarna de Arduino dit zelfstandig zal uitvoeren. Door de I2C poort te lezen krijgt te Raspberry een 32 bytes status blok terug. Dit werk prima, hoewel ik wel een 3v naar 5v conversie printje opgenomen heb in de lijn tussen de Raspberry en de Arduino en de data en clock lijn aan de Arduino kant van 10k pullups voorzien heb. De communicatie verloopt nu vlekkeloos. Om de Arduino zelfstandig te laten werken heb ik ook alle sensoren omgezet naar de Arduino die hier zelfstandig beslissingen op kan nemen (motor stoppen als object de weg blokkeert) en alle waarden van de sensoren worden via het status blok doorgegeven aan de Raspberry die er dan high-level beslissing op kan nemen. In alle opzichten dus een perfect huwelijk, de Raspberry voor de high-level taken en de Arduino voor de afhandeling van de realtime events. Als terugkoppeling van de motoren / wielen gebruik ik twee CNY70 infrarood sensoren voor het uitlezen van een streepjespatroon dat ik op een schijfje aan de zijkanten van de wielen heb geplakt als terugkoppeling van de afgelegde afstand en het synchroon houden van de wielen.

Espeak speech engine

Voor de spraak gebruik ik de opensource speech engine espeak, ik heb de (debian) espeak package geïnstalleerd op de Raspberry Pi en de executable staar in "/usr/bin" zodat deze vanaf de shell prompt aan te roepen is. In de 'C' code ziet het uitspreken er dan zo uit:


  sprintf(txt,"espeak -vnl+m7 -p 95  -s 123 -k 20 -a 200 '%s' 2>/dev/null",text);
  system(txt);
  

Onderdelen

Raspberry Pi
De Raspberry Pi
De Raspberry Pi is een singleboard computer gebaseerd op ARM processors die tegen een minimale prijs wordt gemaakt en verkocht. Er zit een 700 Mhz ARM processor op, uitgebreide I/O poorten, onboard video interface, USB, ethernet poort en audio poort. Als besturingssysteem kunt u uit vele Linux versies kiezen, ik heb gekozen voor de veelgebruikte Raspbian (Debian Wheezy port). De Raspberry Pi is de centrale computer van deze opstelling. Deze eerste versie had nog geen boorgaten om het board te bevestigen (latere versies hebben dit wel) dus ik heb het board met tierapjes vastgemaakt aan plak kabelgesp houders.
Raspberry Pi Wikipedia.

Raspberry Pi GPIO layout

Adafruit 16-Channel 12-bit PWM / Servo Driver
Adafruit 16-Channel 12-bit PWM / Servo Driver
Met dit board kunt u maar liefst 16 servo's tegelijk aansturen via een de 2 draden van een I2C bus, die standaard al op uw Rapberry zit. Wanneer dit niet genoeg is kunt u meerdere boards parallel schakelen door ze eenvoudig door te lussen. De chip werkt volledig zelfstandig met een ingebouwde pulsgenerator waardoor de Raspberry Pi ontlast zal worden. Het board krijgt de 3.3 Volt voedingsspanning via de Raspberry en de aansluitingen zijn ground, Data, klok en VCC. De servo's zelf moeten via het eigen aansluitblokje gescheiden gevoed worden. Verdere specificaties zijn: frequentieomvormer PWM tot ongeveer 1,6 Khz, 12 - bit resolutie voor elke uitgang, voor servo's betekent dit ongeveer 4us resolutie bij 60 Hz update snelheid, configureerbare push pull of open drain uitgang, output enable pin naar alle uitgangen snel schakelen, omgekeerde polariteit bescherming op het aansluitblok ingang, groene led ter indicatie dat het board aan is, 3-pins connectors in groepen van 4 zodat u 16 servo's tegelijk aan kunt sluiten en soldeer jumpers voor de 6 adres select pinnen wanneer u meerdere boards na elkaar zet. Het board wordt geleverd met losse connectors die u er zelf op moet solderen, dit is namelijk afhankelijk van het doel en de montage. Via Internet kunt u de software libs downloaden en een paar testprogramma's die in de programmeertaal Python geschreven zijn en vanaf de commandline uitgevoerd kunnen worden. De aansluiting gaat door middel van vier draden naar de GPIO aansluiting van de Raspberry Pi.
De site van AdaFruit.
Uitgebreide Engeltalige PDF aantluiten op Rapsberry en hoe te testen.


Ultrasonic Sensor (HC-SR04)
De sr04 ultrasonic range sensor
Deze Ultrasone module kan een signaal uitzenden van rond de 40 kHz en via de ontvanger ernaast het teruggekaatste signaal weer ontvangen. Hiermee kunt u net als een vleermuis de afstand tot objecten in de omgeving bepalen. Het board heeft een eigen chip en een eenvoudige 4 pins aansluiting. Wel is het board 5 Volt en moet de uitgang dus met een weerstand netwerkje op de Raspberry Pi aangesloten worden om de ingang van de Raspberry Pi (3.3 Volt) niet op te blazen. Met twee weerstanden maakt u een eenvoudig een spanning convertor. Aangezien ook deze module de ground pin van de GPIO gebruikt moet u hier een split kabeltje voor maken. Het board kan uit de 5 Volt pin van de Raspberry Pi gevoed worden. De aansluitpinnen zijn: 5V Vcc, trigger pulse input, echo pulse output, Gnd. De afstand die gemeten kan worden is 2cm tot 5 meter met een resolutie van 0.3 cm. Dit board kost maar een paar euro.
Datasheet van de sr04 ultrasonic range sensor.
Uitgebreide Engeltalige handleiding over het aantluiten op de Rapsberry en hoe te testen.


AdaFruit 16x2 lcd display plus keyboard
AdaFruit 16x2 lcd display met 5 keys keyboard
Deze bouwkit (u moet het zelf in elkaar solderen) bestaat uit een 16x2 display met backlight en 5 druktoetsen. Het printje bevat een I2C ansluiting zodat dit printje geen kostbare I/O pennen gebruikt maar gewoon doorgelust kan worden met andere I2C boards die al ik al aangesloten heb. Ik lus dit board door vanaf de tweede header van het Adafruit 16-Channel 12-bit PWM board omdat hier de doorluspennen al op zitten. Alleen de 5 Volt voeding moest ik ergens anders vandaan halen (maar dit kan ook vanaf de 5 Volt pen van de Raspberry Pi zelf). Standaard zit er een female header bij om hem op de Raspberry Pi zelf te prikken, ik heb alleen de eerste drie pennen van beide rijen aan de achterkant aangesloten zodat ik het display eenvoudig met korte draden kan aansluiten op de I2C bus. Er zijn slechts 4 draden nodig, de SDA en SDL voor de I2C en de ground en de 5 Volt voeding. De meegeleverde demo code is in Python geschreven, ik heb hier zelf een 'c' versie van gemaakt die op deze site te downloaden is.
Datasheet van de I2C interface chip.
Datasheet van de LCD HD44780.
Product pagina van Adafruit.


SG-90 TowerPro micro servo
SG-90 TowerPro micro servo
Als servo ben ik op zoek gegaan naar eenvoudige betaalbare servo's die ook nog eens klein zijn en weinig wegen. Een goede keuze is dan de Towerpro SG-90 Micro Servo die slechts 9 gram weegt, nylon aandrijving heeft en toch redelijk sterk is. De aansluiting zijn 15 cm en er zit standaard een 3 pins connector aan. Het is een analoge servo met een draaihoek van 180 graden, er is dus geen wiel mee aan te drijven. De afmetingen is 22mm * 11,5mm * 27mm en de bedrijfsspanning is 3.0 tot 7.2 Volt, dus deze is goed met de standaatd 5 Volt USB spanning aan te drijven. Het netto gewicht is 14g en de kleur is blauw. Deze servo is rechtstreeks aan te sluiten op het I2C servoboard en werkt zeer goed.
Datasheet SG90 Servo.

Ontwerpfouten

Robbie1 heeft al meerdere keren een nieuw of herzien ontwerp gekregen, sommige dingen die ik bedacht had werkten niet zoals ik gehoopt had en moesten opnieuw herzien worden. Deze ervaringen wil ik ook graag delen.

Als terugkoppeling van de motoren had ik bedacht om rotaty encoders aan de assen van de motoren te monteren om zo de exacte beweging te kunnen lezen. De rotary encoders werkten prima maar zijn niet gemaakt voor permanent draaien onder belasting. Na een week brak de eerste as van de encoder al af, dit is dus geen goede goedkope oplossing. Ik heb nog even nagedacht om de encoders van een scrollwiel van een muis te gebruiken, maar ook hier voorzie ik mechanische problemen.

Aangezien de DC motoren niet zo constant liepen, reed de robot bijna nooit recht vooruit. Ik had ook geen terugkoppeling en was er in eerste instantie vanuit gegaan dat de motoren wel dermate constant zouden lopen dat ze bij dezelfde spanning hetzelfde toerental zouden hebben. Dit bleek dus niet het geval te zijn en een ander nadeel was dat bij lagere spanning, en dus een lagere snelheid, ook het vermogen erg sterk afnam zodat de robot nog minder te besturen was. Uiteindelijk besloot ik het over een totaal andere boeg te gooien. Mijn ervaringen met stappenmotoren waren zeer goed en op Internet zijn goedkope stappenmotoren van 5 Volt, inclusief driver boardje verkrijgbaar. Het resultaat was helaas bedroevend. De stappenmotoren konden amper enige snelheid halen en juist bij hogere snelheid nam het vermogen sterk af. Het vermogen van de stappenmotoren viel in het geheel tegen en ondanks dat de robot nu perfect recht vooruit kon rijden en mooie bochten kon maken, was de robot ook zo traag als een slak geworden en niet meer vooruit te krijgen bij een beetje weerstand van een kleed op de grond. Ik kwam tot de conclusie dat stappenmotoren voor de aandrijving alleen werken bij veel hogere spanningen en veel duurdere (en grotere) motoren.

De aansluitdraden van de luidspreker en de sensor in het hoofdje waren vrij stug en daardoor kon het hoofdje niet echt soepel bewegen. Deze draden heb ik naderhand vervangen door dunnere zachte kern draden en toen liep het een stuk soepeler. De wielen moesten toch verder opzij, voor de stabiliteit van het geheel bij het maken van bochten en het omdraaien. De voeding voor de Raspberry en de I/O moet gesplitst worden en er moeten twee USB powerblocks in omdat anders bij teveel stroom trekken van bijvoorbeeld de motoren de Raspberry op tilt gaat. Het zwenkwiel aan de achterkant kwam net onder de kast vandaan en werd door de cliff detector aan de achterzijde gezien waardoor er telkens na even vooruit rijden een collision detectie was. De oplossing was het zwenkwieltje een klein stukje naar voren te zetten.

Nadat ze zelfbouw robot weer helemaal werkte met de Arduino voor de aandrijving en afstand sensoren ontdekte ik weer dat elektronica meestal niet het grootste probleem is maar mechanica. De wielen draaiden prima maar slipten verschrikkelijk op de houten vloer waardoor de robot alle kanten uit reed, behalve de goede. Met een klein weegschaaltje was het probleem snel gevonden. Ik had alle batterijen en de powerpacks op de rug van de robot gemonteerd, dit zag er wel stoer uit. Echter alle gewicht stond nu op het achterwiel dat niet aangedreven werd en de wielen voor, die wel aangedreven werden, drukten bijna niet op de grond. Nadat ik de batterijen in twee setjes van drie, boven de wielen gemonteerd had en de powerpacks erboven stond het meeste gewicht weer op de voorste wielen waarna het ook uit was met het slippen. Dit zijn dus ook dingen om rekening mee te houden bij het ontwerpen van een zelfbouw robot, zorg voor een goede verdeling van het gewicht op de aangedreven wielen.

Boeken over robots

boek boek bestellen Voertuigen die zich schijnbaar zelfstandig voortbewegen, als door een onzichtbare hand gestuurd, oefenen op veel toeschouwers een grote aantrekkingskracht uit. Deze aantrekkingskracht wordt vaak gevolgd door de wens om zelf ook zo'n voertuig te bouwen, dus een eigen robot te construeren. De zelfbouw van dergelijke robotvoertuigen is echter geen sinecure. Wanneer men niet over de nodige kennis op dit gebied beschikt, zijn mislukkingen gegarandeerd. En het onvermijdelijke gevolg? Frustraties, vaak na onnodig grote investeringen, die in veel gevallen het voortijdige einde van een nieuwe hobby betekenen. Dit boek reikt de roboticus in spé de nodige basiskennis aan van mechanische constructies en elektronische systemen. Bovendien worden eenvoudige, gemakkelijk na te bouwen en goed functionerende systemen beschreven die de fantasie van de lezer zullen prikkelen en een bron van inspiratie zijn voor de eigen creativiteit. In dit boek worden niet alleen bouwbeschrijvingen van complete systemen gegeven, maar wordt ook een groot aantal modulaire componenten beschreven ten behoeve van aandrijving, voortbeweging, voeding en sensoren. De beschreven modules kunnen naar believen in eigen modellen worden ingebouwd waarbij aan de combinatiemogelijkheden geen grenzen zijn gesteld. Zelfbouw van robots is niet zo eenvoudig en ook niet zo goedkoop. Op een populaire manier geeft de schrijver een aantal hoofdelementen die voor de zelfbouwer belangrijk zijn: werkruimte, energie, voortbeweging en sensoren. In de opvattingen van de schrijver die zichzelf als een amateur presenteert, is kennis van mechanica, elektronica en informatica onontbeerlijk. Die punten krijgen dan ook aandacht. Aan het slot worden vier modellen, waaronder de lichtzoeker en de tafelrobot, beknopt behandeld en van kritische kanttekeningen voorzien. De tekst is duidelijk afgestemd op de creatieve zelfbouwer met doorzettingsvermogen. Er worden studieboeken en leveranciers van materialen aanbevolen en er zijn internetadressen.


boek boek bestellen Mobiele robots voor zelfbouw Gunther May Robots kunnen zich zelfstandig voortbewegen en lijken soms zelfs eigen beslissingen te nemen. Dit grensvlak tussen technologie en 'echte' intelligentie is bijzonder fascinerend. Het is dan ook niet verwonderlijk dat veel mensen een eigen robot willen - voor het uitvoeren van praktische taken, of alleen maar om mee te experimenteren en te spelen. De ontwikkeling en constructie van een eigen robot is een lange en vaak moeizame weg. U moet zich echter niet laten afschrikken door aanvankelijke mislukkingen, want het geeft veel voldoening om te zien hoe een zelfontworpen robot voor het eerst in actie komt! Dit boek biedt een praktijkgerichte inleiding in de robotbouw. Eerst wordt beschreven hoe een robot wordt gepland en in mechanisch opzicht kan worden gerealiseerd. Daarna wordt de aandacht in het bijzonder gericht op de ontwikkeling van elektronische stuurschakelingen. Hier worden verschillende mogelijkheden beschreven, vari nd van eenvoudige analoge schakelingen tot oplossingen met microcontrollers en CPLD's. De schrijver bespreekt ook op een begrijpelijke manier allerlei sensoren en actuatoren, alsmede communicatiemogelijkheden en technieken om gegevens op te slaan. Hierbij speelt ook de programmering van de robots een belangrijke rol. Het boek bevat gedetailleerde bouwbeschrijvingen voor vier verschillende robots. U kunt deze naar keuze gewoon nabouwen, of ze vervolmaken met uitbreidingen die aan uw eigen creativiteit ontspringen. De schrijver houdt zich in zijn vrije tijd al meer dan tien jaar bezig met het bouwen van robots, en werd daarvoor onder andere bij de 'Jugend forscht'-wedstrijd onderscheiden. Hij studeerde informatica/systeemtechniek en is wetenschappelijk medewerker aan het Institut f r Nachrichtentechnik van de Technische Universiteit Braunschweig.


boek boek bestellen Het nieuwe model Raspberry Pi, nu met 4 USB-poorten en 40 GPIO-pins, en nog energie-zuiniger ook! Gebruik een micro-SD-kaart (niet meegeleverd) als harde schijf en de HDMI-poort als monitor-aansluiting, en u heeft hiermee een complete PC op credit-card formaat! De 700Mhz processor heeft een GPU op dezelfde chip zitten, waardoor u moeiteloos HD-video's kan bekijken.


boek boek bestellen Sinds januari 2012 is de Raspberry Pi, die is ontwikkeld aan de Universiteit van Cambridge, op de markt. Het is een singleboardcomputer gebaseerd op ARM-processors: zeer goedkoop om te produceren en aan te schaffen. Raspberry Pi voor Dummies is een up-to-date gids die op dit nieuwe fenomeen ingaat. De auteurs, beide gebruikers van het eerste uur, bieden inzicht en hulp om snel aan de slag te gaan en de Raspberry Pi volledig te benutten. Met deze gids krijg je je Raspberry Pi volledig onder de knie: niet alleen beschrijft het stap voor stap de set-up, ook het systeembeheer en het programmeren komen aan bod. Bovendien worden naast de basale Raspberry Pi-handelingen en -kenmerken ook de laatste ontwikkelingen doorgenomen. De Raspberry Pi heeft een hele nieuwe generatie nerds, hackers en hobbyisten wakker geschud - nu is het jouw beurt om je aan te sluiten!



Reacties op het onderwerp: Robots


32 - Techniek »  -  Robots »
2018-02-02 16:30:00
Hier kunt u vragen stellen en antwoorden geven die betrekking hebben op robots en robot elektronica en mechanica. Reacties zullen pas na goedkeuring geplaatst worden, dit kan enige tijd duren.
Reactie van een bezoeker van de site!
Vragen en antwoorden m.b.t. tot robots en robot elektronica en mechanica.
Er zijn nog geen reacties!


Last update: 30-03-2015
 Binnen dit thema



 Meer thema's


 Lees hier de privacyverklaring van deze site.

Disclaimer.

Hoewel de heer Hein Pragt de informatie beschikbaar op deze pagina met grote zorg samenstelt, sluit de heer Pragt alle aansprakelijkheid uit met betrekking tot de informatie die, in welke vorm dan ook, via zijn site wordt aangeboden. Het opnemen van een afbeelding of verwijzing is uitsluitend bedoeld als een mogelijke bron van informatie voor de bezoeker en mag op generlei wijze als instemming, goedkeuring of afkeuring worden uitgelegd, noch kunnen daaraan rechten worden ontleend. Op de artikelen van de heer Pragt op deze Internetsite rust auteursrecht. Overname van informatie (tekst en afbeeldingen) is uitsluitend toegestaan na voorafgaande schriftelijke toestemming van de rechthebbende. Voor vragen over copyright en het gebruik van de informatie op deze site kunt u contact opnemen met: (email: mail@heinpragt.com). Dit is mijn