Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RTTY example with ESP8266 + SI4432 failed code -102 #195

Closed
fazerlab opened this issue Nov 3, 2020 · 5 comments
Closed

RTTY example with ESP8266 + SI4432 failed code -102 #195

fazerlab opened this issue Nov 3, 2020 · 5 comments
Labels
bug Something isn't working resolved Issue was resolved (e.g. bug fixed, or feature implemented)

Comments

@fazerlab
Copy link

fazerlab commented Nov 3, 2020

I'm trying to get a SI4432 module working with RadioLib on a ESP8266 WEMOS D1 module and RTTY example.

Wiring to ESP8266 Hardware SPI and additional pins nSEL, nIRQ, SDN
Si4432 radio = new Module(D8, D2, D0); //ESP8266 Pin

When i call: state = rtty.begin(434.0, 156, 45); // Author Note: RTTY frequency shift Si443x/RFM2x - 156 Hz
I get: failed, code -102
Defined as:
#define ERR_INVALID_FREQUENCY_DEVIATION   -102
The supplied frequency deviation value is invalid.
I tried other values to frequency deviation and get the same error.

I try the same hardware with a test code with RF22 librarie and work. I get the signal in SDR: Link to code

Here the code with Radiolib and follow the debug

// include the library
#include <RadioLib.h>

// Si4432 has the following connections:
// nSEL pin:  10
// nIRQ pin:  2
// SDN pin:   9
//Si4432 radio = new Module(nSEL,nIRQ,SDN);
Si4432 radio = new Module(D8, D2, D0); //ESP8266 Pin

// create RTTY client instance using the FSK module
RTTYClient rtty(&radio);

void setup() {
  Serial.begin(9600);
   delay (1000);
  Serial.println("");

    // when using one of the non-LoRa modules for RTTY
  // (RF69, CC1101, Si4432 etc.), use the basic begin() method
  int state = radio.begin();

  if(state == ERR_NONE) {
    Serial.println(F("success!"));
  } else {
    Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }

  // initialize RTTY client
  // NOTE: RTTY frequency shift will be rounded
  //       to the nearest multiple of frequency step size.
  //       The exact value depends on the module:
  //         SX127x/RFM9x - 61 Hz
  //         RF69 - 61 Hz
  //         CC1101 - 397 Hz
  //         SX126x - 1 Hz
  //         nRF24 - 1000000 Hz
  //         Si443x/RFM2x - 156 Hz
  //         SX128x - 198 Hz
  Serial.print(F("[RTTY] Initializing ... "));
  // low ("space") frequency:     434.0 MHz
  // frequency shift:             183 Hz
  // baud rate:                   45 baud
  // encoding:                    ASCII (7-bit)
  // stop bits:                   1
  state = rtty.begin(434.0, 156, 45);
  if(state == ERR_NONE) {
    Serial.println(F("success!"));
  } else {
    Serial.print(F("failed, code "));
    Serial.println(state);
    //while(true);
    delay(30000);
  }
}

void loop() {
  Serial.print(F("[RTTY] Sending RTTY data ... "));
  // send out idle condition for 500 ms
  rtty.idle();
  delay(500);
  // Arduino String class
  String aStr = "Arduino String";
  rtty.println(aStr);  
  Serial.println(F("done!"));
  // wait for a second before transmitting again
  delay(1000);
}

Debug:

