1
Hardware / Pomoc s diagnostikou ESP32 + LoRa
« kdy: 16. 09. 2024, 19:17:15 »
Ahoj,
prosím o radu jak diagnostikovat problémy s LoRa komunikací.
Cíl
Cílem je bezdrátová komunikace dvou ESP32 pomocí LoRa point-to-point spoje. První ESP32 v roli vysílače odesílá packety s nějakým obsahem, druhé ESP32 je v roli přijímače a všechny packety, které přijme, pošle přes sériovou linku do PC, kde si je zobrazím přes serial monitor v Arduino IDE.
Hardware
2x ESP32-WROOM-32D (https://www.aliexpress.com/item/1005006336964908.html?spm=a2g0o.order_list.order_list_main.91.6eef1802BZHNPW)
2x LoRa Ra-02 SX1278 (https://www.aliexpress.com/item/32965792976.html?spm=a2g0o.order_list.order_list_main.4.6eef1802BZHNPW)
ESP32 a LoRa modul propojené drátky napájenými na piny (na breadboard bylo ESP moc široké a nevešlo se).
Postup
Postupoval jsem podle tohoto tutorialu.
https://how2electronics.com/esp32-lora-sx1278-76-transmitter-receiver/
Pro programování používám Arduino IDE2 provozované na Ubuntu. ESP přes to naprogramovat jde.
Používám tuto knihovnu: https://github.com/sandeepmistry/arduino-LoRa/blob/master/API.md
Aktuální stav a problémy
Vysílač projde inicializací a tváří se, že vysílá. Na sériovou linku jsem si nechal vypsat návratové hodnoty funkcí:
Zkoušel jsem otočit i vyměnit role vysílač/přijímač u obou ESP32, ale chování bylo stejné.
Ohledně mikrokontrolerů jsem začátečník. Prosím o radu, na co se zaměřit při diagnostice.
Kód vysílače
Kód přijímače
prosím o radu jak diagnostikovat problémy s LoRa komunikací.
Cíl
Cílem je bezdrátová komunikace dvou ESP32 pomocí LoRa point-to-point spoje. První ESP32 v roli vysílače odesílá packety s nějakým obsahem, druhé ESP32 je v roli přijímače a všechny packety, které přijme, pošle přes sériovou linku do PC, kde si je zobrazím přes serial monitor v Arduino IDE.
Hardware
2x ESP32-WROOM-32D (https://www.aliexpress.com/item/1005006336964908.html?spm=a2g0o.order_list.order_list_main.91.6eef1802BZHNPW)
2x LoRa Ra-02 SX1278 (https://www.aliexpress.com/item/32965792976.html?spm=a2g0o.order_list.order_list_main.4.6eef1802BZHNPW)
ESP32 a LoRa modul propojené drátky napájenými na piny (na breadboard bylo ESP moc široké a nevešlo se).
Postup
Postupoval jsem podle tohoto tutorialu.
https://how2electronics.com/esp32-lora-sx1278-76-transmitter-receiver/
Pro programování používám Arduino IDE2 provozované na Ubuntu. ESP přes to naprogramovat jde.
Používám tuto knihovnu: https://github.com/sandeepmistry/arduino-LoRa/blob/master/API.md
Aktuální stav a problémy
Vysílač projde inicializací a tváří se, že vysílá. Na sériovou linku jsem si nechal vypsat návratové hodnoty funkcí:
- LoRa.beginPacket() -> 1
- LoRa.print("hello ") -> 6
- LoRa.endPacket() -> 1
Zkoušel jsem otočit i vyměnit role vysílač/přijímač u obou ESP32, ale chování bylo stejné.
Ohledně mikrokontrolerů jsem začátečník. Prosím o radu, na co se zaměřit při diagnostice.
Kód vysílače
Kód: [Vybrat]
#include <LoRa.h>
#include <SPI.h>
#define ss 5
#define rst 14
#define dio0 2
int counter = 0;
int msg = 0;
void setup()
{
Serial.begin(115200);
while (!Serial);
delay(2000);
Serial.println("LoRa Sender");
LoRa.setPins(ss, rst, dio0); //setup LoRa transceiver module
while (!LoRa.begin(433E6)) //433E6 - Asia, 866E6 - Europe, 915E6 - North America
{
Serial.println(".");
delay(500);
}
LoRa.setSyncWord(0xA5);
Serial.println("LoRa Initializing OK!");
}
void loop() {
Serial.print("Sending packet: ");
Serial.println(counter);
msg = LoRa.beginPacket(); //Send LoRa packet to receiver
Serial.print("LoRa.beginPacket(): ");
Serial.println(msg);
msg = LoRa.print("hello ");
Serial.print("LoRa.print(\"hello \"): ");
Serial.println(msg);
msg = LoRa.print(counter);
Serial.print("LoRa.print(counter): ");
Serial.println(msg);
msg = LoRa.endPacket();
Serial.print("LoRa.endPacket(): ");
Serial.println(msg);
Serial.println("--------\n");
counter++;
delay(2000);
}
Kód přijímače
Kód: [Vybrat]
#include <LoRa.h>
#include <SPI.h>
#define ss 5
#define rst 14
#define dio0 2
int msg = 0;
void setup() {
Serial.begin(115200);
while (!Serial);
delay(2000);
Serial.println("LoRa Receiver");
LoRa.setPins(ss, rst, dio0); //setup LoRa transceiver module
while (!LoRa.begin(433E6)) {
Serial.println(".");
delay(500);
}
LoRa.setSyncWord(0xA5);
Serial.println("LoRa Initializing OK!");
}
void loop() {
int packetSize = LoRa.parsePacket(); // try to parse packet
Serial.print("LoRa.available(): ");
Serial.println(LoRa.available());
if (packetSize) {
Serial.print("Received packet '");
while (LoRa.available()) {
String LoRaData = LoRa.readString();
Serial.print(LoRaData);
}
Serial.print("' with RSSI "); // print RSSI of packet
//Serial.println(LoRa.packetRssi());
} else {
//Serial.print("LoRa.parsePacket(): ");
//Serial.println(packetSize);
}
}