Zelfbouw robots en elektronica

zelfbouw robotAls kind had ik elektronica als hobby, ik haalde alles wat ik kon krijgen uit elkaar en verzamelde de onderdelen. Na het bouwen van de eerste buizenversterker en een paar aardige opdonders van schokken ontdekte ik de digitale techniek. Ik bouwde mijn eigen meetapparatuur, voeding en mengpaneel en ik soldeerde wat af in mijn hoekje van de schuur. Later heb ik nog MTS elektro gedaan voor ik de muziek inging en daarna de ICT. Mijn eerste ICT baan was als embedded programmeur, ik schreef kassa software en software voor machinesturingen. Alles in PLZ en Z80 assembler waarbij we stappenmotoren, kleppen en zelfs naalden van printerkoppen aanstuurden. Het leukste project was een enorme verfkeuken robot waarvoor ik op een 8 bits Z80 een 32bit rekenmodule schreef. Mijn tweede baan was weer embedded programmeur maar nu naast assembler ook in de taal 'c'. Ook hielp ik mee met het ontwikkelen van de hardware en ook hier was het aansturen van relais, lcd displays, analog frontend chips en signaal analyse. We waren koploper in het ontwikkelen van datacommunicatie modems en de laatste jaren voor dit bedrijf zelfs GSM hardware en protocol stacks. Rond 2000 had ik mijn laatste embedded klus in het weer operationeel maken van een skipas systeem, inclusief op afstand uitleesbare passen en toegangspoortjes. Weer assembler en pascal in dit geval en ook weer uitlezen van poortjes, RF signalen analyseren, relais aansturen e.d. Ik vond dit een hele leuke tak van werk waarbij ik mijn kennis van elektronica kon combineren met mijn kennis van programmeren. Op deze pagina wil ik een soort naslagwerk maken en leuke tips en ideeën delen. De stap naar het zelf maken van een robot heb ik in die tijd al eens ingezet maar in die tijd waren onderdelen zoals stappenmotoren en de aansturing daarvan nog redelijk onbetaalbaar. Het idee voor een zelfbouw robot was er wel maar de middelen nog niet. Tegenwoordig is er een enorm aanbod van goedkope CPU borden, IO kaartjes en zelfs servo's en stappenmotoren zijn zeer betaalbaar geworden dus het ontwikkelen van een zelfbouw robot is nu zeer betaalbaar. Er zijn momenteel zelf complete kleine bouwpakketjes van kleine zelfstandige robotjes en robotica is ineens een hobby geworden. Ook ik ben me weer bezig gaan houden met robotica en op deze pagina probeer ik mijn kennis en ervaringen te delen. Vriendelijke groet, Hein Pragt.

Mijn eigen robot projecten

Ik heb zelf enkel kleine en wat grotere robot ontwikkeld maar ook een aantal opensource robots gebouwd (met vaak wat aanpassingen en verbeteringen) en soms werd het helaas een compleet fiasco. Zo heb ik een paar jaar geleden vele uren gestoken in een humanoide robot, alle onderdelen ontworpen en met de 3D printer gemaakt, uitindelijk alles in elkaar gezet om er achter te komen dat de balans totaal verkeerd was en de servo's niet sterk genoeg waren om het totale gewicht van de robot (inclusief accupack) stabiel overeind te houden. Uiteindelijk heb ik de robot weer uit elkaar gehaald en de onderdelen weer in de bewaardozen gestopt, maar desondanks heb ik veel geleerd van de fouten die ik gemaakt heb dit project. En dat is tevens de positieve boodschap, als een robot project niet lukt, dan is het in ieder geval leerzaam geweest. Hier staat een overzicht van een aantal robot projecten die wel gelukt zijn.

Zelf een beetlebot bouwen

Wanneer u een kleine en eenvoudige robot wilt bouwen kunt u beginnen met een zogenaamde beetlebot of kever robotje. Deze robot is zeer eenvoudig te maken en toch slim genoeg om uit bijvoorbeeld uit een doolhof te kunnen ontsnappen. Hiervoor gebruikt de robot twee voelsprieten waardoor de robot ook wel een beetje op een kever lijkt. Voordat ik begin met de bouwbeschrijving zal ik eerste de werking van deze eenvoudige robot proberen uit te leggen. De robot zal worden aangedreven door twee goedkope kleine (DC) elektromotoren (wel van hetzelfde soort anders zal de robot niet recht vooruit gaan).
Ga naar de beetlebot pagina.

