ITTT - Escape Room-esque (un)locking Mechanisms

by VincentDK in Circuits > Arduino

193 Views, 1 Favorites, 0 Comments

ITTT - Escape Room-esque (un)locking Mechanisms

schets.png

Het doel van dit project was om een paar kastjes te maken die open gaan als je een bepaalde unieke handeling doet, in dit geval een lade die open gaat als je een boek naar achteren trekt en een kist die van het slot gaat bij het omkeren van een zandloper.

Oorspronkelijk was het mijn plan om 3 kastjes te maken: eentje die open gaat met een boek, eentje die na een specifieke schaakzet opent en eentje met een draaiende poppenarm die het mechanisme activeert. Vooral de pop paste niet super goed binnen dit plaatje, en in combinatie met de pop zelf die enorm tegenwerkte bij het prototypen heb ik besloten om voor iets anders te kiezen dat je ook kan ronddraaien, namelijk een zandloper. Het was toen mijn intentie om met dezelfde tilt sensor te werken als die ik getracht had in de pop te stoppen, maar ik kwam er achter dat het simpelweg een beter systeem zou zijn als ik met een magneet/reed switch zou werken.

Na het maken van een aantal schetsen heb ik een papieren prototype van het circuit gemaakt. Daarna wilde ik me focussen op de behuizing die ik wilde gaan lasercutten, maar helaas ging daar nog even iets mis omdat ik een 4mm plaat materiaal had gekocht terwijl al mijn bestandjes van 3mm uitgingen, wat er helaas voor zorgde dat een heleboel onderdelen niet goed in elkaar pastten. Ik ben later nog eens terug gegaaan voor de 3mm versie en die werkte wel helemaal prima.

Supplies

Voor de la heb je de volgende onderdelen nodig:

  • Arduino Uno
  • 1 LDR
  • 1 Micro switch
  • 1 Mini servo
  • 9 rode 5mm LEDs (optioneel)
  • Veer
  • Genoeg kabels
  • Behuizing

Voor de kist heb je de volgende onderdelen nodig:

  • Arduino Uno
  • 2 Reed switches
  • 1 Mini servo
  • 1 Klein magneetje
  • Zandloper
  • Genoeg kabels
  • Behuizing


Ik wilde tijdens dit project kennismaken met de lasercutmachines die er op mijn schoolinstelling staan, en op aanraden van mijn docent heb ik de daarvoor benodigde bestanden gegenereerd via boxes.py. Voor de la heb ik de SlidingDrawer template gebruikt en voor de kist de PirateChest template. Allebei de bestanden heb ik in Inkscape aangepast zodat ze beter bij mijn ontwerp zouden passen. Zo hoeft de la geen handvat te hebben want je moet hem niet kunnen opentrekken, en de kist moet een gat hebben voor de servo. Ik wilde dat de gebruiker uit het ontwerp van de la moest kunnen opmaken met welk boek geinteracteerd moest worden, en daarom heb ik ook het logo dat op een van de boeken staat op de la gezet, en daar een aantal LED lampjes in gestopt die aangaan als de la open is.

Het Circuit

fritzingp1.png

Als je alleen de la wil, of alleen de kist, is dat zeker mogelijk! De servo van pin 12 en de reed switches van 11 en 13 zijn voor de kist, de rest is allemaal voor de la. In de code staat met comments aangegeven welke delen over de lade gaan en welke delen over de kist gaan, dus als je delen niet nodig hebt kun je die weghalen of wegcommenten.

Code

#include <Servo.h>


// LADE (variabelen en pins)
int switch_drawer = 10;
int LDR = A0;
int LDRvalue = 0;
int LED_drawer = 2;


int state_lade = 0;


// KIST (variabelen en pins)
const int servo_chest = 12;
const int reed_chestN = 11;
const int reed_chestS = 13;
int state_chest = 0;


/*
states:
0 = locked
1 = open
*/


Servo ladeservo;
Servo chestservo;


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


  // LADE
  pinMode(switch_drawer, INPUT_PULLUP);
  pinMode(LED_drawer, OUTPUT);
  ladeservo.attach(8);
  ladeservo.write(90);
  state_lade = 0;


  //KIST
  pinMode(reed_chestN, INPUT_PULLUP);
  pinMode(reed_chestS, INPUT_PULLUP);
  chestservo.attach(servo_chest);
  chestservo.write(0);
  state_chest = 0;
}


