Lora will einfach nicht.

OP (Firma: Q3) #7628019
Lesenswert?

Ich versuche seit Tagen eine einfache Lora-Schaltung zum Leben zu erwecken, komme aber nicht über das "while" hinaus, immer nur "Starting Lora failed!" im Monitor. Bei allen anderen scheint das zu funktionieren :-((

Die Lora-Lib stammt von hier: https://github.com/sandeepmistry/arduino-LoRa

Hat jemand eine Idee, wo das Problem liegt? Danke für Tips.

1
#include <SPI.h>
2
#include <LoRa.h>
3
int counter = 0;
4
float number = 10.00;
5

6
void setup()
7
{
8
  Serial.begin(9600); 
9
  while (!Serial);
10
  Serial.println("LoRa Sender");
11
  while (!LoRa.begin(868E6))
12
  {
13
    Serial.println("Starting LoRa failed!");
14
    delay(1000);
15
  }
16
  LoRa.setSyncWord(0xF3); 
17
}
18
 ...
Angehängte Dateien:
#7628035
Lesenswert?

Hast du einen Level-Converter zwischen Arduino Uno und SX1276?

Der SX1276 verträgt maximal 3.3V an den Eingängen bei 3.3V VCC, der ATMega328P läuft aber mit 5V Signalpegeln. Und 3.3V Ausgangspegel vom SX1276 reichen am ATMega nicht, um ein "high" zu erzeugen.

Ohne Pegelwandler machst du dir höchstens den SX1276 kaputt.

Angehängte Dateien:
#7628062
Lesenswert?

Sebastian R. schrieb:

Die spannende Frage für mich ist: Was für einen Level-Converter nutzt du und weshalb ist er nicht mit eingezeichnet?

Wahrscheinlich gar keinen.

@TO Schalte in die Signalleitungen (MISO, MOSI, SCK, NSS, RST und DI00) einen Levelshifter. Für die meisten Signale dürfte ein Unidirektionaler in der richtigen Signalrichtung ausreichend sein. Da gibt es was Fertiges wie diesen https://eckstein-shop.de/SparkFunLogicLevelConverter-33Vto5VBi-Directional?ws_oss_lieferland=DE&gad_source=1&gclid=EAIaIQobChMI1r6N262DhQMVGZpoCR0aqg-hEAQYAiABEgJfd_D_BwE hier. Damit hättest Du auf allen 6 Signalen korrekte Pegel.

#7628090
Lesenswert?

Hans schrieb:

Da gibt es was Fertiges wie diesen https://eckstein-shop.de/SparkFunLogicLevelConverter-33Vto5VBi-Directional?ws_oss_lieferland=DE&gad_source=1&gclid=EAIaIQobChMI1r6N262DhQMVGZpoCR0aqg-hEAQYAiABEgJfd_D_BwE hier. Damit hättest Du auf allen 6 Signalen korrekte Pegel.

Musst du deswegen gleich deine ganz "Familiengeschichte" hier veröffentlichen? Der Link auf den Artikel würde völlig reichen. https://eckstein-shop.de/SparkFunLogicLevelConverter-33Vto5VBi-Directional

Für die meisten Signale dürfte ein Unidirektionaler in der richtigen Signalrichtung ausreichend sein.

Also jeweils ein Spannungsteiler für MOSI, CLK und SS. Für MISO ein HCT-Einzelgatter.

Warum empfiehlst du unidirektionale Treiber und verlinkst einen bidirektionalen?

OP (Firma: Q3) #7628095
Lesenswert?

Sebastian R. schrieb:

Frank E. schrieb:

bin unterwegs ... wo steht das dabei, bei der lib?

Die spannende Frage für mich ist: Was für einen Level-Converter nutzt du und weshalb ist er nicht mit eingezeichnet?

Es mag ja nicht wirklich korrekt sein, aber im Web gibts massenhaft (!!!) Beiträge, wo man diese Platine ohne Levelshifter direkt an Unos oder Naos erfolgreich anschließt. Der Chip scheint recht robust oder gar "tolerant" ...

OP (Firma: Q3) #7628096
Lesenswert?

Thorsten S. schrieb:

Hans schrieb:

Schalte in die Signalleitungen (MISO, MOSI, SCK, NSS, RST und DI00) einen Levelshifter.

Er ist unterweheeegs! Deswegen kann er den Link im FAQ nicht selber anklicken aber die Infos darin schon lesen, ist doch logisch...

Es ging um die Frage, welche FAQ ich denn anklicken soll, es ist ja nicht so, dass es nur eine inzige im Netz gibt, oder?

#7628106
Lesenswert?

Rainer W. schrieb:

Musst du deswegen gleich deine ganz "Familiengeschichte" hier veröffentlichen?

Geht jetzt die Welt unter? Ganz bestimmt nicht. Ich habe einfach die Adresszeile im Browser kopiert. Ist natürlich schlimm und wirft hier einige komplett aus der Bahn. Sorry, aber das ist doch nun wirklich wurscht, wie man das macht.

Rainer W. schrieb:

Also jeweils ein Spannungsteiler für MOSI, CLK und SS. Für MISO ein HCT-Einzelgatter.

Kann man so machen, wenn man das dann auch richtig in den Signalweg einfügt. Macht halt mehr Aufwand und hat am Ende mehr Potential für Fehler. Mit etwas Fertigen, wie verlinkt, ist man hingegen schnell fertig und hat die Gewähr das es passt. Einfach die mit H* beschrifteten Pins mit Arduino und mit L* beschrifteten mit Lora verbinden - fertig. Gerade gesehen: Das von mir verlinkte Modul hat nur 5 Kanäle. Für ein paar Cent mehr gibt es das auch mit 8 Kanälen (https://www.az-delivery.de/products/logiklevel-wandler-3-3v-5v?_pos=1&_sid=ac3665afb&_ss=r - hoffe das dieser Link jetzt auch dem Rainer W. passt, aber ist mir eigentlich auch Rille).

Rainer W. schrieb:

Warum empfiehlst du unidirektionale Treiber und verlinkst einen bidirektionalen?

Mal die graue Masse zwischen den Ohren benutzen, ansonsten s.o.. Aber noch einmal für Dich zum mitschreiben: Weil es die einfach fertig gibt. Unidirektional muß man i.d.R. selber machen, was am Ende nicht viel billiger, aber dafür oft fehlerträchtiger ist.

#7628108
Lesenswert?

Frank E. schrieb:

Es mag ja nicht wirklich korrekt sein, aber im Web gibts massenhaft (!!!) Beiträge, wo man diese Platine ohne Levelshifter direkt an Unos oder Naos erfolgreich anschließt. Der Chip scheint recht robust oder gar "tolerant" ...

Ja der ist solange tolerant bis er den Weg alles irdischen geht. Zuverlässiger ist es halt, wenn man es korrekt macht.

#7628157
Lesenswert?

Hans schrieb:

Da gibt es was Fertiges wie diesen https://eckstein-shop.de/SparkFunLogicLevelConverter-33Vto5VBi-Directional hier. Damit hättest Du auf allen 6 Signalen korrekte Pegel.

Hans schrieb:

Gerade gesehen: Das von mir verlinkte Modul hat nur 5 Kanäle.

Dieses von dir empfohlene Modul hat nur vier Kanäle, nicht fünf oder sechs wie von dir behauptet, und funktioniert überhaupt nicht bei 8MHz SPI.

Hans schrieb:

Mal die graue Masse zwischen den Ohren benutzen

LG, Sebastian

#7628177
Lesenswert?

Mr. Ahnungsfrei schrieb:

Nanos laufen mit 3.3V.

Nein!

H. H. schrieb:

Und den Widerstand der bunten Strippen mal messen.

In seinem Aufbau wird die Betriebsspannung des Sendemoduls heftig wackeln.

Sebastian W. schrieb:

Dieses von dir empfohlene Modul hat nur vier Kanäle, nicht fünf oder sechs wie von dir behauptet, und funktioniert überhaupt nicht bei 8MHz SPI.

Wenn da wirklich 8MHz laufen sollten, darf man zu geeigneten ICs greifen. Aber warum eigentlich soll der SPI so schnell sein?

Beitrag #7628188 wurde von einem Moderator gelöscht.
#7628201
Lesenswert?

Rainer W. schrieb:

Hans schrieb:

Geht jetzt die Welt unter? Ganz bestimmt nicht.

Unnützer Ballast oder mangelnde Selbstbestimmung über deine Daten - je nach Sichtweise.

Ja klar, wer sonst nichts zu tun oder zu sagen hat, der muß sich natürlich an so etwas aufgeilen. Welche Rückschlüsse ziehst Du denn aus einer kopierten URL im Browser auf meine Daten? Sehr wahrscheinlich gar keine, aber Hauptsache erst mal wichtig tun.

#7628224
Lesenswert?

Norbert schrieb:

Frank E. schrieb:

void setup() { }

Macht man bei dem Arduino Zeuchs nicht das Setup in Setup() und die Loops in Loop()?

Was willst Du damit sagen? Kennst Du Arduino?

Ich schaue mal in meinen Spannungslogger: Da passiert die Initialisierung der SD-Karte in setup() und loop() kommt erst, wenn diese erfolgreich war, der einzig sinnvolle Ablauf.

Schaue Dir serielle Ausgaben oder LCD an, auch die aktiviert man in setup(), bevor es in die Hauptschleife geht.

Wenn etwas nicht läuft, baue ich Serial.print(irgendwas) rein und hoffe, am seriellen Monitor der Ursache näher zu kommen.

#7628369
Lesenswert?

Frank E. schrieb:

Ich versuche seit Tagen eine einfache Lora-Schaltung zum Leben zu erwecken, komme aber nicht über das "while" hinaus, immer nur "Starting Lora failed!" im Monitor. Bei allen anderen scheint das zu funktionieren :-((

Die Lora-Lib stammt von hier: https://github.com/sandeepmistry/arduino-LoRa

Hat jemand eine Idee, wo das Problem liegt? Danke für Tips.

1
> #include <SPI.h>
2
> #include <LoRa.h>
3
> int counter = 0;
4
> float number = 10.00;
5
> 
6
> void setup()
7
> {
8
>   Serial.begin(9600);
9
>   while (!Serial);
10
>   Serial.println("LoRa Sender");
11
>   while (!LoRa.begin(868E6))
12
>   {
13
>     Serial.println("Starting LoRa failed!");
14
>     delay(1000);
15
>   }
16
>   LoRa.setSyncWord(0xF3);
17
> }
18
>  ...
19
>

Und wieder jemand der denkt, Elektronik wäre Lego.

Zwei Platinen zusammenstecken, fertige Libs laden, Glue-Code per Copy&Paste einfügen, Finger kreuzen, Stoßgebet, Einschalten -> Geht nicht -> Langes Gesicht und keine Ahnung was man da eigentlich getan hat. Traurig sowas. Zwar auch bisschen lustig, aber hauptsächlich traurig.

(Firma: Hobbytheoretiker) #7628751
Lesenswert?

Manche Lora Module haben zu knappe Kondensatoren auf der Platine. Entweder wird das über dicke kurze Zuleitungen abgefangen, oder kurz vor den Platinenanschlüssen ist eine ausreichend große Kapazität.
Vorausgesetzt, es liegt nicht am Programmcode, könnte da versucht werden zu suchen.

OP (Firma: Q3) #7628933
Lesenswert?

Cyblord -. schrieb:

Zwei Platinen zusammenstecken, fertige Libs laden, Glue-Code per Copy&Paste einfügen, Finger kreuzen, Stoßgebet, Einschalten -> Geht nicht -> Langes Gesicht und keine Ahnung was man da eigentlich getan hat. Traurig sowas. Zwar auch bisschen lustig, aber hauptsächlich traurig.

Oh ja, extrem traurig - Eimer und Lappen bitte! Du würdest natürlich sämtlichen Code in 10 Minuten komplett neu schreiben. Du bist ein wahrer Held!

#7628938
Lesenswert?

Frank E. schrieb:

Oh ja, extrem traurig - Eimer und Lappen bitte!

Naja, so ganz unrecht hat Cyblord da nicht. Durch das RasPi- und Arduinogedöns wird der breiten Masse halt suggeriert, das Elektronik und Programmieren ganz easy ist. Es ist aber nicht so. Spätestens dann wenn es nicht funktioniert sieht man die langen Gesichter. Spätestens dann sollte man halt wissen was man tut. Das geht eben auch damit los, wenn man Baugruppen einfach zusammen stöpselt, die nicht zusammen passen, weil z.B. die Pegel nicht passen. Das Ergebnis ist dann das es nicht oder nur fehlerhaft funktioniert. Wenn es dumm läuft, kann es dabei auch zu Hardwareschäden kommen.

Die meisten hier im Forum dürften sich mit der Thematik beruflich befassen, haben es also irgendwie mal gelernt, indem sie eine Berufsausbildung oder ein Studium abgeschlossen haben oder sie haben es sich über einen längeren Zeitraum autodidaktisch selbst bei gebracht. Mit anderen Worten man kann es lernen, aber eben nicht von heut auf morgen, es braucht seine Zeit. Und am Anfang backt man erst mal sehr kleine Brötchen.

Frank E. schrieb:

Du würdest natürlich sämtlichen Code in 10 Minuten komplett neu schreiben.

Das hat er nicht behauptet.

#7628975
Lesenswert?

Hans schrieb:

Mit anderen Worten man kann es lernen, aber eben nicht von heut auf morgen, es braucht seine Zeit. Und am Anfang backt man erst mal sehr kleine Brötchen.

Und ich würde sagen, wenn man es gelernt hat, dann kann man auch das Arduino-Ökosystem nutzen, weil man versteht, was man tut.

Ich nutze die Arduino IDE einfach gerne als "all in one" Lösung für verschiedene Plattformen (AVR, STM32, RP2040). Nur eine IDE, die recht schlank ist und dank der Bibliotheken ist der Wechsel von einem Controller auf den anderen auch recht einfach.

Allerdings bilde ich mir auch ein, ein bisschen was von den Controllern zu verstehen und fummel gerne auch direkt in irgendwelchen Registern rum. Die IDE kann ja auch bare-metal.

Und die Hardwareseite... Nunja, es ist eben kein Lego oder Malen nach Zahlen. Da muss man dann doch schon einmal das Köpfchen einschalten, wenn man ein 3.3V-Modul an einem 5V-Controller betreiben will.

#7628995
Lesenswert?

Frank E. schrieb:

Oh ja, extrem traurig - Eimer und Lappen bitte! Du würdest natürlich sämtlichen Code in 10 Minuten komplett neu schreiben. Du bist ein wahrer Held!

Nein, ich würde aber wohl das Datenblatt des LORA Bausteins anschauen und die lib erst mal selber schreiben. Das würde länger dauern, aber ich wüsste am Ende wie das Ding funktioniert und ich kann ordentlich Debuggen wenn etwas nicht geht.

Und nur am Rande, bei dir läuft es nach Tagen noch nicht. Da wäre ich mit selber machen und selber verstehen deutlich schneller.

#7629123
Lesenswert?

Hannes schrieb:

Aber erstmal pöbeln ;)

Dein Glück sind 328P und 328PB an der Stelle identisch :D

0.6VCC ist der "Best-Case-Wert". Aus Erfahrung kann ich dir sagen, dass der reale Wert, besonders durch Alterung und Temperatur, etwas nach oben geht. Und bereits 0.75V liegt schon über den 3.3V.

Es ist grenzwertig. 3.3V können ausreichen, aber auf eine sichere Erkennung würde ich mich nicht verlassen.

#7629158
Lesenswert?

Am einfachsten ist es, wenn die 3,3V CPU 5V-tolerante Eingänge hat und der 5V-IC TTL-Eingänge (>=2,4V = high). Ansonsten nehme ich Pegelwandler, z.B. SN74LV1T34: • Up translation: – 1.2V(1) to 1.8V at 1.8V VCC – 1.5V(1) to 2.5V at 2.5V VCC – 1.8V(1) to 3.3V at 3.3V VCC – 3.3V to 5.0V at 5.0V VCC • Down translation: – 3.3V to 1.8V at 1.8V VCC – 3.3V to 2.5V at 2.5V VCC – 5.0V to 3.3V at 3.3V VCC

#7629179
Lesenswert?

Hans schrieb:

Ich habe weder was gegen Arduino noch RasPi, ich benutze beides - warum auch nicht.

Eben. Der Ruf hier im Forum ist leider nicht der beste.

Ich kann die Kritik aber auch verstehen. Elektronikentwicklung ist eben kein Lego Duplo und man muss schon ein bisschen was lernen und beachten.

Arduinos Plan, Elektronik für Künstler und Fachfremde zugänglich zu machen, klappt zwar innerhalb ganz enger Grenzen, aber sobald man eigene Dinge zusammenstecken will, muss man anfangen, mitzudenken. Und das klappt leider nicht immer.

Für mich ist es eine recht schlanke Crossplatform-IDE mit einigen wirklich sehr guten Bibliotheken und sinnvollen Abstrahierungen. Für vieles nudel ich aber immer noch lieber selber auf irgendwelchen Registern rum

#7629187
Lesenswert?

Sebastian R. schrieb:

Hannes schrieb:

Aber erstmal pöbeln ;)

Dein Glück sind 328P und 328PB an der Stelle identisch :D

0.6VCC ist der "Best-Case-Wert". Aus Erfahrung kann ich dir sagen, dass der reale Wert, besonders durch Alterung und Temperatur, etwas nach oben geht. Und bereits 0.75V liegt schon über den 3.3V.

Es ist grenzwertig. 3.3V können ausreichen, aber auf eine sichere Erkennung würde ich mich nicht verlassen.

Selbst die 3V (0,6*Vcc) muß der LORA-Baustein nicht unbedingt können, denn lt. Dabla (Lora von HopeRF) beträgt die minimale VOH 0,9Vcc und das wären bei 3,3V Vcc 2,97V. Da muß schon alles sehr gut zusammen passen, damit das sicher funktioniert. Ob in dieser Hinsicht andere Bausteine mehr können muß man deren Dabla entnehmen. Ich denke aber die Pegel werden ähnlich sein, da Spannung immer etwas unter Vcc liegt.

Gedanken würde ich mir eher um die andere Richtung machen. Sollten die Eingänge des Lora die 5V-Pegel nicht ab können, wäre schnell Schluß mit lustig.

#7629241
Lesenswert?

Sebastian R. schrieb:

Ich nutze die Arduino IDE einfach gerne als "all in one" Lösung für verschiedene Plattformen (AVR, STM32, RP2040). Nur eine IDE, die recht schlank ist ...

Kein Wunder - die Debugging-Möglichkeiten bestehen aus eingestreuten Serial.print(x), wenn man mal von den wenigen SAMD-Boards absieht, die von der IDE2 unterstützt werden. Von einer Software, die sich IDE nennt. erwarte ich heutzutage, dass sie vernünftiges Debugging unterstützt.

#7629244
Lesenswert?

Rainer W. schrieb:

Kein Wunder - die Debugging-Möglichkeiten bestehen aus eingestreuten Serial.print(x), wenn man mal von den wenigen SAMD-Boards absieht, die von der IDE2 unterstützt werden.

Aber das soll sich ja jetzt auch ändern und mehr Debugging-Optionen dazukommen. Das Ding wird ein bisschen erwachsener.

Wirklich große Projekte mache ich eben wegen des Debuggings schon in STM32CubeIDE oder MPLAB.

Beitrag #7629299 wurde von einem Moderator gelöscht.
OP (Firma: Q3) #7630201
Lesenswert?

So, beide Varianten (Sender und Empfänger) laufen. Die Ursache war tatsächlich meinerseits extrem dämlich, aber keine von denen, die hier diskutiert wurden. Also, um das klar zu machen:

Ja ICH habe einen total bekloppten Fehler gemacht: Ich habe selbst die Breakouts auf Sub-Platinen montiert, weil sie nicht dem 2.54-mm-Raster entsprechen und dann ist es mir passiert, dass ich beim Anschließen die Pins spiegelverkehrt verdrahtet habe (Hinten u. Vorne verwechselt). Blöd, ohne Frage.

Aber: Neben einigen wenigen sachlichen Antworten und Emfehlungen zur Fehlersuche hier (und dafür bin ich aufrichtig dankbar!), kam leider überwiegend nur dummes Gesülze. DAS erschreckt und enttäusch mich doch ziemlich. Wie krank muss man eigentlich sein, zuvorderst erstmal Gift auszuspeien, anstatt sich mit dem Problem zu befassen ... aber ok, wieder was gelernt ...

#7630220
Lesenswert?

Frank E. schrieb:

Aber: Neben einigen wenigen sachlichen Antworten und Emfehlungen zur Fehlersuche hier (und dafür bin ich aufrichtig dankbar!), kam leider überwiegend nur dummes Gesülze.

Also ich würde mich an Deiner Stelle hier mal ein bischen zurück halten. Du hast es selbst über einen größeren Zeitraum nicht selbst lösen können und beschimpfst jetzt die Leute die Dir helfen wollten. Das zeugt nicht unbedingt von guter Kinderstube. Auch auf dem Foto vom Gesamtaufbau ist nicht wirklich zu erkennen was Du da verzapft hast. Wie soll man helfen, wenn der Hilfesuchende nicht alles preis gibt.

Frank E. schrieb:

laufen. Die Ursache war tatsächlich meinerseits extrem dämlich, aber keine von denen, die hier diskutiert wurden.

Das kommt dann halt dabei heraus, wenn man nicht die Hosen runter läßt. Ansonsten entnehme ich diesem Satz, daß Du immer noch nichts dazu gelernt hast. Ganz offensichtlich hast Du immer noch ein 5V und 3V Modul einfach so zusammen geschaltet. Das ist so einfach nur Pfusch. Da gehört ein Pegelwandler dazwischen - das ist Dir von mehreren Leuten gesagt worden, aber Du scheinst da beratungsresident zu sein. Kann man halt nix machen.

#7630537
Lesenswert?

Hans schrieb:

Ganz offensichtlich hast Du immer noch ein 5V und 3V Modul einfach so zusammen geschaltet. Das ist so einfach nur Pfusch.

Die Variante mit 1 kOhm Widerständen in Signalrichtung Mikrocontroller zum Funkmodul und 2,2 kOhm für Signalrichtung anders herum hat bei meinen Funkmodulen immer und sicher funktioniert. µC auf 5V und das Funkmodul auf 3,3 V mittels Spannungsregler versorgt. Das Funkmodul hat intern zu + kleine Dioden, die 5 mA aushalten. Die 3,3 V sollten durch die Signale nicht "hoch" gezogen werden können.

mfg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren