Inhaltsverzeichnis:
Video: ATtiny85 RF-Fernbedienung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
HINWEIS: Mein Instructable "Virtual Hide-and-Seek-Spiel" zeigt, wie man diese Art von Fernbedienung mit einem RXC6-Modul verwendet, das die Nachricht automatisch decodiert.
Wie ich in einem früheren Instructable erwähnt habe, habe ich vor kurzem angefangen, mit einigen ATtiny85-Chips zu spielen. Das ursprüngliche Projekt, das ich im Sinn hatte, war die Herstellung einer RF-Fernbedienung, die mit einer Münzbatterie betrieben werden konnte. Ich musste mit einem rohen Chip gehen, weil keiner der Arduinos, die ich habe, sowohl den Bedarf an sehr geringer Leistung als auch relativ geringer Größe erfüllen kann. Ein modifiziertes LilyPad kam dem nahe, aber der Chip ist die bessere Antwort. Die Idee war nicht so sehr, eine vorhandene Fernbedienung zu duplizieren, sondern zu demonstrieren, wie Sie Ihr eigenes Sender- und Empfängerset zusammenstellen können. Es ist nicht nur ein unterhaltsames Lernprojekt, sondern ermöglicht Ihnen auch, Ihre eigene „geheime“Codekombination zu erstellen. Ich setze "Geheimnis" in Anführungszeichen, weil es ziemlich einfach ist, diese einfachen Codes zu knacken.
Schritt 1: RF-Nachrichtenformat
Für dieses Projekt habe ich mich entschieden, die Signale für einen meiner Etekcity RF-Funkschalter zu replizieren (siehe mein Instructable auf diesen Modulen). Ich habe das getan, weil ich überprüfen konnte, ob mein Sender mit dem Etekcity-Empfänger und mein Empfänger mit der Etekcity-Fernbedienung funktioniert. Ich weiß auch genau, was die richtigen Codes und Formate für diese Geräte sind, weil ich sie zuvor aufgenommen habe. Siehe mein "Arduino RF Sensor Decoder" Instructable für die Code-Capture-Skizze.
Die Codes und Formate für die Etekcity-Steckdosen sind sehr typisch für preiswerte HF-Geräte. Ich habe billige Sicherheitsgeräte, die sehr ähnliche Formate mit nur einigen Timing-Variationen verwenden. Die Nachrichtenlänge beträgt zweckmäßige 24 Bit mit einem langen Startbit und einem kurzen Stoppbit. Sie können den Code leicht ändern, um mehr Datenbytes hinzuzufügen und das Timing der Sync- und Datenbits zu ändern. Auch diese Skizze ist nur eine Startvorlage.
Schritt 2: Hardware
Der Sender wird mit einer Knopfbatterie (2032) betrieben, daher ist ein geringer Stromverbrauch entscheidend. Das meiste davon wird in der Software erreicht, aber es wird durch die Tatsache unterstützt, dass der ATtiny85 normalerweise mit dem internen 1-MHz-Takt läuft. Die Regel ist, dass niedrigere Taktfrequenzen weniger Leistung benötigen und 1-MHz perfekt für die Senderlogik ist.
Das eigentliche HF-Sendermodul, das ich gerne verwende, ist ein FS1000A, das allgemein erhältlich ist. Es ist sowohl in 433-MHz- als auch in 315-MHz-Versionen erhältlich. Der Software ist es egal, welche Sie verwenden, aber Sie müssen sicherstellen, dass die Empfängerplatine auf der gleichen Frequenz arbeitet. Die meisten meiner Projekte verwenden 433-MHz-Geräte, weil dies von den verschiedenen billigen drahtlosen Geräten verwendet wird, die ich angesammelt habe. Das im Bild gezeigte Layout der Senderplatine passt gut in eine alte Tablettenflasche. Es ist nicht schön, aber gut genug für einen Proof-of-Concept.
Der Empfänger befindet sich auf einem lötfreien Steckbrett, da sein einziger Zweck darin besteht, zu zeigen, wie man Signale empfängt und wie man etwas basierend auf den empfangenen Codes ein- und ausschaltet. Es verwendet eine LED, um den Ein / Aus-Status anzuzeigen, aber Sie können dies durch einen Relaistreiber usw. ersetzen. Jeder Arduino kann für den Empfänger verwendet werden, da er nicht von einer Batterie ablaufen muss. Wenn die Größe immer noch eine Rolle spielt, können Sie einen anderen ATtiny85-Chip verwenden. Der Schlüssel ist, dass der ATtiny85 im Empfänger mit 8 MHz laufen muss. Eine einfache Skizze, die bestätigt, dass Sie die interne Uhr erfolgreich auf 8 MHz geändert haben, finden Sie in meinem früheren ATtiny85 Instructable. Am Ende meiner Anleitung zur Sensordecodierung schließe ich eine Arduino Nano-Version der Empfängersoftware ein. Es ist identisch mit der hier enthaltenen ATtiny85-Version, mit Ausnahme einiger Chipregisterunterschiede.
Wie ich in meinen früheren RF Instructables beschrieben habe, bevorzuge ich es, einen Empfänger wie den gemeinsamen RXB6 zu verwenden. Es handelt sich um einen Superheterodyn-Empfänger, der viel besser funktioniert als die Superregenerative-Empfänger, die üblicherweise mit den FS1000A-Sendern gebündelt werden.
Sowohl das Sender- als auch das Empfängermodul funktionieren mit den richtigen Antennen besser, werden jedoch oft nicht mitgeliefert. Sie können sie kaufen (die richtige Frequenz erhalten) oder Ihre eigenen herstellen. Bei 433-MHz beträgt die richtige Länge etwa 16 cm für eine gerade Drahtantenne. Um einen gewickelten zu machen, nehmen Sie etwa 16 cm isolierten, massiven Kerndraht und wickeln Sie ihn in einer einzigen Schicht um einen 5/32-Zoll-Bohrerschaft. Isolieren Sie ein kurzes gerades Stück an einem Ende ab und verbinden Sie es mit Ihrer Sender-/Empfängerplatine. Ich habe festgestellt, dass der Draht eines Schrott-Ethernet-Kabels gut für Antennen geeignet ist. Die Senderplatine hat normalerweise einen Platz zum Löten der Antenne, aber die Empfängerplatine kann nur Pins haben (wie der RXB6). Stellen Sie nur sicher, dass die Verbindung sicher ist, wenn Sie sie nicht löten.
Schritt 3: Software
Die Sendersoftware verwendet gängige Techniken, um den Chip in den Schlafmodus zu versetzen. In diesem Modus zieht es weniger als 0,2 ua Strom. Die Schaltereingänge (D1-D4) haben die internen Pull-Up-Widerstände eingeschaltet, ziehen aber keinen Strom, bis ein Schalter gedrückt wird. Die Eingänge sind für Interrupt-on-Change (IOC) konfiguriert. Wenn ein Schalter gedrückt wird, wird ein Interrupt erzeugt, der den Chip zum Aufwachen zwingt. Der Interrupt-Handler führt eine Verzögerung von etwa 48 ms aus, damit der Schalter entprellt. Dann wird überprüft, welcher Schalter gedrückt wurde, und die entsprechende Routine wird aufgerufen. Die übertragene Nachricht wird mehrmals wiederholt (ich habe 5 Mal gewählt). Dies ist typisch für kommerzielle Sender, da es so viel HF-Verkehr auf 433-MHz und 315-MHz gibt. Die wiederholten Nachrichten tragen dazu bei, dass zumindest eine zum Empfänger durchkommt.
Die Sync- und Bitzeiten werden an der Vorderseite der Sendersoftware definiert, aber die Datenbytes sind in jede der vier Tastenroutinen eingebettet. Sie sind offensichtlich und leicht zu ändern, und das Hinzufügen von Bytes, um eine längere Nachricht zu erstellen, ist ebenfalls einfach. Alle diese Definitionen sind in der Empfängersoftware enthalten, ebenso wie die Datenbyte-Definitionen. Wenn Sie Ihrer Nachricht Datenbytes hinzufügen, müssen Sie die Definition für „Msg_Length“ändern und der Variablen „RF_Message“Bytes hinzufügen. Sie müssen auch Code zur „RF_Message“-Prüfung in „loop“hinzufügen, um den ordnungsgemäßen Empfang der zusätzlichen Bytes zu überprüfen und diese Bytes zu definieren.