R2D2

Kleine R2D2

Dit is een project om een kleine versie te maken van R2D2.  In de eerste fase heel simpel om te zorgen dat deze vooruit kan rijden en kan ‘zien’.

Maar in de volgende fase ook dat hij geluid kan maken en dat hij kan reageren op signalen en bewegingen.

 

DSC03954De basis is simpel. Het onderstel is gemaakt van een oude dvd speler Hierop zijn twee kleine motortjes bevestigd met tie wraps.

De plastic bus is van een oude voedselcontainer waarin twee gaatjes zijn geboord om de draadjes door te voeren van de motoren.

De draadjes zijn verbonden met het motor shield van de arduino (microcontroller)

Het motorschild zit om deze arduino en maakt het makkelijker om een aantal motoren aan de arduino te koppellen en aan te sturen.

DSC03957 Onder zie je de aansluiting voor de batterij. Ik maak gebruik van 8 AA batterijden wat uitkomt op 8x 1,2 V = 9,6 V Iets meer dan een gewone 9 V batterij (vierkant blokje) Maar de capaciteit, dus hoelang de batterijen meegaan, is veel langer. En ze zijn oplaadbaar.

 

 

 

DSC03956

 

Het achterwieltje is een zwenkwieltje van de IKEA wat ik nog in de kast vond.

 

 

De programmeercode werkt als volgt.

Sensor is een ultrasoon sensor.  Als deze niets ziet rijd hij vooruit. Ziet hij wel wat dan draait hij een wil vooruit en een wil achteruit (en draait hij dus)

Het ziet er als volgt uit.  Achter de // streepjes staat een toelichting. Dit wordt door het programma niet gezien.

Je ziet het eerste stuk worden de variabelen gedefinieerd. Daarna het begin van het programma (setup) en dan de herhaling (loop)

#include <AFMotor.h> //Zorg dat hij het motorschild ziet
#define trigPin A4 // Via deze aansluiting wordt informatie verstuurd voor de ultrasoon sensor
#define echoPin A5 // Hier wordt informaite ontvangen
AF_DCMotor motor1(1,MOTOR12_1KHZ); // zorg dat hij motor 1 en 2 kent
AF_DCMotor motor2(4, MOTOR12_1KHZ);

void setup() {
Serial.begin(9600); // begin serial communitication
Serial.println(“Motor test!”);
pinMode(trigPin, OUTPUT);// Stuur golven naar buiten
pinMode(echoPin, INPUT);// Ontvang golven
motor1.setSpeed(105); //zet de snelheid van de motoren 0-255
motor2.setSpeed (105);
}

void loop() {

long duration, distance; // start de ultrasoon scan
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // Wacht twee seconden.
digitalWrite(trigPin, HIGH);

delayMicroseconds(10); //Wacht 10 seconden
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;// Zet de afstand om in cm
if (distance < 25)/*Als de afstand kleiner is dan 25 cm doe het volgende: */ {
motor1.run(FORWARD); // Zolang de afstend minder is dan 25 cm draai dan. .
motor2.run (BACKWARD);

}
else {
delay (15);
motor1.run(BACKWARD); //Als er geen voorwerp in de buurt is dan ga voorwaards
motor2.run(BACKWARD); // Ik heb hier achterwaards van gemaakt aangezien de motoren precies omgedraait zijn bij mij. Eigenlijk rijd hij dus altijd achteruit volgens het programma.
}


Volgende stappen.

Geluidsmodule. Ik wil graag dat hij de typische R2D2 geluidjes kan maken.

Licht effecten. Toevoeging van blauwe lampjes die knipperen bij een bepaalde taak.

Kleurherkenning met een sensor. Verschillende opdrachten als hij een bepaalde kleur detecteert.

Volgcommando: Zorgen dat hij je altijd achtervolgd.

Reageren op je stem en geluid. Reageren als je bepaalde opdrachten geeft.