Zelfbouw robot Caty

Toen ik druk bezig was met de zelfbouw robot Robbie vond mijn dochter Romy dat het steeds meer mijn robot werd en dat alle kinderen het over "de robot van je vader" hadden. Ze vertelde dat ze eigenlijk helemaal zelf een robot wilde maken en ook helemaal zelf wilde programmeren. Ik heb hier maar eerst even een tijdje over nagedacht want elektrotechniek, elektronica, robotica en programmeren is best wel ingewikkeld voor een kind van 10 jaar, ook al is ze behoorlijk slim. Na wat zoeken vond ik een kit waarbij een programeer programma zat dat van Scratch afgeleid was en waarmee je rechtstreeks op een door hun sterk versimpelde Arduino kon programmeren.
Ga naar de robot Caty pagina.

Zelfbouw lijvolger Lijntje

Toen ik mijn dochter Romy een lijnvolger liet zien op Youtube was de beslissing om er zelf een te bedenken en te maken als snel genomen. Een lijnvolger is een robot die door middel van optische sensoren een lijn kan detecteren en dan een route kan volgend door boven deze lijn te blijven rijden. Als sensor neemt men meestal een infrarood sensor omdat deze het minst last heeft van omgevingslicht, vaak heeft de lijnvolger een simpel microprocessor board (in ons geval een Arduino Uno) als brein en twee in draairichting en snelheid regelbare motoren en een caster (rolllende ronde bal) als achterwiel.
Ga naar de lijnvolger pagina.

Zelfbouw robot Zowi

De Otto of (Zowi variant) is een open source interactieve robot die iedereen zelf kan maken Een Otto / Zowi robot kan wandelen, dansen, geluiden maken en obstakels vermijden. De Otto robot is volledig open source, compatibel met Arduino, 3D printbaar en heel leuk voor kinderen om samen te maken en er daarna met de apps op de telefoon mee te kunnen spelen. Wanneer u zelf geen 3D printer heeft kunt u de volledig onderdelen set (voor een standaard Otto) ook kopen op de site www.ottodiy.com. De Otto robot werd geïnspireerd door een andere robot die BoB de BiPed en er is een commercieel afgeleide versie met de naam Zowi.
Ga naar de robot Zowi pagina.

Robotica en motoren

Wanneer we zelf robots willen ontwerpen en maken hebben we elektromotoren nodig om de robot ook echt te laten bewegen. Er zijn vele tientallen soorten van elektrische motoren maar voor de robotica hobbyist is de keuze eigenlijk beperkt tot de volgende drie: gelijkstroommotoren (DC motoren), stappenmotoren of servo's. Op deze pagina ga ik in op de verschillen en de wijze van toepassing en aansturing.
Ga naar de robotica motoren pagina.

Sensoren voor robots

sensoren zelfbouw robotEen robot heeft sensoren nodig vergelijkbaar met de zintuigen van een mens om te kunnen reageren op zijn omgeving. De sensoren zorgen voor input aan de computer module van de robot zodat deze bijvoorbeeld een object kan ontwijken. Vergelijkbaar met de mens die meerdere zintuigen heeft, kan ook een robot meerdere soorten en aantallen sensoren hebben om goed te kunnen reageren op zijn omgeving. Aangezien sommige zintuigen zoals onze ogen wel erg complex zijn en de verwerking van de signalen van een camera ook veel rekenkracht vergt zullen we vaak uitwijken naar eenvoudigere sensoren waarbij we soms beter kunnen kijken naar eenvoudige organismen. Sensoren zijn momenteel vrij goedkoop en redelijk verkrijgbaar, vaak al compleet met interface gemonteerd op een klein board.

Ultrasoon sensor HC-SR04

