Mijn baarmoeder draait DOOM: Maak kennis met Clotty v1.1

Ik heb dit bord Clotty genoemd (woordgrap bedoeld, ook al is hij niet de beste). Hoewel ze over behoorlijk wat sensoren beschikt, is ze niet bedoeld als medisch hulpmiddel buiten het bijhouden van mijn menstruatie. Zie haar eerder als een menstruatie-Tamagotchi die je gedurende de cyclus in leven en gelukkig moet houden (want de echte ervaring om gelukkig en in leven te blijven tijdens een cyclus is al stressvol genoeg).

![Afbeelding 1: DOOMterus en Clotty]

Mijn lijden is van mij: de motivatie achter Clotty

Het idee voor Clotty ontstond in mei. 'Girlypop cyberdecks' gingen plotseling (en voor mij verrassend genoeg) viraal, waardoor mijn oude PinkPad onverwacht veel aandacht kreeg. Dit leidde tot geweldige gesprekken, talloze ideeën en wensen. Dit werkte echt inspirerend.

Eén Instagram-reactie bleef me in het bijzonder bij: iemand die wenste naar een cyberdeck dat de menstruatie en andere medische zaken kon bijhouden zonder gegevens naar een centrale server te sturen ('calling home') of data te oogsten en misbruiken.

Gezien het feit dat menstruatie-apps erom bekendstaan gevoelige gegevens met derden te delen, en dat Europese privacyautoriteiten expliciet zorgen uiten over het beheer en misbruik van reproductieve gezondheidsgegevens, is dit een zeer redelijke en terechte wens.

Het zette me aan het denken over mijn eigen ervaringen. Het idee sprak me aan; ik ben een voorstander van controle over je eigen data en ik kom in een leeftijd waarin biologische processen zeker meer 'track-waardig' worden. Tegelijkertijd vind ik een apart apparaat voor een simpele taak als het bijhouden van datums persoonlijk overkill. Vroeger gebruikten we een papieren kalender, en een werkend systeem moet je niet veranderen. Bovendien is er, afgezien van het weten wanneer mijn menstruatie begint, eigenlijk niet veel aan mijn cyclus dat me interesseert.

Er is echter één ding dat me al mijn hele leven dwarszit: ondanks dat mijn cyclus zeer regelmatig is, word ik elke maand opnieuw verrast door PMS. En ik kan zeggen dat ik een passionele haat heb voor mijn menstruatie. Ik weet niet of er mensen zijn die menstrueren en denken: "Yay, bloed en pijn en wanhoop <3", maar ik ben er zeker niet een.

Dus bedacht ik dit: een apparaat dat de saaie dingen doet, zoals het bijhouden van je menstruatie, maar dat me ook helpt me beter te voelen bij dit volkomen normale biologische proces. Het is immers gewoon mijn lichaam dat zijn werk doet. Omdat ik een speels persoon ben en de neiging heb om veel dingen te gamificeren, waarom dan niet mijn menstruatie?

Een klein wezentje dat van stemming verandert afhankelijk van de cyclusfase, quests uitvoert en minigames met je speelt... in feite een schattig gevormde spiegelversie van mijn eigen stemmingen, die dient als herinnering dat ik ook gewoon een wezentje ben dat probeert te overleven en gelukkig te blijven.

Dit is natuurlijk vreemd specifiek en zeer individueel. Maar de pure vreugde van het vasthouden van dit baarmoederbord en het zien van Clotty die over het scherm wiebelt, weegt op tegen minstens één periode van PMS.

Menstruatie, bloed, of waarom dit bord eruitziet als een baarmoeder

![Afbeelding 2: Concepten: van schetsen naar een enigszins werkende baarmoeder]

Dit verdient een eigen paragraaf, omdat er veel nadenken in is gegaan.

Als je kijkt naar gebruikelijke apparaten voor het bijhouden van de menstruatie, zijn ze allemaal zo strak, elegant en beledigend discreet. Als je er een vindt liggen en er zelf geen gebruikt, zou je waarschijnlijk nooit raden wat de functie is.

Ik heb hier tegenstrijdige gevoelens over. Aan de ene kant begrijp ik volledig waarom niet iedereen zijn menstruatie publiekelijk wil aankondigen. Hoe je met je menstruatie omgaat en hoe je je daarbij voelt, is van jou alleen. Bovendien begrijp ik dat er fabricage- en veiligheidsoverwegingen meespelen in het ontwerp van dergelijke apparaten.