void loop() {
  // LADE
  //in de serial monitor is altijd de LDR-waarde te zien
//mocht je het kastje in een donkerdere/lichtere omgeving zetten kun je zo de waardes gemakkelijk bijstellen
  LDRvalue = analogRead(LDR);
  Serial.println(analogRead(LDR));
 
  if (LDRvalue > 300 && state_lade == 0) { //la gaat open
    ladeservo.write(90);
    state_lade = 1;
    digitalWrite(LED_drawer, HIGH);
    delay(500);
  }


  if (digitalRead(switch_drawer) == LOW && state_lade == 1) { //la gaat dicht
    ladeservo.write(00);
    state_lade = 0;
    digitalWrite(LED_drawer, LOW);
    delay(500);
  }


  // KIST
  if (digitalRead(reed_chestS) == LOW && state_chest == 0) { //kist gaat van het slot af
    chestservo.write(90);
    state_chest = 1;
  }


  if (digitalRead(reed_chestN) == LOW && state_chest == 1) { //kist gaat op slot
    chestservo.write(0);
    state_chest = 0;
  }
  delay(100);
}

Behuizing - Paper Prototype

paperprot0.jpg
paperproto.jpg

Ik was begonnen met een papieren prototype van de la, zeker een aanrader. Een van de problemen waar ik tegenaan liep was dat ik een veer wilde gebruiken die de lade naar buiten zouden duwen als de servo (het "slot") open zou gaan. De meeste varianten van die veer bleven niet goed op hun plek zitten, of schoten helemaal los als de la open ging waardoor je de veer elke keer nadat de la geopend was handmatig terug moest zetten. Ik heb uiteindelijk de veer en het plastic lichaampje van een PEZ figuurtje gebruikt en er een punaise in gedaan om de veer op zijn plek te houden en dat leek goed te werken.

Behuizing - Lade

ladecomponenten.jpg
lade soldeer.jpg
ldr.jpg

Om verder het systeem goed te laten werken met de behuizing moest er nog het een en ander worden aangepast aan de behuizing. Met houtlijm heb ik een paar blokjes mdf op de bodem van het ladekastje gelijmd zodat de la niet verder naar binnen kon schuiven dan nodig. Het was daarna een beetje passen en meten wat de beste plekken voor de servo en de microswitch waren. Ik heb ze eerst met wat elastiekjes vastgezet om de plek te bepalen, en ze pas daarna met secondelijm vastgezet. Ik maakte hierbij de fout om de componenten vast te lijmen voordat ik alle draadjes gesoldeerd had, wat tijdens het solderen zorgde voor extra obstakels. Dat raad ik zelf dus af.

Voor de LDR moest er een gaatje komen in de bovenkant van het kastje, maar wel op de plek waar het juiste boek zou komen te staan, dus let erop dat je al weet welke boeken je er gaat neerzetten en dus ook waar het gaatje dan moet komen. Verder heb ik de ldr door een klein stukje mdf geprikt zodat ik dat stukje mdf aan de bovenkant kon lijmen in plaats van moeilijk doen met de LDR vastplakken aan de bovenkant van het kastje.

Behuizing - LED

led.jpg
ledpin.jpg
ladebinnenkant.jpg

Ik had in de voorkant van de lade gaatjes van het juiste formaat overgehouden voor de LED lampjes. Ik wilde ze graag aan elkaar vas tsolderen zodat er maar 2 kabels door de la zouden lopen, maar bij de eerste 2 pogingen daarvan braken er meerdere pinnetjes van de lampjes af. De meest geschikte oplossing die ik heb gevonden is om een printplaatje te gebruiken, en de + en - pootjes zo veel mogelijk per rij te sorteren, zodat je ze makkelijk kan ombuigen en tegen elkaar aan solderen. Ik weet dat men normaal gesproken aanraad om weerstanden met lampjes te gebruiken, maar omdat het 9 lampjes in een parallelle schakeling zijn zorgde de extra weerstanden alleen maar voor hele zwakke lampjes, dus heb ik ze weggelaten.

Behuizing - Kist

kist.jpg
servo.jpg
magneetzand.jpg
slotje.jpg
touwtje.jpg