Ultrasoon sensor HC-SR04 Een robot moet zijn omgeving kunnen waarnemen om er op te kunnen reageren. Een eenvoudige methode is afstand meting door middel van ultrasone geluidsgolven, deze techniek is zeer goedkoop geworden door toepassingen in de auto (parkeerhulp) en in digitale afstandsmeters. De SR-04 is een populaire ultrasone zender / ontvanger met interface chip die maar een paar euro kost, ik heb ze zelfs al voor 1 euro 5 gekocht. De module heeft maar vier aansluitingen en is zeer eenvoudig te programmeren, het enige wat er voor nodig is dat is een nauwkeurige timer in microseconden. De module zend ultrasone geluidsgolven uit van 40 Khz wat ver boven het menselijke gehoor ligt. De werking van ultrasone afstandsmeting berust op het uitsturen van een ultrasoon geluidssignaal en het opvangen van het gereflecteerde (echo) signaal. De tijd tussen versturen en ontvangen is afhankelijk van de afgelegde weg van het geluidssignaal en aangezien geluid een redelijk nauwkeurige snelheid heeft, kunnen we hieruit de afstand berekenen. De afstand is dus gelijk is aan de snelheid van het geluidssignaal vermenigvuldigt met echo tijd / 2 (heen en terugweg). De snelheid van het geluid in lucht bedraagt gemiddeld 340 meter per seconden en deze tijd moeten we delen door twee want tussen zenden en ontvangen legt het geluid twee maal dezelfde afstand af, van zender naar object en weerkaatst van object naar ontvanger. Uiteraard er van uitgaande dat zender en ontvanger zich op eenzelfde plaats bevinden. 1 sec is dus 780 meter (340 x 2), 100 Ms is dus 34 meter, 10 Ms is dus 3,4 meter, 1 Ms is dus 30 cm. U ziet dat voor kleinere afstanden een nauwkeurige timer met een hoge resolutie nodig is.

Ultrasoon sensor HC-SR04
De HC-SR04 heeft een trigger signaal van 10us (microseconden) nodig (op TTL niveau) op de trigger pin als startsignaal waarna er een burst van 8 pulsen van 40KHz zal worden uitgestuurd. Daarna begint de module te luisteren naar de ontvangen echo van deze pulstrein en de echo uitgang blijft hoog tot de echo is ontvangen. Aangezien niet elke module weer na een timeout omlaag gaat is het veiliger om ook in de software hier een timeout op te zetten met als resultaat een oneindige afstand.

 /*   
  Eenvoudige code voor ultrasone afstandsmeting met HC-SR04 module  voor de Raspberry Pi
  © Hein Pragt 2015
 */  

   // Set up gpi pointer for direct register access
   setup_io();

   INP_GPIO(ECHO); // must use INP_GPIO before we can use OUT_GPIO
   OUT_GPIO(TRIG);

   printf("Waiting For Sensor To Settle\n");
   GPIO_CLR = (1 << TRIG);
   usleep(20 * 1000);
   GPIO_SET = (1 << TRIG);
   usleep(10 * 1000);
   GPIO_CLR  = (1 << TRIG);

   gettimeofday(&gettime_now, NULL);
   save_time = 0;
   while(GPIO_READ(ECHO) == 0 && save_time++ < 10000); 
     gettimeofday(&gettime_now, NULL);
   start_time = gettime_now.tv_nsec;             //Get nS value
   save_time = 0;
   while(GPIO_READ(ECHO) != 0 && save_time++ < 2000000);
   gettimeofday(&gettime_now, NULL);
   end_time = gettime_now.tv_nsec;             //Get nS value
   time_diff  = end_time - start_time;
   distance = (time_diff * 17150) / 1000000;
   printf("Distance (C:%d S:%d E:%d) = %d cm\n", save_time,start_time,  end_time,distance);

Ultrasoon sensor HC-SR04 Dit werkt in mijn project prima, wel is het oppassen dat bij gebruik van meerdere sensoren u voldoende tijd neemt tussen twee metingen zodat de sensor niet de echo van een andere (vorige) meting opvangt. Hier ben ik ooit eens ingestonken, waardoor ik zeer vreemde afstandmetingen kreeg. Ook is de spreiding van het signaal niet recht maar waaiervormig waardoor de echo op langere afstand niet van recht achter de module kan komen, hier moet u ook rekening mee houden. Hoe dichterbij hoe minder het waaier effect is en hoe meer u kunt aannemen dat het echo object ook recht achter de sensor staat.

5 volt naar 3v3 omzetten Aangezien deze module op 5 Volt werkt is ook het uitgansignaal van de echo pin 5 Volt. Dit kunnen we niet zomaar aansluiten op een 3v3 ingang van bijvoorbeeld een Raspberry Pi omdat we deze dan opblazen. Hiervoor hebben we dus een 5 naar 3v3 omzetter nodig en wie een beetje electro kennis heeft, weet dit met twee weerstanden gemaakt kan worden. De volgende schakeling geeft aan hoe dit werkt, voor de weerstanden kan ook 3k3 en 4k7 gebruikt worden, het gaat om de verhouding tussen beide weerstanden. Het knooppunt van beide weerstanden kunt u rechtstreeks op de GPIO ingang van de Raspberry Pi aansluiten.

