The Mechanical Turk

From Randomdata wiki
Revision as of 18:59, 3 July 2025 by Uev52 (talk | contribs)
Jump to navigation Jump to search

The Mechanical Turk (project)

Overzicht

The Mechanical Turk is een technisch, ambachtelijk en experimenteel schaakbordproject ontwikkeld binnen Hackerspace RandomData. Het project combineert houtbewerking, 3D-printing, NFC-technologie, robotica en Python-programmering om een fysiek schaakbord te bouwen dat automatisch communiceert met het platform Chess.com.

De zetten van een online tegenstander worden fysiek uitgevoerd op het bord, en wanneer de speler zelf een fysieke zet doet, wordt deze automatisch naar het online spel verzonden. Het bord maakt gebruik van een gridstructuur met een magnetische arm onder het bord, aangestuurd door een Raspberry Pi. Dit vormt een moderne interpretatie van het gelijknamige schaak-automaton uit 1770, dat destijds een illusie was, maar nu wél daadwerkelijk werkt.

Projectleiding

Het project wordt geleid door 0ffset_0x52, beter bekend als UEV52. Wie wil bijdragen of deelnemen, kan contact opnemen via de SignalChat of via het Mattermost-kanaal van RandomData.

Doel van het project

Het bouwen van een interactief, fysiek schaakbord dat:

  • Zetten van een online tegenstander uitvoert via een mechanische arm
  • Fysieke zetten automatisch doorstuurt naar het online schaakspel
  • Uitbreidbaar is met AI-functionaliteit, LED-feedback en geluidseffecten
  • Zowel technisch uitdagend als esthetisch verfijnd is

Technische werking

  • Elk schaakstuk bevat een unieke NFC-sticker
  • Een magnetische arm onder het bord beweegt via X/Y/Z-assen over een grid
  • De arm koppelt magnetisch aan stukken om ze te verplaatsen
  • Positieherkenning gebeurt via NFC
  • Het geheel wordt bestuurd met een Python-script op een Raspberry Pi
  • Integratie met Chess.com vindt plaats via de officiële API

Hardwarecomponenten

Hieronder een overzicht van de technische randvoorwaarden en benodigde componenten:

Component Specificatie / versie Functie / toelichting
Raspberry Pi Model 4B (4GB RAM) Besturing van het volledige systeem
Besturingssysteem Raspberry Pi OS 64-bit Platform voor aansturing scripts
Programmeertaal Python 3.11 Voor motorcontrole, API-koppeling en NFC-detectie
NFC-lezer PN532 (I2C-interface) Detectie van unieke tags onder stukken
NFC-tags NTAG213 of NTAG215 Voor unieke identificatie van elk stuk
X/Y-motoren NEMA 17 stappenmotoren + A4988 drivers Horizontale beweging van arm
Z-motor SG90 of MG995 servo Optillen van stukken
Grijpmagneet Neodymium 6×3 mm Voor het oppakken van schaakstukken
Schaakstukken PLA+ 3D-geprint Handmatig geschuurd, geverfd en gepolijst
Schaakbord Mahonie + walnoot + esdoornhout Handgemaakt, gelakt, gegraveerd
Gereedschap Cirkelzaag, graveermachine, schuurmachine, klemmen Voor houtbewerking
Afwerking Filler primer, acrylverf, lak Voor visuele en tactiele kwaliteit
Connectiviteit WiFi of Ethernet Voor communicatie met Chess.com

Voorbeeldcode

Onderstaand fragment laat zien hoe een zet kan worden opgehaald via de Chess.com API en hoe deze wordt vertaald naar een fysieke actie:

<syntaxhighlight lang=\"python\"> import requests

def get_last_move(game_id):

   url = f\"https://api.chess.com/pub/game/{game_id}\"
   response = requests.get(url)
   data = response.json()
   moves = data['moves'].split()
   return moves[-1] if moves else None

move = get_last_move('voorbeeld-game-id')

if move == 'a2a4':

   print(\"Verplaats pion van A2 naar A4\")
   # hier komt motorsturing

</syntaxhighlight>

Bouwfasen en tijdlijn

Fase 1 – Voorbereiding en ontwerp (week 1–2)

  • Ontwerpen van schaakstukken in CAD-software
  • Bepalen van gridlayout en mechaniek
  • Selectie van houtsoorten en bevestigingsmethodes

Fase 2 – 3D-printen en afwerking (week 3–4)

  • Printen van alle stukken met PLA+
  • Schuren, primeren, verven en polijsten
  • NFC-stickers aanbrengen

Fase 3 – Bordbouw (week 5–6)

  • Zagen, frezen en lijmen van houten bord
  • Graveren of inlay van speelvlak
  • Aanbrengen van beschermlaag (lak)

Fase 4 – Mechanische arm (week 7–8)

  • Montage van stappenmotoren en railsysteem
  • Ontwikkeling van Z-as-grijper met magneet
  • Testen van bereik en nauwkeurigheid

Fase 5 – Software (week 9–10)

  • Programmeren van sturing in Python
  • Integratie met NFC-lezer en motorcontroller
  • API-koppeling met Chess.com

Fase 6 – Eindintegratie en test (week 11–12)

  • Kalibratie van bord en armbeweging
  • Testspellen tegen menselijke en AI-tegenstanders
  • Bugfixes, logging, failsafes

Toekomstige uitbreidingen

  • Lokale AI-opponent via Stockfish
  • LED-indicatoren voor zetnotificaties
  • Geluidseffecten (bijv. schaak, schaakmat)
  • OLED-display voor zettennotatie
  • Spraakbesturing en ondersteuning voor meerdere fysieke borden

Historische inspiratie

Het originele concept van de Mechanical Turk werd in 1770 gebouwd door Wolfgang von Kempelen. Het leek een autonoom schaakspelende automaat, maar er zat in werkelijkheid een menselijke schaakmeester in verstopt. Het moderne project gebruikt deze mythe als inspiratie om juist wél een volledig functioneel autonoom bord te bouwen — transparant, open-source, en verbonden met de hedendaagse digitale wereld.

Zie ook