Datoriserat schackbräde

Berätta om dina pågående projekt.
johey
Inlägg: 67
Blev medlem: 29 maj 2003, 16:36:52
Ort: Stockholm
Kontakt:

Datoriserat schackbräde

Inlägg av johey »

Tänkte berätta lite om mitt pågående projekt. Jag datoriserar ett analogt schackbräde. Det är absolut ingen world first, och jag strävar inte heller efter att göra det unikt. Det enda som ska vara unikt med det är att det är jag som gjort det.

Jag köpte ett schackbräde med pjäser på loppis. Ett typiskt klubbräde med ganska fina vanliga klubbpjäser (heter de Staunton?). Brädet är av plywood, någon cm tjockt.

Pjäserna ska förses med var sin permanentmagnet och varje ruta ska ha en magnetswitch (reed switch) på undersidan. Switcharna sätter jag i en matris parade med en 1N4148-diod vardera.

Efter att ha lekt och labbat lite med olika permanentmagneter och magnetswitcharna kom jag fram till att det behövs rätt kraftiga magneter och att switchen, som består av en tunn cylinderformad glaskapsel, funkar bäst om magneten är placerad vid dess ena ände och inte över mitten på en liggande switch som jag tänkte mig från början.

I skrivande stund har jag lött dit alla komponenterna på undersidan av schackbrädet. Det var ett jäkla tradigt pysslande kan jag säga. Jag började med att borra hål under mitten på varje ruta, med någon mm kvar innan det är igenom. Därefter lödde jag ihop switch-diodparen. Sen böjde jag benet på ena sidan av switchen så att det gick att stoppa ner den i hålet. 64 par senare limmade jag dit dem med smältlim.

Sen började det värsta av allt när det gäller repetetiva jobb. Klippa till, skala och löda dit kabelmatrisen. 56 kablar horisontellt och 56 kablar vertikalt, lödda mellan varje komponentpar. Hade jag haft någon bra metod att skala en kabel mitt i, alltså inte bara änden, hade jag sluppit att klippa till småstumpar, men var och en efter förmåga... Efter dessa småkablar lödde jag även dit 8+8 kablar som ska gå vidare till labbrädet. Sist har jag limmat på fötter under brädet för att kunna ställa det stabilt utan att mosa komponenterna.

Jag har även börjat att installera magneter i pjäserna. Köpte Clasohlsons "neodynamiska" saker med hål i för att kunna fästa dem med en skruv.

När jag ändå är i farten att göra saker själv, har jag även valt att skriva mjukvaran. Den är inte klar, men en bra bit på vägen kommen. Vad jag har är C-kod skriven för GCC, endast med 8 bitars datatyper. Programmet känner till alla schackregler och kan räkna fram en lista på alla legala drag för varje pjäs.

Jag har inte skrivit någon interfacekod mot brädet, då jag känner att jag för det skulle behöva ha brädet klart att labba med under tiden.

Exakt vad programmet ska göra är jag inte helt 100 på än. Vore ju såklart skoj om jag kan få till en hyfsat bra ai som kan slå mig i schack. :) En annan variant är att interfaca den mot en dator och köra antingen GNUChess eller spela online.

Hur brädet ska visa vilken pjäs man ska flytta åt datorn vet jag inte heller än. Antingen en display som talar om koordinater, eller kanske en ledmatris (men jag fasar för ännu mer lödande :) ). Och nej, denna version inkluderar inga självflyttande pjäser!

Jag har en förhoppning om att all mjukvara ska kunna dunkas in i en AVR. Jag har införskaffat en Atmega1284P för ändamålet. Den har tillräckligt med minne för att åtminstone kunna söka fyra-fem drag framåt. Tveksamt dock om det kommer vara realistiskt i tiden med dess 20 MIPS, men jag antar att det får kombineras med lite smarta optimeringar i mjukvaran. Kompletta sökningar tror jag inte kommer hålla.

Mycket text och lite bilder. Får se om jag kan få röven ur soffan och fota imorrn.

Edit: Här kommer en bild, och fler följer senare i tråden.
labb.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av johey 10 oktober 2011, 00:05:00, redigerad totalt 1 gång.
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Datoriserat schackbräde

Inlägg av Lennart Aspenryd »

Spännande projekt.
Jag är glad att du skriver så utförligt.
Så ser vi fram emot bilderna!
Användarvisningsbild
ghost_rider
Inlägg: 2211
Blev medlem: 26 maj 2008, 21:48:15
Ort: Genarp

Re: Datoriserat schackbräde

Inlägg av ghost_rider »

hur vet brädet vart och vilken pjäs befinner sig?
robertk
Inlägg: 272
Blev medlem: 31 juli 2010, 19:46:02

Re: Datoriserat schackbräde

Inlägg av robertk »

Jag misstänker att han kommer att lagra alla enskilda pjäsförflyttningar relativt till den kända ursprungsuppställningen. Det är endast en pjäs åt gången som Flyttas. Altså någonstans lyfts en pjäs, och den sätts sen ner någonstans. Detta håller programmet reda på. (plus lite bonusar som att varna om man ställer pjäserna fel... osv..)

