getting 4 nanos to talk to a uno

So what im working on is 4 thermometers connected each to its own nano each of these I want to transmit there reading to a central ardunio which will display these on 7 segment displays

My specific areas of uncertainty are as follows

the 4 nanos will not have mains power so im not sure the best way to power them if I go batteries id like solar panels linked to them to charge them or something

one of these will sit outside so I need to weather shield it

im not sure the best way to get them to talk to each other

I had been using Bluetooth though the hc05 but I think thats 2 way only not 4 transiting to 1

any advice or pointers would be appreciated

What is the longest distance you want to communicate over?

And is there clear line of sight between the nanos and the Uno? If not, what obstacles are in the way.

Simple nRF24L01+ Tutorial

Have you looked at LoRa. I here good things about it but I have never used it. LoRa (short for long range) is a spread spectrum modulation technique derived from chirp spread spectrum (CSS) technology. Semtech's LoRa devices and wireless radio frequency technology is a long range, low power wireless platform that has become the de facto technology for Internet of Things (IoT) networks worldwide. Available is the LoRa library is an Arduino library for sending and receiving data using LoRa radios, this supports Semtech SX1276/77/78/79 based boards/shields.

WiFi. Something with ESP8266 in it, not Bluetooth. The Nanos would probably then be redundant.

Max range Will about 10 Meters needs to go through house walls

Max range Will about 10 Meters needs to go through house walls

2.4GHz wireless will struggle to penetrate walls. Lower frequency wireless such as the HC12 modules will work better.


I am reading up on the HC12 sorry been doing 12 hour days at work but just to check the way it works I could have 4 transmit ont he same channel each send a slightly different message and get one to listen to all and then display from there on the 4 different led displays right?

I have not used the HC12 modules myself. For any wireless if more than one Slave transmits on the same channel at the same time the messages will be garbled. There are various ways to deal with that.

A slave could expect an acknowledgement from the master and if it did not get it then it could re-send after a short interval. Make the intervals random lengths to reduce the possibility that two slaves both try again at the same moment.

Or, the master could send a request to each slave in turn and a slave would only “speak” after receiving a request.


The other way I was thinking is get each nano to only send signal every 2.5 minutes then stagger them ?

I have a somewhat similar setup using a custom 328P board with RFM69 radio modules on them operating at 433MHz. Each module has a DS18B20 temperature sensor on it and reports the temperature and battery voltage approximately every hour. The hour(ish) sleep is achieved using the built-in watchdog timer and 450 lots of 8 second sleeps. The watchdog timer is a poor timekeeper so the actual reporting interval is around 1hr 2min but varies between devices.

I rarely get message collisions because of the inherent randomness of the sleep interval and each unit has a slightly different delay between retries.

All modules are powered from 2x AA non-rechargeable batteries and have been running for 3-4 months now with very little reduction in battery voltage.

The "gateway" node is in a converted garage and all the RF signals have to get through a 2in Celotex sheet (2in thick foam sheet with foil on either side).

I dabbled briefly with RFM96 (LoRa) modules but I found that the RFM69 modules were simpler to use and there's also a ton of help and information on the Low Power Lab website and forum.

The other way I was thinking is get each nano to only send signal every 2.5 minutes then stagger them ?

The content of Reply #9 sounds like a reasonable way to implement that. But your code will need to be able to handle data collisions even if they are rare.


With that if two messages at the same time would it really much up the codding or just mean on reading will come out wrong?

It all seems to be being made more difficult than it really is. I’m sure you will eventually get up a system whereby a slave will only send its data when the master specifically demands it, and the master will only demands it when it knows the slave is listening.

You generally get either nothing of a garbled message. It depends on the radio modules that you use. Some validate the message first, some don’t. Either way, the slave devices will not get an ack from the master. In which case they should start their retry mechanism. If each node had a different delay between retries, then the 2 colliding nodes should avoid each other at the next transmission. You can create a fixed delay based on the node id, say 100mS for node 1, 200mS for node 2, etc.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.