Aan de andere kant voelt het voor mij persoonlijk soms als een herinnering aan hoeveel schaamte er nog kleeft aan iets normaals als een menstruatie. De dingen zijn de afgelopen jaren verbeterd, maar veel mensen worden nog steeds ongemakkelijk van een volkomen gewoon reproductief proces dat — hoe ongemakkelijk ook voor iedereen die zich erdoor schaamt — essentieel is voor het voortbestaan van de mens.

Op basis van mijn eigen vrije wil en persoonlijke voorkeuren was het meteen duidelijk dat "discreet" geen optie voor mij is. Ik wilde dat mijn apparaat schreeuwde: "HALLO, DIT IS EEN APPARAAT VOOR DE MENSTRUATIECYCLUS", want dat is het, en daar is niets beschamends aan.

Aanvankelijk had ik een paar concepten, beïnvloed door wat daadwerkelijk geproduceerd kon worden en comfortabel was om vast te houden. Tampons en maandverband in verschillende variaties zaten tussen de vroege schetsen.

Uiteindelijk besloot ik voor een baarmoeder. Laten we eerlijk zijn: om een reden die de natuur waarschijnlijk niet zo bedoeld heeft, heeft dat ding een vorm die verdacht veel lijkt op een game-controller. De eierstokken zijn uitstekende directionele touchpads, er is genoeg ruimte voor een display in het midden, en het ligt simpelweg lekker in de hand. En ja, ik ben ook kinderlijk genoeg om wanhopig een USB-connector bij de baarmoederhals te willen plaatsen.

Baarmoeder-anatomie: een RP2040, een IPS TFT en een snufje sensoren

![Afbeelding 3: Voor- en achterkant van Clotty: live sensordiagnostiek aan de ene kant, twijfelachtige hardwarebeslissingen aan de andere kant]

Veel van mijn hardwarekeuzes werden beïnvloed door mijn gebruikelijke aanpak: we hebben dit al thuis! Of liever gezegd: ik heb al een voldoende werkend hardware-ontwerppakket hiervoor, dus ik hergebruik het.

Dit geldt vooral voor de meest saaie maar belangrijkste keuze: de RP2040 als het brein van deze baarmoeder. Ik heb het gevoel dat ik het RP2040-referentieontwerp bijna één-op-één heb gekopieerd toen die uitkwam, en sindsdien gebruik ik het steeds opnieuw als een hiërarchisch blad in KiCad.

Naast mijn persoonlijke luiheid is de RP2040 een echt goede match voor dit project: krachtig genoeg voor alle fratsen die ik voor Clotty in gedachten heb, en met meer dan genoeg pinnen om deze te ondersteunen. Tot slot is het prettig dat ik niet veel nadenken over de software-toolchain nodig heb, maar gewoon de Pico SDK kan gebruiken.

Voor het display waren resolutie en kleuren mijn belangrijkste zorgen, omdat Clotty herkenbare kleine sprite-accessoires nodig heeft, zoals kleine tovenaarshoedjes, kleine quest-items zoals Club Mate-flesjes of chocoladerepen, en misschien een d20. Ook wilde ik dat Clotty's gewiebel zichtbaar is vanuit de typische 'nerd-shrimp-posture' hoeken. Daarom waren scherpte en kijkhoeken belangrijk; een kleine 1.3'' 240×240 IPS TFT aangestuurd door een ST7789 leek adequaat.

Dit beïnvloedde ook de keuze voor de QSPI-flash. Ik zie mezelf al enthousiast Clotty-sprites tekenen tijdens mijn woon-werkverkeer (ik raad LibreSprite hiervoor aan!). Die enorme hoeveelheid sprites moet ergens naartoe, dus werd het 128 Mbit (W25Q128JVSIQ). Dat is 16 MiB aan flash, wat genoeg ruimte laat voor twijfelachtige artistieke beslissingen.

Een ander redelijk onderdeel is de RTC (Real Time Clock); Clotty moet immers de tijd kunnen bijhouden om de menstruatiecyclus te kunnen volgen. Ironisch genoeg bleek dit het moeilijkste onderdeel om te bemachtigen. Telkens als ik een keuze maakte, was deze uitverkocht bij Mouser of DigiKey. Uiteindelijk kwam ik uit op de RV-8263-C7.

