Hi! For a long time now I'm having troubles with my gateway. My setup is
- a Raspberry Pi 3 running RaspberryOS Buster, with
- an Arduino Nano connected via USB to act as serial gateway, using
- an nrf24l01 wireless chip.
The problem is, that when a node tries to connect to the gateway, I see the following messages on the gateway:
0;255;3;0;9;3128482 TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
0;255;3;0;9;3128488 TSF:MSG:BC
0;255;3;0;9;3128492 TSF:MSG:FPAR REQ,ID=1
0;255;3;0;9;3128495 TSF:CKU:OK,FCTRL
0;255;3;0;9;3128499 TSF:MSG:GWL OK
0;255;3;0;9;3128719 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
So, as far as I understand, the gateway receives the initial request from the node and tries to answer. But for some reason the sending fails. This raises some questions for me:
- Does it mean the sending itself fails on the gateway side? Or does the gateway somehow know that the data is not received by the node?
- Should the
TSF:MSG:SEND
work, even if the gateway is not used by a controller (i.e. when connected to the Arduino IDE debug console)?
What I already did: I replaced already every part:
- I replaced the nrf24l01 chip with another one.
- I used the nrf24l01 with and without an external voltage regulator YL-105.
- I used a NRF24L01+PA+LNA with external antenna for the gateway
- I used another NRF24L01 module with antenna for the gateway
- I used a shielded nrf24l01 adapter with antenna like this one
- I played around with the
MY_RF24_PA_LEVEL
parameter.
- I used capacitors on both ends.
- I replaced the Arduino Nano of the gateway with another one.
- I cleared the EEPROM for the gateway and the node.
- I checked the wiring multiple times (including measuring with a multimeter).
- I used another node.
- I added step-up boosters to the battery powered nodes.
- I replaced the raspberry pi.
- I reinstalled the operating system on the raspberry pi.
- I switched from MyController to OpenHAB with the same result.
- I replaced USB cables.
- And much more.
The node and the gateway are both on my desk (so no long distance). The gateway code that runs on the gateway:
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
#define MY_RADIO_RF24
// Set LOW transmit power level as default, if you have an amplified NRF-module and
// power your radio separately with a good regulator you can turn up PA level.
#define MY_RF24_PA_LEVEL RF24_PA_LOW
// Enable serial gateway
#define MY_GATEWAY_SERIAL
// Define a lower baud rate for Arduinos running on 8 MHz (Arduino Pro Mini 3.3V & SenseBender)
#if F_CPU == 8000000L
#define MY_BAUD_RATE 38400
#endif
// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
//#define MY_INCLUSION_BUTTON_FEATURE
// Inverses behavior of inclusion button (if using external pullup)
//#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP
// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
//#define MY_INCLUSION_MODE_BUTTON_PIN 3
// Set blinking period
//#define MY_DEFAULT_LED_BLINK_PERIOD 300
// Inverses the behavior of leds
//#define MY_WITH_LEDS_BLINKING_INVERSE
// Flash leds on rx/tx/err
// Uncomment to override default HW configurations
#define MY_DEFAULT_ERR_LED_PIN 4 // Error led pin
#define MY_DEFAULT_RX_LED_PIN 6 // Receive led pin
#define MY_DEFAULT_TX_LED_PIN 5 // the PCB, on board LED
#include <MySensors.h>
void setup()
{
// Setup locally attached sensors
}
void presentation()
{
// Present locally attached sensors
}
void loop()
{
// Send locally attached sensor data here
}
So I don't have any ideas anymore and hope that someone here can help me at least for one more step.