Arduino basierter 2,4 GHz Sender und Empfänger

Zuletzt aktualisiert: Mittwoch, 13. Januar 2021

Ein kurzer Bericht über zwei Elektroniken, die so direkt nicht von mir sind, sondern auf die ich im Internet gestoßen bin (https://howtomechatronics.com). Hierbei handelt es sich um die Eigenbauten eines 2,4 GHz Senders und eines dazugehörigen Empfängers auf Basis von Arduino Pro Mini Mikrocontrollern. Da der Empfänger aus verschiedenen Komponenten besteht, kann dessen Größe nicht mit Originalempfängern mithalten. Trotzdem könnten diese Komponenten für Modellbauer, die keinen Platzmangel im Modell haben und nur eine kurze Funkreichweite benötigen (Trucks, Baumaschinen, größere Tochterboote, ...), aufgrund des Preises und des Funktionsumfangs von Interesse sein.

Wenn man etwas programmieren kann (oder jemanden kennt, der zumindest die Mikrocontroller beschreiben kann), hat man vom Funktionsumfang eine recht ausbaubare Anlage (Sender und Empfänger kosten zusammen ca. 25 Euro) zur Verfügung. Allerdings erfolgt die Kommunikation zwischen Sender und Empfänger mittels einer, aktuell im Programm festgelegten Kennung, so dass beim gleichzeitigen Betrieb mehrere Systeme somit quasi wieder Kanäle beachtet werden müssen.

Bei den verwendeten 2,4 GHz Hochfrequenz(HF)-Modulen (hier gibt es keinen Unterschied zwischen Sende- und Empfangsmodul) vom Typ NRF24L01 gibt es drei verschiedene Versionen:

  • ein Modul mit auf der Platine verbauter Antenne und somit einer geringen Reichweite
  • ein Modul mit der bekannten verschraubbaren 2,4 GHz Antenne und erweiterter Reichweite
  • ein Modul mit ebenfalls dieser Antenne und zusätzlichem Leistungstransistor für Reichweiten bis zu einem Kilometer.

 

Ob das dritte Modul in Deutschland zulässig ist, habe ich bisher nicht recherchiert, möchte mich im folgenden aber auch nur auf das zuerst erwähnte HF-Modul beziehen, mit dem ich eine Reichweite von mehreren Metern erzielt habe.

 

 

Sender

 

Der Sender verfügt über zwei Steuerknüppel, zwei weitere Potentiometer (also sechs mögliche Proportionalfunktionen) sowie zwei Ein-/Aus-Schaltern und sechs Tastern (zwei davon unter den Steuerknüppeln (Aktivierung durch Druck auf die Steuerknüppel). Zudem ist ein 3 Achsen Lage- und Beschleunigungsmodul verbaut, das es erlaubt z.B. ein Modell auch durch bloßes Kippen des Senders zu steuern.

 

 

 

 

Empfänger

 

Der Empfänger bietet Anschlussmöglichkeiten von bis zu neun Servos- und/oder Fahrtreglern und zusätzlich noch vier digitale Ausgänge sowie zwei analoge Eingänge, die man z.B. nutzen könnte um Signale des Empfängers je nach Rückmeldung angeschlossener Module zu verändern.

Mein aktuelles Testsystem (individuell erstelltes Programm für den Empfängers) verwendet aufgrund der im Sender verbauten sechs Potis aber nur sechs der Servoanschlüsse (PWM-Ausgänge) und die drei restlichen Pins als digitale Ausgänge (Ein-/Ausschalten von Verbrauchern). Da ich somit lediglich sieben digitale Ausgänge nutze, im, Sender aber acht Taster/Schalter verbaut sind, nutze ich einen Schalter im Sender um zwischen Steuerknüppel und Lagesensor umzuschalten.

 

 

 

Sender-/Empfängerprogramme

 

Zu den Programmen möchte ich aktuell gar nicht sehr viel schreiben, da hier umfangreiche Bespiele auf der o.g. Webseite zu finden sind.

Ein paar Anpassungen habe ich dann aber doch gemacht:

 

  1. Für die Übertragung eines Schaltzustandes wird im Originalcode jeweils ein volles Byte (8 Bit) verwendet. Da es im Sender ja genau acht Taster/Schalter gibt, übertrage ich alle Schaltzustände in einem einzigen Byte. Das Originalprotokoll ist 14 Byte lang (6 analoge und 8 digitale Informationen), mein Protokoll entsprechend nur 7 Byte lang. Bedingt durch den NRF24L01 hat man maximal 32 Byte zur Verfügung. Zudem habe ich die Logik herumgedreht („1“ bedeutet geschaltet und „0“ nicht geschaltet).

  2. Nach der Übertragung des Protokolls durch den Sender legt der Sender bei mir eine Pause von 20ms ein, was in etwa der Übertragungsrate einer herkömmlichen Anlage entspricht. Die Ausgabe der sechs PWM-Signale des Empfängers wurde dadurch wesentlich verbessert. Davor war die Ausgabe mehrere (größer 2-3) PWM-Signale stark verzögert/gestört. Nun ist alles extrem stabil.

  3. Nach Umschalten auf den Lagesensor musste der sich erst einmal kalibrieren, was wiederum zu falschen Positionen der angeschlossenen Servos während der Kalibrierungszeit geführt hat. Ich habe das (bisher) so gelöst, dass der Lageregler sofort (im Hintergrund) aktiviert wird, so dass bei späterer Aktivierung des Lagereglers über den Schalter im Sender der Sensor bereits kalibriert ist.

  4. Bei den Werten des Lagereglers gab es einen „Überlauf“ wenn der Sender stärker als -90° bzw. 90° gekippt wurde. Hier habe ich lediglich das Limit auf diese Werte gesetzt. 

 

Ach ja, eine andere Person hat dann in den Kommentaren zum Sender auf der o.g. Homepage auch ein Gehäuse zum Ausdrucken auf einem 3D-Drucker bereitgestellt. https://www.thingiverse.com/thing:4674119

Der Sender sieht dann ungefähr so aus.

 

Zugriffe: 933