Babykamertechno: een babydrum hacken met zeven weerstanden

10 Juni 2026 –

Vandaag staat een er babydrum op tafel. Een Hape Baby Einstein Magic Touch, zo’n houten ding met zeven gekleurde vlakken en een zebra erop. Aanraken geeft geluid. Geen knoppen, geen bewegende delen. En dat maakt mij nieuwsgierig: hoe wéét dat ding dat je hem aanraakt? Ik heb zo het vermoeden dat er gebruik gemaakt wordt van capacitieve sensoren…. mijn vermoeden blijkt juist. Een paar uur later speelt mijn Arduino er techno op. Lees hieronder hoe ik dat gedaan heb.

Hape Baby Einstein Magic Touch voorzien van houten drumpaneel en on/off schakelaar.

Schroevendraaier erin
Vier schroefjes onder de voetjes en het houten dek komt los. Daaronder geen knoppen maar een kale print met zeven grote koperen vlakken – capacitieve touchpads. Het mooie: de fabrikant heeft alle sensorvlakken netjes gelabeld. PA0 tot en met PA3, PB0 tot en met PB2, plus GND. Een stevig flexkabeltje verbindt de sensorprint met het hoofdbordje waar de chip, de speaker en de batterijen zitten.

De achterkant van de sensorprint met de zeven touchvlakken. Let op de opdruk “0.68” en de nette labels.

Zo’n gelabelde print is een uitnodiging. Dat weet iedereen die weleens iets opent. Zo zie ik ook meteen dat er testpoints op de prints zitten, welke duidelijk voorzien zijn van identificatie-omschrjivingen. Iets wat handig is bij het programmeren aangezien ik hier de fysieke wereld ga verbinden met de programmeerbare Input/Output poort van de Arduino Uno R3.

De flexkabel met de pinlabels PA0 t/m GND. Hier soldeer ik de pinnen door.

Doorsolderen en de éérste test
Ik soldeer de acht lijnen van de flexkabel door naar losse draadjes met aan het uiteinde Dupont-stekkertjes welke ik gemakkelijk in de Arduino kan prikken. De eerste test kost nul componenten: toy aan, vinger op een doorgesoldeerde pin. Geluid. Je lichaam ís de capaciteit die de chip meet – de pin is gewoon een verlengstuk van het touchvlak. Dat is meteen ook een lastig punt, want de pinnen blijken er gevoelig voor aanraking en daarmee vermoed ik ook voor potentiaalverschillen rondom de pinnetjes.

De verrassing
Dan de gok: wat doet zo’n pad als ik er een Arduino-pin met het blink-voorbeeld op zet? Antwoord: hij triggert. Maar niet om de reden die je denkt. De chip “ziet” geen 5 volt – die meet capaciteit. Zodra de Arduino-pin als output schakelt, hangt er ineens een laagohmige verbinding met extra lading aan de meetlijn. Elke flank injecteert lading. Voor de touch-chip is dat niet te onderscheiden van een vinger. Werkt dus. Maar netjes is anders – daarover zo meer.

Waarom een capacitieve sensor lastig aansluiten is
Dit is het deel waar de meeste modificaties of hackprojecten stranden, dus even de complexiteit op een rij:
– Je sluit aan op een meetlijn, niet op een ingang. De touch-chip stuurt zelf pulsjes de lijn op en meet hoe snel de lading weglekt. Alles wat je aansluit verandert die meting – permanent. Een Arduino-pin die als OUTPUT blijft hangen kan een pad dood maken of juist continu laten triggeren
– De spanningen matchen niet. De toy draait op twee AA-cellen, dus zo’n 3 volt. De Arduino Uno werkt op 5 volt. Zet je die er direct op, dan jaag je stroom door de interne beschermingsdiodes van de toy-chip. Dat overleeft hij even – niet lang. Ervaring leert dat de IO-poorten gemakkelijk defect raken en dat ga je aan de buitenkant van de Arduino niet zien
– Je triggert op de flank, niet op het niveau. Een pin die hoog blíjft staan doet niets. Het is de verandering die telt. Dus: kort pulsen, en daarna de lijn weer loslaten. De complexe factor is dat je met trail-en-error moet vaststellen hoe lang de puls moet zijn om betrouwbaar te werken
– De toy heeft zijn eigen tempo. Ergens in die chip zit een scanfrequentie en een debounce. Pulsen die te snel achter elkaar komen worden samengevoegd of genegeerd. De juiste timing vind je alleen door te proberen.