Cyn70 infraroodsensor

cyn70 infrarood sensor wiel encoder Om de draaisnelheid en de afstand die wielen afleggen te kunnen meten heeft u een vorm van terugkoppeling nodig. Hiervoor zijn zeer dure motoren met ingebouwde encoders te koop maar deze zijn voor de hobbyist niet echt betaalbaar te noemen. Een goede goedkope oplossing is een infrarood zender/ontvanger om een zwart en wit patroon op een schijf naast of op het wiel te lezen. Bij een overgang van wit naar zwart zal het signaal naar hoog gaan en bij de overgang van zwart naar wit naar laag. Eigenlijk zijn het een hogere spanning en een lagere spanning, maar deze vallen bij de meeste processoren net binnen de 0 en 1 marge. Bij de meeste processoren kunnen ze dus rechtstreeks op de pennen van de processor aangesloten worden. Na wat onderzoek kwam ik uit op de CYN70 die tussen de 80 eurocent en de 2 euro per stuk kost. Samen met twee weerstanden heeft u voor weinig geld een complete betrouwbare sensor. Het geheel is een klein blokje met vier aansluitpennen waarin een infrarood led en een fototransistor zitten. Wanneer de reflectie van het licht van de infrarood diode op de fototransitoir valt, zal deze gaan geleiden en zo de spanning naar de ground trekken. Hier staat de datasheet van de cyn70! Voor het strepenpatroon heb ik het hier meegeleverd voorbeeld geprint en daarna met het lamineerapparaat van een plastic coating voorzien. Na het aftekenen en precies uitknippen kon ik het aan de binnenkant van het wiel plakken. De sensor moet wel redelijk dicht op het wiel gemonteerd worden, de datasheet geeft een paar millimeter aan, ik heb zelf de ervaring dat een half centimeter ook nog prima werkt. Maar hoe dichterbij hoe nauwkeuriger de meting is, zeker bij hogere snelheden van het wiel.

Na het aansluiten op bijvoorbeeld een Arduino kreeg ik nette pulsjes binnen, het signaal was helaas niet geschikt om een interrupt ingang aan te sturen, ik denk dat de flanken en de niveaus hiervoor niet goed genoeg zijn. Wanneer u dit wilt kunt u beter een kant en klaar board kopen waar ook een zogenaamde comperator of Schmitt trigger schakeling zit om het signaal mooi op te poetsen. Het signaal kan op een analoge ingang worden aangesloten maar ook digitaal werkt prima omdat de niveaus wel mooi in de nul en één gebieden vallen. Voor het uitlezen van de twee sensoren (elk wiel één) heb ik zelf op de Arduino een timer interrupt routine gemaakt de telkens de niveaus van de inputs vergelijkt met de vorige waarde en bij verschil een teller (voor deze sensor) ophoogt. Hiermee kan de afgelegde afstand per wiel gemeten worden en kunnen we de motoren gelijk laten lopen door ze sneller of langzamer te laten draaien.

wiel encoder schijf Dit is een wiel encoder schijf om af te drukken, sla de afbeelding op (dan is deze groter) en druk hem daarna af. Voor het beste resultaat is het handig om daarna de afdruk te lamineren of met doorzichtig plakplastic te bewerken.

Rotary encoder

rotary encoder motor Bij duurdere robots worden vaak motoren voor de aandrijving gebruik die voorzien zijn van een zogenaamde rotary encoder. Deze rotary encoder is aangesloten op de as van de motor of de as van het wiel en zal bij het draaien pulsen afgeven waarmee de mate van rotatie (vermenigvuldigd met de omtrek van het wiel) en dus de afstand die het wiel afgelegd heeft te berekenen is. Hiermee kunt u dus de afstand die de robot moet afleggen bepalen maar ook kunt u hiermee zorgen dat beide wielen gelijklopen en dezelfde afstand afleggen waardoor de robot recht vooruit kan rijden. Een groot probleem met dc motoren is dat ze vaak niet exact gelijk lopen bij dezelfde spanning. De oplossing is een terugkoppeling door middel van rotary encoders. Deze encoders kunnen op verschillende techniek gebaseerd zijn. De eerste methode werkt op basis van een schijfje met daarin kleine sleufjes die draait tussen een infrarood zender en ontvanger. Telkens wanneer een sleufje de lichtsluis passeert zal er een pulsje afgegeven worden en door deze pulsen te tellen kan de afgelegde afstand berekend worden. Deze modules zijn een paar euro per stuk en zijn al kant-en-klaar gemonteerd op een klein board te koop. Ze hebben 5 volt spanningslijnen en een trigger uitgang voor de microprocessor. Het probleem hierbij is het schijfje met sleuven dat meestal niet meegeleverd zal worden, er zijn echter complete setjes inclusief schijfje te koop. Deze constructie geeft echter alleen maar aan dat de as in beweging is, maar geeft geen richting aan. Een beter alternatief is een rotary encoder gebruiken die momenteel als vervanging van de potmeter gebruikt wordt.

