Introduction: Plinko-style Bieropener

Bij mijn ouders thuis waar ik woon, heb ik een eigen hok/schuur waar vrienden en ik af en toe een biertje drinken. Nu spaart een vriendin bier dopjes voor goede doelen: Geleide Hond & Kika Kankerfonds. Hoe ik nu mijn bier dopjes spaar, is in een zak ergens in een hoek, verstopt en niet echt duidelijk, dus veel mensen gooien vaak de bierdopjes gewoon weg, dat vind ik zonde.


Mijn idee voor dit project is om mensen te motiveren om de bierdopjes te bewaren. Dit wil ik doen door een minigame te maken van een bieropener waarbij het bier dopje langs pinnen valt in een van de zoveel slots (denk aan het spel Plinko) en waarna alle bier dopjes in een bak/zak onderaan verzameld worden.

Ook was mijn idee om nog een teller toe te voegen die telt hoeveel bier er al is opengemaakt. Helaas is dit mij niet gelukt, maar dit zou in principe makkelijk toegevoegd kunnen worden.

 

Het belangrijkste wat ik wil meten is in welk vak het dopje valt. Hier heb ik een paar sensors voor nodig die snel kunnen meten of er een dopje doorheen valt, het dopje blijft namelijk niet liggen, maar valt in een bak/zak. In welk vak het dopje dan valt, wil ik laten zien met een lichtje wat een paar seconde blijft branden en misschien een geluidje.

Supplies

Elektronische onderdelen

  • 1x Arduino Uno
  • DePont Jumperdraad 10cm - Basis
  • 3x M-F (zwart)
  • 6x M-M (zwart)
  • DePont Jumperdraad 10cm - PER (2 lichtjes & 1 sensor)
  • 12x M-F (Kleur)
  • 3x Resistor 1 kΩ
  • 5x Rode LED - 3mm Diffuus
  • 5x Blauwe LED - 3mm Diffuus
  • 5x GL5528 LDR lichtgevoelige weerstand
  • 1x 12V 2A Adapter met DC jack
  • 1x USB-A to USB-B Adapter (voor coderen via laptop)

Materiaal behuizing

  • 10x Hardboard (225 x 61 x 3 mm)
  • 1x MDF (1220 x 610 x 90 mm)
  • 1x Plexiglas (345 x 210 mm)
  • LET OP: Plexiglas is lastig te snijden, probeer de juiste afmetingen te vinden
  • 2x Kunststof Hoekprofiel (300 x 300 x 345 mm)
  • 41x Spijkers (1,6 x 25 mm)
  • 4x Schroeven (15 x 4 mm)
  • 1x Klittenband (bijsnijden nodig)
  • Tape

Gereedschap

  • Boor
  • Schuurpapier
  • Decodeermachine
  • IJzerzaag
  • Schuurmachine
  • Optioneel; zorgt voor mooiere afwerking
  • Houtlijm
  • Mesje
  • Meetlat

Step 1: Experimenteren

Op het begin ben ik gaan kijken wat ik precies kan doen met de Arduino. Ik ben gaan experimenteren met hoe ik 2 LEDs naast elkaar kan besturen en kwam al snel uit op het idee van de plinko. Ik merkte al snel dat ik te weinig componenten had en niet genoeg codeer ervaring om met dit project iets goed werkends te maken.

Step 2: Coderen

Omdat ik zelf weinig tot geen ervaring heb met coderen, heb ik een vriend gevraagd om mij hier bij te helpen. Ik heb aan hem gevraagd wat ik ongeveer nodig had en heb dat besteld. Nadat alle componenten binnen waren zijn wij samen gaan kijken hoe ik dit precies werkend kan laten krijgen.

Eerst zijn we gaan kijken naar hoe de lichtsensor ging werken. Hier hebben we nog een behuizing voor gemaakt zodat we dit makkelijker konden testen. Uiteindelijk is dit de code geworden:

#define VAL_COUNT 25
#define THRESHOLD 40
#define SENSOR_COUNT 1
#define BLINK_COUNT 8
#define BLINK_DELAY 100

int pins[] = {A0, A1, A2, A3, A4};
int lights[] = {2, 3, 4, 5, 6};
int values[SENSOR_COUNT][VAL_COUNT];
int current_index = 0;

void setup() {
 for (int led = 0; led < SENSOR_COUNT; led++) {
   pinMode(lights[led], OUTPUT);
 }

 for (int sens = 0; sens < SENSOR_COUNT; sens++)
 {
   for(int i = 0; i < VAL_COUNT; i++) {
     values[sens][i] = analogRead(A0);
   }
 }
 Serial.begin(9600);
}