Roligt projekt!

//Robert
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: Datoriserat schackbräde

Inlägg av MicaelKarlsson »

Detta låter spännande, hoppas på lite bilder på hela härligheten.

Lycka till resten av bygget! :tumupp:
Användarvisningsbild
ghost_rider
Inlägg: 2211
Blev medlem: 26 maj 2008, 21:48:15
Ort: Genarp

Re: Datoriserat schackbräde

Inlägg av ghost_rider »

Men när man slår bort motståndarens pjäs. Det gäller då att det är rätt kodat så att datorn vet vilken pjäs som 'borde' stå kvar på bordet, så att det inte blir tvärt om. :doh:
Användarvisningsbild
Glenn
Inlägg: 36650
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Datoriserat schackbräde

Inlägg av Glenn »

fast det är ju alltid den som slår som får behålla sin pjäs, så det bordre ju vara ganska enkelt.
Användarvisningsbild
kode
Inlägg: 62
Blev medlem: 21 maj 2011, 14:06:52
Ort: Linköping

Re: Datoriserat schackbräde

Inlägg av kode »

Hur kommer promoveringen att fungera i sådana fall? Det är ju ändå inte helt säkert att man väljer drottning då.
johey
Inlägg: 67
Blev medlem: 29 maj 2003, 16:36:52
Ort: Stockholm
Kontakt:

Re: Datoriserat schackbräde

Inlägg av johey »

Ledsen att det inte blivit några bilder än. Jag är för upptagen med att mickla med projektet istället. :)

Kul med alla frågor och funderingar! Jag har ju själv redan ställts inför alla dessa problem och det är inga jättetriviala nötter att knäcka. Som redan gissats kommer datorn (AVR:en) att hålla koll på alla förflyttningar med utgång från standarduppställning och vedertagna schackregler. Givetvis har jag suktat på RFID-lösningar, men det är orealistiskt i dagens lågkonjunktur.

En pjäs slås genom att man antingen lyfter antingen sin egen pjäs först, eller motspelarens. Sen flyttar sin egen och ställer där motspelarens stod. Datorn vet ju som sagt vilken pjäs som rimligtvis ska vara kvar.

Promovering har jag inte löst fullt ut än. Till en början blir det obligatoriskt en dam, men i nästa steg behöver jag något sätt att välja. Förmodligen har jag fyra ledar och en knapp. Ungefär: Jag lyfter min bonde som ska promoveras. Då tänds första leden som representerar damen. Vill jag klickar jag på knappen för att ändra. När jag är nöjd sätter jag ner den pjäs jag promoverar till.

(Förövrigt tycker jag att ordet "promovera" är felaktigt. Det är en försvenskning av "promote", som för det första enligt praxis borde ha blivit "promotera" och för det andra redan har en svensk översättning - befodra.)

Status just nu är att jag sliter mitt nysnaggade hår med att förstå varför datorn registrerar "false positives" på vissa rutor, trots att dess magnetswitchar fungerar. Misstänker att jag har tänkt lite fel när det gäller inputpinnar på AVR:en. Jag är grön på sånt här. AVR:en verkar inte gilla att vänta sig en hög signal. Det verkar bli lite instabilt resultat. Så antingen får jag invertera signalen från brädet, eller hitta på något annat kreativt. Eftersom jag inte har några invertrar har jag valt att gå på andra spåret med ett skiftregister (parallell in, seriell ut). Ska försöka få det att funka nu. Sen kanske det kommer någon bild. :)
sebastiannielsen
Inlägg: 3663
Blev medlem: 11 september 2004, 09:30:42
Ort: gbg
Kontakt:

Re: Datoriserat schackbräde

Inlägg av sebastiannielsen »

En idé vid promovering är att du har 8 st extra rutor med magnetswitchar. Där ställer man utslagna pjäser så att det finns 2 dam (1v och 1s), 2 löpare, 2 häst och 2 torn på dessa åtta rutor. Datorn håller reda på vilken ruta du/motståndaren ställer en utslagen pjäs.

Vid promovering så tar man helt enkelt en pjäs från en av dessa rutor, och datorn håller reda på vilken pjäs som ställdes i vilken ruta.

Dvs motståndaren slår ut din dam. Han ställer då din dam på en av dessa 8 rutor. Datorn kommer ihåg att det står en vit dam på ruta 2 säger vi.
När du sedan promoverar så tar du damen från ruta 2 och ställer på promoveringsrutan, och då vet datorn att du valt att promovera en dam.

---

Om du nu ska promovera en pjäs som redan är i spel, kan man göra så att när man placerat sin bonde på promoveringsrutan, så tar man och lyfter den pjäs man vill promovera till, och sätter ner igen på samma ruta. Då har man talat om för datorn vilken pjäs du vill promovera till.