rotary encoder pulsen Deze digitale potmeters hebben een zachte klik en ze zijn continue door te draaien. Ook deze encoders kosten een paar euro en hebben twee uitgangen en een ground pin. Via deze twee uitgangen kunt u een digitaal patroon lezen wat aangeeft of de knop links of rechtsom gedraaid wordt. Deze encoder geeft 48 stappen per volledige rotatie aan, met een omtrek van het wiel van 20 cm is dit dus 20 / 48 = 0,4 cm verplaatsing per click. Dit is voldoende om bij te sturen en afgelegde afstand te bepalen. De encoder gebruikt pin A en B als uitgangen, de A- en B-uitgangen gaan naar de GPIO ingangen op de Raspberry Pi waarbij de interne pull-up weerstanden aan moeten staan zodat deze hoog zijn wanneer de contacten zijn open en laag bij gesloten contacten. De ingangen genereren reeks pulsen zoals in het diagram weergegeven is. Omdat de uitgangen vier gecombineerde toestanden hebben staat deze encoder bekend als kwadratuur encoder. De volgorde van de pulsen bepalen de richting van de roatatie.

Voorbeeld code

int encoderPin1 = 2;
int encoderPin2 = 3;

volatile int lastEncoded = 0;
volatile long encoderValue = 0;

long lastencoderValue = 0;
int lastMSB = 0;
int lastLSB = 0;

void setup() {
  Serial.begin (9600);
  pinMode(encoderPin1, INPUT); 
  pinMode(encoderPin2, INPUT);
  digitalWrite(encoderPin1, HIGH); //turn pullup resistor on
  digitalWrite(encoderPin2, HIGH); //turn pullup resistor on
  //call updateEncoder() when any high/low changed seen
  //on interrupt 0 (pin 2), or interrupt 1 (pin 3) 
  attachInterrupt(0, updateEncoder, CHANGE); 
  attachInterrupt(1, updateEncoder, CHANGE);
}

void loop(){ 
  //Do stuff here
  Serial.println(encoderValue);
  delay(1000); // Some delay
}


void updateEncoder(){
  int MSB = digitalRead(encoderPin1); 
  int LSB = digitalRead(encoderPin2);
  
	//converting the 2 pin value to single number
  int encoded = (MSB << 1) |LSB; 
	//adding it to the previous encoded value
  int sum  = (lastEncoded << 2) | encoded; 
  if (sum == 0b1101 || sum == 0b0100 
	    || sum == 0b0010 || sum == 0b1011) encoderValue ++;
  if (sum == 0b1110 || sum == 0b0111 
	    || sum == 0b0001 || sum == 0b1000) encoderValue --;

  lastEncoded = encoded;
}

Hier staat een datasheet van een rotary encoder met afmetingen en beschrijving van de uitgansignalen.

Drukschakelaar

Drukschakelaar met Pull-up of Pull-down weerstand Een heel eenvoudige “sensor” voor een robot is een heel gewone drukschakelaar. De schakelaar kan zijn uitgevoerd met maak-, verbreek- of wisselcontact wat aangeduid word NO (normally open) of NC (normally closed). Wanneer we een schakelaar aansluiten op een Arduino ingang gebruiken we meestal een Pull-up of een Pull-down weerstand. Ik gebruik zelf meestal Pull-up weerstand waarbij de ingang in rust dus 1 is en bij het maken van het contact naar 0 zal gaan. Bij een Pull-down is de rust dus 0 en bij het maken van het contact dus 1. We gebruiken de weerstand om te zorgen dat de ingang een goed stabiel gedefineeerde stand heeft wanneer het contact niet gesloten is. Wanneer we de weerstand niet zouden gebruiken zou de ingang bij een niet gesloten contact “zwevend” zijn en dit kan dus verkeerde uitlees resultaten geven. Deze schakeling zal dus altijd een keiharde 0 of 1 geven op een ingang van de Arduino.

