Hi, ich habe mir letztens eine günstige Nebelmaschine aus China gekauft.
Ich möchte sie jetzt gerne mit einem ESP32 und einem Knopf steuern
können. Momentan läuft sie über eine RF-Fernbedienung, die ein Funkmodul
RX480RA (jlcpcb.com/kr/partdetail/C2886635) nutzt und mit 5V von der
Nebelmaschine betrieben wird. Diese 5V sind verfügbar, sobald die
Maschine aufgewärmt ist. Ich habe das Ganze mal an ein Oszilloskop
angeschlossen und festgestellt, dass es auch ohne Knopfdruck viele Stör-
bzw. Idle-Signale gibt. Ein Muster wiederholt sich dabei: [0.2ms an;
0.36ms aus; 1.75ms an] mit einem Delay von 11.5ms zwischen den
Wiederholungen. Die Fernbedienung hat einen SC2260 IC
(sc-tech..cn/en/SC2260.pdf). Bei einem Knopfdruck wird ein 24-Bit-Signal
gesendet, das so lange andauert, wie der Knopf gedrückt wird. Auf der
Fernbedienung ist der dritte Adresspin auf 3V gezogen. Das 24-Bit-Signal
startet mit einem 16-Bit-Header [0x5D55], der für das Adress-Coding
steht, und die restlichen 8 Bits variieren je nach Knopf [0x0C 00001100;
0xC0 11000000; 0x03 00000011; 0x30 00110000]. Dieses Paket wiederholt
sich mit einem Delay von 20ms, solange der Knopf gedrückt ist. Wenn ich
das gleiche Signal mit einem ESP32 und einem Level Shifter aussende,
passiert nichts. Der Stecker sieht aus wie ein 3-Pin-DMX-Kabel, aber die
Signale sind ganz anders. Es könnte sein, dass das erste Paket beim
Drücken anders ist, aber ich habe es noch nicht geschafft, das zu
messen. Ich werde jetzt auch mal die Nebelmaschiene aufmachen.
Das Modul RX480RA ist ein OOK-Modul. Zum Decodieren würde ich einen
SDR-Stick mit RTL_433 empfehlen. Übrigens ist auf deinem Foto ein
315MHz-Modul zu sehen. Hast du das selbst aufgenommen? 315MHz-Module
sind in der EU übrigens nicht zugelassen!
Okay, ich habe die Nebelmaschine geöffnet und einen
Nuvoton-Mikrocontroller gefunden
(nuvoton.com/export/resource-files/DS_N76E003_EN_Rev1.09.pdf). Das
Signal ist mit dem Pin 11 oder 1 verbunden. Ich werde versuchen, den ROM
zu dumpen. Es sieht auch so aus, als wäre neben dem Mikrocontroller ein
Pin-Header vorhanden, um dies zu tun.
Helmut -. schrieb:> Das Modul RX480RA ist ein OOK-Modul. Zum Decodieren würde ich einen> SDR-Stick mit RTL_433 empfehlen. Übrigens ist auf deinem Foto ein> 315MHz-Modul zu sehen. Hast du das selbst aufgenommen? 315MHz-Module> sind in der EU übrigens nicht zugelassen!
Kannst du einen empfehlen?
Harald A. schrieb:> Du hast doch alle 4 Signale als Transistorstufe im Zugriff. Setze> da> doch an und baue da die Elektronik an, die Du möchtest.
Würde gehen aber ist mir fast zu riskant da da direkt ohne große
Separierung 220v anliegen.
Es scheint ja sogar galvanisch getrennt, aufgrund der Funkverbindung ist
die Güte der Trennung allerdings fraglich.
Nimmste einen 74HC4052 Umschalter für RGB und ein OR aus zwei Dioden für
den Nebel. Was willst Du am Ende erreichen? DMX?
Harald A. schrieb:> Es scheint ja sogar galvanisch getrennt, aufgrund der> Funkverbindung ist> die Güte der Trennung allerdings fraglich.>> Nimmste einen 74HC4052 Umschalter für RGB und ein OR aus zwei Dioden für> den Nebel. Was willst Du am Ende erreichen? DMX?
Unter anderem... Könnte ich nicht eigendlich auch einfach an die schon
vorhandenen Mosfets für Led und Rauch meinen Esp anschliessen? An der 5v
Line von orginellen Reciver kann ich schauen ob aufgeheizt wurde.
Hat die Fernbedienung einen kompletten AUS-Mode? Falls ja, könntest Du
auch überall eine BAT54c einschleifen (siehe Bild, passt vom Layout
ziemlich gut) und der freie Pin der Doppeldiode geht dann zu deinem ESP.
Die Leiterbahn darunter auftrennen. Wozu? Du erhältst Dir die volle
Funktionalität der FB und kannst parallel mit dem ESP steuern. Ist
sozusagen ein Wired-OR. Den 4052 brauchst Du dann nicht.
Du könntest auch den Transistor rausnehmen und einen „Digitaltransistor“
wie z.B. PDTD123YT einsetzen. Dann nämlich stünden die Pads vom
aktuellen Vorwiderstand für die Doppeldiode zur Verfügung, dann muss man
nichts aufkratzen.
Harald A. schrieb:> Hat die Fernbedienung einen kompletten AUS-Mode? Falls ja,> könntest Du> auch überall eine BAT54c einschleifen (siehe Bild, passt vom Layout> ziemlich gut) und der freie Pin der Doppeldiode geht dann zu deinem ESP.> Die Leiterbahn darunter auftrennen. Wozu? Du erhältst Dir die volle> Funktionalität der FB und kannst parallel mit dem ESP steuern. Ist> sozusagen ein Wired-OR. Den 4052 brauchst Du dann nicht.> Du könntest auch den Transistor rausnehmen und einen „Digitaltransistor“> wie z.B. PDTD123YT einsetzen. Dann nämlich stünden die Pads vom> aktuellen Vorwiderstand für die Doppeldiode zur Verfügung, dann muss man> nichts aufkratzen.
Würde wahrscheinlich den Transistor mit einem Digitaltransistor
tauschen... Den Vorwiderstand würde ich dann ablöten und mein Kabel
dranlöten. Eine Frage aber noch: Für was und wohin mit der Doppeldiode?
Um den Transistor zu schützen oder am VCC vom ESP?
Er kann doch den Empfänger direkt abhorchen oder ein Arduino
dazwischenschalten. Der gepostet Code ist jedoch nicht correct, und da
die Tribits relativ unüblich sind, zweifle ich auch etwas an die
publizierte Bytefolge, kann jedoch korrekt sein.
Chris S. schrieb:> Er kann doch den Empfänger direkt abhorchen oder ein Arduino> dazwischenschalten. Der gepostet Code ist jedoch nicht correct, und da> die Tribits relativ unüblich sind, zweifle ich auch etwas an die> publizierte Bytefolge, kann jedoch korrekt sein.
Das ist ja mein Plan. Der Code ist schon richtig, der Pin ist nur
umgekehrt, weil ich einen NPN-Stepup habe, aber auf dem Oszi sehe ich
das Richtige. Habe nochmal nachgemessen und das Timing ein bisschen
verändert. Aber muss es noch an der Nebelmaschiene testen.
Nein, du schiebst zuerst das LSb raus, also zuerst die Daten und dann
den Header, ob die Reihenfolge auch invertiert ist, wahrscheinlich.
Weiters fehlt bei dir das Sync bit am Ende der 12 Tribit's.
Das Datenblatt gibt das Timing her, oder man verwendet die fertige lib
von Arduino.
Ben schrieb:> Eine Frage aber noch: Für was und wohin mit der Doppeldiode?> Um den Transistor zu schützen oder am VCC vom ESP?
Mit der Doppeldiode wäre die Funktion entweder von der Funkfernbedienung
ODER von deinem ESP aus steuerbar. Ein sogenanntes wired-OR. Die beiden
Dioden entkoppeln den Nuvoton und den ESP voneinander. Du erhältst Dir
also die gewohnte Funkionalität und ergänzt mit dem ESP. Das klappt aber
nur, wenn es einen Betriebszustand gibt, wo der Nuvoton komplett ruhig
ist, sonst würde der immer dazwischen funken.
Hätte ich so gemacht, da die Pads vom Vorwiderstand sich so schön
anbieten für diesen Zweck. Siehe auch das Bild.
Letztlich gibt es aber auch andere Möglichkeiten, ganz wie Du möchtest.
Die 5V stehen erst an, wenn die Nebelmaschine fertig aufgeheizt hat? Ja,
kannst Du ja als Signal einlesen. Nehme für deinen ESP doch einfach ein
zusätzliches 5V Netzteil wie z.B. Meanwell APV-8-5, das dort eingebaute
sieht etwas schwachbrüstig aus.
Georg G. schrieb:> Beachte bitte, dass der Empfänger einen relativ langen (einige ms)> Vorspann braucht. Als Beispiel kannst du die OOK Protokolle der> Wetterstationen ansehen.
Da ist etwas dran mit dem Vorspann... Ich habe mein Oszilloskop auf
Trigger mit über 20 ms High eingestellt und siehe da: Ein Vorspann ist
vorhanden, aber nach dem Vorspann sehen die Daten irgendwie anders aus
als die von den Repeat(Hold)-Paketen. Der Vorspann, der durchgehend High
ist, ist etwa 75 ms lang. Danach kommt gefühlt nur Rauschen. Insgesamt
ist das erste Paket etwa 250 ms lang, danach folgen die Repeat-Pakete.
Aber die Daten nach diesem langen High kann ich beim besten Willen nicht
entschlüsseln, da sie alle unterschiedlich lang sind.
Es gibt keinen preamble, bzw das Preamble ist die erste Übertragung vor
dem Sync.
Übertragen werden 8 Adress-tribit, dann 4 button-tribit gefolgt von
einem Sync signal. Das Sync signal ist eine Zeiteinheit high und dann 31
Zeiteinheiten Low. Eine Zeiteinheit ist ungefähr 460uS. Ein Frame
besteht aus 4x 12 Tribit's sowie dem Sync. Das Preamble ist somit das
Nutzsignal und es leicht möglich dass sich der Empfänger erst auf die
letzte Wiederholung einschwingt.
Ein tribit ist folgendes:
0 = 1x Zeiteinheit high und 3x Zeiteinheit Low
1 = 3x Zeiteinheit high und 1x Zeiteinheit how
Sync = 1x Zeiteinheit high und 31x Zeiteinheit Low
Tribit 0 = 00
Tribit 1 = 11
Tribit F = 01. F=Float
Tribit X = 10. Kommt bei Fernsteuerungen vor welche einem Timerwert
senden (1/2/3/4 hours)
Der Sendechip ist sc2260, der Empfänger ist sc2270 oder sc2272 (auch IR)
Für beides gibt es Datenblätter und auch beim pt2260, pr2262 sowie
pt2272 reinschauen.