iniciando. . . 
R	1	6	
Found Si443x!
R	3	20	3	
W	6	0	
R	33	22	
W	33	82	
R	33	82	
R	32	C	
W	32	0	
R	32	0	
R	70	C	
W	70	C	
R	70	C	
W	6E	C	
W	6F	49	
R	1C	1	
R	1C	1	
R	70	C	
0
0
0
10.417	10	A	3	3	83	53
100663	18937
65535	FFFF
R	21	1	
W	21	1	
R	21	1	
R	20	64	
W	20	53	
R	20	53	
R	21	1	
W	21	1	
R	21	1	
R	22	47	
W	22	89	
R	22	89	
R	23	AE	
W	23	37	
R	23	37	
R	24	2	
W	24	7	
R	24	7	
R	25	8F	
W	25	FF	
R	25	FF	
R	71	0	
W	71	0	
R	71	0	
W	72	50	
R	1C	1	
W	1C	96	
R	1C	96	
R	1C	96	
R	1C	96	
R	70	C	
1
1
0
15.625	15	F	5	5	125	7D
67108	10624
2518	9D6
R	21	1	
W	21	1	
R	21	1	
R	20	53	
W	20	7D	
R	20	7D	
R	21	1	
W	21	1	
R	21	1	
R	22	89	
W	22	6	
R	22	6	
R	23	37	
W	23	24	
R	23	24	
R	24	7	
W	24	1	
R	24	1	
R	25	FF	
W	25	D6	
R	25	D6	
R	34	8	
W	34	2	
R	34	2	
R	35	2A	
W	35	42	
R	35	42	
R	33	82	
W	33	82	
R	33	82	
W	36	12	AD	
R	71	0	
W	71	20	
R	71	20	
R	70	C	
W	70	8	
R	70	8	
R	70	8	
W	70	8	
R	70	8	
R	75	75	
W	75	53	
R	75	53	
R	76	BB	
W	76	4A	
R	76	4A	
R	77	80	
W	77	FF	
R	77	FF	
R	6D	18	
W	6D	1B	
R	6D	1B	
success!
[RTTY] Initializing ... R	71	20	
W	71	20	
R	71	20	
W	72	0	
failed, code -102

I´m working in a educational project of a HAB and would like use Radiolib. Thank you

@jgromes jgromes added the bug Something isn't working label Nov 3, 2020
@jgromes
Copy link
Owner

jgromes commented Nov 3, 2020

Thanks, there was a missing return statement which caused 0 kHz deviation to be rejected by a range check. Should be fixed in 063b643.

@fazerlab
Copy link
Author

fazerlab commented Nov 4, 2020

Thanks, there was a missing return statement which caused 0 kHz deviation to be rejected by a range check. Should be fixed in 063b643.

Thank´s for your support.
This fix work, no more failed, code -102, but i can´t see the signal in SDR.
The next step i enable Debug mode and work, i could see signal in SDR. Maybe a timming issue?!
I didn´t try decode RTTY yet.
firmware used, and follow debug log:

// include the library
#include <RadioLib.h>

// Si4432 has the following connections:
// nSEL pin:  10
// nIRQ pin:  2
// SDN pin:   9
//Si4432 radio = new Module(nSEL,nIRQ,SDN);
Si4432 radio = new Module(D8, D2, D0);

// or using RadioShield
// https://github.com/jgromes/RadioShield
//SX1278 radio = RadioShield.ModuleA;

// create RTTY client instance using the FSK module
RTTYClient rtty(&radio);

void setup() {
  Serial.begin(9600); 
  Serial.println("starting.. ");
  delay(1000);

    // when using one of the non-LoRa modules for RTTY
  // (RF69, CC1101, Si4432 etc.), use the basic begin() method
  int state = radio.begin(433.0, 48.0, 50.0, 181.1, 10, 16);

  if(state == ERR_NONE) {
    Serial.println(F("success!"));
  } else {
    Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }

  // initialize RTTY client
  // NOTE: RTTY frequency shift will be rounded
  //       to the nearest multiple of frequency step size.
  //       The exact value depends on the module:
  //         SX127x/RFM9x - 61 Hz
  //         RF69 - 61 Hz
  //         CC1101 - 397 Hz
  //         SX126x - 1 Hz
  //         nRF24 - 1000000 Hz
  //         Si443x/RFM2x - 156 Hz
  //         SX128x - 198 Hz
  Serial.print(F("[RTTY] Initializing ... "));
  // low ("space") frequency:     434.0 MHz
  // frequency shift:             183 Hz
  // baud rate:                   45 baud
  // encoding:                    ASCII (7-bit)
  // stop bits:                   1
  state = rtty.begin(433.0, 156, 45);
  if(state == ERR_NONE) {
    Serial.println(F("success!"));
  } else {
    Serial.print(F("failed, code "));
    Serial.println(state);
    while(true);
  }

  ESP.wdtDisable();
}