void loop() {
 for (int sensorIndex = 0; sensorIndex < SENSOR_COUNT; sensorIndex++)
 {
   int sensor_value = analogRead(pins[sensorIndex]);
   if (abs(sensor_value - get_average(sensorIndex)) >= THRESHOLD) {
     on_cap_detect(sensorIndex);
   }

   values[sensorIndex][current_index] = sensor_value;
   Serial.println("sensor "+ String(sensorIndex + 1) +": " + String(sensor_value));
 }
 current_index = (current_index + 1) % VAL_COUNT;
}

int get_average(int sensorIndex) {
 int sum = 0;
 for(int i = 0; i < VAL_COUNT; i++) {
   sum += values[sensorIndex][i];
 }
 return sum / VAL_COUNT;
}

void on_cap_detect(int detectedPin) {
 Serial.println("detected cap! on pin: " + String(detectedPin + 1));
 for(int i = 0; i < BLINK_COUNT * 2; i++) {
   digitalWrite(lights[detectedPin], HIGH);
   delay(BLINK_DELAY);
   digitalWrite(lights[detectedPin], LOW);
   delay(BLINK_DELAY);
 }
}

In de code zijn 10 lichtjes en 5 sensors aangesloten. Zodra en een bierdopje langs het licht valt, blokkeert het bierdopje licht en vangt de lichtsensor minder licht op. Als deze value ineens meer dan een bepaalde hoeveelheid (40) minder is, dan stuurt de Arduino een signaal naar een LEDs wat 8 keer knippert.

Dit kopieer ik dan voor elk LEDs en sensor, maar voor nu hou ik het bij 1 sensor en 2 LEDs. Het aansluiten doe ik pas op het eind.

Step 3: Tinkercad Circuit

Nadat ik alles fysiek ontworpen had, ben ik begonnen aan het digitaal maken. Hierbij kan ik makkelijk terugkijken als ik fysieke fouten had gemaakt of als ik het ontwerp wil kopiëren.

Step 4: Afmetingen

Voordat ik begon met het maken van de behuizing ben ik gaan kijken naar wat er precies nodig is en welke afmetingen alles moet hebben. Ik heb in ieder geval vaak alle afmetingen nagegaan en zelfs dan zijn er nog veel aanpassingen geweest nadat ik iets fysieks heb gemaakt. Zelf had ik ook niet verwacht dat alles goed ging lopen, maar een basis qua afmetingen was wel heel handig en heeft me veel geholpen.

Step 5: 3D Model

Nadat is de meeste grote afmetingen had, ben ik begonnen aan het ontwerpen van een 3D-model in Tinkercad. Hierbij komen de meeste grote afmetingen te pas zodat ik redelijk goed weet wat mijn uitgangspunt moest zijn. Details zoals de meeste gaten, draden, de hoekplank, de voorplank en aanpassingen die ik later heb gemaakt zijn hier niet bij toegevoegd.

Step 6: Extra Testen

Ik ben gaan testen hoe bierdopjes echt zouden vallen tussen spijkers en ik ben gaan kijken hoe ik de latjes kan plaatsen tussen het onderste gedeelte. Dit was namelijk een stuk makkelijker dan individueel alle tussenstukjes zagen.

Step 7: Behuizing Achterplank

Nodig:

  • 1x MDF - 205 x 445 mm
  • 6x Hardboard - 100 x 28 mm

Ik ben begonnen met het snijden van de houten plank wat de achterkant wordt van de plinko. Hier worden de spijkers en andere delen op gemonteerd. Ik ben hierbij begonnen met spleetjes te maken wat de divider wordt waar de bierdopjes tussen vallen.

De spleetjes moeten 100 mm lang worden en moeten deze afstanden tussen elkaar hebben (in mm):

15 - 50 - 85 - 120 - 155 - 190

En moeten 18 mm uitsteken. Doordat ze niet vast zitten is 16-18 mm ook goed sinds je ze kan verschuiven naar voren.

Step 8: Behuizing Voorplank

Nodig:

  • 1x MDF - 225 x 100 mm

Deze plank is iets wijder dan de achterplank, hierdoor kunnen de zijplanken er achter worden geplaatst en wordt de algemene behuizing stabieler. Hier worden later nog de gaten voor de lichtsensors in geïnstalleerd.

Step 9: Spijkers

Nodig:

  • 41x Spijkers

