Receiving corrupt data from E32 ttl 100 modules

Home Forums The libraries hosted on the site EByte LoRa e32 UART devices sx1262/sx1268 Receiving corrupt data from E32 ttl 100 modules

Viewing 1 reply thread
  • Author
    Posts
    • #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␖�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,

      • #18010
        Renzo Mischianti
        Keymaster

          Hi Granit,
          Which encoding do you use on your IDE?
          Bye Renzo

          • #18935
            khawla

              i have the same problem if you find solution help me please

            • #18937
              Renzo Mischianti
              Keymaster

                Sorry, but I can’t replicate the problem.
                You must send more information for a correct debug.
                Bye Renzo

          Viewing 1 reply thread
          • You must be logged in to reply to this topic.
          Exit mobile version