UART Anschluss v. Arduino Beetle an Raspberry "teilen"

Hallo Community, ich hoffe hier etwas Hilfe zu bekommen.

Für mein Hausautomationsprojekt habe ich zur Zeit einen RPi 4b der 4 UART Anschlüsse besitzt. An diese habe ich Zigbee, Enocean und Z-Wave Module angeschlossen.
Jetzt kommt der RPi 5 mit 1-2 UART Anschlüssen daher....

Vom Aufbau her ist es so, dass die Module in einem eigenen Gehäuse sind. Hier habe ich für jedes Modul einen einen Arduino Beetle welcher mir, getriggert über einen GPIO des RPi, ein Display ansteuert.

An dem Beetle gibt es ja auch einen UART Anschluss.
Jetzt ist meine Idee, dass ich die Module je an den eine UART des Beetle anschließe und diesen UART über I2c an den Raspberry "teile", so dass dieser das entsprechende Modul in der Automation verwenden kann.
Ist das möglich? Und wenn ja, was ich hoffe, wie sollte bzw. kann ich hier vorgehen?

Vielleicht suche ich im Netz nicht richtig, ein Befragen einer KI hat auch nichts gebracht und meine Kenntnisse sind, sagen wir mal eher beschränkt...

Als Arduino Beetle meine ich eigentlich den "Bettle" der Fa. DFRobot. Ein sehr kleines Modul welches einen sehr kleinen Arduino darstellt.

Da der Raspberry die Module (Enocean, Zigbee etc. ) ansteuern soll, möchte ich eigentlich nur das Signal der UART Schnittstelle über i2C übertragen und im Raspberry wieder als Seriellenanschluss ansteuern können.

Hoffe ich hab mich halbwegs verständlich ausgedrückt.

Hier noch mal ein Bild der Module, wie sie aktuell im Betrieb sind.

Es wäre gut und verständlicher, wenn du dein Vorhaben in einem Schaltbild (Blockschaltbild) zeigst. Dann kann jeder erkennen, wie du dir deinen Aufbau vorstellst.
Dann fällt die Hilfe leichter.

Was ist ein Arduino-Käfer?

Wieso brauchst Du einen 5er? Tuts der 4er nicht auch?

Grüße Uwe

Der "Beetle" ist ein kleiner Arduino der Fa. DFRobot. Ich möchte hier keinen Link einstellen, aber den findet man recht schnell.

Der Raspberry pi4 tut es natürlich noch. Habe jetzt aber einen 5er erstanden und möchte das System sagen wir mal zukunftssicher haben.

Es gibt ja auch i2c zu UART Erweiterungen die ich nutzen könnte. Diese müsste ich mir aber erst noch kaufen und dann noch im Gehäuse des Raspberry verbauen, was ich ehrlicherweise vermeiden möchte.

Bevor man "geht / geht nicht" entscheiden kann, wären noch zwei weitere Randbedingungen zu prüfen:

  • Wie weit sind Zigbee, Enocean und Z-Wave vom Raspberry entfernt?
  • Welche Datenraten sind zu erwarten?

Der Beetle ist kein Arduino. Ein Golf ist auch kein Auto von BMW obwohl er 4 Räder und ein Lenkrad hat.

IMG_1381_564x376

Ich finde die Positionierung der RX/TX und I2C auf der Unterseite in der Mitte mehr als sehr ungünstig.
Da finde ich einen MINI / PRO MINI bzw PRO MICRO besser. Diese sind zwar etwas größer aber besser zu verlöten / mittels Steckleisten zu montieren.

Ich sehe keine Notwendigkeit einen 5er zu nehmen. Den 3er gibt es ja auch immernoch, obwohl er im Feb 2016 auf den Markt gekommen ist.

Grüße Uwe

maximal 10 cm

Das kann ich nicht sagen. Vermutlich nicht so viel, da Enocean relativ kleine Datenpakete sendet und diese auch nicht wirklich oft.
Es ist eine Übertragungsrate von 57600 Baud eingestellt.

Hilft mir mit meiner Frage ehrlich gesagt nicht weiter.

Der "nicht Arduino" ist kompatibel zu dem Arduino Leonardo. Die Nano´s waren für mein Projekt leider zu groß, sonst hätte ich diese verbaut.

Ein Golf ist kein Auto von BMW, aber ein Auto mit Gaspedal, Bremse und ggf. einer Kupplung.
Der von mir verwendete "Beetle", ist kein Arduino, wird aber ähnlich bis genauso programmiert denke ich.

Mit Zukunftssicher meine ich nicht die Verfügbarkeit, sondern die Performance des Raspberry.

Aber all das sollte hier nicht das Thema sein.

Die Frage von mir als absoluter noob ist die, ob es möglich ist einen Arduino so zu programmieren, dass die UART Schnittstelle über ein I2C "Bus?" mit einem Raspberry geteilt werden kann und wenn ja wie das gehen könnte.
Ich möchte auch keinen fertigen Code bekommen, sondern nur einen Hinweis darauf wie ich das Problem, was es für mich ist, angehen kann.