Door veel te testen hoe de bierdopjes er precies langsvielen ben ik uiteindelijk op de afstanden gekomen die je op de schets kan zien. 60 mm afstand boven elkaar en 45 mm afstand naast elkaar met totaal 10 afwisselende rijen. De spijkers moeten 18 mm uitsteken, dit is makkelijker te doen als de zijplanken er ook op zitten dus laat ze iets meer uitsteken.

De spijkers moesten namelijk niet een te kleine afstand hebben want dan zou het bierdopje er niet meer tussen kunnen vallen. Maar als de afstand te groot was dan zou het bierdopje altijd maar 1 route kiezen in plaats van een random kant op vallen.

Step 10: Kapot Zijstuk

Helaas kan niet alles goed gaan met projecten zoals dit, hier is de zijplank kapot gegaan omdat ik hier een gat ik wou boren. Uiteindelijk is dit maar beter geweest, zowel voor stabiliteit als het makkelijk kabels er doorheen trekken.

Ik heb het opgelost door ze met houtlijm vast te maken.

Step 11: Zijplanken

Nodig:

  • 2x MDF - 445 x 80-85 mm

Hier ben ik begonnen met het monteren van de zijplanken. Ik heb ze extra diep gemaakt zodat ik achter de hoofdplank makkelijk de Arduino met breadboards en kabels kan plaatsen. De zijplanken steken evenveel uit aan de voorkant als het hardboard (18 mm). Achter moeten ze minimaal 80 mm uitsteken, zodat er genoeg ruimte is voor de jumperdraaden.

Step 12: Richtplankjes

Nodig:

  • 10x Hardboard - 18 x 25 mm

Voordat ik de zijplanken heb gemonteerd, heb ik eerst opgemeten hoe groot de richtplankjes moeten zijn. De reden dat dit geen spijkers zijn is, omdat in verband met de afmetingen, er bierdopjes vast zouden kunnen te komen zitten.

De richtplankjes zitten met de onderkant precies op dezelfde afstand als de spijkers. Er moeten 5 links en 5 rechts worden geplaatst, ook dit is gemonteerd met houtlijm.

Step 13: Tussenresultaat

Als je mee aan het bouwen bent ziet het er als het goed is zo uit!

Step 14: Afwerking Top

Nodig:

  • 1x MDF - 205 x 40 mm
  • 1x Hardboard - 205 x 50 mm

Om de bovenkant mooi af te werken en te zorgen dat de bierdopjes er goed in vallen heb ik 1 plat deel (het MDF) en een schuin deel (het Hardboard). Dit is gewoon heel simpel goed lijmen met hout nadat de zijkanten goed gedroogd zijn. Zorg er ook voor dat de planken niet de klein zijn, dan zijn ze te kort om er nog tussen in gelijmd te worden, dit is mij namelijk overkomen de eerste keer dat ik het hout had gezaagd.

Step 15: Gaten Voorplank

Nu was het tijd om de gaten waar de sensors in komen te staan te gaan boren in de voorplank. De middelste rij van gaten zijn 6 mm breed zodat er makkelijk de lichtsensor doorheen past en heeft deze afstand:

15 - 42 - 77 - 115 - 148 - 184 - 210 mm

De gaten aan de zijkanten zitten op 15 mm afstand van de rand en beide van de gaten onder en boven de rij maakt niet uit hoe hoog hij zit, dit is ook bedoeld voor de bekabeling.

LET OP: Maak de gaten voor de kabels aan de zijkanten niet te klein, de kabels moeten er doorheen passen.

Step 16: Breadboard & Bedrading

Nodig:

  • 1x Breadboard
  • 12x M-F Jumperdraad 10cm
  • 2x M-M Jumperdraad 10cm
  • Tape

Pas toen ik de zijplaten had vastgemaakt kwam ik er achter dat ik nog geen gaten had gemaakt in de tussenplanken. Ik heb met behulp van wat MDF steunplaten er nog goed gaten ik kunnen boren. De gaten zitten op dezelfde afstanden als bij de voorplank.

Nadat alle gaten in de MDF-platen zaten ben ik begonnen met het plaatsen van het breadboard samen met de LEDs en de lichtsensors. De breadboard kon ik gewoon makkelijk vastplakken via de achterkant en de LEDs en de lichtsensors heb ik vastgeplakt met tape.

Ook heb ik aan beide kanten van het breadboard de + met de + verbonden en de - met de - verbonden zodat het niet uitmaakt aan welke kant je de kabels stopt.

Kijk nogmaals naar mijn Circuit ontwerp (hier ook toegevoegd) zodat je goed alle kabels met elkaar verbindt. Als je dit juist volgt en toepast in het ontwerp, dan werkt het.