De oplossing voor de eerste twee punten is verrassend simpel: een serieweerstand per lijn. Ik gebruik 150 kΩ. De capacitieve trigger heeft vrijwel geen stroom nodig, dus die werkt gewoon nog – maar de stroom door de beschermingsdiodes wordt begrensd tot een verwaarloosbare paar microampère. Het derde en vierde punt los je op in software: elke trigger is een puls van 50 ms, waarna de pin terugschakelt naar INPUT zodat de lijn weer vrij zweeft.

De Arduino Uno met breadboard. Zeven lijnen, zeven weerstanden, één gedeelde GND.

De mapping uitvogelen
Zeven draadjes, zeven geluiden, maar welke hoort bij welke? Daarvoor schrijf ik een testsketch die de pinnen één voor één vijf keer triggert en via de seriële monitor meldt welke pin actief is. Luisteren, noteren, klaar:

Leuk detail: de sfeer-pad blijkt geen geluid maar een mode-schakelaar. Een dubbele tik wisselt naar de volgende van vier achtergrondloopjes. Ook dat is gewoon te automatiseren – twee pulsen met 200 ms ertussen.

Van piepjes naar sequencer
En dan begint het echte spelen. Ik laat mijn software in stapjes groeien, elke stap is er eentje van “zou dit ook kunnen?”:
1. Trigger-test – elke pin vijf keer, mapping vastleggen
2. Interactief – pinnummer intypen in de seriële monitor, pad triggert
3. Compositie – sfeer starten, thema’s afspelen, geluiden ertussen
4. Sequencer – een strakke beat op millis()-basis: drums en bongo om en om op 120 bpm
5. Lagen – een schaap dat met 25% kans op de offbeat blaat. Een kip die elke 8 of 16 beats opduikt. Een nijlpaard als hi-hat
6. Live regie – alles bedienbaar vanaf het toetsenbord: ‘s’ wisselt de sfeer, ‘+’ en ‘-‘ schuiven het tempo in stapjes van 2 bpm, ‘k’ en ‘v’ zetten kip en nijlpaard aan, ‘d’ veegt ze weg, en ‘b’ start een solo.
7. Ritmische solo’s – geen random geluiden maar echte figuren: vier vastgelegde ritmes in achtste noten, twee maten lang, die netjes in de maat terugvallen. De sequencer loot per solo een instrument én een figuur.

De sketch in de IDE met de seriële monitor eronder: beat na beat, met het nijlpaard er trouw tussendoor.

Het belangrijkste technische trucje in de sequencer: de beat-klok schuift elke slag exact één interval op (volgendeBeat += beatInterval), onafhankelijk van hoe lang de trigger zelf duurt. Daardoor blijft het tempo strak, ook als je er live aan draait. En omdat elke wachttijd vers uit het actuele interval wordt berekend, versnelt zelfs een lopende solo gewoon mee als je ‘+’ indrukt. Om dit te realiseren maak geen gebruik van delay(), maar van millis(). Dit is heel precies en zorgt ervoor dat de Arduino niet opgesloten blijft tijdens het uitvoeren van één van de processen.

De binnenkant met het hoofdbordje en de speaker. De toy blijft volledig intact werken op zijn eigen batterijen.

Het resultaat
Een babyspeelgoedje dat strak op de maat speelt, met een schaap als percussionist, een nijlpaard als hi-hat en een kip die af en toe een gastoptreden doet. Bedienbaar met vijf toetsen. De toy zelf is met vier schroefjes weer terug te bouwen naar fabriekstoestand – er gebeurt niets onomkeerbaars. En de hele interface tussen Arduino en toy? Zeven weerstanden en een GND-draadje. Soms zit de magie niet in de hardware maar in het begrijpen waaróm iets werkt.

Wat heb ik gebruikt
– Hape Baby Einstein Magic Touch drum
– Arduino Uno R3 met USB kabel
– 7× weerstand 150 kΩ
– 4 rode en 3 witte LEDs met 1kΩ voorschakelweerstand
– Breadboard en jumperdraad
– Soldeerbout en dun montagedraad met Dupont stekkertjes
– Arduino IDE met seriële monitor (115200 baud)
– Kruiskopschroevendraaier