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 :-((
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.
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" ...
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.
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).
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.
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.
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.
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.
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.
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
:-((
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.
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!
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.
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.
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.
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.
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
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
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.
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
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.
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 ...
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.
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.
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.