Wenn ich da hier im Forum falsch bin, reicht ein netter Hinweis. Für mich war es wegen dem "nicht Arduino" am sinnvollsten.
Möchte aber auch niemandem zu Nahe treten.

Mit einer Frage über einen VW, gehe ich ja auch nicht in ein BMW Forum.

Okay.
10cm sind okay, für diese Größenordnung ist I2C gemacht.

Datenrate:
Wenn wir maximale Auslastung und Datenrate annehmen, würde es sich im I2C Fast Mode (400kBit/s) wohl gerade so ausgehen:

Zigbee   250
Z-Wave   100 
EnOcean   58
         --- 
         408

Versuch macht kluch :slight_smile:

Wer sprach von NANO?

Es ist sogar eigentlich weniger, da ich das Zigbee Modul weiterhin über den UART des Raspberry direkt laufen lassen würde. Somit hängt am I2C nur das Enocean und das Z-Wave Modul.

Ich denke das die Übertragungsgeschwindigkeit auch nicht das Problem ist.

Für mich ist das Problem wie ich dem "Beetle" beibringe, dass UART Signal über I2C zu senden und dem Raspberry, dass über I2C auf Adresse xx das Enocean Modul hängt.

:thinking:

Ich!

Davon habe ich nämlich noch genügend bei mir.
Minis, Micros und andere besitze ich nicht.

Und in dem erwähnten Projekt würden diese, da ist es auch egal welchen du nehmen würdest, nicht in die zu Verfügung stehenden Gehäuse passen. :wink:

Aber vielleicht hast du ja einen Lösungsansatz für das von mir beschriebene Problem?

Klar könnte ich beim 4er bleiben, oder mir mit einem I2C - UART Konverter behelfen. Werde ich auch dann machen, wenn ich keine andere Lösung finde.

Und wenn du nur eine Wandlung von UART auf I2C brauchst, kannst du auch einen "gängigen" ESP-01s (ESP8266-01s) verwenden. Den gibt es für ca. 1,00 €.

Die hätte ich sogar noch hier, aber würde das über den bzw. einen Arduino nicht gehen?
Mir geht es ja darum, dass diese schon in jedem Modul verbaut sind und eigentlich nur die Aufgabe haben ein Display anzusteuern auf dem ich mir mitteilen lasse, ob das System läuft oder ein Fehler vorliegt.

Ich würde dann wahrscheinlich eher am Raspberry direkt (in dem Gehäuse ist etwas mehr platz) den I2c - Uart Wandler einbauen. Der ist zwar deutlich teurer, aber ich brauch nur einen.

Danke für den Hinweis mit den ESP´s

Den ESP8266-01S hatte ich jetzt als Beetle-Ersatz gesehen. Wegen der Größe und Funktion.

aha. mit einem 80MHz 32 Microcontroller etwas machen, wobei sich ein 16 MHz 8Bit Controller schon langweilt. ...

senden

RPI -> i2c -> Arduino -> serial -> Zigbee

kann ich mir ja noch vorstellen, aber wie willst du dies umdrehen? also von zigbee empfangen?
soll der RPI immer den Arduino abfragen "hast was neues, hast was neues, hast was neues"
oder willst dass der Arduino mittels einer zusätzlichen Leitung den Raspberry informiert - "du, ich hab was neues, frag mich via i2c ab"

F1: Wie hast du dir das vorgestellt?
F2: Wie viele Projekte mit einem Arduino als I2C Slave hast du schon gemacht?
F3: Wie viele EIGENE Projekte mit einem I2C Master am RPI hast du schon mit welchen Tools/Umgebung gemacht?

Hallo noiasca,
danke für die Frage.

zu F1: Eben hier fehlt es mir ja an Wissen. Ich hatte ja schon einen fertigen, nennen wir ihn mal UART- Extender hier aufgeführt. So ein Modul wird ja ebenfalls über I2c an einen Arduino oder Raspberry angeschlossen und stellt dann häufig zwei UART Port´s zu verfügung. Natürlich ist dort dann ein entsprechender Chip drauf, der keine andere Aufgabe hat.
Meine Frage bezieht sich darauf ob man diese Funktion auch über einen entsprechenden Code mit dem Arduino erreichen kann.

F2 & F3 : keine! Ich habe lediglich div. Sensoren über den I2c am Raspberry angeschlossen gehabt, bis diese dann an div. ESP´s angeschlossen wurden, wo ich die Werte dann über MQTT am Raspberry auslese. Das sind aber ja keine Projekte von mir, sondern fertige Codes, die ich nur angepasst habe.

klar, mit dem notwendigen Wissen könnte man das schon machen.
Bei deinen gegebenen Vorrausetzungen sehe ich schwarz für dein Vorhaben, wenn sich nicht ein Rentner mit viel Tagesfreizeit dieser Sache annimmt.

Alternativ könntest du ja nach einem Serial Hat suchen oder zwei weitere USB-SerialTTL Wandler verwenden und dort beispielsweise direkt den Zigbee und das andere ding anschließen.