The Mechanical Turk
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.