Home › Forums › The libraries hosted on the site › EByte LoRa e32 UART devices sx1262/sx1268 › Receiving corrupt data from E32 ttl 100 modules
- This topic has 3 replies, 1 voice, and was last updated 3 years, 4 months ago by
Renzo Mischianti.
-
AuthorPosts
-
-
17 January 2022 at 01:26 #17938
Granit
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␖�TQ0.00
Zסe␋�f␖�TQTQ
␅KZסe␋�f␖�TQ0.00
Zסe␋�f␖�TQI 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 = 35c++ #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,
-
24 January 2022 at 10:44 #18010
Hi Granit,
Which encoding do you use on your IDE?
Bye Renzo
-
-
AuthorPosts
- You must be logged in to reply to this topic.