Any success story on LoRa(RFM95) module and MySensors?
-
I am trying to build LoRa setup as follows,
- ESP8266 + RFM95 (MQTT gateway). Works perfectly
- Arduino Uno(Atmega328P) + RFM95. Doesn't work.
My Configurations (arduino UNO),
// Enable and select radio type attached #define MY_RADIO_RFM95 #define MY_DEBUG_VERBOSE_RFM95 #define MY_RFM95_MAX_POWER_LEVEL_DBM (20) // max. TX power 10dBm = 10mW #define MY_RFM95_FREQUENCY (RFM95_868MHZ) #define MY_RFM95_MODEM_CONFIGRUATION (RFM95_BW125CR48SF4096) // Enable repeater functionality for this node #define MY_REPEATER_FEATURE #define MY_DEBUG
My ESP8266 Configurations,
// Enable and select radio type attached #define MY_RADIO_RFM95 #define MY_DEBUG_VERBOSE_RFM95 #define MY_RFM95_MAX_POWER_LEVEL_DBM (20) // max. TX power 10dBm = 10mW #define MY_RFM95_FREQUENCY (RFM95_868MHZ) #define MY_RFM95_MODEM_CONFIGRUATION (RFM95_BW125CR48SF4096) #define MY_RFM95_IRQ_PIN 5 #define MY_RFM95_IRQ_NUM MY_RFM95_IRQ_PIN #define MY_RFM95_CS_PIN 15 #define MY_GATEWAY_MQTT_CLIENT #define MY_GATEWAY_ESP8266
Debug message atmega328p,
17 MCO:BGN:INIT REPEATER,CP=RLNRA---,VER=2.2.0-rc.2 26 TSM:INIT 28 TSF:WUR:MS=0 29 RFM95:INIT 30 RFM95:INIT:PIN,CS=10,IQP=2,IQN=0 44 RFM95:PTX:LEVEL=13 46 TSM:INIT:TSP OK 48 TSM:FPAR 49 RFM95:SWR:SEND,TO=255,SEQ=0,RETRY=0 2053 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4060 !TSM:FPAR:NO REPLY 4062 TSM:FPAR 4063 RFM95:SWR:SEND,TO=255,SEQ=0,RETRY=0 6068 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 8075 !TSM:FPAR:NO REPLY 8077 TSM:FPAR 8078 RFM95:SWR:SEND,TO=255,SEQ=0,RETRY=0 10083 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
Log message from gateway,
327 MCO:BGN:INIT GW,CP=RLNGE---,VER=2.2.0-rc.2 331 TSF:LRT:OK 333 TSM:INIT 334 TSF:WUR:MS=0 335 RFM95:INIT 337 RFM95:INIT:PIN,CS=15,IQP=5,IQN=5 350 RFM95:PTX:LEVEL=13 352 TSM:INIT:TSP OK 354 TSM:INIT:GW MODE 356 TSM:READY:ID=0,PAR=0,DIS=0 359 MCO:REG:NOT NEEDED scandone f 0, 861 .1361 .1861 .2361 .scandone state: 0 -> 2 (b0) state: 2 -> 3 (0) state: 3 -> 5 (10) add 0 aid 8 cnt connected with jee, channel 6 dhcp client start... 2861 .3361 .3861 .4361 .4861 .5361 .5861 .6361 .6861 .7361 .7861 .8361 .8861 .9361 .9861 .10361 .ip:192.168.1.113,mask:255.255.255.0,gw:192.168.1.1 10861 .10861 IP: 192.168.1.113 10863 MCO:BGN:STP 10867 MCO:BGN:INIT OK,TSP=1 10869 IP: 192.168.1.113 10871 Attempting MQTT connection... pm open,type:2 0 26601 IP: 192.168.1.113 26603 Attempting MQTT connection... 27633 MQTT connected 27635 Sending message on topic: out_rfm95/0/255/0/0/18 28247 Sending message on topic: out_rfm95/0/255/3/0/11
-
@jkandasa
I have no arduino uno, but I think it's like the nano, a 5v board, so signals are 5v.
RFM95 is not 5v tolerant.
You need to use level shifter, or a 3v pro mini
-
@scalz Thank you! I tried with 3.3 volts (with pro mini). no luck
-
When I change the following settings modem configuration(
MY_RFM95_MODEM_CONFIGRUATION
), works nice,RFM95_BW125CR45SF128 RFM95_BW500CR45SF128
Doesn't work with the following modem configurations,
RFM95_BW31_25CR48SF512 RFM95_BW125CR48SF4096
-
If you were to write-up your project so that others may follow it in detail, I'm sure many people would be interesting in following the trail you're blazing.
-
@neverdie I do not have any specific project at this moment. Just checking the performance and range of LoRa (RFM95) with MySensors library.
Gateway(ESP8266 + RFM95):
// Application details #define APPLICATION_NAME "Gateway RFM95" #define APPLICATION_VERSION "1.0.0.Beta" // Enable debug prints to serial monitor #define MY_DEBUG // Use a bit lower baudrate for serial prints on ESP8266 than default in MyConfig.h #define MY_BAUD_RATE 115200 // Enable and select radio type attached #define MY_RADIO_RFM95 #define MY_DEBUG_VERBOSE_RFM95 //#define MY_DEBUG_VERBOSE_RFM95_REGISTERS //#define MY_RFM95_ATC_TARGET_RSSI (-70) // target RSSI -70dBm //#define MY_RFM95_MAX_POWER_LEVEL_DBM (20) // max. TX power 10dBm = 10mW #define MY_RFM95_FREQUENCY (RFM95_868MHZ) //#define MY_RFM95_MODEM_CONFIGRUATION (RFM95_BW500CR45SF128) #define MY_RFM95_MODEM_CONFIGRUATION RFM95_BW125CR45SF128 #define MY_RFM95_IRQ_PIN 5 #define MY_RFM95_IRQ_NUM MY_RFM95_IRQ_PIN #define MY_RFM95_CS_PIN 15 #define MY_GATEWAY_MQTT_CLIENT #define MY_GATEWAY_ESP8266 // Set this node's subscribe and publish topic prefix #define MY_MQTT_PUBLISH_TOPIC_PREFIX "out_rfm95" #define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "in_rfm95" // Set MQTT client id #define MY_MQTT_CLIENT_ID "mys_rfm95_1" // Enable these if your MQTT broker requires usenrame/password #define MY_MQTT_USER "mqtt" #define MY_MQTT_PASSWORD "mqtt" // Set WIFI SSID and password #define MY_ESP8266_SSID "jee" #define MY_ESP8266_PASSWORD "password12345678" // MQTT broker ip address. #define MY_CONTROLLER_IP_ADDRESS 192.168.1.209 // The MQTT broker port to to open #define MY_PORT 1883 #include <ESP8266WiFi.h> #include <MySensors.h> #include <SimpleTimer.h> #include <ArduinoOTA.h> SimpleTimer timer; // Create a Timer object called "timer"! #define OTA_PASSWORD "mycontrollerrfm95" #define SEN_INTERNAL 10 void setup() { ArduinoOTA.onStart([]() { Serial.println("ArduinoOTA start"); }); ArduinoOTA.onEnd([]() { Serial.println("\nArduinoOTA end"); }); ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { Serial.printf("OTA Progress: %u%%\r", (progress / (total / 100))); }); ArduinoOTA.onError([](ota_error_t error) { Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); } else if (error == OTA_BEGIN_ERROR) { Serial.println("Begin Failed"); } else if (error == OTA_CONNECT_ERROR) { Serial.println("Connect Failed"); } else if (error == OTA_RECEIVE_ERROR) { Serial.println("Receive Failed"); } else if (error == OTA_END_ERROR) { Serial.println("End Failed"); } }); ArduinoOTA.setPassword((const char *)OTA_PASSWORD); ArduinoOTA.begin(); timer.setInterval(1000L * 60 * 15, sendInternals); // Here you set interval and which function to call } void presentation() { sendSketchInfo(APPLICATION_NAME, APPLICATION_VERSION); present(SEN_INTERNAL, S_CUSTOM, "Internal:rssi"); request(SEN_INTERNAL, V_VAR1); sendInternals(); } void receive(const MyMessage &message) { //Do not process messages from other nodes if(message.sender != GATEWAY_ADDRESS){ return; } } void sendInternals(){ MyMessage _internal(SEN_INTERNAL, V_VAR5); char _msg[26]; //rssiQuality snprintf_P(_msg, 25, "p:rssiAsQty=%d", getRSSIasQuality(WiFi.RSSI())); send(_internal.set(_msg)); //ip snprintf_P(_msg, 25, "p:ip=%s", WiFi.localIP().toString().c_str()); send(_internal.set(_msg)); //Free Heap snprintf_P(_msg, 25, "p:heap-f=%d", ESP.getFreeHeap()); send(_internal.set(_msg)); //HostName snprintf_P(_msg, 25, "p:host=%s", WiFi.hostname().c_str()); send(_internal.set(_msg)); //rssi snprintf_P(_msg, 25, "rssi:%d dBm", WiFi.RSSI()); send(_internal.set(_msg)); //RFM95-rssi snprintf_P(_msg, 25, "RFM95-rssi:%d dBm", transportGetReceivingRSSI()); send(_internal.set(_msg)); _internal.setType(V_VAR1); send(_internal.set(getRSSIasQuality(WiFi.RSSI()))); } int getRSSIasQuality(int RSSI) { int quality = 0; if (RSSI <= -100) { quality = 0; } else if (RSSI >= -50) { quality = 100; } else { quality = 2 * (RSSI + 100); } return quality; } void loop() { ArduinoOTA.handle(); timer.run(); // SimpleTimer is working }
Node source code(Promini + RFM95):
#define SKETCH_NAME "Signal Monitor" // Change to a fancy name you like #define SKETCH_VERSION "1.0" // Your version // Enable and select radio type attached #define MY_RADIO_RFM95 #define MY_DEBUG_VERBOSE_RFM95 //#define MY_DEBUG_VERBOSE_RFM95_REGISTERS //#define MY_RFM95_ATC_TARGET_RSSI (-70) // target RSSI -70dBm #define MY_RFM95_MAX_POWER_LEVEL_DBM (20) // max. TX power 10dBm = 10mW #define MY_RFM95_FREQUENCY (RFM95_868MHZ) #define MY_RFM95_MODEM_CONFIGRUATION RFM95_BW125CR45SF128 // Enable repeater functionality for this node #define MY_REPEATER_FEATURE #define MY_DEBUG //This Node ID #define NODE_ID (int8_t) AUTO #include <MySensors.h> #include <SimpleTimer.h> SimpleTimer timer; // Create a Timer object called "timer"! int Send_rssi, Rec_rssi; // RSSI RFM95 chip #define CHILD_ID_RSSI_HIGH 7 // RSSI received signal level #define CHILD_ID_RSSI_LOW 8 // RSSI background noise level MyMessage msgRSSI1(CHILD_ID_RSSI_HIGH, V_LEVEL); MyMessage msgRSSI2(CHILD_ID_RSSI_LOW, V_LEVEL); //Sensor #define SEN_DUMMY (uint8_t) 1 //Pin number #define PIN_TEST (uint8_t) A1 MyMessage msg(SEN_DUMMY, V_STATUS); void setup() { pinMode(PIN_TEST, OUTPUT); timer.setInterval(1000L * 5, sendInternals); // Here you set interval and which function to call } void sendInternals(){ Send_rssi = transportGetSendingRSSI(); // read RSSI in RFM95. Measure reception signal from gw send(msgRSSI1.set(Send_rssi)); // send RSSI level wait(1000); // wait to get idle Rec_rssi = transportGetReceivingRSSI(); // read RSSI in RFM95. Wait and measure background noise send(msgRSSI2.set(Rec_rssi)); // send RSSI level wait(1000); // wait for next send } void presentation() { // Send the Sketch Version Information to the Gateway sendSketchInfo(SKETCH_NAME, SKETCH_VERSION); present(SEN_DUMMY, S_BINARY); request(SEN_DUMMY, V_STATUS); present(CHILD_ID_RSSI_HIGH, S_SOUND, "Tx-dBm"); present(CHILD_ID_RSSI_LOW, S_SOUND, "Rx-dBm"); } void loop() { timer.run(); // SimpleTimer is working } void receive(const MyMessage &message) { if (message.sensor == SEN_DUMMY && message.type == V_STATUS) { Serial.print("*** SWITCH: ");Serial.println(message.getInt()); digitalWrite(PIN_TEST, message.getBool() ? HIGH : LOW); } }
-
@jkandasa the default timeouts will not work with the slower LoRa modes. MySensors will timeout before the signal has been sent completely.
My guess is this is the reason it doesn't work with 4096.
-
@mfalkvidd Thank you! I tried with
#define MY_TRANSPORT_STATE_TIMEOUT_MS (20*1000ul)
and#define MY_RFM95_MODEM_CONFIGRUATION RFM95_BW125CR48SF4096
, Now it is working 50% pass and 50% failed. I do not know how to make it 100% perfect.Node log messages:
__ __ ____ | \/ |_ _/ ___| ___ _ __ ___ ___ _ __ ___ | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __| | | | | |_| |___| | __/ | | \__ \ _ | | \__ \ |_| |_|\__, |____/ \___|_| |_|___/\___/|_| |___/ |___/ 2.2.0-rc.2 17 MCO:BGN:INIT REPEATER,CP=RLNRA---,VER=2.2.0-rc.2 26 TSM:INIT 28 TSF:WUR:MS=0 29 RFM95:INIT 30 RFM95:INIT:PIN,CS=10,IQP=2,IQN=0 44 RFM95:PTX:LEVEL=13 46 TSM:INIT:TSP OK 48 TSF:SID:OK,ID=1 50 TSM:FPAR 51 RFM95:SWR:SEND,TO=255,SEQ=0,RETRY=0 1565 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 3462 RFM95:SAC:SEND ACK,TO=0,SEQ=2,RSSI=-30,SNR=9 3527 TSF:MSG:READ,0-0-1,s=255,c=3,t=8,pt=1,l=1,sg=0:0 3532 TSF:MSG:FPAR OK,ID=0,D=1 6810 RFM95:SAC:SEND ACK,TO=0,SEQ=2,RSSI=-30,SNR=10 6876 TSF:MSG:READ,0-0-1,s=255,c=3,t=8,pt=1,l=1,sg=0:0 21572 TSM:FPAR:OK 21573 TSM:ID 21575 TSM:ID:OK 21576 TSM:UPL 21577 RFM95:SWR:SEND,TO=0,SEQ=3,RETRY=0 23592 !RFM95:SWR:NACK 23631 RFM95:SWR:SEND,TO=0,SEQ=4,RETRY=1 24195 !RFM95:SWR:NACK 24201 RFM95:SWR:SEND,TO=0,SEQ=4,RETRY=2 24764 !RFM95:SWR:NACK 24830 RFM95:SWR:SEND,TO=0,SEQ=4,RETRY=3 25394 !RFM95:SWR:NACK 25432 RFM95:SWR:SEND,TO=0,SEQ=4,RETRY=4 25995 !RFM95:SWR:NACK 26001 RFM95:SWR:SEND,TO=0,SEQ=4,RETRY=5 28014 !RFM95:SWR:NACK 28112 RFM95:PTX:LEVEL=14 28114 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1 29158 RFM95:SAC:SEND ACK,TO=0,SEQ=4,RSSI=-31,SNR=10 29223 TSF:MSG:READ,0-0-1,s=255,c=3,t=25,pt=1,l=1,sg=0:1 29229 TSF:MSG:PONG RECV,HP=1 29232 TSM:UPL:OK 29233 TSM:READY:ID=1,PAR=0,DIS=1 29236 RFM95:SWR:SEND,TO=0,SEQ=5,RETRY=0 32423 !RFM95:SWR:NACK 32457 RFM95:SWR:SEND,TO=0,SEQ=6,RETRY=1 33021 !RFM95:SWR:NACK 33024 RFM95:SWR:SEND,TO=0,SEQ=6,RETRY=2 33587 !RFM95:SWR:NACK 33625 RFM95:SWR:SEND,TO=0,SEQ=6,RETRY=3 35639 !RFM95:SWR:NACK 35705 RFM95:SWR:SEND,TO=0,SEQ=6,RETRY=4 36269 !RFM95:SWR:NACK 36303 RFM95:SWR:SEND,TO=0,SEQ=6,RETRY=5 36867 !RFM95:SWR:NACK 36873 RFM95:PTX:LEVEL=15 36875 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100 38870 RFM95:SAC:SEND ACK,TO=0,SEQ=6,RSSI=-30,SNR=9 38935 TSF:MSG:READ,0-0-1,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 38940 RFM95:SWR:SEND,TO=0,SEQ=7,RETRY=0 42658 !RFM95:SWR:NACK 42696 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 45234 !RFM95:SWR:NACK 45272 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 45835 !RFM95:SWR:NACK 45841 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 46404 !RFM95:SWR:NACK 46470 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 49007 !RFM95:SWR:NACK 49105 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 49669 !RFM95:SWR:NACK 49671 RFM95:PTX:LEVEL=16 49673 !TSF:MSG:SEND,1-1-0-0,s=255,c=0,t=18,pt=0,l=10,sg=0,ft=1,st=NACK:2.2.0-rc.2 49680 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 50244 !RFM95:SWR:NACK 50310 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 52323 !RFM95:SWR:NACK 52425 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 52989 !RFM95:SWR:NACK 52992 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 53555 !RFM95:SWR:NACK 53593 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 54156 !RFM95:SWR:NACK 54158 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 54721 !RFM95:SWR:NACK 54791 RFM95:PTX:LEVEL=17 54793 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=2,st=NACK:0 56799 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 57362 !RFM95:SWR:NACK 57368 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 60168 !RFM95:SWR:NACK 60174 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 62974 !RFM95:SWR:NACK 62977 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 63540 !RFM95:SWR:NACK 63606 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 64171 !RFM95:SWR:NACK 64209 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 67009 !RFM95:SWR:NACK 67079 RFM95:PTX:LEVEL=18 67081 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=11,pt=0,l=14,sg=0,ft=3,st=NACK:Signal Monitor 67089 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 67652 !RFM95:SWR:NACK 67718 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 68281 !RFM95:SWR:NACK 68352 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 70627 !RFM95:SWR:NACK 70729 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 71293 !RFM95:SWR:NACK 71296 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 71859 !RFM95:SWR:NACK 71897 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 74172 !RFM95:SWR:NACK 74238 RFM95:PTX:LEVEL=19 74241 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=4,st=NACK:1.0 74247 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 74811 !RFM95:SWR:NACK 74881 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 75444 !RFM95:SWR:NACK 75510 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 77524 !RFM95:SWR:NACK 77623 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 78186 !RFM95:SWR:NACK 78288 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 78852 !RFM95:SWR:NACK 78854 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 80868 !RFM95:SWR:NACK 80966 RFM95:PTX:LEVEL=20 80968 !TSF:MSG:SEND,1-1-0-0,s=1,c=0,t=3,pt=0,l=0,sg=0,ft=5,st=NACK: 80974 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 81539 !RFM95:SWR:NACK 81545 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 82108 !RFM95:SWR:NACK 82174 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 84188 !RFM95:SWR:NACK 84286 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 84849 !RFM95:SWR:NACK 84951 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 85514 !RFM95:SWR:NACK 85520 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 86083 !RFM95:SWR:NACK 86153 !TSF:MSG:SEND,1-1-0-0,s=1,c=2,t=2,pt=0,l=0,sg=0,ft=6,st=NACK: 86159 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 86723 !RFM95:SWR:NACK 86793 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 89068 !RFM95:SWR:NACK 89166 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 89730 !RFM95:SWR:NACK 89736 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 90299 !RFM95:SWR:NACK 90369 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 92644 !RFM95:SWR:NACK 92742 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 95019 !RFM95:SWR:NACK 95057 !TSF:MSG:SEND,1-1-0-0,s=7,c=0,t=33,pt=0,l=6,sg=0,ft=7,st=NACK:Tx-dBm 95064 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 95628 !RFM95:SWR:NACK 95630 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 96193 !RFM95:SWR:NACK 96263 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 98538 !RFM95:SWR:NACK 98640 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 99204 !RFM95:SWR:NACK 99206 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 99769 !RFM95:SWR:NACK 99840 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 102115 !RFM95:SWR:NACK 102217 !TSF:MSG:SEND,1-1-0-0,s=8,c=0,t=33,pt=0,l=6,sg=0,ft=8,st=NACK:Rx-dBm 102223 MCO:REG:REQ 102225 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 102790 !RFM95:SWR:NACK 102792 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 103356 !RFM95:SWR:NACK 103422 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 105437 !RFM95:SWR:NACK 105535 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 106100 !RFM95:SWR:NACK 106102 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 106667 !RFM95:SWR:NACK 106705 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 107270 !RFM95:SWR:NACK 107272 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=9,st=NACK:2 109278 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=0 109842 !RFM95:SWR:NACK 109848 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=1 111863 !RFM95:SWR:NACK 111865 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=2 112430 !RFM95:SWR:NACK 112464 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=3 113029 !RFM95:SWR:NACK 113031 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=4 113595 !RFM95:SWR:NACK 113665 RFM95:SWR:SEND,TO=0,SEQ=8,RETRY=5 115679 !RFM95:SWR:NACK 115777 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=10,st=NACK:2 115783 !TSM:READY:UPL FAIL,SNP 115786 TSM:FPAR 115788 RFM95:SWR:SEND,TO=255,SEQ=8,RETRY=0 115853 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=11,st=OK: 117783 !TSF:SND:TNR 117999 RFM95:SAC:SEND ACK,TO=0,SEQ=25,RSSI=-35,SNR=10 118065 TSF:MSG:READ,0-0-1,s=255,c=3,t=27,pt=1,l=1,sg=0:1 118070 MCO:PIM:NODE REG=1 121344 RFM95:SAC:SEND ACK,TO=0,SEQ=25,RSSI=-37,SNR=9 121409 TSF:MSG:READ,0-0-1,s=255,c=3,t=27,pt=1,l=1,sg=0:1 121414 MCO:PIM:NODE REG=1 138073 !TSM:FPAR:NO REPLY 138075 TSM:FPAR 138077 RFM95:SWR:SEND,TO=255,SEQ=10,RETRY=0 139591 TSF:MSG:SEND,1-1-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 141298 RFM95:SAC:SEND ACK,TO=0,SEQ=26,RSSI=-39,SNR=10 141364 TSF:MSG:READ,0-0-1,s=255,c=3,t=8,pt=1,l=1,sg=0:0 141369 TSF:MSG:FPAR OK,ID=0,D=1 144643 RFM95:SAC:SEND ACK,TO=0,SEQ=26,RSSI=-39,SNR=12 144709 TSF:MSG:READ,0-0-1,s=255,c=3,t=8,pt=1,l=1,sg=0:0 159598 TSM:FPAR:OK 159599 TSM:ID 159601 TSM:ID:OK 159602 TSM:UPL 159604 RFM95:SWR:SEND,TO=0,SEQ=13,RETRY=0 161619 !RFM95:SWR:NACK 161690 RFM95:SWR:SEND,TO=0,SEQ=14,RETRY=1 162255 !RFM95:SWR:NACK 162321 RFM95:SWR:SEND,TO=0,SEQ=14,RETRY=2 162885 !RFM95:SWR:NACK 162951 RFM95:SWR:SEND,TO=0,SEQ=14,RETRY=3 163515 !RFM95:SWR:NACK 163585 RFM95:SWR:SEND,TO=0,SEQ=14,RETRY=4 164149 !RFM95:SWR:NACK 164215 RFM95:SWR:SEND,TO=0,SEQ=14,RETRY=5 166230 !RFM95:SWR:NACK 166328 !TSF:MSG:SEND,1-1-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=NACK:1 167288 RFM95:SAC:SEND ACK,TO=0,SEQ=28,RSSI=-35,SNR=9 167354 TSF:MSG:READ,0-0-1,s=255,c=3,t=25,pt=1,l=1,sg=0:1 167359 TSF:MSG:PONG RECV,HP=1 167362 TSM:UPL:OK 167364 TSM:READY:ID=1,PAR=0,DIS=1 167367 MCO:BGN:STP 167369 MCO:BGN:INIT OK,TSP=1 182369 RFM95:SWR:SEND,TO=0,SEQ=15,RETRY=0 184383 !RFM95:SWR:NACK 184449 RFM95:SWR:SEND,TO=0,SEQ=16,RETRY=1 185013 !RFM95:SWR:NACK 185079 RFM95:SWR:SEND,TO=0,SEQ=16,RETRY=2 185644 !RFM95:SWR:NACK 185678 RFM95:SWR:SEND,TO=0,SEQ=16,RETRY=3 187693 !RFM95:SWR:NACK 187727 RFM95:SWR:SEND,TO=0,SEQ=16,RETRY=4 188292 !RFM95:SWR:NACK 188294 RFM95:SWR:SEND,TO=0,SEQ=16,RETRY=5 188858 !RFM95:SWR:NACK 188928 !TSF:MSG:SEND,1-1-0-0,s=7,c=1,t=37,pt=2,l=2,sg=0,ft=0,st=NACK:-256 189934 RFM95:SWR:SEND,TO=0,SEQ=16,RETRY=0 191949 !RFM95:SWR:NACK 192015 RFM95:SWR:SEND,TO=0,SEQ=17,RETRY=1 192579 !RFM95:SWR:NACK 192649 RFM95:SWR:SEND,TO=0,SEQ=17,RETRY=2 193213 !RFM95:SWR:NACK 193280 RFM95:SWR:SEND,TO=0,SEQ=17,RETRY=3 195294 !RFM95:SWR:NACK 195392 RFM95:SWR:SEND,TO=0,SEQ=17,RETRY=4 195957 !RFM95:SWR:NACK 195959 RFM95:SWR:SEND,TO=0,SEQ=17,RETRY=5 196524 !RFM95:SWR:NACK 196558 !TSF:MSG:SEND,1-1-0-0,s=8,c=1,t=37,pt=2,l=2,sg=0,ft=1,st=NACK:-35 197564 RFM95:SWR:SEND,TO=0,SEQ=17,RETRY=0 199578 !RFM95:SWR:NACK 199616 RFM95:SWR:SEND,TO=0,SEQ=18,RETRY=1 200181 !RFM95:SWR:NACK 200183 RFM95:SWR:SEND,TO=0,SEQ=18,RETRY=2 200748 !RFM95:SWR:NACK 200782 RFM95:SWR:SEND,TO=0,SEQ=18,RETRY=3
Gateway Log messages:
75051 TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 75056 TSF:MSG:BC 75058 TSF:MSG:FPAR REQ,ID=1 75060 TSF:PNG:SEND,TO=0 75062 TSF:CKU:OK 75064 TSF:MSG:GWL OK 75379 RFM95:SWR:SEND,TO=1,SEQ=1,RETRY=0 77393 !RFM95:SWR:NACK 77462 RFM95:SWR:SEND,TO=1,SEQ=2,RETRY=1 78026 !RFM95:SWR:NACK 78095 RFM95:SWR:SEND,TO=1,SEQ=2,RETRY=2 78659 !RFM95:SWR:NACK 78728 RFM95:SWR:SEND,TO=1,SEQ=2,RETRY=3 80742 !RFM95:SWR:NACK 80839 RFM95:SWR:SEND,TO=1,SEQ=2,RETRY=4 81403 !RFM95:SWR:NACK 81408 RFM95:SWR:SEND,TO=1,SEQ=2,RETRY=5 81972 !RFM95:SWR:NACK 82037 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 96582 RFM95:SAC:SEND ACK,TO=1,SEQ=4,RSSI=-29,SNR=9 96648 TSF:MSG:READ,1-1-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 96653 TSF:MSG:PINGED,ID=1,HP=1 96660 RFM95:SWR:SEND,TO=1,SEQ=3,RETRY=0 99847 !RFM95:SWR:NACK 99848 RFM95:SWR:SEND,TO=1,SEQ=4,RETRY=1 100413 !RFM95:SWR:NACK 100478 RFM95:SWR:SEND,TO=1,SEQ=4,RETRY=2 101042 !RFM95:SWR:NACK 101079 RFM95:SWR:SEND,TO=1,SEQ=4,RETRY=3 103093 !RFM95:SWR:NACK 103158 RFM95:SWR:SEND,TO=1,SEQ=4,RETRY=4 103722 !RFM95:SWR:NACK 103759 RFM95:SWR:SEND,TO=1,SEQ=4,RETRY=5 104323 !RFM95:SWR:NACK 104328 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=NACK:1 105414 RFM95:SAC:SEND ACK,TO=1,SEQ=6,RSSI=-28,SNR=9 105479 TSF:MSG:READ,1-1-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 105485 RFM95:SWR:SEND,TO=1,SEQ=5,RETRY=0 108679 !RFM95:SWR:NACK 108680 RFM95:SWR:SEND,TO=1,SEQ=6,RETRY=1 110695 !RFM95:SWR:NACK 110792 RFM95:SWR:SEND,TO=1,SEQ=6,RETRY=2 112806 !RFM95:SWR:NACK 112839 RFM95:SWR:SEND,TO=1,SEQ=6,RETRY=3 113403 !RFM95:SWR:NACK 113408 RFM95:SWR:SEND,TO=1,SEQ=6,RETRY=4 113972 !RFM95:SWR:NACK 114037 RFM95:SWR:SEND,TO=1,SEQ=6,RETRY=5 114601 !RFM95:SWR:NACK 114638 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100 118228 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-27,SNR=10 118293 TSF:MSG:READ,1-1-0,s=255,c=0,t=18,pt=0,l=10,sg=0:2.2.0-rc.2 118299 Sending message on topic: out_rfm95/1/255/0/0/18 122002 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-27,SNR=11 122067 TSF:MSG:READ,1-1-0,s=255,c=0,t=18,pt=0,l=10,sg=0:2.2.0-rc.2 122073 Sending message on topic: out_rfm95/1/255/0/0/18 125318 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-28,SNR=10 125384 TSF:MSG:READ,1-1-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0 125389 Sending message on topic: out_rfm95/1/255/3/0/6 125884 Message arrived on topic: in_rfm95/1/255/3/0/6 125889 RFM95:SWR:SEND,TO=1,SEQ=9,RETRY=0 128845 !RFM95:SWR:NACK 128910 RFM95:SWR:SEND,TO=1,SEQ=10,RETRY=1 131187 !RFM95:SWR:NACK 131288 RFM95:SWR:SEND,TO=1,SEQ=10,RETRY=2 131852 !RFM95:SWR:NACK 131853 RFM95:SWR:SEND,TO=1,SEQ=10,RETRY=3 132418 !RFM95:SWR:NACK 132487 RFM95:SWR:SEND,TO=1,SEQ=10,RETRY=4 133051 !RFM95:SWR:NACK 133120 RFM95:SWR:SEND,TO=1,SEQ=10,RETRY=5 133684 !RFM95:SWR:NACK 133749 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=6,pt=0,l=6,sg=0,ft=0,st=NACK:Metric 135970 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-26,SNR=11 136036 TSF:MSG:READ,1-1-0,s=255,c=3,t=11,pt=0,l=14,sg=0:Signal Monitor 136042 Sending message on topic: out_rfm95/1/255/3/0/11 140007 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-26,SNR=12 140072 TSF:MSG:READ,1-1-0,s=255,c=3,t=11,pt=0,l=14,sg=0:Signal Monitor 140078 Sending message on topic: out_rfm95/1/255/3/0/11 143625 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-25,SNR=11 143690 TSF:MSG:READ,1-1-0,s=255,c=3,t=12,pt=0,l=3,sg=0:1.0 143696 Sending message on topic: out_rfm95/1/255/3/0/12 147170 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-25,SNR=11 147236 TSF:MSG:READ,1-1-0,s=255,c=3,t=12,pt=0,l=3,sg=0:1.0 147241 Sending message on topic: out_rfm95/1/255/3/0/12 150523 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-26,SNR=9 150588 TSF:MSG:READ,1-1-0,s=1,c=0,t=3,pt=0,l=0,sg=0: 150593 Sending message on topic: out_rfm95/1/1/0/0/3 153867 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-26,SNR=9 153932 TSF:MSG:READ,1-1-0,s=1,c=0,t=3,pt=0,l=0,sg=0: 153937 Sending message on topic: out_rfm95/1/1/0/0/3 157188 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-25,SNR=10 157254 TSF:MSG:READ,1-1-0,s=1,c=2,t=2,pt=0,l=0,sg=0: 157258 Sending message on topic: out_rfm95/1/1/2/0/2 157627 Message arrived on topic: in_rfm95/1/1/1/0/2 157632 RFM95:SWR:SEND,TO=1,SEQ=17,RETRY=0 160453 !RFM95:SWR:NACK 160518 RFM95:SWR:SEND,TO=1,SEQ=18,RETRY=1 161082 !RFM95:SWR:NACK 161151 RFM95:SWR:SEND,TO=1,SEQ=18,RETRY=2 161715 !RFM95:SWR:NACK 161752 RFM95:SWR:SEND,TO=1,SEQ=18,RETRY=3 162316 !RFM95:SWR:NACK 162317 RFM95:SWR:SEND,TO=1,SEQ=18,RETRY=4 164333 !RFM95:SWR:NACK 164430 RFM95:SWR:SEND,TO=1,SEQ=18,RETRY=5 164994 !RFM95:SWR:NACK 164999 !TSF:MSG:SEND,0-0-1-1,s=1,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=NACK:0 168020 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-25,SNR=9 168085 TSF:MSG:READ,1-1-0,s=7,c=0,t=33,pt=0,l=6,sg=0:Tx-dBm 168090 Sending message on topic: out_rfm95/1/7/0/0/33 171541 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-25,SNR=10 171606 TSF:MSG:READ,1-1-0,s=8,c=0,t=33,pt=0,l=6,sg=0:Rx-dBm 171612 Sending message on topic: out_rfm95/1/8/0/0/33 175118 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-30,SNR=11 175184 TSF:MSG:READ,1-1-0,s=8,c=0,t=33,pt=0,l=6,sg=0:Rx-dBm 175189 Sending message on topic: out_rfm95/1/8/0/0/33 178439 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-34,SNR=9 178505 TSF:MSG:READ,1-1-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 178515 RFM95:SWR:SEND,TO=1,SEQ=22,RETRY=0 181704 !RFM95:SWR:NACK 181773 RFM95:SWR:SEND,TO=1,SEQ=23,RETRY=1 183787 !RFM95:SWR:NACK 183888 RFM95:SWR:SEND,TO=1,SEQ=23,RETRY=2 184452 !RFM95:SWR:NACK 184453 RFM95:SWR:SEND,TO=1,SEQ=23,RETRY=3 185018 !RFM95:SWR:NACK 185087 RFM95:SWR:SEND,TO=1,SEQ=23,RETRY=4 187101 !RFM95:SWR:NACK 187198 RFM95:SWR:SEND,TO=1,SEQ=23,RETRY=5 187762 !RFM95:SWR:NACK 187863 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=NACK:1 188683 RFM95:SAC:SEND ACK,TO=1,SEQ=8,RSSI=-29,SNR=9 188749 TSF:MSG:READ,1-1-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 188759 RFM95:SWR:SEND,TO=1,SEQ=24,RETRY=0 191948 !RFM95:SWR:NACK 192013 RFM95:SWR:SEND,TO=1,SEQ=25,RETRY=1 192577 !RFM95:SWR:NACK 192646 RFM95:SWR:SEND,TO=1,SEQ=25,RETRY=2 193210 !RFM95:SWR:NACK 193279 RFM95:SWR:SEND,TO=1,SEQ=25,RETRY=3 195293 !RFM95:SWR:NACK 195390 RFM95:SWR:SEND,TO=1,SEQ=25,RETRY=4 195954 !RFM95:SWR:NACK 196055 RFM95:SWR:SEND,TO=1,SEQ=25,RETRY=5 196619 !RFM95:SWR:NACK 196624 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=NACK:1 213099 TSF:MSG:READ,1-1-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 213104 TSF:MSG:BC 213106 TSF:MSG:FPAR REQ,ID=1 213108 TSF:PNG:SEND,TO=0 213111 TSF:CKU:OK 213112 TSF:MSG:GWL OK 213236 RFM95:SWR:SEND,TO=1,SEQ=25,RETRY=0 215251 !RFM95:SWR:NACK 215320 RFM95:SWR:SEND,TO=1,SEQ=26,RETRY=1 215884 !RFM95:SWR:NACK 215949 RFM95:SWR:SEND,TO=1,SEQ=26,RETRY=2 216513 !RFM95:SWR:NACK 216582 RFM95:SWR:SEND,TO=1,SEQ=26,RETRY=3 218597 !RFM95:SWR:NACK 218694 RFM95:SWR:SEND,TO=1,SEQ=26,RETRY=4 219258 !RFM95:SWR:NACK 219263 RFM95:SWR:SEND,TO=1,SEQ=26,RETRY=5 219827 !RFM95:SWR:NACK 219864 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 234631 RFM95:SAC:SEND ACK,TO=1,SEQ=14,RSSI=-28,SNR=10 234696 TSF:MSG:READ,1-1-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 234701 TSF:MSG:PINGED,ID=1,HP=1 234709 RFM95:SWR:SEND,TO=1,SEQ=27,RETRY=0 237896 !RFM95:SWR:NACK 237965 RFM95:SWR:SEND,TO=1,SEQ=28,RETRY=1 238529 !RFM95:SWR:NACK 238598 RFM95:SWR:SEND,TO=1,SEQ=28,RETRY=2 239162 !RFM95:SWR:NACK 239231 RFM95:SWR:SEND,TO=1,SEQ=28,RETRY=3 241245 !RFM95:SWR:NACK 241342 RFM95:SWR:SEND,TO=1,SEQ=28,RETRY=4 241906 !RFM95:SWR:NACK 242007 RFM95:SWR:SEND,TO=1,SEQ=28,RETRY=5 242571 !RFM95:SWR:NACK 242576 !TSF:MSG:SEND,0-0-1-1,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=NACK:1 257398 RFM95:SAC:SEND ACK,TO=1,SEQ=16,RSSI=-29,SNR=10 257464 TSF:MSG:READ,1-1-0,s=7,c=1,t=37,pt=2,l=2,sg=0:-256 257469 Sending message on topic: out_rfm95/1/7/1/0/37 260708 RFM95:SAC:SEND ACK,TO=1,SEQ=16,RSSI=-31,SNR=11 260774 TSF:MSG:READ,1-1-0,s=7,c=1,t=37,pt=2,l=2,sg=0:-256 260779 Sending message on topic: out_rfm95/1/7/1/0/37 264965 RFM95:SAC:SEND ACK,TO=1,SEQ=17,RSSI=-33,SNR=10 265031 TSF:MSG:READ,1-1-0,s=8,c=1,t=37,pt=2,l=2,sg=0:-35 265036 Sending message on topic: out_rfm95/1/8/1/0/37
-
@jkandasa try adding
#define RFM95_RETRY_TIMEOUT_MS (5000ul) //!< Timeout for ACK, adjustments needed if modem configuration changed (air time different)
found it here: https://forum.mysensors.org/topic/5681/rfm95w-modem_configruation/3
-
@mfalkvidd You are right! Seems these lines did the magic. Now I see 90% of success. But still, see few failures in starting when sending presentation message. I guess presentation message takes a long time than the normal message. As it is a bigger message. Let me find out the root cause.
Thank you for your support!
Configuration used at this stage,
#define MY_RADIO_RFM95 #define MY_TRANSPORT_STATE_TIMEOUT_MS (3*1000ul) #define RFM95_RETRY_TIMEOUT_MS (3000ul) #define MY_RFM95_FREQUENCY (RFM95_868MHZ) #define MY_RFM95_MODEM_CONFIGRUATION RFM95_BW125CR48SF4096
-
@jkandasa great! Hopefully we can add a documentation page summarizing what's needed for LoRa.
https://www.thethingsnetwork.org/forum/t/spreadsheet-for-lora-airtime-calculation/1190 has a calculator for seeing how much time a message takes using different spreading factors.
Seems like the longest allowed packet (51 bytes) on SF12 will need almost 2900ms. I don't know how acknowledgements are handled though.
-
@ricorico94 here is the hardware connection details, that I followed.
Gateway Sketch:
ESP8266 RFM95 ----------- --------- (GPIO15) CS <--> NSS (GPIO13) MOSI <--> MOSI (GPIO12) MISO <--> MISO (GPIO14) CLK <--> SCK (GPIO 5) IRQ <--> DIO0 GND <--> GND 3.3V <--> +3.3V Add this line on ESP8266 sketch, #define MY_RFM95_IRQ_PIN 5 #define MY_RFM95_IRQ_NUM MY_RFM95_IRQ_PIN #define MY_RFM95_CS_PIN 15
Node Sketch:
PRO-MINI RFM95 ----------- ------- (10) SS <--> NSS (11) MOSI <--> MOSI (12) MISO <--> MISO (13) CLK <--> SCK (2) IRQ <--> DIO0 GND <--> GND 3.3V <--> +3.3V
-
@jkandasa said in Any success story on LoRa(RFM95) module and MySensors?:
Now I see 90% of success.
Were you able to achieve 100%?
-
@neverdie If I go with the default
RFM95_BW125CR45SF128
settings I see the failure rarely. I ran the setup minimal time only. So do not know about stability.When I go with
RFM95_BW31_25CR48SF512
orRFM95_BW125CR48SF4096
, I see failure, when I request a payload from the gateway, because of gateway busy asking data from the controller, meantime node thinks message not received by the gateway and send a message once again, same time gateway sends ack to the node. Air/RF collision happens here, both side message not delivered.
-
@jkandasa thanks for verifying the wiring. I compared with the instructions we had for RFM69 and the wiring is identical, so I just changed the headline on connecting the radio from RFM69 to RFM69/95 and added your defines. The same wiring probably works with 96, 97 and 98 as well but I am not sure so I have not added them.
-
Hello,
I tried to build a Mysensors gateway based on LORA using the ideas above. I used a RA-O2 SX1278 connected with a wemos D1 mini as a LAN gateway and connected with a pro mini as a sensor.
(the radio module I used is:
aliexpress SX1278 RA-02
As antennas, I used 2 like this:
link to antenna
and I also tried replacing the gateway antenna by this one:
link to high gain antennaAs wiring, I used the one from jkandasa above and I used the following settings:
#define MY_DEBUG #define MY_BAUD_RATE 115200 // or 9600 ? #define MY_RADIO_RFM95 #define MY_DEBUG_VERBOSE_RFM95 #define MY_RFM95_FREQUENCY (RFM95_434MHZ) #define MY_RFM95_MODEM_CONFIGRUATION RFM95_BW125CR45SF128 #define MY_RFM95_IRQ_PIN 5 #define MY_RFM95_IRQ_NUM MY_RFM95_IRQ_PIN #define MY_RFM95_CS_PIN 15 #define MY_GATEWAY_ESP8266
and I used the default gateway sketch from website (I did not use the OTA version which I'm not familiar with).
For the node, I used these settings:
#define MY_RADIO_RFM95 #define MY_DEBUG_VERBOSE_RFM95 #define MY_RFM95_MAX_POWER_LEVEL_DBM (20) // max. TX power 10dBm = 10mW #define MY_RFM95_FREQUENCY (RFM95_434MHZ) #define MY_RFM95_MODEM_CONFIGRUATION RFM95_BW125CR45SF128 #define MY_DEBUG #define NODE_ID (int8_t) AUTO #include <MySensors.h> int Send_rssi, Rec_rssi; // RSSI RFM95 chip #define CHILD_ID_RSSI_HIGH 7 // RSSI received signal level #define CHILD_ID_RSSI_LOW 8 // RSSI background noise level #define CHILD_ID_BATTERY 1 MyMessage msgRSSI1(CHILD_ID_RSSI_HIGH, V_LEVEL); MyMessage msgRSSI2(CHILD_ID_RSSI_LOW, V_LEVEL); MyMessage voltage_msg(CHILD_ID_BATTERY, V_VOLTAGE);
and I used a basic node sketch in which I send a simple counter and also send an indicator copied from sketches in above posts but which I don't fully understand..:
Send_rssi = transportGetSendingRSSI(); // read RSSI in RFM95. Measure reception signal from gw
In practice, the value sent for send_RSSI is about (-21) when antennas are in direct sight at approx 20-30cm distance. I tried to move the node to the lower floor (ie one concrete floor between gateway and node in a building) and it says -38 or -44. I tried to go to basement (10 floors below) and I receive nothing.. whereas that was my main motivation for trying long range LORA radio...
I had selected the 433MHz version as I though the lower frequency would go further through walls than the 868MHz.So I have a few questions..
- are these -21 or -40 values common values? is it normal to have -21 even at a few cm distance ?
- do you think the antennas I used are best otions to try going far away through several fllors of concrete ?
- in terms of wiring, I simply connected the wemos D1 mini and the pro mini to the RA-02 without any capacitor. Is it like NRF24 where adding some capacitors could help ?
- in terms of settings, I did not try yet all the settings mentioned in previous posts. I'll try the modem config with slow setting, but I'm not sure about the other settings: I guess I would need maximum power, maximum sensitivity, etc. Maybe also using the timeout setting used by jkandasa. What could you advise me ?
- do you think I'd have better result with a LORA of another frequency ?
In case it matters: I don't plan sending a lot of data through the sensor. Target would be to use it to detect opening of a door
Thanks a lot for your help,
Ricorico94
-
@ricorico94 high gain antennas have high gain because they are focused. They usually have a blind spot above and below the antenna. If your basement is right below the gateway (which is where basements usually are located) the node will send strongest horizontally (because of the focused antenna) which means very litte rado energy will go towards the gateway. Also, the gateway will be much less sensitive in the direction the node is sending from.
-21 to -40 are very strong signals.
The antennas might be right if you mount them horizontally, but definitely not if they are mounted vertically, if your goal is to reach the basement.
The rfm modules are usually much less sensitive to power fluctuations than nrf24, but adding a capacitor might help if your power supply is noisy or too weak.
I would advice looking at the logs from the gateway and the node. Using SF12 for maximum range could work as well, but you'd need to adjust the timeouts.
169MHz should be better (if it is allowed in your country) because it passes through obstacles better. 868 might be better because it bounces more than 433 - in case bouncing off a nearby building is better than traversing 10 floors.
-
Others ideas to check, in case:
- rf matching quality of antennas you bought, especially when it's cheap.. (could be checked with a swr meter).
- available gnd/ground on pcb has a direct impact on antenna gain etc. impact is even worse with lower freq.
e.g. says, a 868Mhz antenna reach -3dB gain with a gnd area of 1100mm² (worse gain with less gnd, not linear effect..and vice versa). At 433Mhz, for same -3dB gain goal, gnd area would need to be 4400mm²..
So depending on the device assembly, it's easy to waste gain of antenna. and the more power you use to offset this, the more battery will be eaten
These are just additional ideas in air (still important, and good to know points too). What said mfalkvidd might help you (orientation and bitrate)
-
I've used RA-01 modules, and they work very well.
-
THanks a lot for your explanations. I should have thought about that indeed..
I tried to play with antenna positonning to see impact on RSSI, but it was not obvious (a few dB maybe). Maybe it was because I made the test at very close distance (30 cms.. between antennas) and so strength is too high to get meaningfull readings.Do you know until which RSSI level, we can have reliable communication ? -80? -120 ?..
Regarding the lower frequency band mentioned by mfalkvidd, does it exist in RFM95 compatible devices ?
Ricorico94
-
@ricorico94
I have no big xp with lora mode, but I think you can get decent comm even at -100-120dBafaik rfm95 is not for 169mhz. The rf ic on rfm95, which is sx1278 can handle 169mhz, but the radio module is already tuned for specific freq (not for 169mhz).
Perhaps by using a rfm95 433mhz and hacking sw to 169mhz but then, rf would not be optimal (electronics not matched for this freq). So in that case 433mhz may work better than the hack.
Hoperf have a 169mhz module, RFM98PW169
https://www.tme.eu/fr/details/rfm98pw-169s2/modules-rf/hope-microelectronics/
Just remember what I said in my previous post too, regarding power supply type, and your build assembly (gnd size), and antenna used.
For example, for a batt powered device, the smaller the freq and pcb gnd size = lower gain antenna + degraded bandwidth. So you could think it like this:
if you have a small board (and for 868mhz and 40x40mm gnd, you already loose gain, effciency), is it worth to use smaller freq??- I think if you want to get best range, for whatever freq, you need to consider this. you can even try by using bigger pcb ans see how it improves
- and your antenna. Two options here: 1) you get a trusted brand antenna 2) you get a cheap antenna and you don't know if it's well tuned, and lot of cheap antennas are not well tuned (tunable using a swr meter)
Below a good example of what I'm trying to explain, from silabs datasheet, notice the TX power and bitrate used for these results.. :
Conclusion: when you use a small board/gnd and assembly, you will get less range. Period
People would say, oki then I'm going to use 2.4ghz, as it can better fit small assembly. Yep, as you know 2.4ghz penetration is not great (can be half range after one concrete wall..there are excel sheets for calculating this).
This can be a start for explaining why people can sometimes complain about zwave, zigbee range (with HA people are looking after smaller and smaller device..)
-
High sensitivity: down to -148 dBm.
From the datasheet. There probably needs to be some margin, but my experience with Sigfox shows that -130 is quite reliable. After that, packets start go missing. I would guess LoRa is similar.