Forum: Mikrocontroller und Digitale Elektronik 10 GY-521 Sensoren – Arduino Uno oder doch Raspberry Pi 3?


von And (Gast)


Lesenswert?

Moin, mit welcher der oben genannten Boards (Uno || Pi3) ist es 
sinnvoller 10 GY-521 Sensoren zu bedienen?
Da ich statt Python, C++ bevorzuge sollte es für Pi3 eine kompatibele 
Bibliothek geben.

Sprich, mit welchen von den beiden Boards mache ich mir die wenigsten 
Kopfschmerzen & Arbeit (und vermeide Python gleichzeitig) ? (Stromzufuhr 
und Input/Output Verarbeitung sollte beachtet werden)

PS: Bevorzuge C++ aufgrund des Lern-Potenzials + bin kein Freund von 
kontinuierlichen Abstraktion)

von Kalender Kalender (Gast)


Lesenswert?

And schrieb:
> Sensoren zu bedienen?

Bedienen suggeriert dass man mit Sensoren irgendwas steuern
könnte. Geht aber nicht.

Im Übrigen kommt mir das Thema wie ein typisches Freitags-
Thema vor .....

von Zeno (Gast)


Lesenswert?

Kommt darauf an was Du am Ende machen willst.

Beim Pi hast Du halt ein richtiges Betriebssystem mit dem Du auch noch 
mehr anstellen kannst.
Wenn Du die Daten z.B. auf eine Webseite bringen möchtest oder das ganze 
ins Heimnetzwerk integrieren möchtest, dann würde ich schon eher zum Pi 
tendieren. Das Betriebssystem des Pi bringt schon die Treiber für alle 
Schnittstellen SPI, RS232, USB, LAN etc. mit. D.h. Du mußt an dieser 
Stelle nichts mehr tun. Deine Sensoren sprichst Du recht einfach über 
die SPI-Devicefiles an, indem Du einfach Deine Daten an's Devicefile 
sendest oder von dort empfängst. Wie die Schnittstelle (die Hardware) 
konkret angesprochen wird interessiert Dich in diesem Falle gar nicht. 
Mit welcher Programmiersprache Du das Ganze machst ist dann Dir 
überlassen, die Devicefiles lassen sich mit jeder Programmiersprache 
ansprechen.

Wenn's eher ein autarkes Gerät werden soll, dann würde ich zum Arduino 
tendieren. Dort schleppst Du halt nicht den Overhead eines 
Betriebssystemes mit Dir rum. Dafür mußt Du Dich um so ziemlich alles 
selbst kümmern auch wenn es für das eine oder andere bereits fertige 
Bibliotheken gibt. Die Arduinoprogrammierumgebung ist im Prinzip C++ was 
Dir entgegen kommen würde.

Beides hat Vor- und Nachteile, es kommt wirklich darauf an was es am 
Ende werden soll.

von A. Z. (donvido)


Lesenswert?

Beide Boards haben nur einen I2C Bus. Der MPU6050 kann aber nur 2 
verschiedene Adressen.
Du benötigst also einen I2C Multiplexer wie diesen hier:
https://www.amazon.de/Adafruit-2717-TCA9548A-I2C-Multiplexer/dp/B017C09ETS

Ob du die 10 Sensoren dann mit einem Uno oder mit einen Pi3 ausließt 
hängt von deinen Anforderungen ab.

von Zeno (Gast)


Lesenswert?

Kalender Kalender schrieb:
> And schrieb:
>> Sensoren zu bedienen?
>
> Bedienen suggeriert dass man mit Sensoren irgendwas steuern
> könnte. Geht aber nicht.

Ja Bedienen ist vom TO vielleicht etwas unglücklich formuliert, aber 
wenn man will kann man durchaus verstehen was gemeint ist - aber eben 
nur wen man will.

Hilfreich wäre vielleicht wenn der TO schreiben würde was er konkret mit 
den Sensoren vor hat und was es am Ende werden soll, dann könnte man 
schon zielgerichtet helfen.


Kalender Kalender schrieb:
> Im Übrigen kommt mir das Thema wie ein typisches Freitags-
> Thema vor .....

Das hilft dem TO bei der Entscheidungsfindung ungemein.

von And (Gast)


Lesenswert?

@Zeno, stimme dir vollkommen zu, hast ja regelrecht meine Gedanken 
gelesen (Daten erfassen und auf einer Page oder Programm zu 
visualisieren).

Ich hätte das definitiv im Eingangs-Beitrag hinzufügen/korrigieren 
müssen : Sensoren werden nicht bedient sondern nur Daten gesammelt. 
Diese Daten sollen dann entweder in einem Programm oder auf einer 
Webseite visualisiert bzw. dargestellt werden (Tendenz: C++ GUI Programm 
statt Web-Dev)

Wie sieht es nun mit dem Strombedarf aus.

von Kurbel (Gast)


Lesenswert?

And schrieb:

> Wie sieht es nun mit dem Strombedarf aus.