void loop() {
  Serial.print(F("[RTTY] Sending RTTY data ... "));
  // send out idle condition for 500 ms
  
  rtty.idle();  
  delay(500);  
  // Arduino String class
  String aStr = "hello";
  rtty.println(aStr);  
  Serial.println(F("done!"));
  // wait for a second before transmitting again
  delay(1000);
  Serial.println(F("fim"));  
  delay(3000);  
}

Debug log

R	1	6	
Found Si443x!
R	3	20	3	
W	6	0	
R	33	22	
W	33	82	
R	33	82	
R	32	C	
W	32	0	
R	32	0	
R	70	C	
W	70	C	
R	70	C	
W	6E	C	
W	6F	49	
R	1C	1	
R	1C	1	
R	70	C	
0
0
0
10.417	10	A	3	3	83	53
100663	18937
65535	FFFF
R	21	1	
W	21	1	
R	21	1	
R	20	64	
W	20	53	
R	20	53	
R	21	1	
W	21	1	
R	21	1	
R	22	47	
W	22	89	
R	22	89	
R	23	AE	
W	23	37	
R	23	37	
R	24	2	
W	24	7	
R	24	7	
R	25	8F	
W	25	FF	
R	25	FF	
R	71	0	
W	71	0	
R	71	0	
W	72	50	
R	1C	1	
W	1C	96	
R	1C	96	
R	1C	96	
R	1C	96	
R	70	C	
1
1
0
15.625	15	F	5	5	125	7D
67108	10624
2518	9D6
R	21	1	
W	21	1	
R	21	1	
R	20	53	
W	20	7D	
R	20	7D	
R	21	1	
W	21	1	
R	21	1	
R	22	89	
W	22	6	
R	22	6	
R	23	37	
W	23	24	
R	23	24	
R	24	7	
W	24	1	
R	24	1	
R	25	FF	
W	25	D6	
R	25	D6	
R	34	8	
W	34	2	
R	34	2	
R	35	2A	
W	35	42	
R	35	42	
R	33	82	
W	33	82	
R	33	82	
W	36	12	AD	
R	71	0	
W	71	20	
R	71	20	
R	70	C	
W	70	8	
R	70	8	
R	70	8	
W	70	8	
R	70	8	
R	75	75	
W	75	53	
R	75	53	
R	76	BB	
W	76	4A	
R	76	4A	
R	77	80	
W	77	FF	
R	77	FF	
R	6D	18	
W	6D	1B	
R	6D	1B	
success!
[RTTY] Initializing ... R	71	20	
W	71	20	
R	71	20	
W	72	0	
success!
[RTTY] Sending RTTY data ... R	71	20	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4A	
W	77	FF	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
W	75	13	
W	76	4B	
W	77	0	
R	71	0	
W	71	0	
R	71	0	
R	71	0	
W	71	0	
R	71	0	
W	7	9	
done!
fim

@jgromes
Copy link
Owner

jgromes commented Nov 4, 2020

Maybe a timming issue?

That's possible, I'll have to check if I have an Si4432 to test with - I'm not sure I ever used it with ESP8266 to send RTTY.

jgromes added a commit that referenced this issue Nov 5, 2020
@jgromes
Copy link
Owner

jgromes commented Nov 5, 2020

I was able to replicate this on my setup - turns out the solution was pretty simple, there was one extra call to enable direct mode. This wasn't an issue on other modules (because direct mode implementations differ), or slower platforms like Arduino Uno, which is what I usually test with.

So this issue only popped up on a fast enough platform (like ESP8266) with this exact module. Fixed in the previous commit.

@jgromes jgromes closed this as completed Nov 5, 2020
@jgromes jgromes added the resolved Issue was resolved (e.g. bug fixed, or feature implemented) label Nov 5, 2020
@fazerlab
Copy link
Author

fazerlab commented Nov 6, 2020

I apply [RTTY] Fixed idle (#195) in my setup and work fine. I could decode RTTY with software SDR Console V.3.
Many, many thanks!!! I´m a Radiolib fan!! Radiolib is a great librarie

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working resolved Issue was resolved (e.g. bug fixed, or feature implemented)
Projects
None yet
Development

No branches or pull requests

2 participants