Step 17: Arduino Plaatsen

Nodig:

  • 1x Arduino Uno
  • 3x M-F Jumperdraad 10cm
  • 4x M-M Jumperdraad 10cm

Voor de Arduino wou ik iets maken, zodat het er makkelijk te verwijderen is. Schroeven zouden niet werken omdat ze dan aan de andere kant (voorkant) er uit zouden steken, dus ik ben uitgekomen om 2 plankjes te plaatsen die de Arduino goed in zijn plaats houden. Maar voor dat ik dit deed, moest ik eerst 2 gaten maken waar de 12V- en de USB-kabels doorheen konden.

Na ik dit af had, heb ik de rest van alle jumperdraden toegevoegd.

Step 18: Plexiglas

Nodig:

  • 1x Plexiglas - 345 x 210 mm (zorg dat je de juiste maat kan vinden)

En nu het kutste deel van heel dit project: het plexiglas snijden

Ik had een grote plaat plexiglas gekocht (1000 x 500 mm) dus dit moest gesneden worden. Ik ben begonnen om dit te doen met een mesje, maar na een uur lang dit gedaan te hebben en er gewoon niet doorheen komen besloot ik het met de decodeermachine te doen. Dit was een stuk makkelijker, maar toen ik bijna klaar was zag ik dat er een enorme kras op de plaat zat dus kon ik weer opnieuw beginnen.

Eenmaal opnieuw te zijn begonnen ben ik wéér drie kwartier bezig geweest met het volgende stuk snijden, toen heb ik met al mijn kracht de plaat proberen te breken waar de snijlijn zat en dat is (thank god) gelukt. Hier moest helaas nog een deel af, maar ik was helemaal klaar met het snijden hiervan, dus heb ik besloten om een deel af te plakken met tape en oude kleren en ben ik verder gegaan met de decodeermachine.

Eindelijk was het gelukt, ik heb hierbij nog veel zitten schuren met de schuurmachine om het nog mooi af te ronden, maar ik ben blij met het resultaat.

Step 19: Voorplaat Afronding

Nodig:

  • 1x Hardboard - 225 x 100 mm
  • 2x Hardboard - 100 x 10 mm
  • 1x Hardboard - 150 x 10 mm
  • 2x klittenband - 25 x 20 mm

Om de voorkant mooi af te ronden zodat je de kabels niet ziet, heb ik een hardboard plaatje gepakt en die op de juiste maat gesneden. Om te zorgen dat dit plaatje goed blijft zitten heb ik klittenband gebruikt. Mijn idee eerst was om scharnieren te gebruiken, maar die hadden we thuis niet liggen en toen kwam ik klittenband tegen, dit is achteraf een veel betere optie geweest voor mijn gevoel.

Om te zorgen dat het ook aan de zijkant er mooi uit ziet, heb ik 3 hardboard plaatjes geplaatst die de ruimte opvullen zowel aan de zijkanten als aan de bovenkant.

Boor dan nog 5 gaatjes waar de lichtjes uit komen als er een bierdopje langs de sensor valt. Dit is op dezelfde afstand als bij de tussenplaat (min degene aan de zijkanten):

42 - 77 - 115 - 148 - 184 mm

De gaatjes zijn 4 mm breed.

Step 20:

Nodig:

  • 2x Kunststof Hoekprofiel - 30 x 30 x 345 mm
  • 4x Schroeven - 15 x 4 mm

Omdat je minimaal 20 mm van het plexiglas kon boren wat niet mogelijk is, omdat de zijplanken maar 9 mm zijn, heb ik op het einde pas besloten om een hoekprofiel te gebruiken gemaakt van kunststof. Zo kan het plexiglas er makkelijk in en uit worden geschoven en ziet het er, voor mijn gevoel, een stuk afgewerkter uit.

De schroeven heb ik geboord nét onder de richtplankjes zodat je ze zeker weten niet kan zien. 1 onder het onderste richtplankje en 1 onder het bovenste richtplankje. Zorg dat je dit voorboort zodat de schroeven er zo in passen.

Step 21: Conclusie

Dit was de eerste keer dat ik ooit met een Arduino of bouwplaten heb gewerkt en ik ben heel erg blij met het eindresultaat. Ik vind het goed afgewerkt, al gingen sommige dingen nog niet helemaal soepel, maar gelukkig heb ik dat allemaal goed op kunnen lossen.

Ik heb veel geleerd en ga met deze informatie na de vakantie zeker weten verder aan werken. Niet alleen omdat dit naast een project voor school is, maar ook een project voor mijzelf, het hok en het goede doel!