Forum: Haus & Smart Home Beratung bzgl. Wahl des Mikrocontrollers


von Oliver L. (ollilinde)


Lesenswert?

Servus,

Ich bin gerade dabei mit meinen Kumpels ein großes Projekt umzusetzen. 
Es ist vorgesehen viele verschiedene Messwerte zu speichern. Wir 
arbeiten zur Zeit mit einem Raspberry Pi und mich plagen bedenken dass 
wir mit den GPIO Pins nicht ausreichend versorgt sind. Ich nehme an, 
dass bei unserem größtem Objekt Messwerte von ca. 40 Modulen angenommen 
und gespeichert werden müssen.

Da wir das recht professionell umsetzen möchten habe ich bedenken an die 
Umsetzung mit einem Raspberry Pi. Ich selbst bin (fast) ausgebildeter 
Softwareentwickler. Dafür ist der Pi natürlich wunderbar. Ich möchte 
aber trotzdem Alternativen kennen lernen.

Ich persönlich würde auch nicht davor zurückschrecken etwas eigenes zu 
entwickeln (wenn mir jemand erklärt wo ich das nötige Fachwissen 
erhalte) ;)

Gibt's irgendwelche Alternativen zum Raspberry Pi, die die Möglichkeit 
bieten viele Module anzuschließen? Die Module wären quasi die 
Lieferanten für die Messwerte.

Vielen Dank schonmal für eure Hilfe :)

von 12V DC (Gast)


Lesenswert?

Also ich würde auf jeden Fall das STM32F4-Discovery-Board empfehlen, 
oder zum Selbstlöten einen Cortex M3 oder M4

von abc (Gast)


Lesenswert?

beagle bone black?

von Oliver L. (ollilinde)


Lesenswert?

Servus,

Danke für die Antwort :)

Das STM32F4-Discovery-Board sieht ja schonmal nicht so schlecht aus. Es 
würde uns bloß sehr helfen, wenn man darauf ein ubuntu zum laufen 
bekommen könnte. Ich selbst habe einen hohen Anspruch an die Hardware 
aber leider kein IT Studium abgeschlossen :( Ich habe halt im Bereich 
Mikrocontroller kaum Erfahrung.

Wie viel Zeit müsste ich eigentlich aufwenden um mir so viel wissen 
anzueignen, dass ich eine eigene Platine mit Microcontroller bestücken 
und zum Laufen bringen könnte?

von Oliver L. (ollilinde)


Lesenswert?

abc schrieb:
> beagle bone black?

Sieht auch eigentlich ganz gut aus. Muss ich mal checken in wie fern man 
da gut die messdaten reinstopfen kann ;)

von Peter L. (luidoltp)


Lesenswert?

Schau dir mal UDOO an:
http://www.udoo.org/features/

Liebe Grüße,
Lui

von Dr. Sommer (Gast)


Lesenswert?

Oliver Linde schrieb:
> Das STM32F4-Discovery-Board sieht ja schonmal nicht so schlecht aus. Es
> würde uns bloß sehr helfen, wenn man darauf ein ubuntu zum laufen
> bekommen könnte.
Linux darauf laufen zu lassen ist eher schwierig und suboptimal, und 
Ubuntu quasi augeschlossen. Man programmiert dort eher direkt mit der 
Hardware oder mit einem RTOS; hat dafür aber den Vorteil 
Echtzeit-Vorgaben umsetzen zu können, also präzises Timing der 
Ein/Ausgaben etc, und eine Menge Peripherie-Module zur Kommunikation 
(UART, CAN, I²C, SPI, USB...) und Steuerung (Timer, ADC, DAC, DMA, ...). 
Kommt halt drauf an ob ihr das braucht.

von 12V DC (Gast)


Lesenswert?

