collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Xadrez, e aquilo que um pai atura  (Lida 36210 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline pedroc

  • Mini Robot
  • *
  • Mensagens: 92
Xadrez, e aquilo que um pai atura
« em: 28 de Outubro de 2016, 15:15 »
Boa tarde a todos, companheiros de luta
Já não vinha à algum tempo ao fórum que a vida profissional não o tem permitido.
Agora ando aqui com um projecto em conjunto com os meus filhos (ATL doméstico) e queria sondar as opiniões dos experts.
Ao longo do tempo temos feito pequenas coisas com arduinos, attinys e derivados. Além de passarmos excelente tempo em família é uma forma de ATL benéfica para ambas as partes e fortalecedora dos laços pai-filho.
Um deles (12 anos) lançou-me um desafio e não sei como descalçar esta bota. Estes miúdos de hoje têm ideias do arco da velha.
Ele é aficionado por xadrez (90% das vezes levo um cheque-mate ao fim de 20 jogadas) mas em frente que isso agora não interessa.
O projecto que ele me atirou constistia em tentar saber em que quadrado do xadrez estaria cada peça num dado instante.
Disse-lhe que era impossível/complicado, mas tentem demover um garoto de 12 anos e depois vejam.
Sem lhe dizer nada andei a vasculhar as minhas cábulas, o meu arduino cookbook e googlei uma serie de pesquisas, tudo infrutífero.
Pensei em criar um tabuleiro acrilico pintando as casas pretas e brancas, e por baixo ter um qualquer sensor que me lesse o que está por cima.
No mesmo seguimento, colaria um emissor/tag/chip (whatever) na base de cada peça de xadrez.
Colocam-se logo as seguintes questões que inviabilizam o processo:
* o xadrez tem 64 casas. Ligar 64 sensores parece-me exagerado, e nem com um mega lá chegaria
* mas se tentasse fazer para menos casas, apenas para o entreter uns sábados, poderia ser possível
* Que receptor/emissor poderei usar?
* Lembrei-me de pressão. Não dá porque o tabuleiro é inteiro. Também não identificaria qual a peça que lá está, e apenas se está ALGUMA peça ou não
* RFID pareceu-me a solução. Li 300 documentos sobre o assunto. Mas ligar 64 leitores rfid * quase 10 fios cada um... Desisti.
* li sobre sonares. Conseguiria saber se tem peça naquele quadrado ou não. Mas não saberia que peça.
   * Nem sei se os sonares passam pelo acrílico ou se são reflectidos dando leituras erradas
Soluções lógicas não encontrei mais nenhuma.
Acredito que seja mesmo um projecto impossível para um leigo como eu e para ser feito numa qualquer garagem, mas sonhar (ainda) não paga imposto.

Fiquem bem, e não façam curto circuito no halloween

Offline samc

  • Mini Robot
  • *
  • Mensagens: 442
Re: Xadrez, e aquilo que um pai atura
« Responder #1 em: 28 de Outubro de 2016, 15:54 »
Quando se está a falar de tantos I/O o tradicional é partir para a multiplexagem das entradas, imagina o caso típico de um display simples, se o microcontrolador tivesse de controlar cada pixel individualmente, imagina a "quantidade de arduinos" que não eram precisos (Pesquisa mais sobre este assunto: https://www.google.pt/search?q=multiplexing&oq=multiplexing&aqs=chrome..69i57j0l5.2507j0j4&sourceid=chrome&ie=UTF-8 )

Se for para usar mesmo um arduino e não estiverem interessados em visão computacional, há muitas sugestões:
A mais económica será usar interruptores. Podem ver se um microswitch simples consegue ser pressionado corretamente com a massa de uma peça de xadrez (que é baixa). Outra sugestão é usarem um tabuleiro com contactos metálicos expostos e a peça de xadrez ter uma base condutora de forma a fechar o circuito quando se pousa em cima (podem haver alguns maus contactos por isso tem de se desenhar bem os terminais no tabuleiro (talvez que façam um pouco de "mola").

Depois há sensores de proximidade por IR (ficam com bom aspeto no caso de um tabuleiro em acrilico) mas preço também vai disparar, por isso sugerir essas soluções mais simples e mais baratas.

Bons projetos  ;)

Offline samc

  • Mini Robot
  • *
  • Mensagens: 442
Re: Xadrez, e aquilo que um pai atura
« Responder #2 em: 28 de Outubro de 2016, 16:00 »
Outro assunto para pesquisares é sobre os Shift Register  https://www.google.pt/search?q=shift+register possivelmente podem ser úteis para esse projeto


Offline pedroc

  • Mini Robot
  • *
  • Mensagens: 92
Re: Xadrez, e aquilo que um pai atura
« Responder #3 em: 28 de Outubro de 2016, 16:08 »
Quando se está a falar de tantos I/O o tradicional é partir para a multiplexagem das entradas, imagina o caso típico de um display simples, se o microcontrolador tivesse de controlar cada pixel individualmente, imagina a "quantidade de arduinos" que não eram precisos (Pesquisa mais sobre este assunto: https://www.google.pt/search?q=multiplexing&oq=multiplexing&aqs=chrome..69i57j0l5.2507j0j4&sourceid=chrome&ie=UTF-8 )

Se for para usar mesmo um arduino e não estiverem interessados em visão computacional, há muitas sugestões:
A mais económica será usar interruptores. Podem ver se um microswitch simples consegue ser pressionado corretamente com a massa de uma peça de xadrez (que é baixa). Outra sugestão é usarem um tabuleiro com contactos metálicos expostos e a peça de xadrez ter uma base condutora de forma a fechar o circuito quando se pousa em cima (podem haver alguns maus contactos por isso tem de se desenhar bem os terminais no tabuleiro (talvez que façam um pouco de "mola").

Depois há sensores de proximidade por IR (ficam com bom aspeto no caso de um tabuleiro em acrilico) mas preço também vai disparar, por isso sugerir essas soluções mais simples e mais baratas.

Bons projetos  ;)

Obrigado pelas respostas. É este espírito de partilha que gosto neste fórum.
Começando pelo fim, eu até já usei shift registers em alguns led cubes que fiz e que serviu basicamente para ensinar o miudo a soldar.
Parece-me uma boa solução, sem dúvida. Não me tinha lembrado.
Relativamente à sua/tua primeira resposta, nenhum dos casos serve para este efeito.
Eu conseguiria saber se essa casa tem alguma peça, é verdade, mas não saberia qual a peça que lá está.
O desafio do projecto e que me está a tirar o sono é eu saber que peça está nessa mesma casa
2 id's - peão (um preto e um branco)
2 id's - torre
2 id's - bispo
2 id's - cavalo
2 id's - rainha
2 id's - rei
Teria de conseguir ler 12 ID's/tags (whatever) diferentes
De qualquer das formas, muito obrigado pelas respostas.

Offline octoCore

  • Mini Robot
  • *
  • Mensagens: 23
Re: Xadrez, e aquilo que um pai atura
« Responder #4 em: 28 de Outubro de 2016, 16:11 »
Isso com um MCU/SOC à homem é muito mais fácil ... agora com um arduino é
mais complicado devido aos limites do mesmo, mas nada que não seja possível.

O que procura é isto:
http://chess.fortherapy.co.uk/home/


Offline octoCore

  • Mini Robot
  • *
  • Mensagens: 23
Re: Xadrez, e aquilo que um pai atura
« Responder #5 em: 28 de Outubro de 2016, 16:24 »
Em tempos fiz algo no género num Sparc ... não existe necessidade de ter um "ID" para
cada peça para saber a posição das mesmas no tabuleiro , se pensarmos um pouco é
mesmo muito simples  ... sabemos a disposição das peças na abertura do jogo, logo
quando uma peça é levantada sabemos qual ela é (cavalo, rainha, peão, etc) depois
com essa informação basta actualizar o "tabuleiro virtual" quando a peça e novamente
poisada no tabuleiro real ... simples, simples.


Offline pedroc

  • Mini Robot
  • *
  • Mensagens: 92
Re: Xadrez, e aquilo que um pai atura
« Responder #6 em: 28 de Outubro de 2016, 16:27 »
Em tempos fiz algo no género num Sparc ... não existe necessidade de ter um "ID" para
cada peça para saber a posição das mesmas no tabuleiro , se pensarmos um pouco é
mesmo muito simples  ... sabemos a disposição das peças na abertura do jogo, logo
quando uma peça é levantada sabemos qual ela é (cavalo, rainha, peão, etc) depois
com essa informação basta actualizar o "tabuleiro virtual" quando a peça e novamente
poisada no tabuleiro real ... simples, simples.

Esse link já tinha visto. Mas obrigado à mesma.
Quanto a essa solução, tem toda a razão. É facil dessa forma.
O código não me preocupa que estou bem à vontade, o que me estava a enguiçar era saber se sensor/receptor/emissor usar
Se não houver sugestões para o cenário que indico (ideal), irei então tentar essa abordagem.

Offline octoCore

  • Mini Robot
  • *
  • Mensagens: 23
Re: Xadrez, e aquilo que um pai atura
« Responder #7 em: 28 de Outubro de 2016, 16:38 »

Com 16 IOs livres é possível ler todas as posições do tabuleiro, na falta
de 16 IOs livres é possivel usar um IO extenter que comunica com o MCU
por I2C ou SPI.

Para "sentir" as peças no tabuleiro basta um reed, um pressure sensor ou algo
no género, ou se quisermos ser mesmo mais "aventureiros" um sensor capacitivo.

A melhor solução, a meu ver, é um hall sensor com um pequeno neodimio em cada
peça.

Offline samc

  • Mini Robot
  • *
  • Mensagens: 442
Re: Xadrez, e aquilo que um pai atura
« Responder #8 em: 28 de Outubro de 2016, 16:41 »
Como foi dito, não há uma necessidade explícita de identificar a peça se o jogo começar com condições conhecidas.
Caso a pessoa queira complicar também pode ao invés de fazer uma leitura binária do estado da peça, dá para utilizar o conversor ADC do uC e fazer uma leitura da resistência de cada peça. Neste caso as peças teriam de ter uma resistência de valor conhecido na base (ao invés de uma superfície condutora simples) e tem de se usar contactos de outra forma (em círculo) para não ser necessário colocar a peça numa determinada posição.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Xadrez, e aquilo que um pai atura
« Responder #9 em: 28 de Outubro de 2016, 17:29 »
Identificar se uma casa têm uma peça, mesmo num tabuleiro de 8x8, é relativamente simples. Pode Ser resolvido com interruptores, reeds, IR, Hall, etc metidos numa matriz e tá a rolar.

Depois de pensar um bocado , arranjar uma maneira de identificar qual de 12 peças (rei, rainha, bispo, cavalo, torre e peão)x(brancas e pretas) remete-me para este xkcd:

http://xkcd.com/1425/

Não vejo nenhuma forma fácil: sem fios deve obrigar a circuito ativo nas peças. Passivo só com ligação física entre a peça e o tabuleiro, que é um berbicacho).

Reconhecimento de imagem está fora de questão? :D

Offline pedroc

  • Mini Robot
  • *
  • Mensagens: 92
Re: Xadrez, e aquilo que um pai atura
« Responder #10 em: 28 de Outubro de 2016, 17:35 »
Identificar se uma casa têm uma peça, mesmo num tabuleiro de 8x8, é relativamente simples. Pode Ser resolvido com interruptores, reeds, IR, Hall, etc metidos numa matriz e tá a rolar.

Depois de pensar um bocado , arranjar uma maneira de identificar qual de 12 peças (rei, rainha, bispo, cavalo, torre e peão)x(brancas e pretas) remete-me para este xkcd:

http://xkcd.com/1425/

Não vejo nenhuma forma fácil: sem fios deve obrigar a circuito ativo nas peças. Passivo só com ligação física entre a peça e o tabuleiro, que é um berbicacho).

Reconhecimento de imagem está fora de questão? :D

jm_araujo, completamente fora de questão  ;D ;D ;D ;D ;D
Mas o que me ri com esta imagem  ;D ;D ;D ;D

Vou avançar com os hall e ver o que sai dali.
De tudo o que li tambem não vi nenhuma forma "simples" de o fazer

Offline octoCore

  • Mini Robot
  • *
  • Mensagens: 23
Re: Xadrez, e aquilo que um pai atura
« Responder #11 em: 28 de Outubro de 2016, 19:05 »
Depois de pensar um bocado , arranjar uma maneira de identificar qual de 12 peças (rei, rainha, bispo, cavalo, torre e peão)x(brancas e pretas) remete-me para este xkcd:
http://xkcd.com/1425/

Sério ? Para alguns foi mesmo muito fácil, o método memory/pick&place foi usado no Deep Blue da IBM, e dado na cadeira de AI do MIT , e é conhecido globalmente.

Não vejo qual a duvida, qual o seu argumento a refutar a solução proposta ?

Offline octoCore

  • Mini Robot
  • *
  • Mensagens: 23
Re: Xadrez, e aquilo que um pai atura
« Responder #12 em: 28 de Outubro de 2016, 19:54 »
A dificuldade está na mente de cada um, e depende do conhecimento que
se tem das matérias.

Existem duas formas "tradicionais" de resolver a questão (estudo MIT)
- Método "deduzido" que usa a técnica virtual board+pick&place.  Simples de implementar a nível de hardware, simples de programar, tem a desvantagem
de não funcionar em partidas a meio-jogo, somente em jogos cuja abertura
teve lugar com o sistema ligado.

- Método "activo" em que cada peça é identificada por um sinal RFID. Mais
alta dificuldade de implementação e custo a nível de hardware, programação
com o mesmo grau de dificuldade da anterior, funciona mesmo se a partida tiver
sido interrompida ou em partidas a meio-jogo.

Existe um estudo da Stanford University sobre o uso de CV aplicada a esta
temática (procurem na net o paper da Stanford University sobre Visual Chess
Recognition). Num MCU como os AVR isso é totalmente impraticável.
« Última modificação: 28 de Outubro de 2016, 21:22 por octoCore »

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Xadrez, e aquilo que um pai atura
« Responder #13 em: 28 de Outubro de 2016, 23:46 »
Primeiro ao que vinha:
Lembrei-me de um método ativo de detetar qual a peça sem partes ativas nas mesmas nem grandes alterações, mas infelizmente quando fiz a conta ao preço dos componentes fica para o carote.
Há uns ICs engraçados de deteção de cor: http://www.geeetech.com/wiki/index.php/Arduino_TCS230_Color_Recognition_Sensor_module . Teria de se montar um em cada casa junto com pelo menos um LED Branco.
A única alteração às peças de jogo seria colorir as bases, por exemplo com autocolantes, o que permitia usar quase quaisquer peças que te apetecesse.
Foi a ideia mais simples que me surgiu sem ter de andar a furar e meter componentes nas peças, mas infelizmente os detetores de cor mesmo no ebay custam mais de 2€. A multiplicar por 64 + LEDs + lógica é só fazer as contas, como dizia o Secretário Geral da ONU :D

Quanto ao resto:

Depois de pensar um bocado , arranjar uma maneira de identificar qual de 12 peças (rei, rainha, bispo, cavalo, torre e peão)x(brancas e pretas) remete-me para este xkcd:
http://xkcd.com/1425/

Sério ? Para alguns foi mesmo muito fácil, o método memory/pick&place foi usado no Deep Blue da IBM, e dado na cadeira de AI do MIT , e é conhecido globalmente.

Não vejo qual a duvida, qual o seu argumento a refutar a solução proposta ?
A dificuldade está na mente de cada um, e depende do conhecimento que
se tem das matérias.


Existem duas formas "tradicionais" de resolver a questão (estudo MIT)
- Método "deduzido" que usa a técnica virtual board+pick&place.  Simples de implementar a nível de hardware, simples de programar, tem a desvantagem
de não funcionar em partidas a meio-jogo, somente em jogos cuja abertura
teve lugar com o sistema ligado.

- Método "activo" em que cada peça é identificada por um sinal RFID. Mais
alta dificuldade de implementação e custo a nível de hardware, programação
com o mesmo grau de dificuldade da anterior, funciona mesmo se a partida tiver
sido interrompida ou em partidas a meio-jogo.

Existe um estudo da Stanford University sobre o uso de CV aplicada a esta
temática (procurem na net o paper da Stanford University sobre Visual Chess
Recognition). Num MCU como os AVR isso é totalmente impraticável.

Esse tom passivo-agressivo (em bold) ficou muito mal.

Deves ter lido a minha resposta na diagonal pois depois quase repetes o que eu escrevi:
Citar
Identificar se uma casa têm uma peça, mesmo num tabuleiro de 8x8, é relativamente simples. Pode Ser resolvido com interruptores, reeds, IR, Hall, etc metidos numa matriz e tá a rolar.
Detetar a presença de uma peça é a base do método memory/pick&place (não li o estudo, deduzo que seja o óbvio). Mas tens de ter uma abertura tradicional, não podes começar numa posição arbitrária sem ter um método de introduzir manualmente as posições no controlador. Seja como for este método não identifica as peças, apenas supõe que são o que devem ser se cumprires as regras. Daí calculo que surja o termo "Método "deduzido""

A deteção das peças de forma abitrária (identificação pura e dura) é que é complicado, como disse:
Citar
Não vejo nenhuma forma fácil: sem fios deve obrigar a circuito ativo nas peças. Passivo só com ligação física entre a peça e o tabuleiro, que é um berbicacho).
Refiro-me claro ao hardware, obrigando a que as peças sejam activas (RFID por exemplo mas deve ser difícil evitar cross-talk), ou haja uma interface elétrica física entre as peças e o tabuleiro (conetores de alguma forma). É em alusão a essa dificuldade que mostro o cartoon, pode parecer que o salto de "detetar uma peça" para "detetar que peça" é  quase a mesma coisa mas estão um mundo aparte.