Reed-contact / schakelaar

Reed-contact / schakelaar Een reed-contact of magneetschakelaar bestaat uit twee schakelcontacten in een glazen buisje die gesloten kunnen worden door een magnetisch veld dat bijvoorbeeld afkomstig is van een permanente magneet. Het glazen buisje is gevuld met een edelgas zodat de elektrische stroom de schakelcontacten niet zal aantasten, ze hebben dus een behoorlijk lange levensduur. De meeste reed-contacten kunnen een maximale schakelfrequentie tot wel 300 Hz aan maar meestal zal dit niet van toepassing zijn. De schakelaar kan zijn uitgevoerd met maak-, verbreek- of wisselcontact wat aangeduid word NO (normally open) of NC (normally closed). Omdat de contacten in een glazen buisje zitten kunnen ze niet oxideren of vuil worden en kunnen ze daardoor gebruikt worden in stoffige of brandgevaarlijke omgevingen. Deze contacten worden veel gebruikt in bij modeltreinen waarbij ze tussen de rails gemonteerd worden en er een magneetje onder een locomotief of wagon geplaatst is. Maar ook zijn de sensoren van fietscomputers vaak reed-contacten met magneetjes in de spaken. Ook in alarmsystemen komen ze veel voor om bijvoorbeeld deuren en ramen te bewaken. In robots kunnen deze contacten ook gebruikt worden voor het detecteren van een magneet of sterk magnetisch veld. Een praktijk toepassing is een robot poes die onder de snuit een reed-contact heeft. In een speelgoed visje hebben we een magneet gezet en nu zal de robot poes herkennen dat er een visje onder zijn snuit gehouden wordt en eet en smakgeluiden gaan maken. Het aansluiten van een reed-contact werkt precies hetzelfde als een “normale” drukschakelaar.

Hevelschakelaars

hevel schakelaar Een goedkope basissensor is de hevelschakelaar, dit is een mechanische schakelaar met een uitstekende metalen lip die de schakelaar bediend. Deze schakelaars worden vaak ingezet om te zien of deuren of deksels van elektrische apparaten gesloten of open zijn. Ook worden ze gebruikt als eindstop detectie, maar ook in robots kunnen deze schakelaars zeer efficiënt zijn. In de meeste gevallen (wanneer de ingang van de processor al een pullup heeft) kan de schakelaar zo aangesloten worden op een input pin van de processor en aan de andere kan aan de ground. Wanneer de schakelaar open is zal de ingang dan logisch 1 zijn en wanneer de schakelaar gesloten is zal de ingang naar ground getrokken worden waardoor de ingang een logische 0 zal lezen. Wanneer de ingang geen pullup heeft kunnen we zelf de pin die naar de input gaat door middel van bijvoorbeeld een 10k weerstand aan de plus hangen. De hevel kan ook kunstmatig verlengd worden zodat er een voelspriet ontstaat waarmee de robot een wand of ander object kan detecteren. Dit gebruiken we bijvoorbeeld in de puur mechanische “beetlebot”. (BeetleBot) Hevelschakelaars zijn in veel maten te koop en de meeste hevelschakelaars zijn omschakelaars met een maak en verbreek contact in één behuizing. U kunt dus eenvoudig kiezen of de schakelaar in rust een logisch 1 of een logisch 0 af moet geven.

3v3 naar 5V convertor I2C

5 volt naar 3v3 omzet module Een van de problemen waar u tegenaan kunt lopen bij het aanschaffen van standaard modules in combinatie met de Raspberry Pi, is dat veel van deze modules voor de Arduino gemaakt zijn en dus alleen op 5 Volt werken. Nu is het mogelijk een 5 Volt I2C module aan te sluiten op een 3v3 I2C input / output wanneer er maar een aantal pullup weerstanden in de lijnen zitten. Dit komt omdat I2C de lijn naar 0 trekt. Maar ik heb gemerkt dat dit niet zo goed werkt wanneer er meerdere I2C modules op dezelfde lijnen aangesloten zijn. Het is daarom toch verstandiger om de I2C lijn in twee delen te verdelen, één deel van 3V3 modules, een 3V3 naar 5V convertor en daarna de 5 V modules. Deze 3V3 naar 5V convertor module kost vaak nog geen twee euro en daarvoor kunt u hem zelf niet maken. Rechts ziet u hoe u deze convertor in de I2C lijn kunt opnemen. Zeker in een Robot waar door motoren e.d. de voedingsspanning niet altijd stabiel is kunt u beter niet gokken op voedingsspanning problemen.