ein ARM Linux müsste man eigentlich zum Lufen bringen können, ob Ubuntu 
geht weiß ich nicht. Einfach mal googlen 'Ubuntu auf ARM Cortex M3 
installieren' oder auch nur nach Linux statt Ubuntu suchen. Allerdings 
müsste man einkalkulieren, dass für die Sensoren uf dem Board Pins 
draufgehen(Gyro, Taster, Aux, USB-Micro, LED's, etc.) und dass man ohne 
weiteres KEINE Grafische Oberfläche hat, auf der man das Linux bedienen 
könnte, weil das STM keinen Videoausgang hat, wie das RasPi.

Da könnte eventuell ein Artikel aus der C't hacks weiterhelfen, in dem 
das beschrieben wurde. Hier ist der Link: 
http://www.heise.de/hardware-hacks/inhalt/2013/3/132/

mfg 12V DC

von Dr. Sommer (Gast)


Lesenswert?

12V DC schrieb:
> ein ARM Linux müsste man eigentlich zum Lufen bringen können,
uCLinux oder so ja, ein Linux was ohne virtuellen Speicher / MMU 
klarkommt.
> ob Ubuntu geht weiß ich nicht.
Hat wohl kaum genug Speicher.
> Einfach mal googlen 'Ubuntu auf ARM Cortex M3
> installieren' oder auch nur nach Linux statt Ubuntu suchen.
Das macht einfach keinen Sinn. Dafür sollte man schon einen Cortex-A 
nehmen.
> Allerdings
> müsste man einkalkulieren, dass für die Sensoren uf dem Board Pins
> draufgehen(Gyro, Taster, Aux, USB-Micro, LED's, etc.)
Gibt ja auch andere Boards mit STM32 ohne dieses Zeug. Außerdem sind 
noch ziemlich viele Pins frei.
> und dass man ohne
> weiteres KEINE Grafische Oberfläche hat, auf der man das Linux bedienen
> könnte, weil das STM keinen Videoausgang hat, wie das RasPi.
Der F429 hat, und auf dem F429-Discoveryboard ist der mit dem LCD 
verbunden. Aber kein HDMI oder so. Und obs dafür Linux-Treiber gibt ist 
fraglich.

von Frank K. (fchk)


Lesenswert?

Oliver Linde schrieb:

> Ich bin gerade dabei mit meinen Kumpels ein großes Projekt umzusetzen.

kommerziell oder Hobby?

> Es ist vorgesehen viele verschiedene Messwerte zu speichern.

welche? wie viele? wie schnell? Räumliche Ausdehnung des ganzen?


> Da wir das recht professionell umsetzen möchten habe ich bedenken an die
> Umsetzung mit einem Raspberry Pi. Ich selbst bin (fast) ausgebildeter
> Softwareentwickler. Dafür ist der Pi natürlich wunderbar. Ich möchte
> aber trotzdem Alternativen kennen lernen.

Der Pi ist für die Lehre entwickelt worden, und zwar mit Fokus auf 
"billig". Für den industriellen Einsatz gibt es geeignetere Systeme. 
Beispiel für Embedded Linux: Wandboard. (wandboard.org)

> Gibt's irgendwelche Alternativen zum Raspberry Pi, die die Möglichkeit
> bieten viele Module anzuschließen? Die Module wären quasi die
> Lieferanten für die Messwerte.

Du nervst. Du willst was anschließen, sagt aber nicht was und wie viel. 
Das ist genauso, als würde ich nach einem Händler fragen, aber nicht 
sagen, was ich kaufen will.

Wenn wir Dir helfen sollen, musst Du schon Fakten liefern. Und zwar 
ALLE. Vollständig und richtig! Mit Typennummern. Sonst können wir nur 
raten.

Linux ist zwar ganz nett, aber im Embedded-Bereich erhöht es die 
Anforderungen. Und zwar so enorm, dass der durchschnittliche Bastler 
nicht den Hauch eine Chance hat, ein derartiges System selber von Null 
an auf die Beine zu stellen. Und das schon, weil er die Bausteine mit 
seinen Mitteln nicht gelötet bekommt. Wenn Du das willst, bist Du auf 
fertige Module angewiesen.

Ohne Linux ist das kein Problem. Es gibt kleine Echtzeitkernels, die Du 
verwenden kannst, und die Prozessoren dafür kann man auch per Hand 
löten, wenn man darauf verzichtet, seine Platinen selber ätzen zu 
wollen.

> Wie viel Zeit müsste ich eigentlich aufwenden um mir so viel wissen
> anzueignen, dass ich eine eigene Platine mit Microcontroller bestücken
> und zum Laufen bringen könnte?

Auf dem Level eines STM32F4 Discovery: ein bis zwei Jahre vielleicht, je 
nachdem, wie intensiv Du dich damit beschäftigst, welche Vorkenntnisse 
Du hast und wie gut Du bist. Und um dann durch die EMV-Prüfungen mit 
Deiner Baugruppe zu kommen (wenn Du das kommerziell vermarkten willst, 
mit einem CE-Zeichen, das seinen Namen verdient), nochmal zwei.

Fang klein an.

fchk

von Oliver L. (ollilinde)


Lesenswert?

Also mir stellt sich jetzt eigentlich folgende Frage:

Ich habe ein Modul (Platine) die keinen anderen Zweck hat als eine 
kleine Gruppe von Messdaten (Druck, Temperatur, Entfernung) zu erfassen 
und an die Zentrale (derzeit Rasperry Pi) zu übermitteln.

An diese Zentrale (Raspberry Pi) sollen viele (max. ca. 40) Module 
angeschlossen werden können.

Wie bekomme ich so viele Module an den Pi? Wie spreche ich die Module 
auf dem Pi an bzw. reagiere wenn sie mir ein Signal geben.

Laut meinem derzeitigen Wissenstand bräuchte ich für jedes Modul 
mindestens einen GPIO Pin auf dem ich lausche (und über den die Signale 
kommen). Ist das korrekt? Kann man diese Beschränkung durch einen eigens 
entwickelten Bus umgehen? Wenn ja wo finde ich das Wissen um so etwas zu 
entwickeln?

Fragen über Fragen für einen unwissenden Softwareentwickler :D

von Oliver L. (ollilinde)


Lesenswert?

> Wenn wir Dir helfen sollen, musst Du schon Fakten liefern. Und zwar
> ALLE. Vollständig und richtig! Mit Typennummern. Sonst können wir nur
> raten.

Typennummern habe ich gar keine.

Das System soll in ferner Zukunft kommerziell vertrieben werden. Wir 
stehen halt noch am Anfang und haben keinerlei Infos der zu verwendenden 
Hardware.

von 12V DC (Gast)


Lesenswert?

Oliver Linde schrieb:
> Zentrale (Raspberry Pi) sollen viele (max. ca. 40)

Dafür wäre das Pi eher ungeeignet, wegen zu vieler Zustzfunktionen, die 
ihr net braucht. Ich würde als 'Zentrale ein STM-Discovery o.ä. nehmen. 
Die verschiedenen Sensordaten, würde ich aber schon vorher auf 2-4 
Atmega32 -oder so was- vorverarbeiten, und diese Daten dann mittels 
I2C(o.ä.) an die Zentrale senden, wobei ich auch noch eine Rückmeldung 
einbauen würde. Dann hätte man die 'Zentrale etwas entlastet und könnte 
sie für wichtigeres nutzen, als ständig Sensordaten zu verarbeiten...
Am PC könnte man dann die Daten von der Zentrale mittels Processing, 
terminos.h (der so was ;)) ausgeben und verwalten/steuern.

von Frank K. (fchk)


Lesenswert?

Existiert das "Modul" schon?

Ansonsten: Verwendet den CAN-Bus. ISO 11898 ist der zugehörige 
offizielle Standard. Kommt aus der Automobilindustrie, ist ursprünglich 
von Bosch und inzwischen weit verbreitet.

Es gibt zwar Basteleien, die einen CAN-Controller an den PI anbinden, 
aber das ist höchst suboptimal, da der verwendete Controller (a) nicht 
sehr leistungsfähig ist und (b) die Anbindung an den PI langsam ist. 
Besser zB ein Beagle Bone Black nehmen. Der Prozessor, der da drauf ist, 
hat den passenden Controller schon eingebaut, da muss nur noch das 
Leitungsinterface (Transceiver) angeschlossen werden.

Die einzelnen Messknoten bekommen einen kleinen PIC18F26K80 verpasst. 
Der sollte für so langsame Größen wie Temperatur völlig ausreichen, 
kostet nur zwei Euro in Stückzahlen, und hat auch CAN gleich eingebaut. 
Transceiver dran, und gut ists.

fchk

von Mike (Gast)


Lesenswert?

Oliver Linde schrieb:
> Ich habe ein Modul (Platine) die keinen anderen Zweck hat als eine
> kleine Gruppe von Messdaten (Druck, Temperatur, Entfernung) zu erfassen
> und an die Zentrale (derzeit Rasperry Pi) zu übermitteln.

Und was für Schnittstellen besitzt dieses Modul?

> Laut meinem derzeitigen Wissenstand bräuchte ich für jedes Modul
> mindestens einen GPIO Pin auf dem ich lausche (und über den die Signale
> kommen). Ist das korrekt?

Nein, das kommt auf die Schnittstelle drauf an. Bei mir werkelt z.B. 6 
Temperatursensoren munter an einem einzigen IO-Pin.

von Oliver L. (ollilinde)


Lesenswert?

Mike schrieb:
> Oliver Linde schrieb:
>> Ich habe ein Modul (Platine) die keinen anderen Zweck hat als eine
>> kleine Gruppe von Messdaten (Druck, Temperatur, Entfernung) zu erfassen
>> und an die Zentrale (derzeit Rasperry Pi) zu übermitteln.
>
> Und was für Schnittstellen besitzt dieses Modul?

Die Module existieren noch nicht, da sind wir ziemlich offen...

von 12V DC (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Hat wohl kaum genug Speicher.

Kann man auf USB-Stick legen. Aber ich find es trotzdem fraglich ob es 
geht. Also vergessen wir es.

Dr. Sommer schrieb:
>> Allerdings
>> müsste man einkalkulieren, dass für die Sensoren uf dem Board Pins
>> draufgehen(Gyro, Taster, Aux, USB-Micro, LED's, etc.)
> Gibt ja auch andere Boards mit STM32 ohne dieses Zeug. Außerdem sind
> noch ziemlich viele Pins frei.

Ich sprach vom STM32F4-Discovery. man kann natürlich auch andere nehmen.

Dr. Sommer schrieb:
>> und dass man ohne
>> weiteres KEINE Grafische Oberfläche hat, auf der man das Linux bedienen
>> könnte, weil das STM keinen Videoausgang hat, wie das RasPi.
> Der F429 hat, und auf dem F429-Discoveryboard ist der mit dem LCD
> verbunden. Aber kein HDMI oder so. Und obs dafür Linux-Treiber gibt ist
> fraglich.

Also für Linux kann ich mir das vorstellen.

Aber ich denke für so ein Projekt da Linux draufzuspielen ist ein 
unnötiger Aufwand.

Frank K. schrieb:
> Beispiel für Embedded Linux: Wandboard. (wandboard.org)

Klingt ziemlich gut. Gibt auch so eins bei ELV mit relativ großem 
Display. Art. Nr. 50-09 18 72 Heisst "Universal-embedded 
Linux-Plattform-Control-Unit LCU1"
Das hat alles was man braucht(oder auch nicht). Allerdings würde ich für 
dieses Projekt so etwas wie das STM Board empfehlen.

Oliver Linde schrieb:
> Mike schrieb:
>> Oliver Linde schrieb:
>>> Ich habe ein Modul (Platine) die keinen anderen Zweck hat als eine
>>> kleine Gruppe von Messdaten (Druck, Temperatur, Entfernung) zu erfassen
>>> und an die Zentrale (derzeit Rasperry Pi) zu übermitteln.
>>
>> Und was für Schnittstellen besitzt dieses Modul?
>
> Die Module existieren noch nicht, da sind wir ziemlich offen...

Ich würde als 'Module einen AtMega32 o.ä. nehmen und so verwenden, wie 
ich es oben beschrieben habe. Ich weiß allerdings nicht ob das 
deinen(Olivers) Vorstellungen entspricht. Was soll das Modul denn 
können. A/D- Wandler?

von kopfkratzer (Gast)


Lesenswert?

kopfkratz
Ähm was für "Module" sind das ?
Wenn die via Bus angesteuert werden können, SPI/I2C/OneWire o.ä. kann 
man die alle an einem betreiben.
Wenn da "nur" An/Aus kommt geht auch Multiplexing, also einfach ein 
"Modul" nach dem anderen abfragen an einem Pin ...

von Oliver L. (ollilinde)


Lesenswert?

12V DC schrieb:
> Ich würde als 'Module einen AtMega32 o.ä. nehmen und so verwenden, wie
> ich es oben beschrieben habe. Ich weiß allerdings nicht ob das
> deinen(Olivers) Vorstellungen entspricht. Was soll das Modul denn
> können. A/D- Wandler?

Das Modul soll die Sensoren ansprechen. Zum Beispiel sammelt das Modul X 
die Messwerte Entfernung (Ultraschall), Druck und Temperatur. Diese 
sollen als Gruppen an die "Zentrale" weitergegeben werden. Das soll 
aufgrund des Vorschlags von Frank K. über nen CAN Bus erfolgen. Die 
Zentrale speichert die Daten der Module in einem Stack, der dann in 
bestimmten Zeitabständen an eine API gesendet wird, wo die Daten 
permanent gespeichert werden. Eine Zentrale soll beliebig viele Module 
unterstützen.

In Kurzform:

Ein Modul sammelt also immer eine Gruppe an einzelnen Messwerten. Die 
Anzahl und der Typ der Messwerte können stark variieren. Die Gruppe von 
Messwerten wird über CAN Bus an die Zentrale gesendet. Es geht um die 
Auswahl des Microcontroller Boards für die Zentrale.

von kopfkratzer (Gast)


Lesenswert?

Oliver Linde schrieb:
> Ein Modul sammelt also immer eine Gruppe an einzelnen Messwerten. Die
> Anzahl und der Typ der Messwerte können stark variieren. Die Gruppe von
> Messwerten wird über CAN Bus an die Zentrale gesendet. Es geht um die
> Auswahl des Microcontroller Boards für die Zentrale.

Dann einfach den Worstcase nehmen und den µC danach auswählen.

von Oliver L. (ollilinde)


Lesenswert?

Servus,

Es gibt bei Can Bus ja zwei Möglichkeiten Daten zu übertragen 
(parallel/seriell). Wenn ich einen Transceiver mit acht Beinchen nehme 
(SN 65HVD251D), wie muss ich den bei einer parallelen Übertragung an die 
Datenleitungen bzw. an den PIC18F26K80 schalten? Ich versuch das grad 
mal mit Fritzing zu erarbeiten komm da gerade irgendwie nicht weiter :(

Danke :)

von Frank K. (fchk)


Lesenswert?

Oliver Linde schrieb:
> Servus,
>
> Es gibt bei Can Bus ja zwei Möglichkeiten Daten zu übertragen
> (parallel/seriell). Wenn ich einen Transceiver mit acht Beinchen nehme
> (SN 65HVD251D), wie muss ich den bei einer parallelen Übertragung an die
> Datenleitungen bzw. an den PIC18F26K80 schalten? Ich versuch das grad
> mal mit Fritzing zu erarbeiten komm da gerade irgendwie nicht weiter :(

CAN ist immer seriell.
Und die Transceiver haben fast immer 8 Pins.

Beim PIC18F26K80 ist der CAN-Bus auf Pin 17 (CANTX) und PIN 18 (CANRX), 
oder alternativ auf Pin 23/24, je nachdem, wie Du das konfigurierst. Als 
Transceiver nehm ich jetzt einfach mal einen MCP2551, da muss ich nicht 
lange suchen. Das Pinout ist überall ähnlich, Pin 5 und 8 haben bei den 
einzelnen Bausteinen teils unterschiedliche Funktionen. Datenblatt 
lesen.

CANTX vom PIC auf TX (Pin 1) vom Transceiver
CANRX vom PIC auf RX (Pin 2) vom Transceiver

CANH (7) und CANL (6) gehen auf den CAN-Bus. Am besten noch eine 
stromkompensierte Drossel gegen Gleichstaktstörungen und ggf 
ESD-Schutzdioden dran, und dann passt das.

CAN ist wie eine Wurst. An die Wurstzipfel kommen 120Ω zwischen CANH und 
CANL, damit die Bits da nicht reflektiert werden. Die Netzknoten hängen 
direkt an der Wurst, und zwar ohne Stichleitungen! Für den Bus brauchst 
Ihr CANH, CANL, und GND. Ohne GND gehts nicht.

fchk

von Oliver L. (ollilinde)


Lesenswert?

Vielen Dank :)

Das bringt mich schon mal um einiges weiter. Jetzt muss ich nur noch 
herausfinden wie ich einen Temperatursensor anschließe und das 
Senden/Empfangen von Daten via CAN Bus :)

von Max G. (l0wside) Benutzerseite


Lesenswert?

Du hast gefühlt noch einiges an Lernkurve vor dir. Wenn ich den Thread 
richtig verstehe, willst du langfristig ein eigenes Linux-Board haben. 
Für die beschriebene Anwendung fände ich zwar bare-metal viel 
sinnvoller, aber wie du meinst.

Um das selbst löten zu können, wäre es sinnvoll, einen Prozessor im TQFP 
zu nehmen. BGA im Hobbykeller wird teuer und frustrierend.

Bei Linux auf ARM im TQFP wird die Auswahl ziemlich schnell ziemlich 
dünn. Schau dir mal den Olinuxino an, der könnte auf deine Bedürfnisse 
passen - vor allem, weil die Eagle-Dateien frei verfügbar sind. Da 
kannst du mit dem Board von Olimex anfangen und dann irgendwann dein 
eigenes Design machen.

RPi ist keine gute Idee, weil du den SoC (d.h. Controller) nicht einzeln 
kaufen kannst und das Design nicht offen ist. Du wärst also für die 
Serie darauf angewiesen, RPi+Shield zu verkaufen. Das ist keine 
wirkliche Option.

Das Design des Beagleboard/-bone ist offen, allerdings nur als 
Altium-Dateien. Ich unterstelle mal, dass du kein Altium hast. Außerdem 
ist der µC hier auch in BGA.


Alternativ wäre vielleicht ein Arduino als Basis nicht verkehrt. Für die 
genannten Anforderungen sollte er locker ausreichen.


Vergesst bei dem ganzen Thema nicht: sobald ihr etwas davon verkauft, 
braucht ihr zwingend ein CE-Kennzeichen und damit eine 
Konformitätserklärung. Das beinhaltet vorwiegend RoHS (unproblematisch), 
WEEE (Kosten, aber kein großer Aufwand) und EMV. Letzterer Punkt kann 
ziemlich ungemütlich werden. DIN61000-6-3 und die EMV-Richtlinie bei der 
Bundesnetzagentur sind ein brauchbarer Einstieg.

Außerdem: welchen Markt wollt ihr bedienen? Kennt ihr die gängigen 
Vertriebsstrukturen? Wer kauft bei euch ein, die  Großhändler, die 
Installateure oder die Endkunden? Wer installiert und programmiert den 
Kram?
Sollen eure Teile in Neubau oder Bestand eingebaut werden? Wenn Neubau: 
warum sollte jemand euer proprietäres Protokoll kaufen? Tipp: der Preis 
ist nicht das treibende Argument, sondern der Vertriebskanal. Wenn 
Bestand: wo kommen die Leitungen für CAN und Versorgung her?


Statt CAN könntet ihr noch anschauen:
* KNX/EIB. Standardisierter Bus, eher im Hochpreissegment angesiedelt.
* LON oder BACnet - ebenfalls existierende Standards.
* Homematic. Ich weiß nicht, ob man das Protokoll lizenzfrei nutzen 
kann, aber ihr könntet auf eine existierende Basis aufsetzen.
* Funk. Für Nachrüstlösungen die einzig praktikable Option. Bluetooth, 
KNX-RF, Zigbee, DECT, EnOcean wären Möglichkeiten.


Viel Erfolg wünscht

Max

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.