Detect letters (block) placed on support in right order

Hi guys, I have a project and I am at the very beginning of it. I need your help for it. I would like to make a kind of connected scrabble game, but the final game will be completely different.

I need to detect small blocks (not cube because they are quite thin) placed on a support, in the right order. And once detected, send the information to a smartphone via bluethooh. (send the word finally)

I just know arduino a little bit, but I am developper so good programming skills and I was before that theoritical physicist so I understand quite well how electricity works but just in theory haha.

I made a small schema to explain you my first idea: put on the support some wire with low voltage, which I connect to an arduino (maybe nano it has to be small) . On each letter I have 5 small vertical wires to simulate 5 bits ( enough for the alphabet), I may be need to add extra bits for recognizing each individual blocks ( cause without this, if i have three AAA which are lets say 11111 for each one, i will not see that they are letters on the support.)

schema.pdf (138,2 Ko)

When current go into the wire I would be informed of what there is on the support.

But i absolutly don't know if it can works, or if there are some other techniques. In fact
there was a related topics but the guy seems to leave out his project. I put it here : https://forum.arduino.cc/t/sensing-blocks-placed-in-a-grid/329278

I don't want to use camera because there will be multiple player.

I don't want to go over 20€ per support and more thant 0.50$ per letter.

Thank you for your time!

Welcome to the forum

To post images etc you need trust level 1, you can get there by:

  • Entering at least 5 topics
  • Reading at least 30 posts
  • Spend a total of 10 minutes reading posts

Users at trust level 1 can…

  • Use all core Discourse functions; all new user restrictions are removed
  • Send PMs
  • Upload images and attachments

If practical, you may choose to differentiate the blocks by weight.
Then you could validate the stacking by checking the variation between each item as it’s loaded.

May be study how electronic chess boards recognize the different pieces with resonant components. That’s probably the cheapest solution

Than you for your response. Weight is an option Indeed but seems to me a little bit more complicated. Maybe not. I will explore that idea. Thanks!

But for the stacking the problem is that letters can be put and removed not in the order like in scrabble ! This is a quite difficult problem.

That is a really nice Idea! They had to think it the cheapest possible so take that approach must be very effective!

They might have a few patents around this (eg US6168158B1 - Device for detecting playing pieces on a board - Google Patents and many more) - so if it is for a commercial development later then that’s something you need to take into consideration

That is definitely interesting I will read all the stuff I can get about this technology.

But don't you think it is possible to do something simpler ? It is one dimensionnal for my case, and only give to each block a byte will allow me to do what I want. Moreover, if it is possible I don't want to have slots, like in scrabble, to let more freedom to the user and let him rearranging them as he wants.
I don't know how simulate 0 and 1 on each block and detect it with the support. Do you think that it could be feasable and simpler than the connected board technology ?

I added the schema in initial message.

And I want to thank you for your welcome. Community on the forum seems to be wonderful!

Will the blocks be placed in well defined positions and always be oriented the same way ?

They will be place always in same orientation because letters have to be on the front and have a up and down (maybe a problem with some symetrical letters, but it is possible to give to the user clues to well orientate it).
What is sure is that back will be always back.

But for the place where they will be put, I would like to let user places blocks freely along the axis defined by support. If it is not possible I can go for slots.

If you were to use slots then you could detect the presence or absence of magnets embedded in the block or an RFID tag attached to or embedded in the blocks

Yes I could but wouldn't it be quite expensive for 10 or 12 slots ? With those elements I really don't know how it is possible to not hit the 20$ limit.

And would it be possible to have a contact map (with pressure captor) and read it ? Putting some element on relief on the back side of each block to identify them.


Your budget is going to be difficult, if not impossible to meet however you do it. How many letter blocks do you envisage using and how many letter positions on the support

Your schema with one wire from the rack to the Arduino is not going to work. Any conductors on the back of the blocks will have to bridge two separate wires to be detected.

If you use magnets you might be able to take advantage of the polarity. Each position would have three states: North, South, or Absent. I think that would allow 26 letters to be represented with three 'trits' (trinary digits).

Yes, this seems to be quite a challenge haha!
User would be able to buy how much letters he wants by pack of 80-100 and how much support (according for the final number of player).

Each player can play with around 80 letters and a support. i would like to sell it for around 25$.

Players could be at maximum 6, 8 or 10. Not sure for this number for the file.

Ok, so do you think that with two wires it would be feasable? It seems to be quite cheap thats why it was my first Idea!

Your magnet proposition si very interesting, 27 possibilities would be perfect!
Is it possible to have custom size magnetic sensor that could fit with the support ?

And I had forgotten to say that I would like to have enough place to put 10 or 12 blocks max, so around 12 inches.

With two wires you could detect if one or more blocks were in place but not their number, value, or position. Not very useful.

If each block has up to five wires you need at least five contacts per position. Each wire would have to touch at least one contact so the gaps between contacts must be narrower than the wires. I think a strip of printed-circuit material will be the best way to get a fine-pitch strip of separate contacts. Might also be a good way to generate the contacts on the back of the blocks.

Put a bar code on the back of each block.
The blocks rest between two rails so the back is visible.
Mount a barcode reader on the moveable part of an actuator of the type used in 3D printing or like one used to move printheads (toothed belt).
Move the reader from one end to the other scanning blocks as you go.
The blocks can have uneven spacing since it's the order that's important.

image

That is a nice solution, the fact that the blocks can be unevenly spaced is terrific, and print a barcode almost cost nothing. This is a real option.
The drawbacks that come to me first are the fact that it is not instantaneous (the necessary movement for reading barcodes have to be continuous or be activated by user, which is not what I hopped)
I'll investigate it!

I came up with new idea seeing that project.
For X blocks, I will do a 5 * X grid. So a capacity touch sensor with 16 pins for 11 blocks will be sufficient.
Before creating slots, i will put along the axis of the support 5 copper foil tape with small thickness spaced evenly. And 1 vertical foil tape for each slot. (cf the schema)
I'll print some little bar on the back of each block (five at maximum).
I simulate 5 bits for each slots so enough to know what letter is in each slot.
Capacitive sensor are not too expansive, copper tape neither, so I thinks there is something to do with that idea.

I will have some other question if it feasable.

Do you think that it could works well, and do you have some advise ?

Thank you all for your responses so far, it really helps me a lot!