Mesh network: Power + data on a single wire?

Status
Not open for further replies.

feklee

Active member
Consider a mesh of nodes:

mesh.jpg

The nodes may also be connected in sequence:

sequence.jpg

Details:
  • Connector type: coax cables (one signal wire, grounded shielding)
  • Connector length: about 10 cm (4 inches)
  • Communication speed: currently 4,800 baud (half-duplex, naturally)
  • The red node is powered (root node).
  • For now: no more than ten nodes
  • (Eventually there may be hundreds of nodes.)

How would I submit power from the red node to all the nodes?

On the web, I found many articles about techniques for sending power and data over a single wire. However, those that I looked at don’t fit my particular use case.

So I thought about separating power and data in time. See schematic below. Algorithm, by example:
  1. Seconds 1-9: Have nodes communicate.
  2. Second 10: Take data pins off the net, then send a power pulse through the mesh, e.g. 12V. This recharges capacitors.
  3. Repeat.

Disadvantages:
  • untested approach
  • wrong timing = fried MCUs
  • all nodes need to be in sync (should be doable)
  • expensive capacitors needed if not switching often

node-detail.jpg
node.jpg

For more information about the project, see my GitHub repo feklee/san.
 
Sorry, can't undetstand why you want decouple power from data by time scheme (switching).
You use short coax cable, so AC/DC decoupling by circuit schould be no problem and more relaible, especially if you use HF modulation.

just my 2c
 
if you go as POE you could just add your nodes to POE switches and have the main MCU talk to them over the network, through UDP broadcasts or MQTT subscriptions
 
Sorry, can't undetstand why you want decouple power from data by time scheme (switching).

Because I’m an electronics layman.

You use short coax cable, so AC/DC decoupling by circuit schould be no problem and more relaible, especially if you use HF modulation.

Thanks for the suggestion! However, I’ve no clue how design such a thing.

Just to keep in mind: While individual cables are short (about 10cm or four inches), the nodes may be connected in sequence, forming a much longer connection. See also the second illustration added.
 
Just in short.

Fernspeisung.GIF

This is an very simple example of how the circuit for remote feed could basically look like (reciever node).
The value of capacitor (47nF) for DC decouplig depends on transfer speed.
For the voltage regulator take a customized one to your needs.

Of course there are much more elegant solutions.

Bear also in mind the suggestion from tonton81 and use prefabicated PoE (Power over Ethernet) equipment and transfer you data via Ethernet modules.
 
Just in short.

Thanks for the suggestion! I’ll have to do some reading on that topic.

Bear also in mind the suggestion from tonton81 and use prefabicated PoE (Power over Ethernet) equipment and transfer you data via Ethernet modules.

I am only aware of POE over twisted pair, and that’s not what is used here. Connectors that can be rotated freely are a requirement. This is a construction kit! BNC connectors with RG58 cables in rigid tubes work nicely. Picture from the GitHub repo:

edge.jpg

Of course, BNC connectors are used for Token Ring. However, Token Ring puts constraints on topology.

Anyhow, Ethernet is overkill. The network here does nothing more than figure out its topology. This can be done with simple and cheap ATTiny85 MCUs (though, currently during development, I’m running out of memory on these). One data / power wire plus ground should be enough.
 
I only mentioned POE because you mentioned power routing...

what you suggest is a 10BaseT network with seaparate mcu power supplies or additional wire runs.

POE would simplify everything to simple cable runs albeit a little more expensive setup, and wouldnt require more than 1 cable run to each of your devices

just saying
:)

RG6-UTP underground cabling is rigid too, as an alternative to your coax.
I can also suggest, CCTV Baluns, I work in security and you can pass off 75ohm data over coax like COAX networks we use for CVI/SDI/TVI networks that use same networking similar to 10BaseT. The Baluns use 2 wires of UTP cable on each end, then, like the coax connector, you plug the Balun directly in your device, giving you 6 additional wires spare, for power and ground etc....

speaking of rigid, if you go UTP with baluns, I suggest stranded UTP vs solid
 
Thanks for the suggestion, but:

what you suggest is a 10BaseT network with seaparate mcu power supplies or additional wire runs.

I’m not sure you understand what this is about. People playing with the construction kit should be able to assemble it in any way they want. The network then determines it’s own topology. That’s all that it does. The network does not transmit any other data. Ethernet would be total overkill. With the current setup, electronics for one node would not cost more than about three bucks, and that’s during prototyping.

RG6-UTP underground cabling is rigid too

Rigidity of the cables is not a requirement. Cables are put in metal tubes. What is a requirement is the ability of the connectors to rotate freely, and they should be reasonably cheap.
 
As I still don’t know where to start, and as I have the feeling that I’m being misunderstood, I decided to simply the problem:

simple-sequence.png

Details:
  1. Distance between each two nodes: about 10 cm (4 inches)
  2. Number of nodes: up to ten
  3. Data rate: 4.800 baud
  4. 1 wire: for data and power
  5. Symmetry: The boxes [?] should be the same everywhere. It should be possible to connect nodes in any order and orientation. Each box [?] should work as sender and receiver, both for power and for data.