16 pins I/O via MCP23017 IC

I2C 16 pin I/O MCP23017 Wanneer u iets van een robot aan wilt sturen via een Raspberry Pi of Arduino komt u toch al snel I/O pinnen te kort. Er bestaat een eenvoudige wijze om via de I2C interface 16 programmeerbare I/O pinnen toe te voegen aan het Arduino of Raspberry Pi board door middel van een MCP23017 expander IC. Met dit IC krijgt u een 16 poorts In Out boardje erbij voor een paar euro. Het IC heeft amper externe componenten nodig en de 2 keer 8 output lijnen liggen netjes op een rij aan beide kanten van het IC. Deze schakeling is zeer snel op een klein stukje experimenteerboard op te bouwen. U kunt aan de ene kant de I2C pinnen en de voedinspanning pinnen plaatsen en aan weerszijde van het IC de headers voor de I/O lijnen. Het geheel werkt wel op 5 volt maar de I2C lijnen zijn zonder aanpassing aan de I2C lijnen van de Raspberry Pi aan te sluiten omdat I2C de lijnen naar 0 trekt. Wilt u toch zeker zijn kunt u de I2C lijnen met 10K pullups aan de 3v3 hangen, of een 3v3 naar 5 Volt boardje ertussen zetten. De datasheet van de MCP23017 kunt u hier vinden, in twee registers zet u de pinnen in In of Out mode en via twee andere registers leest u de inputs uit en via twee andere registers zet u de status van de output pinnen. Het is zeer eenvoudige aan te sturen en zeer universeel bruikbaar. Dit IC is tegenwoordig ook als standaard module voor een paar euro te koop, toch heb ik meestal wel een paar losse ic's op voorraad.

Technische Universiteit Eindhoven

De volgende site is een geweldige bron van informatie over robots, Tech United Eindhoven behoren tot de wereldtop op het gebied van het robotvoetbal. Maar ook worden hier andere robots ontwikkeld en op deze site kunt u veel informatie vinden over deze robots en de techniek achter deze robots. De TURTLE is de naam van de voetbalrobot en het staat voor Tech United RoboCup Team Limited Edition. Deze robots zijn wereldkampioen in de Middle Size League, een league waarbij teams van 5 robots van maximaal 52x52x80 cm groot  autonoom een potje voetbal spelen. De afgelopen 7 jaar hebben ze de finale van het WK bereikt en deze in 2012 en 2014 zelfs gewonnen! Daarnaast zijn ze ook al meerdere malen Europees kampioen geworden. De AMIGO is de zorgrobot van Tech United en AMIGO staat voor Autonomous Mate for IntelliGent Operations. Hij is anderhalve meter hoog en heeft twee armen en beweegt zich voort op een platform met wieltjes. Met zijn armen kan hij veel menselijke taken uitvoeren, zoals iets uit de keuken halen. Om zich goed te oriënteren in de huiselijke omgeving kijkt Amigo met de kinect van de Xbox, hiermee kan hij 3D zien. Robots als Amigo moeten ouderen in staat stellen om langer zelfstandig te blijven wonen. De TUlip is de humanoid robot van Tech United, deze robot doet mee aan de RoboCup Soccer League, net als de TURTLEs. TUlip is een humanoid robot en kan dus op twee benen kan lopen. Als metr al een site die ik u zeker aan kan raden, kijk op: http://www.techunited.nl/nl/home

Oorsprong van de robot

