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.
Warum verwendest du eigentlich nicht die HM-TRP-Module? https://www.ebay.de/itm/HM-TRP-Wireless-Transceiver-UART-Program-RS232-Remote-control-868Mhz/172272168758?hash=item281c38af36:g:Hk8AAOSwRJ9XhOWE Die sind viel einfacher zu verwenden.
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
:
Bearbeitet durch User
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.