[Solved] Arduino Nanos don't work as nodes
-
My issue is rather simple, no matter what I do, Arduino Nano nodes are unable to act as nodes.
I have a working pair of an Arduino Nano based GW and an Arduino Mega 2560 based node.
I have:
- Switched the radios between the nodes, the same radios that work on the GW and the Mega work on each other.
- Tried PA+LNA and two different regular nRF24 boards (no, not the COB ones)
- Built three new boards to plug the radio and the Nano into -
- Tried 1uF, 10uF and 470uF decoupling all separately
- Tried both with and without
MY_PARENT_NODE_ID
andMY_PARENT_NODE_IS_STATIC
- Tried with and without
MY_TRANSPORT_WAIT_READY_MS
- I wiped the EEPROM of all the devices
- Tried an external 3.3V regulator
- With both the old and new Nano bootloader
- Multiple Nano boards
- Downloaded newer Arduino IDE and newest MySensors
- Switched channel and tried different power levels
But the node still either outputs:
16 MCO:BGN:INIT REPEATER,CP=RNNRA---,FQ=16,REL=255,VER=2.3.2 27 TSM:INIT 28 TSF:WUR:MS=0 34 TSM:INIT:TSP OK 36 TSM:INIT:STATID=1 38 TSF:SID:OK,ID=1 40 TSM:FPAR 45 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2052 !TSM:FPAR:NO REPLY 2054 TSM:FPAR 2058 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4065 !TSM:FPAR:NO REPLY 4067 TSM:FPAR 4071 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 6078 !TSM:FPAR:NO REPLY 6080 TSM:FPAR 6084 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 8091 !TSM:FPAR:FAIL 8092 TSM:FAIL:CNT=1 8094 TSM:FAIL:DIS 8096 TSF:TDI:TSL 18098 TSM:FAIL:RE-INIT 18100 TSM:INIT 18106 TSM:INIT:TSP OK 18108 TSM:INIT:STATID=1 18111 TSF:SID:OK,ID=1 18113 TSM:FPAR 18117 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 20124 !TSM:FPAR:NO REPLY 20126 TSM:FPAR
or with
MY_TRANSPORT_WAIT_READY_MS
:16 MCO:BGN:INIT REPEATER,CP=RNNRAS--,FQ=16,REL=255,VER=2.3.2 54 TSM:INIT 58 TSF:WUR:MS=1 64 TSM:INIT:TSP OK 66 TSM:INIT:STATID=1 68 TSF:SID:OK,ID=1 69 TSM:FPAR 70 TSM:FPAR:STATP=0 72 MCO:BGN:INIT OK,TSP=0 74 TSM:ID 1 Sensor: 17 76 !MCO:SND:NODE NOT REG 79 MCO:SLP:MS=500,SMS=0,I1=255,M1=255,I2=255,M2=255 84 !MCO:SLP:REP 86 TSM:ID:OK 87 TSM:UPL 123 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1 2 Sensor: 34 586 !MCO:SND:NODE NOT REG 589 MCO:SLP:MS=500,SMS=0,I1=255,M1=255,I2=255,M2=255 594 !MCO:SLP:REP
Node code:
// Enable debug prints to serial monitor #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 #define MY_REPEATER_FEATURE #define MY_TRANSPORT_SANITY_CHECK #define MY_SIGNAL_REPORT_ENABLED #define MY_RF24_CE_PIN 9 #define MY_RF24_CS_PIN 10 #define MY_RF24_CHANNEL 29 #define RF24_DATARATE RF24_2MBPS #define RF24_PA_LEVEL RF24_PA_MIN #define RF24_PA_LEVEL_GW RF24_PA_MIN #define MY_NODE_ID 1 #define MY_PARENT_NODE_ID 0 #define MY_PARENT_NODE_IS_STATIC #define MY_TRANSPORT_WAIT_READY_MS 1 #include <MySensors.h> uint32_t SLEEP_TIME = 500; // Sleep time between reads (in milliseconds) MyMessage msg(0, V_LIGHT_LEVEL); void presentation() { pinMode(A7, INPUT); Serial.begin(115200); // Send the sketch version information to the gateway and Controller sendSketchInfo("Basicsensor 1", "0.1"); // Register all sensors to gateway (they will be created as child devices) delay(10); present(0, S_LIGHT_LEVEL, F("Light level sensor"), true); } uint16_t lightLevel = 0; uint16_t lastLightLevel = 0; void loop() { lightLevel = analogRead(A7); if (lightLevel != lastLightLevel) { Serial.print("Sensor: "); Serial.println(lightLevel); send(msg.setSensor(0).setType(V_LIGHT_LEVEL).set(lightLevel)); lastLightLevel = lightLevel; } sleep(SLEEP_TIME); }
I now suspect there's a bug somewhere in MySensors introduced by some newer version affecting Arduino Nanos. Because I remember MySensors working on Nanos a while ago.
Maybe someone here has some ideas how to narrow the issue down?
-
I created a new gateway on an Arduino Nano today, and that worked. Not sure if that was using the very latest MySensors though. The rest of my network is all based on the RF-Nano, which I'm a big fan of. It shields me from exactly these types of issues
How are you powering them?
Tried an external 3.3V regulator
The Nano itself runs on 5v, but I suspect you know that.
Have you tried enabling the advanced radio debug option? (I forget it's name). That can magicaly enable things sometimes. At the very least it will tell you more about what's going on.
Are you sure there's nothing like encrpytion on the gateway?
Built three new boards to plug the radio and the Nano into -
Have you tried replacing all the wires between the nano and the radio module?
I recommend just buying the Arduino Nano Wireless Expansion Board. They cost a dollar on Aliexpress.
Maybe you have some of those fake Atmel chips?
-
pinMode(A7, INPUT);
should not be in presentation. It should be in setup. Similarly, don't putSerial.begin(115200);
in there. All that should be inpresentation
function issendSketchInfo
andpresent
.Also, don't use "delay", use
wait()
instead.And where is your setup function in the first place?
-
Also, your code never loads MySensors? It's commented out?
Your node code is very strange.
-
@alowhum said in Arduino Nanos don't work as nodes:
How are you powering them?
USB, tried a wall-wart and two different PCs.
Are you sure there's nothing like encrpytion on the gateway?
Yes, it's the default gateway sketch, except configured to use the right channel, data rate and nRF24.
Have you tried replacing all the wires between the nano and the radio module?
Yeah, I have multiple boards, some years old and have worked with other nRF24 projects. Plus, any wiring changes actually break it for things such as RF24.
Have you tried enabling the advanced radio debug option? (I forget it's name).
I'll look into that.
Maybe you have some of those fake Atmel chips?
Three of them bought at different times, and the only issues are with MySensor? Seems unlikely.
-
Also, your code never loads MySensors? It's commented out?
Um, line 22
#include <MySensors.h>
Your node code is very strange.
It was of the examples, barely modified.
-
@Avamander said in Arduino Nanos don't work as nodes:
Um, line 22 #include <MySensors.h>
Ah, you're right. Have been programming in other languages lately, where that indicates a comment.
-
Is there a reason you're swapping your CE and CS pins?
-
@alowhum said in Arduino Nanos don't work as nodes:
Is there a reason you're swapping your CE and CS pins?
Because they're wired that way and it doesn't/shouldn't matter.
-
What happens if you remove everything but the essentials for your network here?
#define MY_REPEATER_FEATURE #define MY_TRANSPORT_SANITY_CHECK #define MY_SIGNAL_REPORT_ENABLED #define MY_RF24_CE_PIN 9 #define MY_RF24_CS_PIN 10 #define MY_RF24_CHANNEL 29 #define RF24_DATARATE RF24_2MBPS #define RF24_PA_LEVEL RF24_PA_MIN #define RF24_PA_LEVEL_GW RF24_PA_MIN #define MY_NODE_ID 1 #define MY_PARENT_NODE_ID 0 #define MY_PARENT_NODE_IS_STATIC #define MY_TRANSPORT_WAIT_READY_MS 1
Maybe only leave
#define MY_RF24_CHANNEL 29
?
-
Look for something like
MY_DEBUG_VERBOSE_NRF24
- something along those lines, for that debug option I mentioned.
-
// Enable debug prints to serial monitor #define MY_DEBUG #define MY_DEBUG_VERBOSE_RF24 // Enable and select radio type attached #define MY_RADIO_NRF24 #define MY_TRANSPORT_SANITY_CHECK #define MY_RF24_CE_PIN 9 #define MY_RF24_CS_PIN 10 #define MY_RF24_CHANNEL 29 #define RF24_DATARATE RF24_2MBPS #define RF24_PA_LEVEL RF24_PA_MIN #define RF24_PA_LEVEL_GW RF24_PA_MIN #define MY_NODE_ID 1
16 MCO:BGN:INIT NODE,CP=RNNNA---,FQ=16,REL=255,VER=2.3.2 26 TSM:INIT 28 TSF:WUR:MS=0 29 RF24:INIT:PIN,CE=9,CS=10 31 RF24:SBY 32 RF24:WBR:REG=0,VAL=14 39 RF24:WBR:REG=3,VAL=3 41 RF24:WBR:REG=4,VAL=95 44 RF24:WBR:REG=5,VAL=29 47 RF24:WBR:REG=6,VAL=37 49 RF24:WBR:REG=29,VAL=4 51 RF24:RBR:REG=29,VAL=4 53 RF24:RBR:REG=6,VAL=37 55 RF24:RBR:REG=5,VAL=29 58 RF24:WBR:REG=2,VAL=2 60 RF24:WBR:REG=1,VAL=0 62 RF24:WBR:REG=28,VAL=3 64 RF24:FRX 65 RF24:FTX 66 RF24:WBR:REG=7,VAL=112 69 TSM:INIT:TSP OK 70 TSM:INIT:STATID=1 72 RF24:WBR:REG=2,VAL=3 74 RF24:WBR:REG=1,VAL=1 76 RF24:STL 78 RF24:WBR:REG=0,VAL=15 80 RF24:WBR:REG=10,VAL=1 82 TSF:SID:OK,ID=1 84 TSM:FPAR 86 RF24:SPL 87 RF24:WBR:REG=0,VAL=14 89 RF24:OWP:RCPT=255 91 RF24:WBR:REG=10,VAL=255 93 RF24:WBR:REG=16,VAL=255 96 RF24:TXM:TO=255,LEN=7 98 RF24:FTX 99 RF24:WBR:REG=4,VAL=80 103 RF24:WBR:REG=7,VAL=112 106 ?RF24:TXM:MAX_RT 108 RF24:FTX 109 RF24:WBR:REG=4,VAL=95 111 RF24:STL 113 RF24:WBR:REG=0,VAL=15 115 RF24:WBR:REG=10,VAL=1 117 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2125 !TSM:FPAR:NO REPLY 2127 TSM:FPAR 2128 RF24:SPL 2130 RF24:WBR:REG=0,VAL=14 2132 RF24:OWP:RCPT=255 2135 RF24:WBR:REG=10,VAL=255 2138 RF24:WBR:REG=16,VAL=255 2140 RF24:TXM:TO=255,LEN=7 2143 RF24:FTX 2144 RF24:WBR:REG=4,VAL=80 2149 RF24:WBR:REG=7,VAL=112 2151 ?RF24:TXM:MAX_RT 2153 RF24:FTX 2155 RF24:WBR:REG=4,VAL=95 2157 RF24:STL 2158 RF24:WBR:REG=0,VAL=15 2161 RF24:WBR:REG=10,VAL=1 2163 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4171 !TSM:FPAR:NO REPLY 4173 TSM:FPAR 4174 RF24:SPL 4175 RF24:WBR:REG=0,VAL=14 4178 RF24:OWP:RCPT=255 4180 RF24:WBR:REG=10,VAL=255 4184 RF24:WBR:REG=16,VAL=255 4186 RF24:TXM:TO=255,LEN=7 4189 RF24:FTX 4190 RF24:WBR:REG=4,VAL=80 4195 RF24:WBR:REG=7,VAL=112 4197 ?RF24:TXM:MAX_RT 4199 RF24:FTX 4201 RF24:WBR:REG=4,VAL=95 4203 RF24:STL 4204 RF24:WBR:REG=0,VAL=15 4207 RF24:WBR:REG=10,VAL=1 4209 ?TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 6217 !TSM:FPAR:NO REPLY
Still no reply.
-
I'm not super experienced using mysensors but I do have 3 nodes working and when first settings things up I had some problems with NODE IDs. It looks like you are setting a Static node Id? Is that ID "free" in the gateway? Have you tried powering of all the nodes you have running, wiping the EEPROM of the gateway, powering up the gateway and shortly after powering up the node?
Someone else perhaps knows this better but, if the gateway don't want to include the node, does that generate the FPAR:No reply?
And also, how is the interrupt pin connected?
-
I use Arduinos all the time and have problem with them.
I suggest to start with one of the examples.The RF channel is the same everywhere I guess?
What does the output on the gateway say?
-
It looks like you are setting a Static node Id? Is that ID "free" in the gateway?
Yes, there are no other nodes (other than the one with a different static node ID that works)
Have you tried powering of all the nodes you have running,
Yes.
wiping the EEPROM of the gateway, powering up the gateway and shortly after powering up the node?
Yes, I've wiped EEPROMs of all the nodes.
-
@Avamander I meant, have you erased the EEPROM of the gateway?
-
I meant, have you erased the EEPROM of the gateway?
Yes, that too.
And also, how is the interrupt pin connected?
The radio's IRQ pin is not connected. (
The IRQ pin is only required to be connected if the MY_RX_MESSAGE_BUFFER_FEATURE is defined in the sketch.
)
-
@Avamander Regarding the interrupt pin, at least when using the RFM95 I need to have the pin connected to be able to receive anything. It doesnt poll the module to check for incoming messages. Maybe its different with nRF24.
I haven't tried messing with the MY_RX_MESSAGE_BUFFER_FEATURE so I wouldnt know about that.
-
Well, the documentation says I don't have to have it connected.
I suggest to start with one of the examples.
The gateway and node both are examples with the minimal required changes.
The RF channel is the same everywhere I guess?
Yes.
What does the output on the gateway say?
Nothing, totally silent. When I plug in the Mega node, then it starts outputting all the sensor and other data.
Anyways, the weird thing here is that I remember this working a few years or so ago on the same boards and stuff, it just doesn't work now and I have 0 clue why. I'm thinking about downgrading MySensors to 1.something
-
@Avamander Found the documentation you were referring to and yes. Seems to be true for the RF24 which I haven't used in a long time.
#define MY_RX_MESSAGE_BUFFER_FEATURE This enables the receiving buffer feature. This feature is currently not supported for anything but RF24. Require MY_RF24_IRQ_PIN to be set. Note: Not supported on ESP8266, ESP32, STM32, nRF5 and sketches that use SoftSPI. See below issue for details https://github.com/mysensors/MySensors/issues/1128 Definition at line 2406 of file MyConfig.h.
-
I don't think this is a software issue. More likely your NRF24 is failing.
-
@electrik It's highly unlikely. I have more than one type of module and more than one module of each type, none of them work. I also swapped the modules between working GW and Mega node and it still works, I swap the module between working GW and the node, it doesn't work.
-
Could you try version 2.2 of mysensors? I remember summer changes in 2.4 regarding nrf modules
-
Could you try version 2.2 of mysensors? I remember summer changes in 2.4 regarding nrf modules
I went to the oldest available version and it doesn't work.
I don't really get it, if I swap the radios between the Mega node and the Nano node, it stops working, swapping CE/CSN also makes it stop working - any alterations make it fail loud and clear.
It does initialize the radio and claim everything is okay. I can be quite certain it's not the radios, it's not the boards themselves, it's not the wiring.
There's something very specific to the Nanos themselves that 2.x.x is unable to use the nRF24L01+.
I will assemble an Arduino Uno board and see if the issue is specific to the AtMega328P.
-
I also ran the full "test" suite of RF24 and all examples work great, so I am very certain communication is likely to be very good.
It's just that something makes MySensors not like it.
-
Just in case I also took clean
RepeaterNode
example and just defined the CE/CSN pins and channel, it's still unable to work.I also tried the same example without any repeater functionality enabled, it's still unable to register. It's basically a blank sketch.
Changing Node ID didn't also work.
-
In your first sketch the baud rate was 2mbps. How is your existing network configured?
If you take an example sketch and an example gateway sketch, does it work then. So don't change channels and so on
-
In your first sketch the baud rate was 2mbps. How is your existing network configured?
That's exactly the same across all my sketches.
If you take an example sketch and an example gateway sketch, does it work then. So don't change channels and so on
Yeah, I did that and wrote about it above, took
RepeaterNode
and just defined CE/CSN on GW and the node.
-
I've determined that it doesn't matter which:
- Radio
- Radio's power supply/source
- Nano
- Bootloader
- Arduino IDE (tried 1.8.2 and latest nightly)
- 2.x.x MySensors
- Example, or custom sketch
- Channel, data rate, power level or node ID
- Repeater or not
- WAIT_READY_MS or not
- Predefined master or not
- SPI bus speed, 0.5*default SPI speed didn't help
I just can't make a Nano act as a regular node.
Maybe a MySensors dev has an idea what I could try.
-
I'm going to finish my Arduino Uno node and if that too doesn't work getting MyController to work must take some goat sacrifice because I can't do it.
-
I just discovered that on the Arduino Uno
RF24_250KBPS
works, butRF24_2MBPS
doesn't. On the Nanos, neither work.I used RF24 and tested the boards for a while, I've determined that 2MBPS on that specific channel works great, I've sent at least 100 000 packets and lost only two. Auto-ack and dynamic payloads also work.
I am 99.99% certain this is a bug in MySensors. @mfalkvidd maybe you have some ideas where to look next?
-
@Avamander nano's are basically just regular atmega328 boards, running off 5v at 16MHz. The MySensors stack doesn't know if it is running on a nano, uno or pro mini, so why are you so certain this is a bug in the stack?
What I do know is that a lot of low quality nanos are available from Chinese sources, with bad ground planes or crappy power regulators.
What nano boards do you use? Could you try a different atmega328 based arduino?
-
@Yveaux said in Arduino Nanos don't work as nodes:
The MySensors stack doesn't know if it is running on a nano, uno or pro mini, so why are you so certain this is a bug in the stack?
What I do know is that a lot of low quality nanos are available from Chinese sources, with bad ground planes or crappy power regulators.Because I'm really rather certain it isn't the hardware. You can read what I've replaced, swapped and tried. The radios have been decoupled, the power has been decoupled. The setup works in all possible ways when using RF24.
What nano boards do you use? Could you try a different atmega328 based arduino?
Yeah, I said I tried an Uno and it exhibited pretty much the same symptoms when acting as a regular node.
-
@Avamander Can you upload both, the GW and node sketches from the working pair nanoGW/megaNode? Also, it would be helpful to see the full GW log from the non-working combination (nanoNode/megaGW) with
MY_DEBUG_VERBOSE_RF24
enabled. If time allows, I'd like to reproduce and test your setup.
-
Just to be clear, the Arduino Mega node (megaNode) can talk to the Arduino Nano gateway (nanoGW), but no Arduino Nano node (nanoNode) can talk to the Arduino Nano gateway.
I'll post the sketches and logs.
-
Ah, I think cussing is warranted here, I copied the radio configuration from my old sketch to the new ones, the node had:
#define RF24_DATARATE RF24_2MBPS
The GW has:
#define MY_RF24_DATARATE RF24_2MBPS
Lesson learned: Never copy configuration from an existing older sketch, you never know what has been deprecated without a warning.
MY_RADIO_NRF24
threw a warning and I fixed that, had no idea aboutRF24_DATARATE
and I didn't notice it.
-
This thread reads like an Agathie Christie novel. Well done on finding it!