Daarnaast heeft Clotty een RGB-LED. Elk bord heeft er minstens één nodig, dat is simpelweg gezond verstand. De LED van Clotty fungeert als indicator voor de cyclusfasen: bijvoorbeeld diep karmijnrood voor menstruatie, magenta voor de folliculaire fase, zachtroze voor ovulatie en een dreigend scharlakenrood voor de luteale fase.

Drie drukknoppen zijn bedoeld voor menunavigatie en krijgen later rood doorschijnende hars-knoppen in de vorm van bloeddruppels.

Natuurlijk heeft het bord alle gebruikelijke en noodzakelijke zaken zoals een USB-C-connector (bij de baarmoederhals, waar hij hoort!), een oplaadcircuit, buck-boost converter, stroomschakeling, enzovoorts.

Hier eindigen de redelijke en bewuste beslissingen. De selectie van sensoren is basiselijk beïnvloed door "dat zou wel cool zijn":

  • Touchpad eierstokken: Twijfelachtig om ze sensoren te noemen, maar hun gebruik voor directionele beweging is duidelijk.
  • Temperatuur (MCP9808-E/MS): Nog steeds redelijk; denk aan een kleine quest zoals "Clotty wil een warmwaterkruik" waarbij je de sensor moet opwarmen.
  • Omgevingslicht (TEMT6000X01): Ook niet geheel absurd; misschien moet Clotty een dutje doen en moet je "de kamer donker maken" voor deze quest.
  • Accelerometer (LIS3DHTR): Een wanhopige poging om mezelf te dwingen tot beweging.
  • Hall-sensor (DRV5032FADBZR): Absoluut geen reden anders dan "hehe, magneet".

Tijd voor een check: aandachtspunten voor de hardware

Clotty bevindt zich momenteel in de "werkend prototype"-fase. Met "werkend" bedoel ik dat ik de basisfunctionaliteit van deze revisie heb getest: hij gaat aan, USB werkt, ik kan hem flashen, alle sensoren reageren en zijn leesbaar, het display werkt, de lader laadt, de knoppen doen hun werk en er is (nog) niets ontploft.

Er zijn echter enkele duidelijke punten die hersteld moeten worden. De meeste daarvan hebben te maken met plaatsingsbeslissingen, vooral de JST-connector voor de LiPo. Ik kan niet reconstrueren waar ik aan dacht, maar tenzij ik niet-Euclidische plaatsing uitvind, kan dit niet redelijk werken. Technisch gezien kun je de connector erin forceren (dat heb ik gedaan), maar niet op een gezonde manier. Deze moet gedraaid worden.

Hetzelfde geldt voor de reservebatterij voor de RTC: door de hoogte van de batterij is de ruimte tussen het display en het bord groter uitgevallen dan verwacht, wat er een beetje dom uitziet. Ik weet niet of ik dit in de footprint ga oplossen; ik denk dat de batterijhouder met draden bevestigen en ergens propen net zo legitiem is, aangezien Clotty sowieso een behuizing aan de achterkant krijgt.

Dit leidt tot het volgende defect van deze revisie: ik ben enigszins vergeten de gaten voor de bevestigingsschroeven van de behuizing te maken.

Daarnaast is er veel van het gebruikelijke prototype-werk waarbij ik me afvraag: "Wat is dit voor routing?" of "Waarom is dit hier geplaatst?". Ik ben er zeker van dat er meer bugs naar boven komen tijdens het testen. Er is veel "eerst werkend krijgen, later mooi maken".

Wie deze revisie om welke reden dan ook overweegt te gebruiken: wees gewaarschuwd. Op GitHub is de main branch voor releases; de bovengenoemde problemen worden binnenkort in hw-devel opgelost.

De DOOMterus

![Afbeelding 4: DOOMterus - Revenge of the Crimson Tides]

Zoals we allemaal weten, wordt de legitimiteit van een apparaat bepaald door het feit of het DOOM kan draaien. Dus moest Clotty natuurlijk ook door dit heilige inwijdingsritueel.

In 2026 is er bijna niets met een processor erin waar DOOM niet naar is geport. En aangezien de RP2040 er al enkele jaren is, is DOOM uiteraard al geport, met diverse forks en hardware-specifieke aanpassingen.

Ik heb een van deze RP2040-ports gebruikt als basis voor de DOOMterus: kilograham/rp2040-doom.

Er is niet veel magie aan de hand. Ik heb simpelweg de output geforceerd naar mijn TFT-display en de inputs aangepast zodat mijn knoppen en eierstokken worden gebruikt voor in-game navigatie en menu's. Geen elegantie, geen poging om het schoon te houden.

