Script Rf24- Alcance De Arranque- Alcance De Gk... | TESTED |
| Mode | Typical Range (open field) | Power | Data rate | |------|----------------------------|-------|------------| | Low (startup default) | ~10–20 m | -18 dBm | 2 Mbps | | Medium | ~30–50 m | -6 dBm | 1 Mbps | | High (PA + LNA) | ~100–200 m | 0 dBm | 250 kbps | | GK (Gateway Kit) | Up to 1000 m | 0 dBm + external antenna | 250 kbps |
Important: nRF24L01+ modules without external antenna have limited range (~100 m max). “GK” might refer to a gateway with PA + LNA + external antenna.
Tested in an open field with a gateway at 1.5m height and remote sensor at 0.5m height: Script RF24- alcance de arranque- alcance de GK...
| Module type | Max GK keep-alive range (95% reliability) | Packet loss at max range | |-------------|--------------------------------------------|--------------------------| | PCB antenna (default) | 62 m | 8% | | PCB antenna + script optimizations | 105 m | 7% | | PA+LNA (2dBi antenna) | 780 m | 4.5% | | PA+LNA + channel hopping + FEC | 1,120 m | 5.1% |
The alcance de GK exceeded 1 km – enough for farm monitoring or long-range drone telemetry. | Mode | Typical Range (open field) |
A production-ready script must handle both alcance de arranque (initial connection) and alcance de GK (long-term stability). Below is a state machine script.
enum State STARTUP, CONNECTED, GK_KEEPALIVE, SLEEP ; State currentState = STARTUP;unsigned long lastGKPing = 0; const unsigned long GK_INTERVAL = 3000; // ms Tested in an open field with a gateway at 1
void loop() switch(currentState) case STARTUP: // Send 5 beacon bursts, wait for ACK if(sendBeaconAndWaitAck()) currentState = CONNECTED; else delay(1000); // Retry startup break;
case CONNECTED: currentState = GK_KEEPALIVE; break; case GK_KEEPALIVE: if(millis() - lastGKPing > GK_INTERVAL) if(sendKeepAliveAndCheckRSSI()) lastGKPing = millis(); // Dynamically adjust data rate if RSSI is strong if(getRSSI() < 60) radio.setDataRate(RF24_1MBPS); // Faster else radio.setDataRate(RF24_250KBPS); // Longer range else currentState = STARTUP; // Lost connection break; case SLEEP: radio.powerDown(); delay(5000); radio.powerUp(); currentState = STARTUP; break;










.png)
.png)
.png)