Hello Renzo,
I have two identical E32 ttl 100 modules running on two teensys. (one Teensy 4.0 and one 3.5).
Communicating with the E32 modules works perfectly. I can write settings(parameters) to and read the settings from the E32 modules.
When it comes to transmitting to other e32 modules on the other hand.., I get what looks like corrupt or incomplete data packets on the receiving end.
example below:
TQ
␅KZסe␋�f␖�TQ
0.00
Zסe␋�f␖�TQ
TQ
␅KZסe␋�f␖�TQ
0.00
Zסe␋�f␖�TQ
I have tried various solutions. I tried your library, KrisKasprzak's library, I tried writing my own one and using the SerialTransfer library with it to send and receive structs over uart but all to the same conclusion, corrupted incoming data. I have even tried just sending a single char but ended up receiving three bytes, none of which equalled the char I sent.
I used your example code with your library and the output above is what I see.
Below is my transmitting code on my Teensy 3.5
M0 = 24
M1 = 25
TXD = 26 <--4.7k--> 3.3v
RXD = 27 <--4.7k--> 3.3v
AUX = 35
c++
#define HWSERIAL1 Serial1
LoRa_E32 dataLink1(&HWSERIAL1, AUX_PIN, M0_PIN, M1_PIN);
void setup() {
Serial.begin(9600);
HWSERIAL1.setRX(RXD_PIN);
HWSERIAL1.setTX(TXD_PIN);
HWSERIAL1.begin(9600);
dataLink1.begin();
// After set configuration comment set M0 and M1 to low
// and reboot if you directly set HIGH M0 and M1 to program
ResponseStructContainer c;
c = dataLink1.getConfiguration();
Configuration configuration = *(Configuration*) c.data;
configuration.ADDL = 0;
configuration.ADDH = 5;
configuration.CHAN = 4;
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
dataLink1.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE);
c.close();
}
struct Message {
char type[5];
char message[8];
int temperature;
} message;
int i = 0;
void loop() {
delay(500);
i++;
struct Message {
char type[5] = "TEMP";
char message[8] = "Kitchen";
byte temperature[4];
} message;
*(float*)(message.temperature) = 19.2;
ResponseStatus rs = dataLink1.sendMessage(&message, sizeof(Message));
Serial.println(rs.getResponseDescription());
}
And this is my receiving code:
c++
#define HWSERIAL1 Serial1
LoRa_E32 dataLink1(&HWSERIAL1, AUX_PIN, M0_PIN, M1_PIN);
void setup() {
Serial.begin(9600);
HWSERIAL1.setRX(RXD_PIN);
HWSERIAL1.setTX(TXD_PIN);
HWSERIAL1.begin(9600);
dataLink1.begin();
// After set configuration comment set M0 and M1 to low
// and reboot if you directly set HIGH M0 and M1 to program
ResponseStructContainer c;
c = dataLink1.getConfiguration();
Configuration configuration = *(Configuration*) c.data;
configuration.ADDL = 0;
configuration.ADDH = 5;
configuration.CHAN = 4;
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
dataLink1.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE);
c.close();
}
struct Message {
char type[5];
char message[8];
byte temperature[4];
} message;
int i = 0;
void loop() {
if (dataLink1.available() > 1){
ResponseStructContainer rsc = dataLink1.receiveMessage(sizeof(Message));
struct Message message = *(Message*) rsc.data;
Serial.println(message.type);
Serial.println(*(float*)(message.temperature));
Serial.println(message.message);
// free(rsc.data);
rsc.close();
}
}
I really hope you can help me solve this problem!
Hoping to hear from you or someone else that can help soon.
Regards,