De oorsprong van de moderne robots liggen al redelijk ver terug in de tijd, het eerst werd van een robot gesproken rond 1933 door de Tsjechische schrijver Karel Capek. Hij gebruikte het in een titel voor zijn toneelstuk R.U.R. (Rossum’s Universele Robots). Het woord robot was afgeleid van het Tsjechische woord robota wat staat voor “werk / verplichte arbeid”. Het ontstaan van de robot is niet duidelijk aan te wijzen, al vanaf de 4de eeuw voor Christus werden er al machines uitgevonden maar deze waren meestal voor amusement bedoeld. In het begin werden deze toestellen aangedreven door stromend water, stoom of springveren, na de uitvinding van de elektriciteit werd dit meestal als energiebron gebruikt. Na de uitvinden van de elektriciteit werden robots al snel gebruikt als efficiënte en krachtige hulp van de mens. De mogelijkheden en taken van robots bleven toenemen eb tegenwoordig worden ze ook vaak ingezet voor precisiewerk, gevaarlijk werk en werken in mensonvriendelijke omstandigheden. Bekende voorbeelden zijn de lasrobot in de industrie, robots voor het onschadelijk maken van bommen en spuitrobots die met gevaarlijke stoffen werken. Deze robots zijn nu onmisbaar voor veel industrieën bijvoorbeeld de productie van auto’s. Maar ook in ziekenhuizen en huishoudens komen robots steeds vaker voor. In ziekenhuizen worden tegenwoordig robots gebruikt als chirurgisch gereedschap en in huishoudens voeren robots taken uit als grasmaaien en stofzuigen. Ook worden er al robots ontwikkeld om zorgtaken voor zieken, gehandicapten en kinderen over te kunnen nemen en in alle sectoren van onze samenleving zal de rol van robots en hun taken alleen maar toenemen.

Robowiki site

Dit is de pagina van RobotMC, de club van ROBOTica en Micro Controller enthousiastelingen. Elk hobbyproject dat iets elektronisch, digitaal of computer in zich heeft, is welkom. Het kan gaan om een zelfbouw project, gekochte kits, kant-en klaar robots, LEGO Mindstorms enz..
Lees meer...

Ben Heck show

Een wekelijkse show over elektronica waarbij op grappige wijze hele mooie dingen gemaakt worden en je leuke ideeën opdoet voor leuke moderne elektronica projecten. De presentatie is Engelstalig maar naast erg grappig ook heel leerzaam, een echte aanrader, de ben Heck show.
Lees meer...
 

Robotica boeken

boek bestellen Robot - De machines van de toekomst. Van robotstofzuiger tot bestuurbare robots. In deze vrij lijvige, rijk geïllustreerde gids wordt gedetailleerd beschreven wat robots voor ons betekenen en nog gaan betekenen. Je komt te weten hoe ze werken, kijken, bewegen en denken. In zes hoofdstukken is er aandacht voor o.a. robots in huis, op het werk, extreme robots en robothelden. Op vrijwel elke spread komt een soort robot of aanverwant thema aan bod zoals kunstmatige intelligentie en online programmeren. Bij een korte inleidende tekst staan enkele ongekaderde kleurenfoto's en ook speelse graphics, begeleid door korte weetjes met titelkopjes. Een enorme hoeveelheid interessante informatie passeert de revue, er is ook een uitgebreid register. De lay-out is kleurrijk, elke paragraaf staat op een gekleurde achtergrond, maar wat onrustig, het is vrij lastig om hoofd- en bijzaken te onderscheiden. Voor de echte doorzetter en in robots geïnteresseerde valt er echter genoeg te ontdekken.

boek bestellen Voor Dummies - Robots bouwen voor kids. Hoe kun je beter iets leren dan door het zelf te doen? Met Robots bouwen voor kids voor Dummies leert je kind op de leukste manier robots te maken: hij bouwt ze helemaal zelf! Het boek bevat vier coole projecten waarin je kind van alledaagse artikelen en oud speelgoed zijn eigen robots bouwt. Ze leren je kind de basis van robotica met eenvoudige en makkelijk te volgen opdrachtjes. De levendige, kleurrijke afbeeldingen zorgen ervoor dat hij zijn ogen niet van het boek kan afhouden wanneer hij aan zijn project werkt. Als jouw kind graag knutselt, zal hij veel plezier beleven aan het ontwikkelen van zijn creatieve vaardigheden met Robots bouwen voor kids voor Dummies.

boek bestellen Robots zelf construeren - tips en trucs voor de zelfbouwer. 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.

Last update: 18-06-2019

Disclaimer: Hoewel de heer Pragt de informatie beschikbaar op deze site met grote zorg samenstelt, sluit hij alle aansprakelijkheid uit. Op de artikelen van de heer Pragt rust auteursrecht, overname van tekst en afbeeldingen is uitsluitend toegestaan na voorafgaande schriftelijke toestemming. Heinpragt.com is ingeschreven bij de KvK onder nummer: 73839426 en is gevestigd in Veenendaal.  Lees hier de privacyverklaring van deze site. Voor informatie over adverteren op deze site kunt u contact opnemen met: (mail@heinpragt.com).