Zu faul, um in das Datenblatt zu schauen?

von Kalender Kalender (Gast)


Lesenswert?

A. Z. schrieb:
> Beide Boards haben nur einen I2C Bus. Der MPU6050 kann aber nur 2
> verschiedene Adressen.
> Du benötigst also einen I2C Multiplexer wie diesen hier:

Käse.

Für I2C braucht man genau zwei Leitungen, und wenn man keinen
echten I2C Anschluss übrig hat macht man das mit Soft-I2C.

Insofern kann man mindesten genau soviele I2C Bus Slaves
betreiben wie man freie IO-Port-Paare zur Verfügung hat.

von Zeno (Gast)


Lesenswert?

A. Z. schrieb:
> Beide Boards haben nur einen I2C Bus. Der MPU6050 kann aber nur 2
> verschiedene Adressen.
> Du benötigst also einen I2C Multiplexer wie diesen hier:
> https://www.amazon.de/Adafruit-2717-TCA9548A-I2C-Multiplexer/dp/B017C09ETS
>
> Ob du die 10 Sensoren dann mit einem Uno oder mit einen Pi3 ausließt
> hängt von deinen Anforderungen ab.

Braucht er nicht unbedingt. Das kann er über den Pin AD0 steuern. Bei 
Low ist die Adresse 0x68 bei Heigh 0x69. Per default legt er alle 
Bausteine auf z.B. High und den den er ansprechen möchte legt er auf 
Low. Die Adresse 0x69 wird dann vom Programm nie gesendet sondern immer 
nur die 0x68. Damit antwortet genau der selektierte Baustein.

von Wolfgang (Gast)


Lesenswert?

Zeno schrieb:
> Wenn's eher ein autarkes Gerät werden soll, dann würde ich zum Arduino
> tendieren. Dort schleppst Du halt nicht den Overhead eines
> Betriebssystemes mit Dir rum.
Nur wird man etliche GPIOs benötigen oder eine zusätzliche Hardware dazu 
bauen müssen, um 10 Stück von den MPU6050 parallel zu betreiben. Die I2C 
Adresse lässt sich jedenfalls beim GY-521 nicht auf 10 verschiedene 
Werte einstellen.

von Zeno (Gast)


Lesenswert?

And schrieb:
> Diese Daten sollen dann entweder in einem Programm oder auf einer
> Webseite visualisiert bzw. dargestellt werden (Tendenz: C++ GUI Programm
> statt Web-Dev)

Wenn's auf ne Webseite soll dann würde ich zum Pi tendieren. Da kannst 
Du dann entscheiden ob dieser auch gleich den Webserver bereitstellt 
oder nur die Daten für den Server aufbereitet.

Bei meiner Wetterstation lesen liest 1 Pi die Daten einer kommerziellen 
Wetterstation aus und bereitet sie für den Webserver auf. Ein 2. Pi 
liest die Daten einiger Eigenbausensoren aus und bereitet sie auf. DEr 
3. Pi ist für den Wettersatellitenempfang verantwortlich und stellt die 
Satellitenbilder bereit. Alle 3 Pi's mounten ein von einer NAS 
bereitgestelltes Verzeichnis, in meinem Fall per nfs. Auf dieses 
Verzeichnis hat auch der Rechner mit dem Webserver Zugriff der sich dort 
die Daten abholt.

Wichtig bei Pi ist, wenn Du viele Daten schreibst, das Du die 
Schreibzugriffe auf die SD-Card minimierst oder noch besser komplett 
unterbindest. Da beim Satellitenempfänger doch einige Daten während des 
Renderns geschrieben werden müssen, benutzt dieser Pi eine SSD als 
Systempartition. Die SD-Karte wird nur zum Booten benötigt.

Vielleicht helfen Dir diese Infos bei der Konfiguration Deines Systems.

von Zeno (Gast)


Lesenswert?

Wolfgang schrieb:
> Nur wird man etliche GPIOs benötigen oder eine zusätzliche Hardware dazu
> bauen müssen, um 10 Stück von den MPU6050 parallel zu betreiben. Die I2C
> Adresse lässt sich jedenfalls beim GY-521 nicht auf 10 verschiedene
> Werte einstellen.

Nö genau 10 Stück nämlich für jeden AD0 genau einen. Oder er nimmt einen 
MCP23017, dann hat er gleich 16 Ports - das sollte für seine 10 
Bausteine locker reichen.

von A. Z. (donvido)


Lesenswert?

Zeno schrieb:
> Braucht er nicht unbedingt. Das kann er über den Pin AD0 steuern. Bei
> Low ist die Adresse 0x68 bei Heigh 0x69. Per default legt er alle
> Bausteine auf z.B. High und den den er ansprechen möchte legt er auf
> Low. Die Adresse 0x69 wird dann vom Programm nie gesendet sondern immer
> nur die 0x68. Damit antwortet genau der selektierte Baustein.

Okay, darauf bin ich auch noch nicht gekommen. Danke für diese Klasse 
Idee

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.