After running a RPi 3 openHAB/MySensors gateway for months with some Nano nodes and zero issues, I decided to branch out and add some nodes using Easy/Newbie PCB.
After wiring everything up, the new battery-powered 3.3v node connected to the gateway immediately and started reporting battery levels. Fantastic!
After a couple hours, data wasn't getting logged in my mqtt broker anymore. I started troubleshooting and looking at logs and found no reason why it would have stopped connecting to the gateway when I had made no changes to the circuit.
I decided to start with a fresh set of components and built a duplicate of the node. It connected right away but then experienced the same symptoms.
This is my node setup:
- Easy/Newbie PCB board as mentioned above (rev 10)
- Arduino pro mini clone
- NRF24L01+
- 3.3v step-up booster
- caps as recommended in the battery setup of newbie pcb and across radio
- Arduino IDE 1.8.9
- MySensors lib 2.3.1
- bare minimum sketch that only reports battery
- Battery powered by 2xAA batteries
This is my gateway setup:
- Raspberry Pi 3 with MySensors 2.3.2-beta built as mqtt gateway
- NRF24L01+ radio
- 4.7uF cap across radio
Here are the things I've tried/checked:
- checked voltages at every point on the PCB: caps, booster, battery, radio, arduino, etc, everything is well within acceptable ranges
- checked soldered connections several times
- replaced radios, caps
- Tried various distances between radios from 6 inches to 6 feet.
All my other Arduino Nano nodes are powered by wall warts and continue to have no problems sending and receiving messages.
Based on the logs (on both the battery powered nodes) it seems that the nodes have no problems transmitting messages, and the gateway is receiving them. If I'm understanding the logs correctly, it seems that the nodes are not always receiving messages from the gateway.
Here is logging from the node:
361084 TSF:MSG:SEND,72-72-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
363094 !TSM:FPAR:FAIL
363096 TSM:FAIL:CNT=7
363098 TSM:FAIL:DIS
363100 TSF:TDI:TSL
423104 TSM:FAIL:RE-INIT
423106 TSM:INIT
423112 TSM:INIT:TSP OK
423116 TSM:INIT:STATID=72
423118 TSF:SID:OK,ID=72
423120 TSM:FPAR
423157 TSF:MSG:SEND,72-72-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
425166 !TSM:FPAR:NO REPLY
425168 TSM:FPAR
425205 TSF:MSG:SEND,72-72-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
427214 !TSM:FPAR:NO REPLY
427216 TSM:FPAR
427253 TSF:MSG:SEND,72-72-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
429262 !TSM:FPAR:NO REPLY
429264 TSM:FPAR
429301 TSF:MSG:SEND,72-72-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
431310 !TSM:FPAR:FAIL
431312 TSM:FAIL:CNT=7
431314 TSM:FAIL:DIS
431316 TSF:TDI:TSL
Here is logging from the gateway:
TSF:MSG:READ,72-72-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
TSF:MSG:BC
TSF:MSG:FPAR REQ,ID=72
TSF:CKU:OK,FCTRL
TSF:MSG:GWL OK
!TSF:MSG:SEND,0-0-72-72,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
TSF:MSG:READ,72-72-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
TSF:MSG:BC
TSF:MSG:FPAR REQ,ID=72
TSF:CKU:OK,FCTRL
TSF:MSG:GWL OK
!TSF:MSG:SEND,0-0-72-72,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
TSF:MSG:READ,72-72-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
TSF:MSG:BC
TSF:MSG:FPAR REQ,ID=72
TSF:CKU:OK,FCTRL
TSF:MSG:GWL OK
!TSF:MSG:SEND,0-0-72-72,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
Finally, here's a picture of one of the nodes (note that I resoldered the radio cap to be as close to the PCB as I could):
A final note, despite everything I have read in documentation, forums, data sheets, and in a moment of desperation, I switched to a 5v bench power supply, just to see.
It works. The node connects to the gateway, I can see in the logs the messages going back and forth. The pro mini is only getting 3.3v due to the booster, but the radio is getting 5v when measuring across the radios ground/vcc pins. I would have expected it to fry the radio almost immediately. EDIT radio stopped working after 5 minutes, but maybe this still provides some insight? Ha! I'm at a loss to explain this and why it's the only scenario in which the node and gateway can communicate consistently.
Any ideas on what could be wrong, here?