How to transfer power and data over just one wire? In other words, what goes into the boxes labeled with a question mark?

Options so far:
  • I’m still thinking about separating data and power in time (see my original post).
  • @larry_berlin mentioned HF modulation, but I don’t understand the circuit, and I wouldn’t know how to dimension the components. Also, I’m not sure if the above symmetry requirement (5.) can be fulfilled.
 
You have a lot of competitive requirements.
Hence the following new proposal.
Use a stereo jack for connecting the knots, which is axially shaped and would work in any direction.
So you have 3 connections and your cable stay cheap.
The connections are GND, power and data.
Power supply is in masternode (battery) and there you can possibly use the Onewire library (see page PJRC) of Paul.
For the slavenodes you must write a separate library, which emulates the behavior as the Onewire devices of Dallas.
 
you cant have data gnd and power on a single ‘wire’

regarding the audio cable, im sure the fine threads in the tiny stranded wire is sufficient to power up to 10 nodes in a topology type of setup? :)
 
Use a stereo jack for connecting the knots, which is axially shaped and would work in any direction.

Thanks for the suggestion! In fact I was thinking about stereo jacks before. The advantage of BNC connectors is that they can be secured against pulling. However, if things get too complicated, I may reconsider.

Power supply is in masternode (battery) and there you can possibly use the Onewire library (see page PJRC) of Paul.

Interesting that you mention 1-Wire. Didn’t know that Paul wrote a library for it – that’s great!

Maxim provides an introduction: Maxim 1-Wire Tutorial (Flash required)
  • Slide 11: Description of how devices are searched. Note that the master device does not need to know the topology of the network.
  • Slide 15: Power over 1-Wire (here we have it!)

Unfortunately, I believe 1-Wire is not suitable for my application:
  • Topology: I doubt that 1-Wire works with meshed networks of devices. In fact, all the examples I’ve seen so far have devices arranged in sequence.
  • Detection of topology: In my case, the master needs to know the topology of the network, i.e. which node is connected to which. The way 1-Wire is designed, this information is not communicated to the master.
  • Power: In addition to the MCU, later I would like to add a bright addressable RGB LED to each node. 1-Wire may be too weak for that.

By the way, a custom communication protocol I already designed. It seems to do the trick, at least for small networks.

PS: Judging by your user name, you may be located in Berlin. Fridays I’m sometimes found at AFRA Hackabend, just in case you want to have a look at the project. ;) Tonight, I’ll be hosting MadeByUs Open Lab Night at Spektrum, Neukölln. Plan to print some more nodes there.
 
Current status concerning supplying power to nodes:
  • Stereo plugs: When inserting them, they short poles. ⇒ scrapped
  • Batteries: That’s what I plan to use for now, for demonstration purposes.
  • Overlaying power and signal: Still no idea how to do that.
  • Decoupling power and data in time (switching): Having read that the 1-Wire protocol does this, I gave this approach some more thought. Here’s an algorithm that could work:
    • The root node instructs all nodes to go into sleep mode. In sleep mode, a node’s communication pins are off the grid.
    • The root node waits until all nodes are in sleep mode.
    • The root node sends a high voltage pulse through the network, causing a capacitor to charge in each node.
    • On the falling edge of the high voltage pulse, all nodes wake up.
    • The nodes communicate for some time, using power from the capacitors.
    • Back to a.

@Arerest50: Sure, go ahead and ask questions. That’s what forums are for. Just, I suggest you try to find the questions using search first. If they haven’t been discussed, then please create a new discussion thread.
 
Last edited:
im pretty sure thats a bot, those 1 post posters never seem to include relevant hardware/software feedback and always just thank people and mever heard of again and then BAM, spam happens later on
 
Update: I decided to go with a battery in each node for now.

For serial two-way communication, I just finished writing my own library: MultiTrans

MultiTrans is an implementation of a multi channel transceiver: Each pin can transmit and receive at the same time (transceive). Multiple pins can transceive simultaneously. Collisions are automatically detected and circumvented.
 
What hardware is actually used inside each node? Is it Teensy?

The first version was with a Digispark/Attiny85. Then – after running out of flash memory – I switched to the Arduino Pro Mini. I also considered the Teensy LC, but decided against it for cost reasons. In the end, compared to the effort it takes to produce one node, cost of the MCU is not something I care much about anymore.

Now that I wrote MultiTrans, I think I’ll stick with the Pro Mini for the time being. Writing that library was a major effort. It was the first time I did low level MCU programming (ATmega328/P), and I learned a lot along the way.

At Maker Faire Berlin, I got some suggestions for transmitting power and data over just one wire:
  • “take 1-Wire and modify it to your needs”
  • “use fm or amplitude or frequency modulation”
Both approaches require adding additional hardware, so this is something for the far future. For now I want to have something that simply works reliably, even if batteries are required. That being said, if someone wants to give a helping hand, I may reconsider. :)

Further suggestions are always welcome, of course!
 
Status
Not open for further replies.
Back
Top