Best Practice zum Weiterleiten eines Signals mit einem 2,4-GHz-Modul?

Ich möchte die Drehzahl eines Motors mit einem 2,4-GHz-Empfänger steuern. Die Drehzahl regele ich, indem ich eine PWM-Info an den Motor sende.

Es funktioniert großartig, wenn ich ein Arduino und viele Drähte verwende. Aber ich muss das Arduino und den Motor trennen, weil der Motor tragbar sein muss. Also möchte ich ein 2,4-GHz-Sendemodul für Arduino verwenden, um den Motor zu steuern.

Ich möchte dieses Modul verwenden, um die aktuelle Frequenz vom Arduino zu erhalten und an den PWM-Port weiterzuleiten: https://www.sparkfun.com/products/152

Ist das möglich, wie ich es mir vorstelle? Brauche ich sonst noch etwas? Wenn ich ein Arduino verwenden könnte, wäre das sehr einfach, aber meine Lösung muss klein sein. Je kleiner es wird, desto besser.

In einem anderen Szenario verwende ich das Arduino, um mehrere Motoren gleichzeitig zu steuern, jeder Motor hat seinen eigenen Empfänger. Wie kann ich die Module identifizieren, damit ich die Frequenz für jeden Motor einstellen kann?

Antworten (1)

Dieses Modul gibt Ihnen Low-Level-Zugriff auf das Funkgerät – zB werden Sie keine High-Level-Protokolldaten senden. Ja - es ist trivial für Sie, eine beliebige Nachricht an das Radio zu senden und Ihr Arduino die Nachricht nach Belieben interpretieren zu lassen (PWM-Arbeitszyklus einstellen usw.). Sie sollten nicht viel mehr tun müssen, um einen Proof of Concept zu erhalten. Wenn Sie eine superlange Reichweite benötigen, reichen 0 dBm möglicherweise nicht aus, aber für mehrere Meter ist es definitiv in Ordnung.

Zu Ihrer zweiten Frage: Es gibt eine Million Möglichkeiten, die verschiedenen Radios zu identifizieren. Der teuerste und schlechteste Weg ist, für jeden Empfänger einen anderen Sender zu haben. Es ist offensichtlich, warum dies eine schlechte Lösung ist. Für alle Ihre anderen Lösungen müssen Sie eine Art übergeordnetes Protokoll implementieren. Hier gibt es viele, viele, viele Möglichkeiten (das ist ein ganzer Bereich der akademischen Forschung). Ich habe vor einigen Jahren ein ähnliches nordisches Radio verwendet und es hatte verschiedene Kanäle, die Sie verwenden konnten. Das kann Ihnen helfen (z. B. einen Empfänger auf einen Kanal stellen), aber es lässt sich offensichtlich nicht gut skalieren (z. B. wenn Sie mehr Geräte als Kanäle haben, sind Sie wieder bei Null. Ebenso wichtig ist, dass Sie bestimmte Kanäle möglicherweise nicht verwenden möchten - - sie könnten laut sein, eine schlechte PRR haben usw.). Eine einfache, aber nicht besonders robust (aus der Netzwerkperspektive) ist es, ein Protokoll zu erfinden, bei dem Sie eine Nachricht senden und abhängig vom Inhalt dieser Nachricht nur ein und nur ein Empfänger antwortet. Ihr Arduino muss jedes gewünschte Protokoll implementieren, sodass Sie offensichtlich nicht mit der Komplexität verrückt werden können (z. B. möchten Sie wahrscheinlich keine Posix-Sockets implementieren). Für ein paar Motoren (weniger als 10) werden Sie wahrscheinlich in Ordnung sein, so etwas zu tun, vorausgesetzt, Sie haben keine strengen Latenzanforderungen.

Danke für deine Antwort. Ich möchte die Daten auf meinem Arduino nicht interpretieren, es sendet nur die aktuelle Frequenz. Ich muss einen Weg finden, diese Informationen zu empfangen und an den Motor zu senden. Haben Sie ein Tutorial, das ich verwenden könnte?
Du brauchst Sender und Empfänger. Jede Seite der Verbindung erfordert ein Funkmodul und einen Mikrocontroller (oder eine andere Art von Logik). Das Funkmodul hat eine SPI-Schnittstelle - das bedeutet, dass Sie die Daten auf Ihrem Arduino interpretieren müssen . Schließlich brauchen Sie Ihr Arduino, um die Frequenz in eine Art Datenpaket zu codieren, das das sendende Radio sendet. Sie benötigen die umgekehrte Transformation auf der Empfangsseite. Dies kann so einfach sein wie das Senden einer ASCII-Zeichenfolge oder so kompliziert wie ... oder viel komplizierter. Ich habe kein Tutorial für dich, aber das ist mir aufgefallen
Jemand hat dafür eine Arduino-Bibliothek erstellt: Playground.arduino.cc/InterfacingWithHardware/Nrf2401T . Das sollte Ihnen die Arbeit wirklich erleichtern und es Ihnen ermöglichen, eine einfache ASCII-Kommunikation zwischen ein paar verschiedenen Knoten durchzuführen.
Können Sie eine gute Möglichkeit empfehlen, die Logik auf der Empfängerseite zu implementieren? Ich bin nicht sehr erfahren mit Mikrocontrollern und brauche ein sehr kompaktes Board, daher kann ich kein Arduino als Empfänger verwenden :(
Ich habe deine Antwort akzeptiert, danke. Trotzdem bin ich für jeden Rat dankbar, den ihr mir geben könnt :-)
Sie können Ihr eigenes Board mit einem Atmega-Mikrocontroller (dem in Arduino verwendeten) drehen und es extrem klein machen. Wenn Sie Platzmangel haben, würde ich das tun. Sie müssen mit diesem Modul über SPI kommunizieren. Während Sie dies mit diskreter Logik tun könnten , wäre es sehr schmerzhaft und würde viel mehr Platz einnehmen als jeder Mikrocontroller. Ihre andere Option ist ein FPGA/CPLD. Das ist super Overkill und wird definitiv zu groß sein. Sie können einen Arduino-kompatiblen Atmega in einem 28-Pin-QFN-Gehäuse von 4 mm x 4 mm erhalten.
Übrigens habe ich gerade "super small arudino" gegoogelt und diese Jungs gefunden: tiny-circuits.com/products/tinyduino . Ich bin mir sicher, dass es da draußen mehrere andere Optionen mit kleinen Arduinos von der Stange gibt.