Hallo!
Hänge gerade daran mit einem RXB6 meine Temperatursensoren mit Bascom empfangen zu wollen.
Eigentlich hätte ich gerne ein RFM69 benutzt, allerdings sind die nicht kompatibel mit dem Signal der auszuwertenden Sensoren.
Denn der SX1231 welcher auf den RFM69-Modulen sitzt braucht zwingend ein Dotting in der Signalbitrate.
Dummer weise senden die Sensoren aber bereits das Dotting mit Manchestercodierung.
Statt also 101010101001101001.... senden die 1100110011001100110101100110......
Das erstere würden die RFM verstehen, das zweite aber nicht.
Nun stehe ich schon auf dem Schlauch...wie liest man brauchbar so ein einfachen ASK-Empfänger in Bascom ein?
Mein erster Versuch:
Alles anzeigen
bringt nur Müllwerte.
Eigentlich erhoffte ich mir das Signal zu finden von dem ich ziemlich genau weis wie es aussieht.
Nämlich Impulszeiten von mindestens 488µs (ein Bit) oder maximal 976µs.
In der Dottingphase erst mal eine lange reihe (gute 40 Bit) mit exakt 976µs High und 976µs Low.
Die Bedingung "While Pulse < 100" habe ich schon aus Verzweifelung rein gesetzt, da mir der Nano das komplette Rauschspektrum von 1µs bis 10000µs via UART rauspfefferte.
Nun ist es schon deutlich aufgeräumter, aber selbst hier find ich nichtmal das Dotting.
Der erste Anfang mit Pulsein ist erst mal ein Anfang überhaupt was zu empfangen.
Später mache ich das vielleicht über einen Timer und Interrupt.
Aber bei dem Rauschen spare ich mir das erst mal.
Für die jenigen die es interessiert wie das Signal exakt aussieht:
Das Linux-Tool rtl_433 kennt diesen Sensor nicht. Aber im Analyze-Modus kann er das Rohsignal vermessen.
Dabei spuckt er dieses hier aus:
https://triq.org/pdv/#AAB...
Und es ist genau das Signal welches ich schon zigfach mit Oszi und via Soundkarte mitloggen konnte.
Als Hinweis noch:
Ich versuche nicht einen Sensor zu empfangen der zig Meter entfernt ist. Ne, er liegt gerade während dieser Versuche knapp 50cm vom RXB6 entfernt.
Was mache ich falsch?
Jürgen
Hänge gerade daran mit einem RXB6 meine Temperatursensoren mit Bascom empfangen zu wollen.
Eigentlich hätte ich gerne ein RFM69 benutzt, allerdings sind die nicht kompatibel mit dem Signal der auszuwertenden Sensoren.
Denn der SX1231 welcher auf den RFM69-Modulen sitzt braucht zwingend ein Dotting in der Signalbitrate.
Dummer weise senden die Sensoren aber bereits das Dotting mit Manchestercodierung.
Statt also 101010101001101001.... senden die 1100110011001100110101100110......
Das erstere würden die RFM verstehen, das zweite aber nicht.
Nun stehe ich schon auf dem Schlauch...wie liest man brauchbar so ein einfachen ASK-Empfänger in Bascom ein?
Mein erster Versuch:
BASCOM-Quellcode
- 'ARUDINO-NANO auf Steckbrett mit 433MHz ASK-Empfänger RXB6
- 'Evaluation eines ASK-Empfängers zur Langzeitdoku über UART
- 'Datenausgang des RXB6 liegt auf PC1
- $regfile = "m328pdef.dat" 'ARUNDIO-NANO Prozessor
- $crystal = 16000000 'ARUNDIO-NANO Originalquarz
- $hwstack = 100
- $swstack = 100
- $framesize = 100
- $baud = 38400
- Config Portb = &B11111111 'Pull Up Deaktiviert (0) oder aktiviert (1)
- Config Portc = &B11111101 'Pull Up Deaktiviert (0) oder aktiviert (1)
- Config Portd = &B11111111 'Pull Up Deaktiviert (0) oder aktiviert (1)
- Ddrb = &B11111111 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
- Ddrc = &B11111101 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
- Ddrd = &B11111111 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
- Dim RXword as Word
- Dim RXwordpacket(26) as Word
- Dim PacketA(26) as Byte
- Dim PacketB(26) as Byte
- Dim Pulse as Word
- ASK Alias PinC.1 'Signaleingang ASK-Digital
- '$lib "pulsein.lib"
- 'const cPulseIn_Timeout = 0
- 'waitus bPulsein_delay
- 'bPulseIn_Delay = 10
- Do
- If ASK = 1 then Gosub MessungH
- If ASK = 0 then Gosub MessungL
- Loop
- MessungH:
- while Pulse < 100
- Pulsein Pulse, pinc, 1, 1
- wend
- Print Pulse;"H"
- Pulse = 0
- Goto MessungL
- Return
- MessungL:
- While Pulse < 100
- Pulsein Pulse, pinc, 1, 0
- wend
- Print Pulse;"L"
- Pulse = 0
- Goto MessungH
- return
Eigentlich erhoffte ich mir das Signal zu finden von dem ich ziemlich genau weis wie es aussieht.
Nämlich Impulszeiten von mindestens 488µs (ein Bit) oder maximal 976µs.
In der Dottingphase erst mal eine lange reihe (gute 40 Bit) mit exakt 976µs High und 976µs Low.
Die Bedingung "While Pulse < 100" habe ich schon aus Verzweifelung rein gesetzt, da mir der Nano das komplette Rauschspektrum von 1µs bis 10000µs via UART rauspfefferte.
Nun ist es schon deutlich aufgeräumter, aber selbst hier find ich nichtmal das Dotting.
Der erste Anfang mit Pulsein ist erst mal ein Anfang überhaupt was zu empfangen.
Später mache ich das vielleicht über einen Timer und Interrupt.
Aber bei dem Rauschen spare ich mir das erst mal.
Für die jenigen die es interessiert wie das Signal exakt aussieht:
Das Linux-Tool rtl_433 kennt diesen Sensor nicht. Aber im Analyze-Modus kann er das Rohsignal vermessen.
Dabei spuckt er dieses hier aus:
https://triq.org/pdv/#AAB...
Und es ist genau das Signal welches ich schon zigfach mit Oszi und via Soundkarte mitloggen konnte.
Als Hinweis noch:
Ich versuche nicht einen Sensor zu empfangen der zig Meter entfernt ist. Ne, er liegt gerade während dieser Versuche knapp 50cm vom RXB6 entfernt.
Was mache ich falsch?
Jürgen