O software é "corriqueiro" em ambos os casos, uma matriz de 8x8 e meia dúzia de regras de movimentos de xadrez cabe em qualquer micro corrente. Até um programa para jogar xadrez não deve ser complicado, há vários exemplos para micros antigos em menos de 1k: http://mashable.com/2015/01/30/play-it-better-tiny-chess-game/#9A4uhRElkkq5 (não disse que jogavam bem! :D). Não procurei para ATMega ou outros micros correntes, mas não me admirava se já houvesse qualquer coisa.

E quando falo de reconhecimento de imagem, achei que era claro que não seria num AVR. O preço que fica um RPi e uma câmara+OpenCV  deve compensar em relação aos componentes necessários de um "Método "activo"", obrigando a mais esforço de programação vez de andar a caçar problemas de hardware. É daí que surge a sugestão, há quem prefira atacar com o teclado em vez de com o ferro de soldar.

Espero ter sido mais claro agora octoCore, e tem mais cuidado com o tom das respostas que quando se entra numa comunidade dessa forma costuma acabar mal.
« Última modificação: 28 de Outubro de 2016, 23:49 por jm_araujo »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: Xadrez, e aquilo que um pai atura
« Responder #14 em: 28 de Outubro de 2016, 23:59 »
E que tal uma tabuleiro de acrílico / vidro com transparência, e cada peça em baixo ter um código QR colado.
Por baixo do tabuleiro uma câmara e um RPI a fazer de mini Microsoft Surface Table.