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.

Retrospective 1.1

Leerstrategie

Wat was je aanpak om nieuwe dingen te leren en wat was het resultaat? Wat kan beter of anders?

Ik heb al redelijk verstand van adafruit en aansluitingen daarvan. Ik heb hierdoor expres gekozen om een stepmotor aan de praat te krijgen met de Arduino uno. Ik had hier nog geen ervaring mee en ben hierdoor meer te weten gekomen over hoe de motor in elkaar zit en hoe hij aangestuurd wordt. Ongeacht dat ik deze motor uiteindelijk niet heb gebruikt in mijn robot, heb ik er wel veel van geleerd.

Reflecteren

Je hebt op je Blog gereflecteerd op het werk dat je tijdens deze sprint uitgevoerd hebt, waardoor jouw ontwikkeling inzichtelijk geworden is.

Ik denk dat in zo een korte tijd lastig is om eerlijk te zijn over je persoonlijke ontwikkeling. Ik heb eerlijk gezegd niet veel nieuws geleerd in vergelijking met hoe groot dit project kan zijn. Ik denk dat ik grotendeels door te kort aan tijd komt. Ik had vrij weinig tijd omdat ik twee dagen had om mijn project op te leveren en ik besteedde voornamelijk veel tijd aan het helpen van mijn medestudenten. Ik ben overigens wel blij met het eindresultaat.

Motivatie

Wat was je rol in het team, hoe heb je dat ingevuld en hoe heeft dit jouw leren beïnvloed?

In het team was ik naar mijn idee een aanspreekpunt om mensen te helpen. Ik heb hierdoor geleerd om beter uit te leggen en ruim te denken. Ongeacht dat ik dacht dat ik een aanspreekpunt was voor mijn team merkte ik dat ik uiteindelijk meer mensen buiten mijn team begon te helpen. Ik vond het lastig om me te blijven focussen op het helpen van mijn teamgenoten.

Content

DE INHOUD HIERONDER IS GEBASEERD OP CLE1 SPRINT 3 2018. HIERONDER IS DE LINK VAN DE BIJBEHORENDE WEBSITE TE ZIEN.

Vuurvechter9000™

Afstemming & doelgroep

Wat past bij dit product en bij deze doelgroep? Goede content verrijkt de ervaring van het product. Je laat zien dat je daarover bewust hebt nagedacht. Je laat zien dat je je doelgroep kent en dat je je content op je gebruikers hebt afgestemd.

Ik heb in sprint 3 van CLE 1, samen met mijn team een product gemaakt dat voor kinderen tussen de 6 en 9 bestemd is. Dit is een fysiek spel. De bedoeling is om een uit hout gesneden gebouw te blussen binnen de tijd. In een aantal ramen branden rode LED lampjes. Deze staan voor het vuur dat er brandt. Zodra de speler met een laser (brandweerslang) op het lampje schijnt, verandert deze van rood naar blauw. Dit houdt in dat de brand is geblust. Als de speler het voor elkaar krijgt om de brand te blussen voor de tijd om is heeft hij/zij het spel gehaald.

Voor dit product heb ik een one pager gemaakt, die bestemd is voor de gebruikers van het product, de kinderen dus. Aangezien tegenwoordig al veel jonge kinderen goed om kunnen gaan met technologie heb ik er voor gekozen om de website volledig te laten focussen op de kinderen en niet per se op de ouders. Kinderen in de leeftijdsklasse van 6 tot 9 kunnen al lezen. Ze kennen echter niet al te ingewikkelde woorden. Ik heb daarom rekening gehouden met het taalgebruik.

Om er zeker van te zijn dat ik de goede doelgroep voor ogen heb, heb ik ervoor gekozen om een persona te maken. Dit is handig zodat ik tijdens het ontwerpen van de one pager, een referentiepunt heb. Ik kan hierdoor alles wat ik opschrijf en maak afstemmen op die persona. Deze persona die ik gemaakt heb, is gebaseerd op mijn buurmeisje die zich in deze leeftijdsklasse bevindt. Hieronder is deze te zien.
Persona

Visuals

De visuals (kleuren, lettertypen, beelden, infographics) die je gebruikt vormen samen met de tekst een geheel.

Het lettertype van de teksten is relatief groot vergeleken met andere websites. Dit doe ik zodat het voor de gebruiker makkelijker is om te lezen. De onderdelen van het product worden uitgelegd in tekst en ondersteund met afbeeldingen. Zo kan de gebruiker zien waar het over gaat zonder de tekst te hoeven lezen.

Helder & STRUCTUUR

Je content is helder en toegankelijk. Je teksten zijn in duidelijke taal geschreven. Dat mag in het Nederlands of in het Engels. Let erop dat je tekst geen type- en taalfouten bevat. Om je content voor gebruikers zo toegankelijk mogelijk te maken gebruik je een heldere structuur. Koppen, tussenkopjes, witregels en signaalwoorden helpen daarbij.

Als kinderen in groep 3 zitten, leren ze al lezen en schrijven. Veel kinderen vinden dit ook leuk. Echter ligt het concentratie niveau van kinderen niet hoog. Ik heb er daarom gekozen voor een kleine introductie boven aan de pagina. De bedoeling hiervan is om het kind enthousiast te maken over het product. Ik doe dit in duidelijke taal, zodat elk kind die kan lezen het begrijpt.

Later op de pagina zie je drie blokken met verschillende afbeeldingen. Hier leg ik uit hoe het product werkt. Als kind kan je dit makkelijk volgen door de plaatjes te volgen. je weet hierna dat het om het blussen van brand gaat.

Vervolgens heb ik ervoor gekozen om een demo te maken van het spel. Dit heb ik meteen gebruikt voor mijn front end block. Het spel wordt nogmaals kort uitgelegd en door op start te klikken kan je het spel meteen spelen. Om het voor de gebruiker duidelijk te maken dat je de brand aan het blussen bent, heb ik ervoor gekozen om de muis te veranderen in een brandblusser op het moment dat je op start klikt. Daarnaast verdwijnen de vlammen ook op het moment dat je er op klikt.

Verder lijken er geen spelfouten in de teksten te staan aangezien ik deze heb laten nakijken door mezelf en anderen.