Dvs vill jag promovera till ett torn, så flyttar jag först min bonde till sista raden, och sedan lyfter jag ett av mina torn och sätter ner igen på samma ruta, sedan tar jag bort bonden och sätter dit ett ledigt torn. Eftersom jag lyfte tornet och satte tillbaka, och datorn vet att det ska stå ett torn på den rutan, så vet datorn att jag promoverat till ett torn.

----

Gällande dina false positives, kan det vara så att du får "ghost switches"?
Se mer info här:
http://www.dribin.org/dave/keyboard/one_html/

Prova att "scanna" din matris manuellt och mät. Kolla vad du får felaktiga outputs någonstans.

Kolla även om magnetismen påverkar "grannswitcharna". Du kanske behöver mindre/svagare magneter på pjäserna.

Om du kan tänka dig att ändra på din konstruktion, varför då inte en reflexdetektor + ett 7x7mm hål i varje ruta, samt foile/spegel/polerad metall eller liknande under pjäserna. Då lär du inte få några problem med störningar.
Tex denna: https://www.elfa.se/elfa3~se_sv/elfa/in ... &toc=20448
Användarvisningsbild
kode
Inlägg: 62
Blev medlem: 21 maj 2011, 14:06:52
Ort: Linköping

Re: Datoriserat schackbräde

Inlägg av kode »

johey skrev:(Förövrigt tycker jag att ordet "promovera" är felaktigt. Det är en försvenskning av "promote", som för det första enligt praxis borde ha blivit "promotera" och för det andra redan har en svensk översättning - befodra.)
Ordet ifråga är sprunget ur latinet, där grundformen är promoveo. Nu vet jag inte riktigt hur försvenskning av latinska ord gick till historiskt, men jag tror att böjningarna på det stora hela behölls. Off-topic, jag vet. :/

(Även om det är mycket lödande så röstar jag nog ändå på ledmatrisvarianten för att visa datormotspelarens flyttningar. Då kan man ju även låta brädet visa tillåtna förflyttningar för den pjäs man tagit upp också. ;) )
Jonas L
Inlägg: 432
Blev medlem: 14 juli 2009, 14:28:41
Ort: Karlshamn

Re: Datoriserat schackbräde

Inlägg av Jonas L »

Dioder i matrisen är nödvändigt om man ska kunna trycka på många knappar samtidigt. Pull-up eller pull-down på ingångarna är också nödvändigt eftersom de lämnas öppna av öppna switchar. Fast du kanske har de interna pulluperna på?
johey
Inlägg: 67
Blev medlem: 29 maj 2003, 16:36:52
Ort: Stockholm
Kontakt:

Re: Datoriserat schackbräde

Inlägg av johey »

Förlåt, fortfarande inga bilder. Men håll ut! Det kommer vilket år som helst.

Bra idéer om promoveringen! Får se var det slutar.

Störningarna var just att jag inte körde med pulldown. Visste inte vad det var, men när jag mätte på inputarna såg jag att värdet låg på drygt en volt när jag tyckte den skulle vara 0. Visste inte vad pullup/down var tills jag läste om det. AVR:ens pullup kan jag tyvärr inte använda, för jag måste ha aktivt hög signal för att kunna polla matrisen rätt.

Det handlar inte om ghosting. Jag lyckades på förhand fundera ut att det skulle bli en issue, så jag har dioder på alla switcharna.

Det är fortfarande störningar på ett par rutor, men det handlar om fysiska problem med switcharna. De har känsliga glaskapslar som lätt spricker. Snart är systemet stabilt nog att kunna hjälpa mig reda ut vilka rutor som brusar. Köpte 100 switchar så jag har lite att ta av. :)

Reflexdetektor är en fin idé. Lite dyrt dock (även om det säkert finns billigare ute på bukten), men framförallt vill jag ha en design som inte fodrar hål i rutorna. Och magnetswitcharna verkar funka fint! Med de magneter jag valt funkar det dock bara om pjäsen står helt innanför rutan. Minsta mm utanför så släpper kontakten. Det är ju bra att den inte läser av grannpjäsen, men lite större känslighetsområde skulle inte skada. Ska labba med att "förstora" magneten med en järnbricka och se om det funkar.
johey
Inlägg: 67
Blev medlem: 29 maj 2003, 16:36:52
Ort: Stockholm
Kontakt:

Re: Datoriserat schackbräde

Inlägg av johey »

Nu kommer det bilder!

Kan nämna att jag nu har bytt ut de trasiga switcharna och att det nu funkar riktigt bra. Har flyttat runt en pjäs på brädet och tycker nog att känslighetsarean är ganska bra. Sålänge pjäsen är innanför rutan blir den avläst. Och rutan är rätt stor, så pjäsen kan stå rätt snett men fortfarande vara innanför. Blir säkert fel när man spelar en hetsig blixt, men det problemet får tacklas senare.
Pjäs och displayen
labbräda
Magnetswitch, reed switch
Brädet underifrån
Pjäs försedd med magnet
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar