Frust mit LoRa SX1262/SX1268
Nachdem ich die LoRa-Bausteine der Serie RFM9x seit etwa 5 Jahren
erfolgreich nutze, wollte ich auch einmal die neueren LoRa-Typen der
Serien SX1262/SX1268 und SX1280 ausprobieren. Die Steuerung sollte dabei
vorerst jeweils via SPI-Bus ausgehend von einem Arduino Pro-Mini in der
3V-Version erfolgen ( siehe Schaltbild ). Erste Versuche sollten dabei
mithilfe von Beispiel-Sketches durchgeführt werden, so wie sie Stuart
Robinson unter "loratracker.uk" in den von ihm für genannte Typen
bereitgestellten Libraries bereitstellt.
Um es kurz zu machen, trotz längerer Versuche und auch mehrfachem Aufbau
der Hardwareanordnung, ist es mir bisher noch nicht gelungen, z.B.
Sendebetrieb zu erreichen.
Die angeschlossenen LoRa-Bausteine werden bei Verwendung der verfügbaren
Mustersketches jeweils erfolgreich erkannt. Problemlos arbeitet dabei
auch ein Sketch, der das Einschreiben und Auslesen des internen
Speicherbereiches bewirkt. Dagegen verlaufen Programmanweisungen, die
z.B. den LoRa-Sendebeginn starten sollen, entweder wirkungslos oder
führen zum Programmstop.
Durchgeführt wurden die Versuche im 2.4 GHz-Bereich mit mehreren
Exemplaren SX1280 ( NiceRF ) und im 868 MHz-Bereich mit mehreren
DRF1262G ( Dorji ). Dabei kam mir schon der Gedanke, dass die Probleme
ggf. mit den Bausteinen selbst zusammenhängen könnten, aber auf der
anderen Seite kann ich mir kaum vorstellen, dass alle ( aus China
bezogenen ) Exemplare fehlerhaft sein könnten.
Bin für jeden konstruktiven Tipp dankbar.
gpsklaus schrieb:> Bin für jeden konstruktiven Tipp dankbar.
Das Problem sitzt vor deinem Bildschirm.
Du wirst - wie viele andere auch - deine Infos nur scheibchenweise
preisgeben, das ist die berühmte und von vielen Personen hier gerne
ausgeübte Salamitaktik.
Eines ist für mich jedoch sicher: die FunkModule, wer auch immer sie
sind, sind HF-Schaltungen. Diese brauchen viel Strom und daher
"verbietet" es sich eigentlich sie von einem ärmliche Spannungsregler
eines Arduinos zu versorgen. Die Module bedürfen bei der Versorgung
einer besonderen "Liebe".
Wenn du mir jetzt sagst dass der Spannungsregler doch eigentlich
xxxx mA kann und das für die Module doch voll ausreichen müsste
dann ist hier für mich Ende der Diskussion. Abblock- und
Stabilisierungsmassnahmen sind das A und O bei diesen Schaltungen.
Und im Internet gibt es sicherlich genug Steckbrettaufbauten zu
sehen die genau so aufgebaut sind und angeblich funktionieren. Mag
sein, kann aber auch nicht sein.
Wenn du ein Oscilloscope hast, dann klemm das mal an die Stromversorgung
und schau das einmal mit dem gehenden Beispiel an und einmal mit deinem
Code.
Und lade hier bitte deinen Code hoch, weil da könnte ja auch der Fehler
liegen.
Hallo,
das Argument hinsichtlich der möglicherweise nicht ausreichenden
Belastbarkeit des Atmega-3,3V-Ausgangs schien mir durchaus logisch zu
sein, so dass ich erst einmal wieder Hoffnung schöpfte und zur
LoRa-Chipversorgung schnell noch einen bis 1A belastbaren
Spannungsregler einbaute.
Leider brachte das aber auch nicht DEN Erfolg.
Zum Programm:
Dafür habe ich eine absolute Minimalversion angehängt, mit der sich
schon im SETUP ( und ohne LoRa-Mode ) mithilfe des Befehls:
LT.setupDirect(Frequency, Offset); zumindest schon einmal ein HF-Träger
( hier auf 868.0 MHz ) einschalten lassen sollte ( was aber leider nicht
passiert ).
#include <SPI.h> //the lora device is SPI based so load the SPI
library
#include <SX126XLT.h> //include the appropriate library
SX126XLT LT; //create a library class instance called LT
#define NSS 10 //select pin on LoRa device
#define NRESET 9 //reset pin on LoRa device
#define LED1 8 //on board LED, high for on
#define RFBUSY 7 //SX126X busy pin
#define DIO1 3 //DIO1 pin on LoRa device, used for RX and TX done
#define DIO2 -1 //DIO2 pin on LoRa device, normally not used so set
to -1
#define DIO3 -1 //DIO3 pin on LoRa device, normally not used so set
to -1
#define SW -1 //SW pin on Dorji devices is used to turn
// RF switch on\off, set to -1 if not used
#define LORA_DEVICE DEVICE_SX1262 //we need to define the
//device we are using
//******* Setup Direct Modem Parameters Here ! ***************
const uint32_t Frequency = 868000000; //frequency of TX in hertz
const uint32_t Offset = 0; //offset frequency for calibration
const int8_t TXpower = 10; //LoRa transmit power in dBm
/////////////////////////////////////////////////////////////////
void setup()
{
pinMode(LED1, OUTPUT); //setup pin as output for indicator LED
Serial.begin(9600);
SPI.begin();
if (LT.begin(NSS, NRESET, RFBUSY, DIO1, SW, LORA_DEVICE))
{
Serial.println(F("LoRa Device found"));
delay(1000);
}
else
{
Serial.println(F("No device responding"));
while (1);
}
LT.setupDirect(Frequency, Offset);
Serial.println(F("Transmitter ready"));
Serial.println();
}
////////////////////////////////////////////////////////////////////////
//
void loop() {
}
Klaus H. schrieb:> so dass ich erst einmal wieder Hoffnung schöpfte und zur> LoRa-Chipversorgung schnell noch einen bis 1A belastbaren> Spannungsregler einbaute.
Hier ist sie wieder, die Salamitaktik.
Wenn du schon Arduino Code verwendest liegt es nahe dass du
an der Versorgung grossen Mist baust. Fast alle Arduidioten
machen da beliebige Fehler.
Will heissen dass es nicht genügt einen Regler vorzusehen, man
muss es auch noch richtig machen.
Nachdem du so hemdsärmelig und in Salamitaktik daher kommst (dein
erster Schaltplan stimmt nicht mit dem überein was du als "Prosa-
Schaltplan" nachgeliefert hast), bin ich dann mal weg.
Wie gewohnt, muss man hier den Leuten immer die Popel einzeln aus
der Nase ziehen.
Hallo GpsKlaus,
kannst du mir evtl. 2 deiner 868MHz Module abgeben/verkaufen?
Ich bin gerade dabei das Semtech Beispielprojekt auf meine MCU/PSoC
Plattform zu portieren, kann es aber bisher nicht testen, da ich noch
auf Module warte.
Evtl können wir uns dann hinsichtlich der Inbetriebnahme gegenseitig
austauschen.
Grüße Mic Roller
gpsklaus schrieb:> Dagegen verlaufen Programmanweisungen, die> z.B. den LoRa-Sendebeginn starten sollen, entweder ... oder> führen zum Programmstop.
Was heisst das konkret?
wendelsberg
@ Mitlesa
Polemische Kommentare und nebulöse Andeutungen hinsichtlich möglicher
Verbesserungen rund um die Versorgung des Funkbausteins und angeblich
nicht zum Schaltbild passendem Quellcode helfen hier überhaupt nicht
weiter. Auch kann ich die Bemerkung hinsichtlich der SALAMITAKTIK nicht
verstehen.
Das Problem besteht doch zuerst einmal darin, dass nicht klar ist, ob es
sich in diesem Fall um ein Hard- oder ein Softwareproblem handelt.
Zur Hardware:
Nach dem Hinweis von Mitlesa wurden beide vorhandenen Exemplare
gegenüber der Ursprungsversion noch einmal verändert ( siehe dazu neues
Schaltbild ). Die Bestückung der Leiterplatten wurde inzwischen
unzählige Male kontrolliert.
Zur Software:
Erste Versuche sollten mit den Beispielen durchgeführt werden, die mit
der von Stuart Robinson unter https://github.com/LoRaTracker/SX12XX-LoRa
bereitgestellten SX12XX-Library verfügbar sind. Dazu ist anzumerken,
dass ich die von ihm zur Verfügung gestellte Libraries und
Beispielsketches erfolgreich schon seit vielen Jahren in Verbindung mit
LoRa-Bausteinen der Serie RFM9x verwende. Somit vertraue ich ihm, wenn
er bekundet, dass auch die von ihm bereitgestellte SX12XX-Library
inclusiv der mitgelieferten Beispiele geprüft wurde und somit auch
lauffähig ist.
Ich will die besagten Beispielsketches hier nun nicht in ihrer Menge
einstellen, hatte allerdings bereits schon einmal geschrieben dass z.B.
der unter "SX12XX-LoRa/examples/SX126x_examples/Basics/"
zu findende "2_Register-Test" bei mir problemlos ausführbar ist, womit
der Funkbaustein als solcher grundsätzlich schon einmal erkannt wird.
Probleme gibt es dagegen z.B. bei Ausführung von: "3_LoRa_Transmitter".
Innerhalb der LOOP gibt es dabei die Anweisung:
if (LT.transmit(buff, TXPacketL, 10000, TXpower, WAIT_TX)) //will
return packet length sent if OK, otherwise 0 if transmit error
bei deren Aufruf die Programmausführung jeweils abbricht.
@microller
Aus China hatte ich 4 Exemplare der DRF1262G bezogen und davon 2 Stück
bereits verbaut. Nachdem sich die Lieferung seinerzeit fast 2 Monate
hinzog, würde ich die restlichen Exemplare allerdings gern behalten.
Parallel dazu hatte ich auch noch nach einer inländischen Bezugsquelle
gesucht und war dabei auf "https://de.grandado.com/search?q=loRa"
gestossen. Zum Testen habe ich dort noch einmal 2 ähnliche Exemplare
bestellt, auf deren Lieferung ich derzeit allerdings noch warte.
Ansonsten bin ich zum gegenseitigen Erfahrungsaustausch jederzeit gern
bereit.
Danke für den Tipp mit Grandado, aber das kommt ja auch aus China, mit
üblicher unbestimmter Lieferzeit.
Ich habe noch zwei Lieferanten in Europa gefunden,
https://www.rfsolutions.co.uk/search/radio-modules-c10/lora-c239/sx1262
mit horenten Lieferkosten
www.schmidiger.ch -> TRXnnn-70, die aber die Module noch nicht fertig
haben.
> if (LT.transmit(buff, TXPacketL, 10000, TXpower, WAIT_TX)) //will> return packet length sent if OK, otherwise 0 if transmit error> bei deren Aufruf die Programmausführung jeweils abbricht.
Ich bin weder Arduino erfahren, noch keinne ich die von dir verwendete
Library (die will ich mir die Tage aber mal im Vergleich ansehen), wie
gesagt, ich nehme die Software von Semtech ...
Hast Du ein Oszi zur Hand?
Schau dir doch mal das Signal an DIO1/ProMini#3 sobald du das Kommando
LT.transmit(buff, TXPacketL, 10000, TXpower, WAIT_TX) schickst.
Es müsste eine High Flanke geben (TX-Done)
Woraufhin ich hinaus möchte, bist Du sicher, dass deine Interrupt
Erkennung am #3 richtig funktioniert?
Mallo Microller,
beim Testen hat der Sender heute einmal kurz gearbeitet. Plötzlich waren
Signale auf der Sendefrequenz hörbar, wobei diese allerdings sehr
schwach waren ! Nachdem ich das Programm dann mit der Resettaste noch
einmal neu startete, war der "Spuk" schon wieder vorbei und bisher auch
nicht wiederholbar. Es ist schon sehr merkwürdig.
Das Signal am DIO1/#3 werde ich einmal kontrollieren, komme allerdings
erst am Donnerstag dazu und werde mich dann noch einmal melden.
Eine Besonderheit des DRF1262 ist sein integrierter RX/TX-Umschalter,
der mit einem Chip PE4259 ( siehe beigefügten Plan ) bestückt ist. Nach
dessen Datenblatt sollte es dabei genügen, sowohl den DRF-Pin "SW" als
auch "DIO2" auf +3,3V zu legen, um das Sendesignal zum
DRF-Antennenausgang durchzuschalten. So habe ich es jedenfalls versucht,
aber auch nach dem kurzzeitig empfangenen schwachen Signal möchte ich
nicht ausschließen, dass die Ursache für mein Problem in diesem Bereich
liegen könnte.
Hallo Microller,
im Programmablauf konnte ich an besagter Stelle keinen Puls feststellen.
Jetzt lege ich die Aufbauten mit den DRF1262 erst einmal in die Ecke und
möchte das Ganze noch einmal mit bei de.rs-online.com bestellten "RF
Solutions LAMBDA62-8S" probieren (
https://docs.rs-online.com/4f24/0900766b816cf9c4.pdf ).
Bei den bestellten 6 Stück fallen keine Versandkosten an, so dass man
dabei auf einen Stückpreis von ca. Euro 11.50 kommt. Die Dinger sollten
schon in ein paar Tagen eintreffen und wenn Du möchtest, dann kann ich
Dir davon gern 2 Exemplare abtreten.
> Nach dessen Datenblatt sollte es dabei genügen, sowohl den DRF-Pin "SW" als> auch "DIO2" auf +3,3V zu legen, um das Sendesignal zum> DRF-Antennenausgang durchzuschalten. So habe ich es jedenfalls versucht
Hast Du +3V an DIO2 gelegt???
Das wäre nicht gut ... DIOx sind Ausgänge ... und DIO2 wird oft (in der
Software) verwendet, um zwischen RX/TX umzuschalten.
d.h. SX-DIO2 ist mit PE4259 verbunden, so wie es im Schalplan auch
gezeichnet ist. Du darfst da nichts von aussen anlegen.
Es müsste in deiner also eine Funktion ähnlich dieser geben, wenn du
deinen SX initialisierst, und du müsstest es logischerweise mit '1'
aufrufen ;-)
void SX126xSetDio2AsRfSwitchCtrl( uint8_t enable )
{
SX126xWriteCommand( RADIO_SET_RFSWITCHMODE, &enable, 1 );
}
Siehe auch SX162x Datat Sheet: -> SetDIO2AsRfSwitchCtrl
#MicRoller
P.S.: Meine Software läuft mitlerweile :-)
Aber cool, dass Du die Module bei RS gesichtet hast. Das sind ja die aus
England, die im Direktvertrieb 65€ Versandkosten haben wollten. Wenn der
Versand bei dir günstiger ist, würde ich die zwei Module nehmen.
Hi Klaus,
ich habe mir gerade nochmal dein Projekt angeschaut, insbesondere deinen
Schaltplan. Was hast Du denn mit dem Pin 3 (SW) gemacht? Ist der offen
(so wie in deinem Plan gezeigt)?
Wenn ich das Datenblatt vom DRF1262G bzw den darin verbauten PE4259
richtig verstehe, dann müsstes Du dort 3.3V anlegen? ohne Gewähr .. prüf
das mal.
Schau mal hier:
http://www.dorji.com/docs/data/DRF1262G.pdf
bzw. hier
https://www.psemi.com/pdf/datasheets/pe4259ds.pdf
Grüße, Mic Roller
Hi Mic,
ja, den SW-Pin hatte ich an 3,3V gelegt. Irgendwie haben sich aber alle
versuchsweise getesteten Pegeländerungen sowohl am SW-Pin, als auch an
DIO2 jemals in irgendeiner Weise ausgewirkt.
Hattest Du übrigens meine Benutzernachrichten ( betr. Chipbestellung )
erhalten?
Gruß Klaus