Specifiek gebruikt Clotty een 240×240 ST7789-display via SPI. De originele Pico scanvideo-output moest daarom weg, en ik heb deze vervangen door een zeer simpele blocking SPI-backend. DOOM rendert nog steeds in de gebruikelijke 320×200 resolutie; ik schaal dit horizontaal terug naar 240×200 en plaats het in het midden van het display, met 20 pixels ongebruikte ruimte aan de boven- en onderkant.

De besturing is even "geavanceerd". Drie gewone GPIO-knoppen regelen het naar links draaien, vuren en naar rechts draaien tijdens het spelen. De capacitieve eierstokken van Clotty zijn via I2C verbonden met een CAP1203 touch-controller: de linker eierstok beweegt je vooruit, terwijl de rechter eierstok de "use"-actie uitvoert. In de menu's worden de drie fysieke knoppen 'omhoog', 'enter' en 'omlaag'. Duidelijk het gebruik waar de natuur in de evolutie van eierstokken op doelde.

Het enige echt interessante probleem was threading. De RP2040-port gebruikt beide cores voor rendering, en mijn eerste poging liet core 1 de voltooide framebuffer naar de TFT sturen. Een volledig frame is ongeveer 96 kB aan blocking SPI-verkeer, wat een effectieve manier bleek om de DOOM-renderer uit te hongeren. De menu's werkten, maar de gameplay stopte vrijwel zodra een level begon. De uiteindelijke versie laat core 1 volledig over aan de renderer en voert de blocking TFT-transfer synchroon uit op core 0, pas nadat een volledig frame is gepubliceerd. Dat was het verschil tussen "technisch gezien DOOM tonen" en "een enigszins speelbare DOOM".

Voor de definitieve versie ben ik overgestapt van de shareware WAD naar Ultimate DOOM, die ik legaal heb aangeschaft voor 3,99 euro. De originele WAD is geconverteerd naar het WHD-formaat van de port en apart opgeslagen in het 16 MiB flashgeheugen van Clotty, terwijl de eigenlijke firmware een UF2-bestand van ongeveer een halve megabyte blijft.

Alles past dus comfortabel in de baarmoeder.

Hoewel DOOM op een RP2040-bord honderden keren is gezien, durf ik te zeggen dat Clotty DOOMterus waarschijnlijk de eerste gedocumenteerde instantie is van DOOM die wordt gespeeld op een baarmoeder. De wereld heeft op dit moment gewacht. Ik zal dit op mijn LinkedIn zetten.

Met al de vreemde dingen waarop ik door de jaren heen DOOM heb geïnstalleerd, zou je aannemen dat ik inmiddels beter in het spel zelf zou zijn geworden. Maar zoals je in de video kunt zien, ben ik nog steeds slecht, zelfs op de laagste moeilijkheidsgraad. En ik zal dit absoluut blijven wijten aan de hardware.

De vruchten van de baarmoeder: de software van Clotty

![Afbeelding 5: Clotty in haar natuurlijke staat: wiebelend]

Momenteel is de code van Clotty nog in ontwikkeling en bevindt deze zich in het foetale stadium. Voor een eerste gepubliceerde software-release streef ik naar een simpel menu en basisgameplay.

Vanuit het menu zal ik de datum en tijd kunnen invoeren en, idealiter, de lengte en datums van mijn laatste drie cycli. Zoals ik eerder zei, is Clotty niet bedoeld als echt medisch hulpmiddel. Ik zal simpelweg vorige cycli bijhouden om de volgende waarschijnlijke datums te berekenen. Daarnaast kan ik de feitelijke startdatum van mijn menstruatie invoeren zodat dit ook in de dataset komt.

De gameplay van Clotty wordt hopelijk spannender: het algemene doel is om haar in leven en gelukkig te houden gedurende de cyclus, terwijl haar stemming en behoeften veranderen volgens de cyclusfase. Elke fase komt met specifieke kleine quests die via sensoren interactie hebben met de omgeving. Er zullen ook interacties tussen de gebruiker en Clotty zijn. Ook vind ik dat ze wat wijsheid en verantwoordelijke reproductieve gezondheidsrichtlijnen moet verspreiden, bijvoorbeeld "iedereen haat je" tijdens de luteale fase.

Naarmate het Clotty-project groeit, zal ik zowel deze blog als de GitHub-repo bijwerken.