iam currently working on a new project, where i would like to detect the existence/closeness of several objects around the arduino up to like 1 meter. I was thinking about an rfid setup, but as the objects could have different sizes like 5 centimetre tall and only 3 centimetre wide, i think this won't work for the max distance. I was also thinking about a ble beacon, but as this one has to be activley powered all the time, it wouln't be the perfect solution. As the base could be fully customized, it may have some kind of sensors/wires overall the surface, but iam a bit lacking of a good idea for this.

I hope someone might had a similar setup, or a good idea to go.

PS: When i think about it twice, it would be better, if it can be differentiate between some areas within the one meter and the different objects, entering each area. I've added some image, hope this helps to understand, what i want to archive at the end.

enter image description here

Thank you and greetings, Sebastian

  • why would an RFID solution be dependent on object size? – jsotola Aug 15 at 0:39
  • hey @jsotola thanks for the feedback, yes my mistake, just had a quick view into rfid setups and thought it have some dependency for the range, but just the reader seems to be a bit more expensive. But when i think about it twice, it would be better, if it can be differentiate between some areas within the one meter and the different objects, entering each area. I have added some image, hope this helps to understand, what i really want to archive. Thanks a lot! – sebbo111 Aug 15 at 20:16
  • The image confuses me. Why have you put the map of germany under your Arduino there? What are you trying to achieve? As you may have noticed, measuring the position (in this case with direction and distance) of multiple objects is not an easy task. A description of what you are actually trying to build might give us better information to suggest a fitting solution – chrisl Aug 16 at 20:50
  • @chrisl it should be a smart table top game and in this case "germany" just represents the field and in different areas should different situations recognized as soon as a object (character) enters the different areas – sebbo111 Aug 17 at 21:12
  • I want to detect specific small objects, which could be moved around in specific areas (one square meter), so not a "just detect somthing in front of xyz" and also not "depending on the range" detection. Does any has a suggestion so far? Thanks and Greetings, Sebastian – sebbo111 Aug 30 at 13:26

As you might have already seen, a position sensing system can be really complex. Here I will list some possibilities, that come to my mind and might be fitting for your case or not.

  • Matrix based solutions: Here I mean sensors a some sort arranged in a matrix underneath the game table, which can sense the object placed on them. As you know from your wiring, where a specific sensor is located, you know from the triggered sensor, where the object was placed. The resolution directly corresponds to the numbers of sensors, that you place. You can use different sensors, which will give you different information, but are also very different in handling and costs:

  • Reed switches and magnets on the bottom of the objects. The magnet on the object would close the reed switch. A read switches are rather cheap (have seen 40 pieces for about 10€ on amazon; on aliexpress or others you might get them even cheaper) and can be easily placed in an electrical matrix or (depending on the number and places of object at any time) checked via shift registers, which are also not very pricey.

  • Hall sensors and magnets on the bottom of the objects. You would measure the magnetic field of the magnets with the hall sensors. You could use different magnet strengths to get different readings and thus directly distinguish between different object types. The hall sensors will be not that easy to read. Mostly they have an analog output, thus you would need extra ADCs and multiplexers to read them all.

    • RFID readers and RFID chips in each object. Very pricey and rather low resolution. Also very difficult to read from all of them with the Arduino. But you could go for the reed switch version and use a single RFID reader to first tell the Arduino, which object you are placing. In the game you would first hold the object to the reader, then place it on the board.
  • Lidar system: A Lidar scanner could scan over your board (it measures the distance in a circle around it). Each object would be a negative peak in the measured distance distribution. From the angle and the distance, you could calculate the position on the board. Though you would need to carefully place the sensor, as one object might hide the other behind it. You can tackle that with an additional Lidar scanner, but the processing will also be rather complex. And Lidar scanners are rather expensive.

  • Ultrasonic sensors out the board: If you place enough ultrasonic sensors around the board and measure with one after the other, you might also get fitting results. But I would guess, that you won't get good positioning results with them, especially for the rather small objects and distances used on a game table.

  • Computer Vision: Away from Arduino you could use OpenCV on a Raspberry Pi together with a small camera above your board to detect objects. General object detecting is rather easy with OpenCV and python; getting it's position in the camera image is trivial then (from where you can calculate the position on the board easily). With more work it should also be possible to detect the object themselves (meaning distinguishing between different objects). We might need to train OpenCV with top-down images of the objects for that. If you don't get good results with the normal camera mode, you could try the IR camera mode (by removing the IR filter of the Pi's camera) and put some good IR reflective stuff on the top of the objects. Then OpenCV only has to find the bright spots in the image. All that is possible, though I cannot help you with that and also it is off-topic on this site.

  • If you can have a board with fixed positions, you could make direct electrical connections between the objects and the board. Though that means, that you would have metal contacts all over the board. I recently used such electrical connections to distinguish between different objects, which can be put into a small number of bays. I have 7 pins on each object, one of them ground. On the object I connected some of the other pins to the ground pin to create a binary pattern. The pins of each bay get read by a shift-in register. All registers are chained together and connected to the Arduino with a total of 4 pins.

Depending on your needs you could combine some of these options. I would try the OpenCV solution, or alternatively the reed switch with one RFID reader solution.

| improve this answer | |

You should use the HC-05 ultrasonic sensor. It has good accuracy and range. If you don't want to use that, you can use an infrared distance sensor. If these don't work, please tell me why.

| improve this answer | |
  • The HC-05 is a serial bluetooth bridge, not an ultrasonic sensor – chrisl Aug 18 at 6:40
  • What are you trying to detect? I thought you are trying to detect obstacles from a robot. – DragonflyRobotics Aug 18 at 13:05
  • hey, please see my comment above for chrisl, asking the same, greetings – sebbo111 Aug 19 at 1:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.