How to daisy chain "sensor modules" with arduino and get the order of IDs?

Thread Starter

TillFly

Joined Oct 26, 2016
57
Hey together,

I want to design a modular system with kind of wooden buildings blocks ( 10 x 10 x 10 cm). This blocks shall pass sensor information from one to another in a serial connection. The information finally shall end up in an Arduino/pc.

In this wooden blocks I want to have several inductive proximity sensors to track a metallic object, which will be moving on the wooden surface of the building blocks.

Lets imagine I would put some of the blocks ( like BLOCK A, BLOCK B and BLOCK C ) in a chain and move a metallic stick over it.
Each of the blocks should be able to detect the metallic stick and its position over it. In addition it should be able to forward the tracking data on to the next building block and so on till it sums up in the Arduino/pc.

The blocks shall be connected via magnetic connectors like this one
https://www.mouser.de/datasheet/2/704/M9K703-299L-1111514.pdf

First of all I would try out this circuit with the Arduino:
https://www.14core.com/wiring-a-metal-detector-sensor-with-npn-proximity-sensor/
Then I would try to get very small sensors, maybe like here
https://www.fargocontrols.com/miniatureinductive.html

I have a good feeling till here, now the questions:


Questions:
- Is there problematic interference with the inductive proximity sensors? I would like to drill holes from underneath of the surface so that the surface itself stays "untouched/neat". I guess 4mm of wood wont effect the magnetic field drastically.
- Would it make sense to have an ADC in every block to avoid interference of analog signals?

- How could the inductive proximity data be transferred from one block to another?
- if the order of the blocks would be changed, how could I get the new order in the block array?

I hope my question are not to unconcrete, if so pls let me know and I´m eager to densify and elaborate!

Best in advance,
Till
 

Sensacell

Joined Jun 19, 2012
2,985
You don't specify how many ports on each block and your connectors are not hermaphroditic so they can only assemble Male to Female.
These details are very important to the logic of this problem.

Are they going to configure in a grid? or just a line?

Here are some thoughts:

1) Create a communications bus that links all the modules together. (1-wire open-collector or RS-485 style)
This bus would allow one module at a time to 'talk' while all the others 'listen'.

2) Use some of the other pins to 'handshake' between blocks, a one-to-one connection, for detection of module orientation and token passing.

3) With this scheme, make one of the modules a 'master' - have it talk first, announcing it's address on the bus, then passing a token to the next module which can then announce it's address (address +1) to the bus, and so on...

The trick is figuring out when all this complicated stuff can start, if the units are battery-powered it's really tricky, (how does it know when you are finished assembling?) if it's powered from one end, you could restart the whole thing to begin the process by cycling the power.

The prox sensor is the least of your worries- buy one and play with it first before you commit to the batch.
 

Thread Starter

TillFly

Joined Oct 26, 2016
57
You don't specify how many ports on each block and your connectors are not hermaphroditic so they can only assemble Male to Female.
These details are very important to the logic of this problem.
I would like to try MALE - FEMALE first.

Are they going to configure in a grid? or just a line?
just a line, as simple as possible at the beginning.

I have to research about your thoughts to understand it, more questions probably later :)

The trick is figuring out when all this complicated stuff can start, if the units are battery-powered it's really tricky, (how does it know when you are finished assembling?) if it's powered from one end, you could restart the whole thing to begin the process by cycling the power.
As you suggest, I would try to make a circuit which is powered from one end.
The line could also start with a "start module". if "Start module" and "end module" are connected, doenst matter how many blocks in between, the blocks ping at each other.
 

LesJones

Joined Jan 8, 2017
3,701
A suggestion on the message addressing system. All blocks will always send out it's own address as one in the address part of the communications protocol. All blocks will pass messages through but add 1 to the address. So the host will see the nearest block to it as address 1. The next one will be seen as 2 and so on.

Les.
 
Top