Iron man

DE INHOUD HIERONDER IS GEBASEERD OP CLE3 2018. ik kreeg de opdracht om een maquette te maken met de bijbehorde bedrading.
  • Hardware programmeren
    Ik kan een microcontroller programmeren, zodanig dat hiermee een interactief project aangestuurd kan worden. De microcontroller kan inputs inlezen en outputs aansturen. Het project heeft geen beeldscherm nodig om te functioneren.

In CLE 3 2018, kreeg ik samen met mijn team de opdracht om een park in Rotterdam aantrekkelijker. Dit moesten we doen door een webapplicatie te maken die verbonden was met een API en het interactieve object in het park. Ik kreeg de taak om de elektronica aan te sluiten en de maquette te bouwen.

Eerst hield ik me bezig met het werkend krijgen van de elektronica zodat ik ongeveer weet hoe veel ruimte ik daarvoor nodig heb voor in de maquette. Het idee was namelijk om de bedrading te verbergen onder de maquette zodat het eindproduct er goed uit ziet. Meer over dit in het volgende onderdeel.

Na de bedrading besloot ik om meteen verder te gaan met het programmeren. Ik wilde graag een luidspreker aansluiten op de arduino zodat ik verschillende tonen kan afspelen bij bepaalde knoppen die ik indruk. Ik had nog geen ervaring met het aansturen van een luidspreker dus zocht ik het een en ander op. Door verschillende tutorials met elkaar te combineren kwam ik na een lange tijd uit op de code die hieronder te zien is. Bij elke stap laat ik met behulp van comments zien wat ik aan het doen ben. Dit maakt het overzichtelijker voor mezelf en voor anderen.

//Hieronder definieer ik de waardes van elke toonsoort
#define T_C 262 #define T_D 294 #define T_E 330 #define T_F 349 #define T_G 392 #define T_A 440 #define T_B 493
//Hier laat ik zien welke toon (knopje) bij welke pin hoort const int C = 10; const int D = 9; const int E = 8; const int F = 7; const int G = 6; const int A = 5; const int B = 4;
//Hieronder definieer ik de luidspreker en de lampjes const int Buzz = 11; const int Red = 13; const int Blue = 3; const int Green = 2;
//Ik laat weten wat een INPUT en OUTPUT is void setup() { pinMode(Red, OUTPUT); pinMode(Blue, OUTPUT); pinMode(Green, OUTPUT); pinMode(C, INPUT); digitalWrite(C,HIGH); pinMode(D, INPUT); digitalWrite(D,HIGH); pinMode(E, INPUT); digitalWrite(E,HIGH); pinMode(F, INPUT); digitalWrite(F,HIGH); pinMode(G, INPUT); digitalWrite(G,HIGH); pinMode(A, INPUT); digitalWrite(A,HIGH); pinMode(B, INPUT); digitalWrite(B,HIGH); }
//Hieronder staat de code die ervoor zorgt dat de luidspreker een bepaalde
//toon geeft bij een specifieke knop
//Als er geen knop wordt ingedrukt gaat de luidspreker niet af
//Aangezien de volgende code in een loop staat, kijkt hij constant of er //een knopje ingedrukt wordt. void loop() { while(digitalRead(C) == LOW) { tone(Buzz,T_C); digitalWrite(Red,HIGH); delay(500); digitalWrite(Red,LOW); } { tone(Buzz,T_D); digitalWrite(Yellow,HIGH); delay(500); digitalWrite(Yellow,LOW); } while(digitalRead(E) == LOW) { tone(Buzz,T_E); digitalWrite(Green,HIGH); delay(500); digitalWrite(Green, LOW); } while(digitalRead(F) == LOW) { tone(Buzz,T_F); digitalWrite(Blue,HIGH); delay(500); digitalWrite(Blue, LOW); } while(digitalRead(G) == LOW) { tone(Buzz,T_G); digitalWrite(Red,HIGH); delay(500); digitalWrite(Red,LOW); } while(digitalRead(A) == LOW) { tone(Buzz,T_A); digitalWrite(Yellow,HIGH); delay(500); digitalWrite(Yellow,LOW); } while(digitalRead(B) == LOW) { tone(Buzz,T_B); digitalWrite(Green,HIGH); delay(500); digitalWrite(Green, LOW); } while(digitalRead(C) == LOW) { tone(Buzz,T_C); digitalWrite(BlueHIGH); delay(500); digitalWrite(Blue,LOW); } noTone(Buzz); }

