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.
Hmmm schrieb:> Frank E. schrieb:>> "Starting Lora failed!">> Punkt 1 der FAQ gelesen? SPI mit 8 MHz ist bei einem fliegenden Aufbau> mutig.
ok, wo bzw wie kann ich diese Geschwindigkeit reduzieren?
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.
Hmmm schrieb:> Frank E. schrieb:>> ok, wo bzw wie kann ich diese Geschwindigkeit reduzieren?>> Steht doch in der FAQ direkt dabei.
bin unterwegs ... wo steht das dabei, bei der lib?
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?
Hmmm schrieb:> SPI mit 8 MHz ist bei einem fliegenden Aufbau mutig.
Beim fliegenden Aufbau sind die parasitären Kapazitäten und das
Übersprechen deutlich geringer als bei Verwendung "ordentlicher"
Flachbandkabel.
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...
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" ...
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?
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.
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.
Frank E. schrieb:> oder Naos erfolgreich anschließt. Der Chip scheint recht robust oder gar> "tolerant" ...
Nanos laufen mit 3.3V.
Es ändert halt nichts, dass 3.3V offiziell auch nicht für einen
High-Pegel am 5V-Controller reichen.
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.
Das nennt man Pfusch und das ist in der Arduino Gemeide tatsächlich weit
verbreitet.
Frank E. schrieb:> bitte ...
Also kein Levelshifter. Damit betreibst du den SX127x außerhalb der
Spezifikation.
Ich denke, die Verwunderung über die fehlende Funktion dürfte sich damit
erledigt haben.
Sebastian R. schrieb:> Also kein Levelshifter. Damit betreibst du den SX127x außerhalb der> Spezifikation.
... und mal geht's und mal geht's nicht, je nach Wetter und
Stellung der Sonne und des Mondes.
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
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?
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.
Sebastian W. schrieb:> Dieses von dir empfohlene Modul hat nur vier Kanäle, nicht fünf oder> sechs wie von dir behauptet,
Schon längst meinerseits korrigiert.
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.
Norbert schrieb:> Frank E. schrieb:>> void setup()>> {>> }>> Macht man bei dem Arduino Zeuchs nicht das Setup in Setup() und die> Loops in Loop()?
Wow, ein Allesmerker!
Aber wozu soll ich den Loop hier reinschreiben, wenn das Problem bereits
im Setup auftritt? Dir sind die "..." entgangen?
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.
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.
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!
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.
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.
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.
Sebastian R. schrieb:> Frank E. schrieb:>> oder Naos erfolgreich anschließt. Der Chip scheint recht robust oder gar>> "tolerant" ...>> Nanos laufen mit 3.3V.> Es ändert halt nichts, dass 3.3V offiziell auch nicht für einen> High-Pegel am 5V-Controller reichen.
0,6 * 5V = 3V
Aber erstmal pöbeln ;)
Hannes schrieb:>> Es ändert halt nichts, dass 3.3V offiziell auch nicht für einen>> High-Pegel am 5V-Controller reichen.>> 0,6 * 5V = 3V
Arg wenig Störabstand.
Hannes schrieb:> Aber erstmal pöbeln ;)
Dein Glück sind 328P und 328PB an der Stelle identisch :D
0.6*VCC 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.7*5V 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.
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
Sebastian R. schrieb:> 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 habe weder was gegen Arduino noch RasPi, ich benutze beides - warum
auch nicht.
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
Sebastian R. schrieb:> Hannes schrieb:>> Aber erstmal pöbeln ;)>> Dein Glück sind 328P und 328PB an der Stelle identisch :D>> 0.6*VCC 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.7*5V 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.
Anstatt Pegelwandler könnte beim avr die Speisespannung mit einer Diode
auf 4,3V gebracht werden, so würde es wohl funzen...
Richtung Lora natürlich immer mit Widerstand
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.
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.
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 ...
Frank E. schrieb:> lora_schaltung.png
Wie soll man an so einem Fritzing Bild erkennen, dass du alles ganz
anders aufgebaut hast.
Garbage in -> Garbage out
Frank E. schrieb:> Die Ursache war> tatsächlich meinerseits extrem dämlich, aber keine von denen, die hier> diskutiert wurden.
Weil hier nur einer so dämlich ist.
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.
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