Home › Forums › The libraries hosted on the site › EByte LoRa e32 UART devices sx1262/sx1268 › EByte LoRa e32: high sending and receiving latency
Tagged: Question
- This topic has 18 replies, 3 voices, and was last updated 1 year, 1 month ago by
Shashank.
-
AuthorPosts
-
-
22 April 2022 at 10:09 #20483
Hi 🙂 I’m a newbie in this Lora and esp thing could you help me out? I just tried your latest library and successfully exchange information between LoRa and ESP32. However, it needs quite some time until the message is received, when starting the program it could take a few minutes until the first message can be received and then goes normal. could you help me out? I need instant received as soon as the Lora send message
-
22 April 2022 at 14:51 #20489
Hi Rix,
try to add an antenna or put the devices farther. There isn’t a specified reason for so high latency.
Bye Renzo-
25 April 2022 at 08:04 #20541
Hi, thank you. I have fixed it, it is because bad cable
-
-
27 April 2022 at 07:57 #20552
Hehehehhe.. perfect!
Let us know what you are planning.
Bye Renzo -
10 May 2022 at 00:09 #20755
hi Renzo Mischianti. thank you for the replies, I’m currently building peer-to-peer communication for esp32 using Lora EBYTE e32 900T20D. I can’t find a way to make them talk to each other. like it only works for one-way communication, the other one cannot be a transceiver after it becomes a receiver. can you give me an example code for peer-to-peer communication for fixed transmission? it would be very useful. thank you
I’m using LoRa to help fishermen in my area to manage and handle their Fish Aggregating Devices. which is why I need two-way communication.
-
10 May 2022 at 09:06 #20756
Hi Rix,
I think you can find all information in this articleEbyte LoRa E32 device for Arduino, esp32 or esp8266: fixed transmission – 4
You can use the addressing of the device to send messages to each other. Or you can use broadcast to send a message to all devices in the channel.
Do you have a particular problem?
Bye Renzo
-
10 May 2022 at 10:45 #20757
Yes, I always get this error.
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled. Core 1 register dump: PC : 0x4000c2af PS : 0x00060730 A0 : 0x800d176c A1 : 0x3ffb1f20 A2 : 0x3ffb1f42 A3 : 0x00000000 A4 : 0x00000006 A5 : 0x3ffb1f42 A6 : 0x00000010 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x00000000 A10 : 0x00000009 A11 : 0x00000003 A12 : 0x00000064 A13 : 0x00000457 A14 : 0x00000011 A15 : 0x00000008 SAR : 0x0000000a EXCCAUSE: 0x0000001c EXCVADDR: 0x00000000 LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000 ELF file SHA256: 0000000000000000 Backtrace: 0x4000c2af:0x3ffb1f20 0x400d1769:0x3ffb1f30 0x400d1882:0x3ffb1f80 0x400d4912:0x3ffb1fb0 0x40086a75:0x3ffb1fd0
here is my sketch. it was a long sketch I just make it simple so there is a lot of garbage variable
Lora 1
// software 2 khusus untuk hardware 2 untuk terhubung ke WiFi dan bot Telegram //*************************************************** //#define FREQUENCY_915 //define frekuensi #include <Arduino.h> #include <WiFi.h> #include <ESP32Ping.h> #include <CTBot.h> #include <LoRa_E32.h> #include <SPI.h> #include <Wire.h> #include <Adafruit_I2CDevice.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define FPM_SLEEP_MAX_TIME 0xFFFFFFF #define AUX 18 #define M0 19 #define M1 23 #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) #define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128×64, 0x3C for 128×32 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Variabel global unsigned long lastSendTime = 0; unsigned long interval = 10000; String Data = ""; String JenisPesanLora = ""; // memulai serial untuk LoRa LoRa_E32 e32ttl100(16, 17, &Serial2, AUX, M0, M1, UART_BPS_RATE_9600, SERIAL_8N1); // RX ESP32,TX ESP32, mode Serial, Pin Aux, M0, M1 // memulai untuk dual core TaskHandle_t task0, task1; //************************************************************** // gunakan apabila diperlukan pemasangan wifi manual String wifiSSID = "Mi 10T Amien"; // nama wifi anda String wifiPassword = "123123456789"; // password wifi //************************************************************* TBMessage tMessage; String pingGoogle = "www.google.com"; String tokenBot = "5397733058:AAHD7UoshanXX-7TIEjPRT02iaCng6qUsso"; CTBot myBot; // Deklarasi Fungsi void callback(); void nodeConfig(); // konfigurasi LoRa void cekpesanLoRa(); // cek pesan LoRa void printParameters(struct Configuration configuration); void kirimpesanlora(); void setup() { // put your setup code here, to run once: Serial.begin(9600); delay(1000); // start LoRa e32ttl100.begin(); nodeConfig(); // konfigurasi LoRa // start masing masing task di core masing masing // task0 khusus untuk cek LoRa dan task1 untuk bot dan akses WiFi } // LOOP //******************************************************************************* void loop() { if (e32ttl100.available() <= 0) { if (millis() - lastSendTime > interval) { JenisPesanLora = "GPS"; lastSendTime = millis(); } else { JenisPesanLora = "STS"; } kirimpesanlora(); delay(1500); } cekpesanLoRa(); delay(2000); } //******************************************************************************* //****————————–Callback Lora————————–**** void callback() { Serial.println("Callback"); Serial.flush(); } //****————————–Konfigurasi LoRa————————–**** void nodeConfig() { ResponseStructContainer c; c = e32ttl100.getConfiguration(); Configuration configuration = *(Configuration *)c.data; configuration.ADDH = 0x0; configuration.ADDL = 0x3; configuration.CHAN = 0x2; configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; configuration.SPED.uartBaudRate = UART_BPS_9600; configuration.SPED.uartParity = MODE_00_8N1; configuration.OPTION.fec = FEC_1_ON; configuration.OPTION.fixedTransmission = FT_FIXED_TRANSMISSION; configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; configuration.OPTION.transmissionPower = POWER_20; configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250; // Set configuration changed and set to not hold the configuration ResponseStatus rs = e32ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE); printParameters(configuration); Serial.print("Config: "); Serial.println(rs.getResponseDescription()); c.close(); } //****————————–Cek Pesan LoRa————————–**** void cekpesanLoRa() { if (e32ttl100.available() > 0) { Serial.println("———-"); ResponseContainer rc = e32ttl100.receiveMessageUntil(); // Kalau Error print errornya if (rc.status.code != 1) { rc.status.getResponseDescription(); } else { // Print data yang diterima Serial.println(rc.data); Data = rc.data; } } } //****————————–Cek parameter konfigurasi LoRa————————–**** void printParameters(struct Configuration configuration) { Serial.println("—————————————-"); Serial.print(F("HEAD : ")); Serial.print(configuration.HEAD, BIN); Serial.print(" "); Serial.print(configuration.HEAD, DEC); Serial.print(" "); Serial.println(configuration.HEAD, HEX); Serial.println(F(" ")); Serial.print(F("AddH : ")); Serial.println(configuration.ADDH, DEC); Serial.print(F("AddL : ")); Serial.println(configuration.ADDL, DEC); Serial.print(F("Chan : ")); Serial.print(configuration.CHAN, DEC); Serial.print(" -> "); Serial.println(configuration.getChannelDescription()); Serial.println(F(" ")); Serial.print(F("SpeedParityBit : ")); Serial.print(configuration.SPED.uartParity, BIN); Serial.print(" -> "); Serial.println(configuration.SPED.getUARTParityDescription()); Serial.print(F("SpeedUARTDatte : ")); Serial.print(configuration.SPED.uartBaudRate, BIN); Serial.print(" -> "); Serial.println(configuration.SPED.getUARTBaudRate()); Serial.print(F("SpeedAirDataRate : ")); Serial.print(configuration.SPED.airDataRate, BIN); Serial.print(" -> "); Serial.println(configuration.SPED.getAirDataRate()); Serial.print(F("OptionTrans : ")); Serial.print(configuration.OPTION.fixedTransmission, BIN); Serial.print(" -> "); Serial.println(configuration.OPTION.getFixedTransmissionDescription()); Serial.print(F("OptionPullup : ")); Serial.print(configuration.OPTION.ioDriveMode, BIN); Serial.print(" -> "); Serial.println(configuration.OPTION.getIODroveModeDescription()); Serial.print(F("OptionWakeup : ")); Serial.print(configuration.OPTION.wirelessWakeupTime, BIN); Serial.print(" -> "); Serial.println(configuration.OPTION.getWirelessWakeUPTimeDescription()); Serial.print(F("OptionFEC : ")); Serial.print(configuration.OPTION.fec, BIN); Serial.print(" -> "); Serial.println(configuration.OPTION.getFECDescription()); Serial.print(F("OptionPower : ")); Serial.print(configuration.OPTION.transmissionPower, BIN); Serial.print(" -> "); Serial.println(configuration.OPTION.getTransmissionPowerDescription()); Serial.println("—————————————-"); } void kirimpesanlora() { String Sampaikan = ""; if (JenisPesanLora == "STS") { Sampaikan += "STS\0"; } else if (JenisPesanLora == "GPS") { Sampaikan += "GPS\0"; } ResponseStatus rs = e32ttl100.sendFixedMessage(0x0, 0x1, 0x2, Sampaikan); Serial.println("Sending " + Sampaikan); Serial.println(rs.getResponseDescription()); }
Lora 2
#include <Arduino.h> #include <TinyGPSPlus.h> //#define E32_TTL_100 //#define FREQUENCY_915 #include <LoRa_E32.h> #include <SPI.h> #include <Wire.h> #include <Adafruit_I2CDevice.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define AUX 18 #define M0 19 #define M1 23 #define RXPin 2 #define TXPin 4 #define TRIG_PIN_1 25 // ESP32 pin GIOP25 connected to Ultrasonic Sensor’s TRIG pin #define TRIG_PIN_2 26 // ESP32 pin GIOP26 TRIG pin #define TRIG_PIN_3 33 // ESP32 pin GIOP33 TRIG pin #define ECHO_PIN_1 34 // ESP32 pin GIOP34 connected to Ultrasonic Sensor’s ECHO pin #define ECHO_PIN_2 35 // ESP32 pin GIOP35 ECHO pin #define ECHO_PIN_3 36 // ESP32 pin GIOP36/VN ECHO pin static const uint32_t GPSBaud = 9600; // HardwareSerial serial1(2); LoRa_E32 e32ttl100(16, 17, &Serial2, AUX, M0, M1, UART_BPS_RATE_9600, SERIAL_8N1); HardwareSerial ss(1); // GPS hardware serial // memulai untuk dual core TaskHandle_t task0, task1; // Variable global int jeda_sensor = 5000; unsigned long millis_sekarang = 0; float duration_us_1, distance_cm_1; float duration_us_2, distance_cm_2; float duration_us_3, distance_cm_3; String Data = ""; String data_masuk; int interval = 5000; int interval2 = 32150; int interval3 = 5000; int interval4 = 5000; int interval5 = 5000; unsigned long lastSendTime = 0; unsigned long lastSendTime2 = 0; unsigned long lastSendTime3 = 0; unsigned long lastSendTime4 = 0; unsigned long lastSendTime5 = 0; bool islampuon = 0; bool issetrumon = 0; TinyGPSPlus gps; // memulai GPS NEO-6M // deklarasi fungsi void nodeConfig(); void Kirim_GPS_LoRa(); void Baca_Pesan_LoRa(); void setup() { // komunikasi serial Serial.begin(9600); delay(600); // configure the trigger pin to output mode pinMode(TRIG_PIN_1, OUTPUT); pinMode(TRIG_PIN_2, OUTPUT); pinMode(TRIG_PIN_3, OUTPUT); // configure the echo pin to input mode pinMode(ECHO_PIN_1, INPUT); pinMode(ECHO_PIN_2, INPUT); pinMode(ECHO_PIN_3, INPUT); // komunikasi LoRa e32ttl100.begin(); // memulai LoRa nodeConfig(); // konfigurasi LoRa } //*********************LOOP*********************** //*********************LOOP*********************** void loop() { Baca_Pesan_LoRa(); delay(100); } //*********************LOOP*********************** //*********************LOOP*********************** //*********************KONFIGURASI LoRa*********************** void nodeConfig() { ResponseStructContainer c; c = e32ttl100.getConfiguration(); Configuration configuration = *(Configuration *)c.data; configuration.ADDH = 0x0; configuration.ADDL = 0x1; configuration.CHAN = 0x2; configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; configuration.SPED.uartBaudRate = UART_BPS_9600; configuration.SPED.uartParity = MODE_00_8N1; configuration.OPTION.fec = FEC_1_ON; configuration.OPTION.fixedTransmission = FT_FIXED_TRANSMISSION; configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; configuration.OPTION.transmissionPower = POWER_20; configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250; // Set configuration changed and set to not hold the configuration ResponseStatus rs = e32ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_SAVE); Serial.print("Config: "); Serial.println(rs.getResponseDescription()); } //*********************Lora Rutin*********************** void Kirim_GPS_LoRa() { String Sampaikan = ""; if (data_masuk == "STS") { Sampaikan += "Status\n"; Sampaikan += "LAman\n"; Sampaikan += "SAman\0"; } else if (data_masuk == "GPS") { Sampaikan += "Lokasi\n"; Sampaikan += "Aman\0"; } ResponseStatus rs = e32ttl100.sendFixedMessage(0x0, 0x3, 0x2, Sampaikan); Serial.println("Sending " + Sampaikan); Serial.println(rs.getResponseDescription()); } //*********************Baca pesan lora dari esp lain*********************** void Baca_Pesan_LoRa() { if (e32ttl100.available() > 0) { Serial.println("———-"); ResponseContainer rc = e32ttl100.receiveMessageUntil(); // Kalau Error print errornya if (rc.status.code != 1) { rc.status.getResponseDescription(); } else { // Print data yang diterima Serial.println(rc.data); Data = rc.data; data_masuk = Data; delay(1000); Kirim_GPS_LoRa(); } } }
it is a bit mess. please help. im going out of my mind, this is my final college project
-
10 May 2022 at 10:50 #20758
sometimes it can be solved by just unplugging the lora, and re plug but sometimes it doesn’t work
-
-
10 May 2022 at 11:36 #20759
Put close on the second device configuration.
When did you receive that error?
-
10 May 2022 at 12:00 #20760
starting when I want this lora to be two-way communication. at first, it was all just fine and then this happen when trying two-way communication and now it just continues to do that. but the two-way communication work if the error code not happening. when I unplug Lora there is no error code I try to switch the lora but it does the same.
-
10 May 2022 at 12:28 #20761
On Server or Client?
-
10 May 2022 at 12:33 #20762
on the first device, lora 1
-
14 May 2022 at 15:02 #20804
Hi Renzo, can you help me out?
it worked for two-way communication I have figured it out. but still, sometimes I get the same problem but this time I can tell that the problem is only after the library tells me “timeout !!” and then the guru meditation error start. and the time out is always after the second message and my receiver don’t get any data even when the status said the success.I will really appreciate for your help.
-
-
14 May 2022 at 16:09 #20805
Hi Rix,
sorry, but I have some problems with COVID now.
With the information, you send me the only problem I have in mind is some wiring issue that generates noise or some pointers that now work correctly.Try monitoring memory.
Bye Renzo
-
14 May 2022 at 17:14 #20809
Hi, Renzo thank you for the reply, and I hope you get well soon. as you said it is the wire problem (again) and I think maybe some power problem too? I think that this device consumes a lot of power for esp32 size. it has worked now perfectly smooth. thankyou very much. ill try to power this device through an external source with 3.3v. I hope it can reach at least 1KM. once again thank you
-
-
14 May 2022 at 18:16 #20810
Hi Rix,
to get a long-distance It’s very important that you power supply the e32 with 5v and good amperage.
Don’t worry if the logic is 3.3v, use 5v on E32 VCC pin.
Bye Renzo -
15 March 2024 at 18:20 #30082
Hi Renzo,
I am a newbie to embedded system. I am using your library on Ebyte E32 module. my setup is with two arduino. One is receiver and another is transmitter.
I am facing a issue that at transmitting end i am able to send my message rapidly but at receiving end the serial monitor refreshes one second at a time. So trying to make it refresh multiple times in a second to rapidly receive the data. But i am not able to do it. Please help me with this problem.
-
-
AuthorPosts
- You must be logged in to reply to this topic.