Ik wilde dat allebei de kastjes door dezelfde arduino uno zouden worden bestuurd, die ik achter de lade in het kastje wilde opbergen. Ik heb om de kist ook te koppelen met dezelfde arduino gaten gemaakt op dezelfde plek in de zijkanten van de kastjes die tegen elkaar aan stonden, zodat daar de draadjes doorheen konden. Ik was in de veronderstelling dat ook de stroomtoevoer voor deze opdracht verborgen moest worden, dus ik heb met enige moeite een powerbank in de kist gestopt, maar ik hoorde later dat dat helemaal niet nodig is en ik raad daarom aan om de stroomtoevoer van de arduino gewoon ergens uit de achterkant te laten komen.

De bedrading in de kist zelf is in verhouding met de la simpel, want dat zijn maar 3 onderdelen: 2 reed switches en een servo. In de deksel van kist zat al een perfect gat voor een servo, en ik heb ook een sikkelvormig stuk mdf uit laten snijden dat ging functioneren als slot, het was dus alleen even meten waar precies het andere deel van het slot zou moeten komen (waar de servoextentie doorheen zou bewegen). Voor de plaatsing van de reed switches heb ik eerst het magneetje aan de zandloper bevestigd en toen gekeken waar die aan de binnenkant contact zou maken met de sensoren en daar heb ik die vastgelijmd met een lijmpistool. Om er voor de zekerheid voor te zorgen dat de kist niet helemaal open zou vallen als iemand hem open zou doen heb ik stukjes touw tussen de deksel en de zijkanten gelijmd

Behuizing - Afwerking

foam.jpg

Om alles wat netter af te werken heb ik daarna de binnenkanten bekleed met wat knutselfoam, zodat de bedrading niet zichtbaar zou zijn in de opbergplekken.

Eindproduct

ITTT Demo

Reflectie

ITTT Bonus Demo

Ik heb tijdens dit project een boel geleerd, zowel vanuit onderzoek over hoe ik sensoren kan gebruiken maar ook heel veel van fouten die ik heb gemaakt. Ik heb de meeste al genoemd in de stappen van deze instructables, maar ik wil toch nog even terugblikken op het hele traject. Een van de eerste dingen die fout ging was dat ik in een moment van paniek een snelle keuze moest maken en ik toen de verkeerde dikte mdf heb gekocht, omdat ik meer bezig was met of alles wel of niet op het formaat van de plaat zou passen. Tijdens het lasercutten gingen er ook nog af en toe wat dingen mis die ik in het vervolg minder snel verkeerd zou doen: niet gekeken of alle troep van de vorige persoon eruit was gehaald, lijnen die ik niet gesneden wilde hebben vergeten anders in te stellen in het programma, en verkeerde formaten gebruikt. De lampjes die afbraken tijdens het solderen was het gevolg van slechte voorbereiding en overhaast handelen, net als ik die de componenten had vastgelijmd voor ik ging solderen. Dit zijn dingen die ik in volgende projecten wil voorkomen door langer stil te staan bij de realisatie in plaats van alleen het concept. De veer die niet mee wilde werken heb ik uiteindelijk prima opgelost en was gewoon een obstakel, maar ik heb daardoor wel geoefend met oplossingsgericht denken en gebruik maken van de alledaagse items om je heen. Iets wat ik wel al wist maar echt goed heb ervaren tijdens dit project is dat als er iets mis is, het handig kan zijn om het hele systeem uit te zetten en steeds een ministukje te testen om te kijken wat er mis mee is, en ook dat ga ik meenemen naar volgende projecten.

Ik had ook een plan gemaakt dat eigenlijk buiten de scope van het project viel (3 kastjes in plaat van 1) en daarom vind ik het ergens jammer dat het laatste kastje in het schaakthema niet helemaal meer gelukt is, want ik had de behuizing en de componenten en de code al, ik kon het gewoon niet meer binnen de tijd mooi afwerken en koppelen aan die ene arduino. Ik heb wel daarom hier onderaan als bonus een video van alledrie de kastjes, maar met een losse, niet weggewerkte arduino in het schaakkastje. Het lijkt qua componenten op de kist, want er zit onder het schaakbord een magneetsensor en als je die activeert dan beweegt er een servo met een latje eraan vast tegen de deuren aan zodat ze open gaan. Ik heb ervoor gezorgd dat de deurtjes mooi dichtvallen met magneetjes, maar nog geen mechanisme ontworpen om de deuren echt op slot te houden. Verder was dus het plan dat er een volledige schaakset op zou komen te staan met in een van de stukken een magneet, en een schaakzet met dat stuk zou dan de deuren openen. Ik vind het nog steeds een leuk concept dus daarom zet ik de video hier neer, maar er was geen tijd meer binnen dit vak om het echt te realiseren.

Bronvermelding