Hallo, für erste Tests mit LoRa habe ich mir 2 Evaluationboards von Heltec besorgt. Lleider ist es mir bisher nicht gelungen ein erstes Programm mit diesen Modulen aufzubauen. Ich nutze VisualCode und PlatformIO. Gibt es hier eventuell erfahrene Entwickler die solch ein Modul in VisualCode mit PlatformIO in Betrieb genommen haben? Bezeichnung Evaluationboard: Heltec Automation LoRa32
Zo R. schrieb: > Lleider ist es mir bisher nicht gelungen ein erstes Programm mit diesen > Modulen aufzubauen. Was hast du denn seither genau gemacht? Zeig Mal. Controller ist ja scheinbar ein ESP32. Ich würde ein einfaches ESP32 Projekt mit PlatformIO aufsetzen und dann eine Library für den Funk Chip suchen. Vielleicht sowas: https://github.com/sandeepmistry/arduino-LoRa Und dann in der Example Abteilung nachschauen.
Hallo, hab mal einen github Link angehangen. Zo R. schrieb: > für erste Tests mit LoRa habe ich mir 2 Evaluationboards von Heltec > besorgt. https://github.com/HelTecAutomation/Heltec_ESP32 Gruß bastler2022
Guten Morgen, ich habe schon bisher alles versucht in VScode und PlatformIO. Leider gingt mir kein kompilirfähiges Projekt nur mit dem esp32-s3. Variante 1:
1 | [env:esp32s3] |
2 | platform = espressif32 |
3 | board = esp32-s3-devkitc-1 |
4 | framework = arduino |
Variante 2:
1 | [env:esp32-s3] |
2 | platform = espressif32 |
3 | board = esp32-s3-devkitc-1 |
4 | framework = arduino |
5 | monitor_speed = 115200 |
6 | upload_speed = 460800 |
7 | |
8 | ; Optional: Define build flags if needed |
9 | build_flags = |
10 | -DCORE_DEBUG_LEVEL=5 |
11 | |
12 | ; Optional: Define additional libraries or configuration for external hardware |
13 | lib_deps = |
14 | adafruit/Adafruit Unified Sensor @ ^1.1.0 |
Muss ich in platformIO noch eine weitere Biblithek einbinden?
:
Bearbeitet durch User
Musste espressif deinstallieren und nochmal neu installieren. Jetzt kann ich zumindest mal ein esp32-s3 Projekt erfolgreich bauen. platformIO.ini:
1 | [env:esp32-s3] |
2 | platform = espressif32 |
3 | board = esp32-s3-devkitc-1 |
4 | framework = arduino |
5 | monitor_speed = 115200 |
6 | upload_speed = 460800 |
7 | |
8 | lib_deps = |
9 | jgromes/RadioLib @ ^6.3.0 |
10 | Wire
|
11 | SPI
|
12 | |
13 | build_flags = |
14 | -DCORE_DEBUG_LEVEL=5 |
:
Bearbeitet durch User
1 | #include <Arduino.h> |
2 | #include <SPI.h> |
3 | |
4 | #define CS 5 // Dein Chip Select Pin
|
5 | |
6 | uint8_t readRegister(uint8_t addr); |
7 | |
8 | #define RST 14
|
9 | |
10 | void setup() { |
11 | Serial.begin(115200); |
12 | while (!Serial); |
13 | |
14 | pinMode(RST, OUTPUT); |
15 | digitalWrite(RST, LOW); |
16 | delay(10); |
17 | digitalWrite(RST, HIGH); |
18 | delay(10); |
19 | |
20 | SPI.begin(5, 19, 23, 18); // (SCK, MISO, MOSI, SS) |
21 | |
22 | Serial.println("Teste SPI-Register des LoRa-Chips..."); |
23 | |
24 | uint8_t version = readRegister(0x01); |
25 | Serial.print("SX1276 Version: 0x"); |
26 | Serial.println(version, HEX); |
27 | }
|
28 | |
29 | void loop() { |
30 | delay(1000); |
31 | }
|
32 | |
33 | uint8_t readRegister(uint8_t addr) { |
34 | digitalWrite(CS, LOW); |
35 | SPI.transfer(addr & 0x7F); // Read-Befehl: MSB muss 0 sein |
36 | uint8_t value = SPI.transfer(0x00); // Dummy-Byte senden und Wert empfangen |
37 | digitalWrite(CS, HIGH); |
38 | return value; |
39 | }
|
Hier ein kleine Beispielanwendung um mal vom Lora Modul was auszulesen. Ich erhalte immer den Wert 0x00 zurück auch wenn ich das SPI Kommando 0x042 benutze.
:
Bearbeitet durch User
falls Du das Heltec LoRa32 v3.x hast dann sind Deine Pin Definitionen falsch. nutze diese: SS (CS)= 8 SCK (CLK)= 9 MOSI = 10 MISO = 11 RST = 12 BUSY = 13 DIO (also irq) = 14
Anscheinend gibt es davon drei verschiedene Frequenzen. 433, 868 und 915 MHz. In DE sind nur 433 und 868 zugelassen. Wenn man das falsche Board erwischt, bzw zwei Boards hat mit unterschiedlicher Frequenz, ist die Reichweite dreck
Jens K. schrieb: > In DE sind nur 433 und 868 zugelassen. Wenn man das falsche Board > erwischt, bzw zwei Boards hat mit unterschiedlicher Frequenz, ist die > Reichweite dreck das hat nichts damit zu tuen dass der TO keine SPI Kommunikation mit dem Radio Chip ans Laufen bekommt.
Danke euch. Ich habe nun die PINS bei mir angepasst. Nach wie vor funktioniert die SPI Kommunikation nicht. Ich kann auf dem Board und auch auf der Verpackung nicht sehen welche Heltec Version ich vor mir liegen habe.
die Version findet sich auf dem Board auf der Vorderseite im rechten unteren Eck zwischen Display und IPEX antenna connector
Ok ich kann die Bezeichnung V3 lesen. Hab auch den Schaltplan gefunden und die verwendeten SPI Pins überprüft. Stimmt alles soweit. Trotzdem erhalte ich bei 0x01 immer 0x00 zurück.
1 | #include <Arduino.h> |
2 | #include <SPI.h> |
3 | |
4 | #define LED 35
|
5 | |
6 | #define CS 8
|
7 | #define RST 12
|
8 | |
9 | uint8_t readRegister(uint8_t addr); |
10 | |
11 | void setup() |
12 | {
|
13 | Serial.begin(115200); |
14 | while (!Serial); |
15 | |
16 | pinMode(LED, OUTPUT); |
17 | |
18 | pinMode(RST, OUTPUT); |
19 | digitalWrite(RST, LOW); |
20 | delay(10); |
21 | digitalWrite(RST, HIGH); |
22 | delay(10); |
23 | |
24 | SPI.begin(9, 11, 10, CS); // (SCK, MISO, MOSI, SS) |
25 | |
26 | Serial.println("Teste SPI-Register des LoRa-Chips..."); |
27 | |
28 | uint8_t version = readRegister(0x01); |
29 | Serial.print("SX1276 Version: 0x"); |
30 | Serial.println(version, HEX); |
31 | |
32 | version = readRegister(0x42); |
33 | Serial.print("SX1276 Version: 0x"); |
34 | Serial.println(version, HEX); |
35 | }
|
36 | |
37 | void loop() |
38 | {
|
39 | digitalWrite(LED, !digitalRead(LED)); |
40 | delay(1000); |
41 | }
|
42 | |
43 | uint8_t readRegister(uint8_t addr) |
44 | {
|
45 | SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); // 1 MHz |
46 | digitalWrite(CS, LOW); |
47 | uint8_t value = SPI.transfer(addr & 0x7F); // Read-Befehl: MSB muss 0 sein |
48 | digitalWrite(CS, HIGH); |
49 | SPI.endTransaction(); |
50 | return value; |
51 | }
|
Ich habe aktuell kein Oszi zur Hand. Es ist doch ein fertiges Board. Warum muss alles so kompliziert sein. Ich möchte nur mal das Board mit Lora testen.
:
Bearbeitet durch User
Ich nutze aktuell den Pin DIO nicht. Ist das zwingend für das kleine Beispiel notwendig?
bei mir haben die LoRaSender/LoRaReceiver Beispiele funktioniert, die Heltec mit seinen Arduino Bibliotheken mitliefert. Dort wuerde ich weiterlesen: https://github.com/HelTecAutomation/Heltec_ESP32/blob/master/src/lora/LoRa.cpp
Zo R. schrieb: > Ich nutze aktuell den Pin DIO nicht. Ist das zwingend für das kleine > Beispiel notwendig? nein
Wie binde ich die Lib in VSCode + PlatformIO ein, so dass ich die Lora.h nutzen kann?
Zo R. schrieb: > Es ist doch ein fertiges Board. Warum muss alles so kompliziert sein. > Ich möchte nur mal das Board mit Lora testen. das Gefuehl kenne ich. Ich wollte die Boards mit MicroPython zum laufen bringen. Hat bisher nicht geklappt. Bin danach zu Arduino zurueckgegangen und habe mich an die Instruktionen von Heltec gehalten. Selbst dann ware die Installation mit Fehlern behaftet. Ich musste eine Adafruit OLED Library manuell installieren, sonst kompilierten die Heltec Examples nicht. Dann hatte ich im Rahmen meiner MicroPython Experimente den ESP32S3 Flash geloescht. Damit war eine von Heltec in den Flash geschriebener Lizenz Key weg. Den musste ich dann ueber Heltec Webseite neu generieren und ueber Serial Monitor in das Board reinschreiben (liblorawan.a verweigert sonst Radi Chip init). Es war ein steiniger Weg ...
Ok. Muss ich für ein einfach Lora Kommunikation den Key auch nochmals reinschreiben? Damit habe ich mich auch noch nicht befasst. Gibt es eventuell einen genauen Fahrplann für VSCode und platformIO?
Zo R. schrieb: > Wie binde ich die Lib in VSCode + PlatformIO ein, so dass ich die Lora.h > nutzen kann? Du hast (mindestens ...) zwei Probleme: - die Heltec Boards irgendwie zum laufen zu bekommen - Einbindung in Deine bevorzugte Entwicklungs-Umgebung Fuer Punkt 1 hast Du eine realistische Chance, wenn Du mit Arduino anfaengst. Wenn das klappt, wuerde ich versuchen, eines der Boards mit PlattformIO zum laufen zu bringen (ein Board bleibt auf Arduino und laeuft als LoRaSender). Viel Glueck ;o)
Alternative: https://registry.platformio.org/libraries/jgromes/RadioLib/installation ich empfehle trotzdem, erstmal ein minimales Sender/Receiver example per Arduino zum laufen zu bringen
Es kann doch nicht sein. Die SPI Kommunikation will einfach nicht. Das kann ich nicht verstehen. Ich habe auch den Schaltplan angeschaut. Die Pins sind soweit korrekt eingestellt. Ich möchte nicht noch eine weitere IDE installieren. Hat hier jemand das ganze in VSCode und platformio zum Laufen gebracht? Zumindest die SPI Kommunikation zum Lora Chip?
:
Bearbeitet durch User
Zo R. schrieb: > Es kann doch nicht sein. Die SPI Kommunikation will einfach nicht. Schließ doch bitte mal ein Oszilloskop/Logic Analyzer an, so ist das doch reiner Blindflug. Wenn du keins hast schließ wenigstens mal LEDs an und setz die SPI-Frequenz auf Minimum. An den LEDs sollte man ein Flackern erkennen können, insbesondere beim MISO wäre das wichtig.
Muss das morgen erst machen. Hab hier leider kein Oszi. Auf folgender Seite https://heltec.org/project/wifi-kit32-v3/ kann ich den Schaltplan sehen, allerdings ist der Lora Chip nicht zu sehen. Irgendwo anders hatte ich mal einen anderen Schaltplan. Da war auch der Lora Chip enthalten.
:
Bearbeitet durch User
Zo R. schrieb: > VSCode und platformio Uwe L. schrieb: > Zo R. schrieb: >> Es ist doch ein fertiges Board. Warum muss alles so kompliziert sein. >> Ich möchte nur mal das Board mit Lora testen. > > das Gefuehl kenne ich. Ich wollte die Boards mit MicroPython zum laufen > bringen. Hat bisher nicht geklappt. Wenn man irgendwelche 3rd-Party Tools nutzt muss man immer basteln. Bei sehr billigen chinesischen Herstellern ist Bastelei auch meist garantiert. Die besten Chancen hat man normalerweise mit den Tools des Herstellers. Beim ESP32 wäre das die eclipse-basierte Espressif-IDE, oder die ESP-IDF Extension for VS Code, wobei letzteres vermutlich noch nicht so ausgereift ist, und natürlich was anderes ist als PlatformIO, nämlich "nur" direkt ESP-IDF. Zo R. schrieb: > Auf folgender Seite https://heltec.org/project/wifi-kit32-v3/ > kann ich den Schaltplan sehen, allerdings ist der Lora Chip nicht zu > sehen. Das ist ja auch ein ganz anderes Produkt das gar kein LoRa hat... Auf der korrekten Produktseite sind die Schaltpläne für Version v3.1 und v3.2 verlinkt. Allerdings zeigen beide Links auf Version v.3.1. Mit etwas suchen findet man den für v3.2. Produktseite: https://heltec.org/project/wifi-lora-32-v3/ Version v3.1: https://resource.heltec .cn/download/WiFi_LoRa_32_V3/HTIT-WB32LA(F)_V3.1_Schematic_Diagram.pdf Version v3.2: https://resource.heltec .cn/download/WiFi_LoRa_32_V3/WiFi_LoRa_32_V3.2_Schematic_Diagram.pdf (Leerzeichen vor .cn entfernen wegen Spamverdacht) Der LoRa-IC ist unten links. Es gibt da doch einige Unterschiede zwischen den Versionen. Insbesondere U3 sind zwei ganz verschiedene Produkte.
:
Bearbeitet durch User
Was die SPI Pins betreffen sehe ich keinen Unterschied. Ich habe auch diese Pins benutzt. Kein Chance eine einfache SPI Kommunikation zu realisieren.
1 | #include <Arduino.h> |
2 | #include <SPI.h> |
3 | |
4 | #define REG_VERSION 0x42
|
5 | |
6 | // LoRa Pins für Heltec V3
|
7 | #define LORA_MOSI 10
|
8 | #define LORA_MISO 11
|
9 | #define LORA_SCK 9
|
10 | #define LORA_CS 8
|
11 | |
12 | uint8_t readRegister(uint8_t reg) { |
13 | digitalWrite(LORA_CS, LOW); |
14 | delayMicroseconds(10); |
15 | |
16 | SPI.transfer(reg & 0x7F); // Read command (MSB = 0 für lesen) |
17 | uint8_t response = SPI.transfer(0x00); |
18 | |
19 | digitalWrite(LORA_CS, HIGH); |
20 | delayMicroseconds(10); |
21 | |
22 | return response; |
23 | }
|
24 | |
25 | void setup() { |
26 | Serial.begin(9600); |
27 | delay(1000); |
28 | |
29 | // SPI Konfiguration
|
30 | SPI.begin(LORA_SCK, LORA_MISO, LORA_MOSI, LORA_CS); |
31 | SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); // Langsamere Clock |
32 | |
33 | pinMode(LORA_CS, OUTPUT); |
34 | digitalWrite(LORA_CS, HIGH); |
35 | |
36 | // Versuche verschiedene Register zu lesen
|
37 | Serial.printf("Version Register (0x42): 0x%02X\n", readRegister(0x42)); |
38 | Serial.printf("OpMode Register (0x01): 0x%02X\n", readRegister(0x01)); |
39 | Serial.printf("FreqMSB Register (0x06): 0x%02X\n", readRegister(0x06)); |
40 | }
|
41 | |
42 | void loop() { |
43 | delay(1000); |
44 | }
|
Ausgabe: Version Register (0x42): 0xAA OpMode Register (0x01): 0xAA FreqMSB Register (0x06): 0xAA Board bestellt über amazon: APKLVSR LoRa ESP32 Development Board, LoRa V3 Board with OLED Display and Antenna USB C Dual-Core IOT Board 240MHz Bluetooth WiFi Module 863 928MHz for Arduino (Pack of 2) ESP32 V3 LoRa V3 SX1262 0.96 Inch OLED Display for Arduino Smart Home WiFi LoRa 32
:
Bearbeitet durch User
Irgendein verdammter Scheiß wo man vergessen hat zu berücksichtigen. Das kotzt mich an diese ganzen Bastellplatinen.
:
Bearbeitet durch User
Ich glaube so langsam, das ganze ist defekt. Irgendein China Scheiß.
:
Bearbeitet durch User
0xAA ueber alle Register hatte ich auch schon und trotzdem laufen die Boards. Eines direkt bei Heltec gekauft, ein anderes ueber Amazon. Ich habe fast den Verdacht, dass Du irgendwo zwischen SPI.begin() und SPI.beginTransaction() bereits CS nach oben oder unten setzen musst
Nimm die RadioLib von JGromes. Die gibt schöne Fehlercodes aus. Was kommt denn da für einer?
Ich nutzte nun die RadioLib:
1 | #include <Arduino.h> |
2 | #include <SPI.h> |
3 | #include <RadioLib.h> |
4 | |
5 | #define LED 35
|
6 | |
7 | #define LORA_MOSI 10
|
8 | #define LORA_MISO 11
|
9 | #define LORA_SCK 9
|
10 | #define LORA_CS 8
|
11 | #define LORA_RST 12
|
12 | #define LORA_IRQ 14
|
13 | #define LORA_RST 12
|
14 | #define LORA_BUSY 13
|
15 | |
16 | SPIClass spiSX(SPI); |
17 | SPISettings spiSettings(2000000, MSBFIRST, SPI_MODE0); |
18 | SX1278 radio = new Module(LORA_CS, LORA_IRQ, LORA_RST, LORA_BUSY); |
19 | |
20 | int transmissionState = RADIOLIB_ERR_NONE; |
21 | volatile bool transmittedFlag = false; |
22 | int count = 0; |
23 | |
24 | #if defined(ESP8266) || defined(ESP32)
|
25 | ICACHE_RAM_ATTR
|
26 | #endif
|
27 | void setFlag(void) |
28 | {
|
29 | // we sent a packet, set the flag
|
30 | transmittedFlag = true; |
31 | }
|
32 | |
33 | void setup() |
34 | {
|
35 | Serial.begin(115200); |
36 | delay(1000); |
37 | Serial.println("LoRa SPI Test startet..."); |
38 | |
39 | // SPI starten (SCK, MISO, MOSI, NSS)
|
40 | SPI.begin(9, 11, 10, 8); |
41 | |
42 | // Reset-Pin initialisieren und zurücksetzen
|
43 | pinMode(12, OUTPUT); |
44 | digitalWrite(12, LOW); |
45 | delay(10); |
46 | digitalWrite(12, HIGH); |
47 | delay(10); |
48 | |
49 | // LoRa-Chip initialisieren
|
50 | int state = radio.begin(868.0); // Frequenz für EU |
51 | if (state == RADIOLIB_ERR_NONE) |
52 | {
|
53 | Serial.println("SX1262 erfolgreich initialisiert!"); |
54 | }
|
55 | else
|
56 | {
|
57 | Serial.print("Fehler beim Initialisieren: "); |
58 | Serial.println(state); |
59 | }
|
60 | |
61 | pinMode(LED, OUTPUT); |
62 | }
|
63 | |
64 | void loop() |
65 | {
|
66 | digitalWrite(LED, !digitalRead(LED)); |
67 | |
68 | delay(1000); |
69 | }
|
Ausgabe: LoRa SPI Test startet... Fehler beim Initialisieren: -2 platformio.ini:
1 | [env:esp32-s3] |
2 | platform = espressif32 |
3 | board = esp32-s3-devkitc-1 |
4 | framework = arduino |
5 | monitor_speed = 115200 |
6 | upload_speed = 460800 |
7 | debug_tool = esp-prog |
8 | debug_init_break = tbreak setup |
9 | lib_deps = |
10 | Wire
|
11 | SPI
|
12 | jgromes/RadioLib@^7.1.2 |
13 | build_flags = |
14 | -DCORE_DEBUG_LEVEL=5 |
Kann doch nicht sein, dass beide Boards defekt sind. Zumindest läuft die serial debug Schnittsatelle und auch die LED blinkt bei mir.
Ich habe echt alles kontrolliert. Die SPI Kommunikation geht einfach nicht.
Kannst du bitte ein Foto von vorne und hinten deines Boards einstellen? Irgendwas mit der Version stimmt da nicht.
Zo R. schrieb: > Irgendein verdammter Scheiß wo man vergessen hat zu > berücksichtigen. Das > kotzt mich an diese ganzen Bastellplatinen. An den Billigst-China-Platinen mit begrenztem Software-Support, wo du aber eine ganz andere Software für benutzt...? Zo R. schrieb: > Version Register (0x42): 0xAA > OpMode Register (0x01): 0xAA > FreqMSB Register (0x06): 0xAA Höchst verdächtig. Offenbar tut sich doch was auf der MISO-Leitung. Irgendwas ist da vermutlich mit der Clock-Leitung überkreuz. Vielleicht ist auch der SPI-Mode falsch (CPHA, CPOL). Uwe L. schrieb: > Ich > habe fast den Verdacht, dass Du irgendwo zwischen SPI.begin() und > SPI.beginTransaction() bereits CS nach oben oder unten setzen musst Es muss nach oben gesetzt werden! Das passiert im Code gar nicht... Zo R. schrieb: > Ich habe echt alles kontrolliert. Du hast nichtmal LEDs an die Pins angeschlossen. Das wäre das Mindeste.
Was meinst du genau damit? > Ich > habe fast den Verdacht, dass Du irgendwo zwischen SPI.begin() und > SPI.beginTransaction() bereits CS nach oben oder unten setzen musst
wenn Du SPI.beginTransaction() machst ohne den Chip vorher selektiert zu haben, laeuft Deine Kommunikation ins Leere
Hi Uwe, wie sieht deine Applikation mit der vollständigen Lora Spi Initialisierung aus? Das wäre sehr hilfreich für mich.
:
Bearbeitet durch User
Zo R. schrieb: > wie sieht deine Applikation mit der vollständigen Lora Spi > Initialisierung aus? Das wäre sehr hilfreich für mich. liegt mir aktuell nicht vor, aber ich hatte vorhin bereits auf Heltec Github hingewiesen. Z. B.: https://github.com/HelTecAutomation/Heltec_ESP32/blob/adea0f5622413d4a403c3270eb01a513d18f02c7/src/lora/LoRa.cpp#L85 da sieht man gut wie der RESET Pin geschaltet wird, mit welchen Timings. Dort ist auch erkenntlich, dass vor SPI.begin() der CS Pin gesetzt werden muss.
Als Beispiel für ein Projekt, das mit PlatformIO funktioniert und viele Lora-Boards unterstützt (und die RadioLib benutzt), kannst du ja mal hier in die Sourcen schauen. Das ist die Anleitung für PlatformIO dazu: https://github.com/G4lile0/tinyGS/wiki/Platformio. Das Projekt findest du unter https://github.com/G4lile0/tinyGS. In den Sourcen unter ConfigManager sind auch die Pinbelegungen zu finden.
Uwe L. schrieb: > Zo R. schrieb: >> Danke für deine Untersützung. > > ich habe die gleichen Boards, die laufen ... Das ist doch prima! Dann kannst du dem TO sicherlich dein Projekt zur Verfügung stellen damit er sieht ob es an der Hardware liegt!
Guten Morgen, ich habe es mittlerweile geschafft. Der Sender und Empfänger lässt sich initialisieren. Auch das Versenden von einem Paket und Empfangen funktioniert.
Zo R. schrieb: > ich habe es mittlerweile geschafft. > Der Sender und Empfänger lässt sich initialisieren. Und was war falsch?
Es lag an der SPI Initialisierung und Verwendung. Ich poste hier mal die Applikation für den LoRa Sender:
1 | #include <Arduino.h> |
2 | #include <SPI.h> |
3 | #include <RadioLib.h> |
4 | |
5 | #define LORA_MOSI 10
|
6 | #define LORA_MISO 11
|
7 | #define LORA_SCK 9
|
8 | #define LORA_CS 8
|
9 | #define LORA_RST 12
|
10 | #define LORA_DIO 14
|
11 | #define LORA_BUSY 13
|
12 | |
13 | SX1262 radio = new Module(LORA_CS, LORA_DIO, LORA_RST, LORA_BUSY, SPI, SPISettings(2000000, MSBFIRST, SPI_MODE0)); |
14 | |
15 | void setup() { |
16 | Serial.begin(115200); |
17 | delay(2000); |
18 | |
19 | Serial.println("LoRa Test startet..."); |
20 | |
21 | SPI.begin(LORA_SCK, LORA_MISO, LORA_MOSI, LORA_CS); |
22 | |
23 | Serial.println("Initialisiere LoRa..."); |
24 | int state = radio.begin(868.0, 125.0, 7, 5); // Freq, BW, SF, CR |
25 | |
26 | if (state == RADIOLIB_ERR_NONE) |
27 | {
|
28 | Serial.println("SX1262 erfolgreich initialisiert!"); |
29 | |
30 | // LoRa Parameter setzen
|
31 | radio.setOutputPower(22); |
32 | radio.setCodingRate(5); |
33 | }
|
34 | else
|
35 | {
|
36 | Serial.print("Fehler beim Initialisieren: "); |
37 | Serial.println(state); |
38 | }
|
39 | |
40 | // // Version Register lesen
|
41 | // digitalWrite(LORA_CS, LOW);
|
42 | // SPI.transfer(0x42); // Command byte
|
43 | // uint8_t version = SPI.transfer(0x00); // Dummy byte zum Lesen
|
44 | // digitalWrite(LORA_CS, HIGH);
|
45 | |
46 | // Serial.printf("SX1262 Version Register (0x42): 0x%02X\n", version);
|
47 | }
|
48 | |
49 | void loop() |
50 | {
|
51 | static uint32_t packetCount = 0; |
52 | char message[64]; |
53 | snprintf(message, sizeof(message), "LoRa Paket #%lu", packetCount++); |
54 | |
55 | Serial.print("Sende: "); |
56 | Serial.println(message); |
57 | |
58 | int state = radio.transmit(message); |
59 | if (state == RADIOLIB_ERR_NONE) { |
60 | Serial.println("Paket erfolgreich gesendet!"); |
61 | } else { |
62 | Serial.print("Fehler beim Senden: "); |
63 | Serial.println(state); |
64 | }
|
65 | |
66 | delay(1000); |
67 | }
|
Nachdem ich das Radio Modul so konfiguriert habe hat es funktioniert.
1 | SX1262 radio = new Module(LORA_CS, LORA_DIO, LORA_RST, LORA_BUSY, SPI, SPISettings(2000000, MSBFIRST, SPI_MODE0)); |
:
Bearbeitet durch User
Zo R. schrieb: > Es lag an der SPI Initialisierung Deine SPI-Settings sind aber unverändert. Die Settings, die du jetzt explizit angibst, sind identisch zum Default: https://github.com/jgromes/RadioLib/blob/977b2c28c8989167719e9f0df8ee69b67b3feddb/src/BuildOpt.h#L166 Zo R. schrieb: > Nachdem ich das Radio Modul so konfiguriert habe hat es funktioniert. Du hast SX1278 durch SX1262 ersetzt. Joah, macht natürlich Sinn den richtigen Chip einzustellen.
Zo R. schrieb: > Bin echt happy !!! Freut mich für dich, aber wenn du bei solchen Themen erfolgreicher sein möchtest solltest du dir eine analytischere Herangehensweise zulegen 😅
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.