If This Then That
Koen van Eijk Klas 1B
De Kick-off Het project If This, Then that draait om het leren gebruiken en ontdekken van de Arduino. De Arduino is een micro-controller, hij controleert (bestuurd) andere apparaten en kan gegevens van sensoren ontvangen. Door je Arduino te programmeren kan je bepalen wat je aan stuurt en wat je met ontvangen data doet. Ik besloot al snel in welke richting ik wilde gaan zoeken voor het project. Ik wilde een systeem maken op basis van de turrets uit de Portal games. Dit is in essentie een apparaat dat mensen kan detecteren, deze kan volgen en vervolgens op ze schiet. Ik focuste me op het maken van een werkend prototype en niet zo zeer op de vormgeving van het project.
Plan van aanpak Het eerste wat ik deed was schetsen in mijn dummy. Ik tekende wat mechanismes en toch wat vormgeving uit. Naarmate ik meer nadacht over het technische aspect van mijn project, realiseerde ik me dat ik het design wat in de games werd gebruikt moest loslaten, dit was veel te ingewikkeld. Het schietmechanisme zou bestaan uit twee snel draaiende wieltjes waar ik balletjes tussenin zou laten komen zodat ze afgeschoten werden, een ontwerp wat ik kende van een nieuwe ‘blaster’ van Nerf. Deze ‘blaster’ gebruikte kleine gele balletjes, gemaakt van foam en ik wilde deze ook voor mijn project gebruiken. Hoe ik de algemene constructie ging maken wist ik nog niet.
Onderdelen Na kort zoeken op internet kwam ik er achter dat de Nerf balletjes alleen in de Verenigde Staten te koop waren, hiervoor moest ik dus iets anders bedenken. Ik vond op mijn kamer een oude printer die niet meer gebruikt werd. Ik heb hem uit elkaar gehaald en zo 2 motortjes gevonden om mijn wieltjes aan te drijven. De motortjes zaten direct op de printplaat aangesloten, zonder omvormers of weerstandjes, wat betekende dat ik de voeding van de printer kon gebruiken om de motortjes direct aan te drijven. Ik had nu twee 30 Volt motortjes voor mijn turret. Om personen te kunnen volgen had ik een camera nodig en software die de camerabeelden kon verwerken. Ik had nog een oude webcam liggen en de software zou een combinatie worden van
Visual Studio en OpenCV. Met OpenCV kan je op basis van specifieke parameters (kleuren, vormen, gezichten) objecten herkennen in camerabeelden. Deze gegevens communiceer je vervolgens door naar de Arduino die de servo aanstuurt zodat de turret met het doelwit mee draait.
Problemen Ik ben lang bezig geweest met de software, maar ik kreeg hem niet aan de praat. Na uren proberen en opzoeken besloot ik om mijn ontwerp aan te passen, om er zo voor te zorgen toch een compleet project af te hebben voor de deadline. Mijn turret zou nu op basis van gedetecteerde beweging een scannende beweging gaan maken en na een kleine vertraging zou hij dan ook beginnen met schieten. Om beweging te kunnen detecteren had ik een PIR-sensor nodig. Deze werkt op basis van infrarood. Je kan de gevoeligheid en de vertraging nadat hij niets meer waarneemt instellen. Hoe ik alles tot een geheel ging maken wist ik nog niet. Ik zat ook nog steeds met het probleem dat ik nog geen projectielen had om af te schieten. Bij de feedback sessies had ik wel wat suggesties gekregen, maar die opties droegen stuk voor stuk een probleem met zich mee. Toen kwam iemand met het idee om kauwgomballen te gebruiken. Van die goedkope die je in lange strips bij het snoep hebt liggen. Dit was mijn redding!
De Code Het schrijven van de code was voor mij niet al te moeilijk. Ik kon de programmeerlessen goed volgen en de code voor mijn project was niet erg ingewikkeld. De moeilijkheid lag veel meer bij de mechanische afstelling van het geheel. Ik heb een deel van de code uit de voorbeelden overgenomen die je servo heen en weer laat gaan en heb daar vervolgens de code voor de sensor in geïntegreerd. Dit zorgde ervoor dat ik bij de detectie van beweging via de console feedback kreeg dat er een beweging werd geregistreerd en dat de servo ging draaien wanneer dit gebeurde. De code voor de die de motors aan moest sturen heb ik nooit geschreven, de reden hiervoor zal je hier onder zien. Dit zouden maar een paar lijnen zijn geweest die pin 4 steeds kort even aan zetten met pauzes er tussen.
Constructie Nu ik de afzonderlijke delen redelijk had afgerond ging ik nadenken over wat alles bij elkaar moest houden. Uiteindelijk is mijn keuze op Lego gevallen. Ik had recent een grote bak oude Lego gesorteerd en kon deze nu mooi voor mijn project gebruiken. Het eerste wat ik maakt was een Pvcbuisjes met een gat bovenin waar een wieltje (ook van Lego) door stak die vast zat aan 1 van de motortjes. Ik moest dit echter met foam pijltjes uittesten omdat de kauwgomballen niet pasten. Dit ging niet zo geweldig. Ik besloot naar de bouwmarkt te gaan om daar te kijken wat ik zou kunne gebruiken als loop en als wieltjes. De lego wieltjes gaven niet genoeg grip en waren veel te klein (1 cm doorsnee).
Ik kwam terug met 2 verrubberde parketwieltjes en grotere maat Pvc-buis. Tot mijn ergernis paste de kauwgomballen daar ook niet in en het was de grootste maat die ze hadden. Ik had geen tijd meer om een speciale maat op internet te bestellen met het risico dat het te laat aan zou komen. Ik moest dus een noodoplossing bedenken. Ik heb toen dik papier gepakt en dat om de Pvc-buis gerold en zo papieren buisjes gemaakt, waar de ballen wel in pasten. Als eerste ging ik aan de slag met het schietende gedeelte van mijn constructie. Mijn eerste idee was om aan een kant een buis te hebben met alle balletjes en aan de andere kant een buis als loop. Ik kwam er echter snel achter dat de loop de balletjes alleen maar tegenhield, dus haalde ik die weg. Mijn twee wieltjes die plat lagen werden aangedreven door de motors met Legowieltjes die er bovenop stonden (zie foto). Het buisje stond schuin omhoog zodat de balletjes naar de wieltjes toe zouden rollen. Als tweede kwam de basis met de servo motor waarop de turret zou gaan draaien. Ik bouwde de Lego op rond de servo en eindigde net onder het plastic kruis met wat gladde steentjes. Vervolgens maakte ik in de onderkant van het schietmechanisme de ruwe vorm van het plastic kruis na zodat deze er precies in greep en het platform dus kon draaien. Het enige wat ik nu nog nodig had was iets om alle elektronica in te verbergen. Ik probeerde eerst iets van lego te maken, maar dit werd veel te klein. Vervolgens vond ik een witte doos die er goed uitzag en begon ik met maken van gaten voor kabels en het aansluiten van mijn componenten. Nadat ik alles had aangesloten ging ik testen. Alles werkte individueel. Nadat ik alles vervolgens in de doos had verwerkt wilde ik alles nog één keer testen voordat ik mijn code afrondde. Ik voelde echter dat een van mijn diodes heel erg heet was geworden en mijn transistor leek niet te reageren. Na grondig testen bleek het kwaad al geschiedt; ik had mijn transistor gemold. Dit betekende dat mijn turret niet automatisch kon gaan schieten met het detecteren van beweging, maar ik wilde dat hij werkte bij de presentatie! Ik heb toen snel een knop ingebouwd aan de buitenkant van de doos waarmee ik de motors aan en uit kon zetten, zodat ik in ieder geval het gewenste resultaat zou kunnen demonstreren. Alles aansluiten was nog knap lastig, omdat ik met net iets te korte kabels aan het werk was. Ik moest opletten dat ik niet iets per ongeluk los trok wanneer ik de doos sloot.
De elektronica Uiteindelijk was mijn circuit een stuk simpeler dan dat ik in eerste instantie voor ogen had. Door moeten verwijderen van mijn transistor schakelcircuit bleef er niet veel over. Mijn Arduino gaf via het breadboard stroom aan mijn servo en sensor en had een directe verbinding met de digitale pinnen. Mijn motortjes waren via het breadboard aan de voeding van de printer verbonden. Links zie je de USB kabel voor de Arduino de doos in komen, rechts de kabel voor de printervoeding, de knop voor de motors zit aan de voorkant en de PIR-sensor zit aan de achterkant. Het linker gat in de deksel is voor de kabels van de servo en het rechter gat is voor de kabels van de motors.
Conclusie Met de Kick-off van dit project had ik gelijk twijfels aan de haalbaarheid van de criteria. Het was erg overwelmend. Ik dacht dat de hoeveelheid vrijheid en het zelf moeten kopen van materialen veel mensen zou tegenstaan. Die gedachte had ik zelf niet, ik zag de potentie van dit project en vond het ook niet erg als het wat zou moeten kosten. Ik heb me aan het begin wel verkeken op hoe veel tijd in alle aspecten gaat zitten. Mijn idee om een lijkende Portal turret te maken was vanaf het begin al niet haalbaar, als het aan mijn eisen zou moeten voldoen. Uiteindelijk ben ik redelijk tevreden met het eindresultaat. Helaas werkte de software niet helemaal mee en heb ik door het oplossen van problemen te weinig tijd over gehad om meer aan de vormgeving te doen. Mijn project wat puur functioneel ingesteld in dat opzicht. Aan het begin van het project overwoog ik om dit project mee te nemen naar een eventueel ISA project, om dan wel een Portal turret te maken, maar na flink wat onderzoek zou hier veel meer tijd in gaan zitten dan haalbaar is voor mij. Als ik nog wat kwijt wil over dit project is dat het programma en lessenpakket lastig in te vullen is. We hebben wat basislessen gekregen, maar naar mijn mening hadden dat er best een paar meer mogen zijn. Bijvoorbeeld werkende dingen maken bij het solderen of wat meer theorie of elektrotechniek. Het idee om het project over de vakantie heen te tillen is in essentie goed, maar de vele feestdagen gooien veel roet in het eten als het op bestellen en tijdsbesteding aankomt. Uiteindelijk vond ik het een gaaf project waar ik nog zo veel meer in had willen doen en ontdekken, maar dat ga ik zeker nog op eigen gelegenheid of in de toekomst met projecten doen. Instructables and video link: http://www.instructables.com/id/Arduino-Gum-Ball-Turret/