Ik heb naast deze code ook een andere geschreven die tonen gaf, afgestemd op de afstand. In het volgende deel lees je hier meer over. Hieronder is de code te zien.

#define T_C 262
#define T_D 294
#define T_E 330
#define T_F 349
#define T_G 392
#define T_A 440
#define T_B 493

#define trigPin 13
#define echoPin 12

#define Buzz 11

#define red 7
#define green 6
#define blue 5

void setup(){
Serial.begin (9600);

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);

pinMode(Buzz, OUTPUT);

pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
}

void loop(){
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration/2) / 29.1;

if (distance < 10){
tone(Buzz,T_C);
}
else if (distance < 15){
tone(Buzz,T_D);
}
else if (distance < 20){
tone(Buzz,T_E);
}
else if (distance < 25){
tone(Buzz,T_F);
}
else if (distance < 30){
tone(Buzz,T_G);
}
else if (distance < 35){
tone(Buzz,T_A);
}
else if (distance < 40){
tone(Buzz,T_B);
}
else if (distance > 45){
noTone(Buzz);
}

Serial.print(distance);
Serial.println(" cm");
delay(100);
}
  • Externe electronica aansluiten
    Ik kan externe electronica aansluiten op de microcontroller zodanig dat dit extra functionaliteit toevoegt. Denk hierbij aan sensoren en knoppen voor input, en lampjes, servo motor en geluid voor output.

Zoals eerder al verteld, heb ik in CLE 3 2018, heb ik een externe luidspreker aangesloten op de arduino. Dit heb ik zo gedaan dat zodra je op een extern knopje drukt, er een bepaalde toon klinkt. Elk knopje geeft een andere toon waardoor je een piano effect krijgt.
Ik heb dit weer gemaakt zodat ik bewijs materiaal kan leveren, maar ik vond dit te makkelijk. Ik wilden een stapje verder gaan met het maken van ‘Piano’. Ik heb daarom door middel van een afstandsensor een piano gemaakt in plaats van met knopjes. Tussen bepaalde waardes klinkt er toon. Vervolgens heb ik op de plek van de tonen, de bijbehorende tonen opgeschreven zodat het makkelijker is om te bepalen vanaf waar welke toon klinkt. Hieronder zie je een video van hoe het werkt.

Ik heb hiervoor het volgende gebruikt:

– Ultrasonic sensor
– Breadboard
– Arduino Genuino Uno
– Kabels
– Luidspreker
– Papier
– Pen

  • Bruikbaar product
    Ik kan een omhuizing voor het eindproduct ontwerpen waarbij bedrading en gevoelige electronica verborgen is, zodanig dat het eindproduct bruikbaar is voor een eindgebruiker zonder dat het meteen kapot gaat.

    Na het park te hebben bezocht, heb ik via Fusion 360 deze schets weten te maken van het park:

Doordat ik het ontwerp via Fusion 360 heb gemaakt, kon ik het gemakkelijk exporteren naar Illustrator. Aangezien de lasersnijders in het stadslab werken met Illustrator kon ik meteen de maquette uitsnijden.

Toen de maquette eenmaal uitgesneden was en in elkaar is gezet besloot ik dat het er mooier uit zou zien als ik hem zou verven. Dit heb ik dan ook gedaan. De looppaden van het park had ik een eerste instantie blauw gemaakt, omdat ik geen zwarte of grijze verf kon vinden. Later heb ik toch zwarte verf gehaald omdat de paden nu meer leken op water dat op voetpaden. Het gras van het park heb ik nagemaakt met kleine grasperkjes die te halen waren in een maquette winkeltje. Vervolgens heb ik ook een paar boompjes neergezet op de plekken waar ze ook in het park staan. Hieronder is het eindresultaat te zien met de elektronica aangesloten:

Omdat deze maquette bedoeld is voor het aanliggende buurthuis om het park te verbeteren, heb ik het er samen met mijn team over gehad om de linkerkant van de tegels half open te laten. Dit deed ik zodat de mensen die hier uiteindelijk iets mee gaan doen, weten hoe het in elkaar zit. Het rechter deel is wel geheel functioneel met geluid en licht.



Ik heb door middel van een lijmpistool en een dwarsbalk aan de onder kant ervoor gezorgd dat de knopjes niet eruit vallen als je ze hard indrukt. De bedrading heb ik, zoals ik al eerder gemeld heb, in de maquette verborgen. Aan de linker kant van de maquette heb ik vervolgens een gat gemaakt met een boortool zodat de maquette van stroom voorzien kan worden.

Leave a Reply

Your email address will not be published. Required fields are marked *