Jump to content

Grundlagen: Kommunikation mit dem PC


photon

Recommended Posts

Hallo!

 

Ich bin neu hier und habe noch nie Tinkerforge module verwendet. Daher möchte ich hier vor der Bestellung kurz klären ob ich damit tun kann was ich möchte.

 

Der Plan ist 3 Bricklets (Temperatur, Barometer, Hygometer) and den MasterBrick anzuschließen und den Masterbrick dann auf Basis der Templates so zu programmieren, dass er alle 5 sec die drei Sensoren ausliest und die Rohwerte (idealerweise aber auch zusätzlich berechnete Werte) über einen virtuellen Serialport über USB absetzt.

Ich möchte also eine kleine Box bauen mit den 3 Sensoren und einem Masterbrick drin den man lediglich über USB an einen beliebigen Rechner (mit Treiber) steckt und dann sprudeln auch schon alle 5 sec die Messdaten aus dem /dev/ttyUSBXYZ.

 

Momentan habe ich ein Arduino Uno mit nur zwei Sensoren in dieser Art und Weise laufen und möchte das gerne durch die kalibrierten Tinkerforge module ersetzen.

 

Die Frage ist also geht das so oder funktioniert der MasterBrick doch anders.

Von den Atmels / Arduino kenne ich das so, dass man etwas programmiert, compiliert und dann den muC damit flasht. Wenn ich aber die ganzen unterstützten Scriptsprachen hier sehe, dann klingt das so für mich als könne so ein Setup nur extern kontrolliert werden und auf den Tinkerforge modulen läuft dauerhaft so eine Art 'controlserver'. Ich möchte aber den Brick am laptop fertig programmieren so dass ich den Stack (1x master + bricklets) dann einfach via USB an einen server stecken kann und dieser die daten über /dev/ttyUSBXYZ einlesen kann.

 

Danke schon mal für eure Hilfe.

(Ich möchte einfach nur vermeiden eine Falschbestellung aufzugeben.)

 

Gruß Photon

Link zu diesem Kommentar
Share on other sites

Halo Photon,

 

auf die Tinkerforge Module wird nichts geladen / geflashed. Die speichern auch keine Werte dauerhaft. Die aktuellen Daten stehen immer bereit, wenn der Stack mit Strom versorgt wird. Vom Prinzip musst Du auf jedem Rechner, der Daten verarbeiten soll eine kleine Anwendung oder Skript laufen lassen, welches die Daten über USB / Netzwerk aus dem Stack ausliest bzw. vom Stack liefern lässt (kann mit einem Treiber verglichen werden, wobei das highlevel ist: um die eigentliche Kommunikation musst Du Dich nicht kümmern, das macht die TF-API).

 

Du kannst alle X Sekunden Daten abfragen oder Callbacks aktivieren, die nur aufgerufen werden, wenn sich Werte andern. Dazu muss eine Anwendung (in einer Programmiersprache oder Skript) über die Tinkerforge API mit dem Stack kommunizieren.

 

Ich hoffe, das hilft etwas.

Link zu diesem Kommentar
Share on other sites

auf die Tinkerforge Module wird nichts geladen / geflashed. Die speichern auch keine Werte dauerhaft. Die aktuellen Daten stehen immer bereit, wenn der Stack mit Strom versorgt wird. Vom Prinzip musst Du auf jedem Rechner, der Daten verarbeiten soll eine kleine Anwendung oder Skript laufen lassen, welches die Daten über USB / Netzwerk aus dem Stack ausliest bzw. vom Stack liefern lässt (kann mit einem Treiber verglichen werden, wobei das highlevel ist: um die eigentliche Kommunikation musst Du Dich nicht kümmern, das macht die TF-API).

 

Du kannst alle X Sekunden Daten abfragen oder Callbacks aktivieren, die nur aufgerufen werden, wenn sich Werte andern. Dazu muss eine Anwendung (in einer Programmiersprache oder Skript) über die Tinkerforge API mit dem Stack kommunizieren.

 

Hallo!

Ja vielen Dank!! DAS hilft mir in der Tat sehr viel weiter. Dann kann ich damit leider nicht mein Arduino ersetzen.

 

Wie werden denn die einzelnen Bricklets jeweils an den MasterBrick angebunden?

Kann man eventuell die Bricklets direkt über I2C ansprechen/auslesen? Dann könnte ich zwar das Arduino nicht ersetzen, aber die 3 o.g. Sensoren könnten dann vielleicht (Standalone nur zusammen mit dem Arduino), im Gegensatz zu meiner derzeitigen unkalibrierten Analoglösung, schöne kalibrierte Werte digital über I2C liefern. Das ist das zwar nicht mehr in dem Sinne wie es gedacht ist, aber wenn das ginge, dann wären die Sensormodule/Bricklets für einen solchen Anwendungsfall durchaus interessant.

(Es ist klar, dass dann die TF-APIs nicht mehr funktionieren. Ausser ein paar I2C Befehlen zum Auslesen der drei Sensoren ist da ja nicht auch viel Kommunikation nötig. Zudem wäre das Schöne, man könnte jede Menge weiterer Sensoren (evt sogar andere Bricklets) an den selben I2C bus hängen.)

 

Any comments on this? :)

Link zu diesem Kommentar
Share on other sites

Auf dem Bricklet Stecker sind 5V, GND, 3.3V, 1xAnalog, 4xGPIO, Select und I2C. Wir sprechen darüber alle möglichen Protokolle, eine allgemeine Aussage gibt es dazu also nicht.

 

In der Dokumentation jedes Produkts gibt es aber unter "Ressourcen" einen Schaltplan sowie einen Link zum verwendeten Sensor. Für Temperature Bricklet z.B hier: http://www.tinkerforge.com/de/doc/Hardware/Bricklets/Temperature.html#ressourcen

Link zu diesem Kommentar
Share on other sites

Danke für den Hinweis.

 

Ich frage deshalb, weil mit bei den 3 Sensoren (Temperatur, Luftdruck, Luftfeuchte) eben in allen drei Fällen I2C fähige Sensoren eingesetzt werden. Mit den TF-Bricklets als einfache "I2C clients" ließe sich so zumindest das SMD Löten umgehen und die Sensoren wäre so recht leicht einsetzbar. (Ich erinnere mich allerdings noch vage, dass die Sensoren uneinheitlich auf 3.3V und 5V laufen; was für den selben I2C Bus ungünstig ist. Ein shifter 3.3V <-> 5V direkt auf dem Bricklet wäre also perfekt und würde den Einsatz mit einem Arduino oder RPi erheblich vereinfachen. Auch komplett ohne MasterBrick.)

 

Link zu diesem Kommentar
Share on other sites

Ich möchte also eine kleine Box bauen mit den 3 Sensoren und einem Masterbrick drin den man lediglich über USB an einen beliebigen Rechner (mit Treiber) steckt und dann sprudeln auch schon alle 5 sec die Messdaten aus dem /dev/ttyUSBXYZ.

 

Ich habe noch nicht verstanden warum Tinkerforge nicht funktioniert.

Genau das macht Tinkerforge. Du steckst den Brick mit den Bricklets an den Rechner und fragst alle 5 Sekunden die Werte ab oder du aktivierst den Brick so (via Callback), dass er alle paar Sekunden (oder bei Aenderung) Werte sendet.

 

Ich möchte aber den Brick am laptop fertig programmieren so dass ich den Stack (1x master + bricklets) dann einfach via USB an einen server stecken kann und dieser die daten über /dev/ttyUSBXYZ einlesen kann

 

Eben, der Brick ist bereits voll programmiert und laeuft eigenstaendig. Der Brick kann zwar nicht mit Logikprogrammiert werden (wenn dann, dann dieses), aber Daten kann man abfragen und senden lassen. - Das ist ja eigentlich der Gag an Tinkerforge, dass man eben nicht die i2c Module ansprechen koennen muss.

 

 

Die Art und Weise wie du mit dem Brick ueber USB redest bleibt dir ueberlassen. Dafuer gibt es eben die vielen Sprachen. Ansonsten kannst du auch via Ethernet oder WLAN mit dem Brick reden.

 

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Hallo Loetkolben!

 

Sorry, es scheint als habe ich mich doch unklar ausgedrückt.

Ich hoffe ich habe das jetzt alles richtig verstanden, also bitte korrigiert mich wenn ich falsch liege.

 

Hardwareseitig würde TF wohl schon funktionieren. Der Grund warum es nicht meinen Vorstellungen entspricht ist, dass die TF-module stets nur als eine Art "slave" funktionieren. Ein PC muss also immer als "master" dem Brick(let) sagen was es tun soll.

Sprich der Unterschied zwischen TF einem Arduino ist also, dass ich den Arduino programmieren und flashen kann und ich das Device dann praktisch nur mit Spannung versorgen muss und es dann (ohne Weiteres) am Serialport Messdaten ausspuckt. Den TF Modulen hingegen muss mal aber wohl immer von einem externen Gerät (PC o.ä.) sagen "gib mir diesen Wert" oder "tue dies". Sprich ohne externen PC der die Ausgabe (bzw eigentlich ja sogar auch die Messung und Datenerfassung) initiiert gibt ein TF Modul keine Daten aus.

 

Ein Beispiel zur Verdeutlichung wäre, dass ich u.U. die erfassten Daten auch über die serielle Schnittstelle eines anderen Arduino einfach einlesen könnte oder mit einer Kaffeemaschine oder naja... eben alles was man mit einer seriellen Schnittstelle ausstatten kann. Und auf einem anderen Arduino oder einer Kaffeemaschine kann man die TF-API vermutlich nicht installieren.

Ich hoffe es ist nun etwas klarer geworden was ich möchte. :)

 

Generell gilt aber: Prinzipiell ist TF also durchaus eine tolle Sache, aber es ist leider nicht das was ich zur Zeit möchte. Vermutlich werde ich deshalb also doch einen Arduino mit I2C Sensoren ausstatten (müssen). Und es wäre schön gewesen dafür zumindest die TF Bricklets zu verwenden. Aber es scheint als wäre auf allen drei Sensoren (Temp, Druck, rel. Feuchte) noch ein zusätzlicher Chip drauf der eine solche Verwendung als reines I2C device wohl verhindert... :(

 

Hoffentlich kann man jetzt besser verstehen was ich suche/möchte. :)

Link zu diesem Kommentar
Share on other sites

Den TF Modulen hingegen muss mal aber wohl immer von einem externen Gerät (PC o.ä.) sagen "gib mir diesen Wert" oder "tue dies". Sprich ohne externen PC der die Ausgabe (bzw eigentlich ja sogar auch die Messung und Datenerfassung) initiiert gibt ein TF Modul keine Daten aus.

 

Hallo photon,

 

ja das stimmt, aber wenn du die TF Sachen ueber USB anschliesst, dann ist da doch ein Rechner der USB Kommandos absetzen kann. Dann es ist doch egal ob er am USB Port "lauscht" oder vor dem lauschen erst noch ein paar Init-Kommandos per USB zum Tinkerforgestack sendet. - Da muss doch ein Rechner mit USB sein!?

 

Ein Beispiel zur Verdeutlichung wäre, dass ich u.U. die erfassten Daten auch über die serielle Schnittstelle eines anderen Arduino einfach einlesen könnte

 

Die haben aber alle keinen USB Anschluss und wenn doch, dann koennten die auch darueber kommunizieren, oder?

 

Von mir aus kannst du einen TEmperatursensor mit der Kaffeemaschine verbinden wollen, aber irgendwo muss doch Software laufen die das steuert.

 

Die Tinkerforge Bricklets haben alle eine EEPROM drauf dass man per I2C ansprechen, aber nicht ansprechen muss wenn man die Bricklets einzeln nutzt. Dort wird ueblicherweise Teile der Firmware abgelegt. Einige Sonsorbricklets geben die Werte per I2C, andere analog aus. Jedes Bricklet hat eine gute HArdwaredoku (Schaltplan) in der alles problemlos zu sehen ist.  :)

 

Viele Gruesse

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

ja das stimmt, aber wenn du die TF Sachen ueber USB anschliesst, dann ist da doch ein Rechner der USB Kommandos absetzen kann. Dann es ist doch egal ob er am USB Port "lauscht" oder vor dem lauschen erst noch ein paar Init-Kommandos per USB zum Tinkerforgestack sendet. - Da muss doch ein Rechner mit USB sein!?

 

Muss nicht unbedingt. Der Arduino könnte ja die Daten auch über eine simple serielle Schnittstelle (Rx/Tx, ohne den USB port) ausspucken. Prinzipiell "muss" da kein Rechner hängen. Deswegen mag ich da die Atmel/muC/Arduinos so. Programmieren, flashen und fertig. Tut völlig autonom was es soll. Wenn man eine SDcard anschließt könnte so ein Arduino die Daten zB auch völlig autonom  loggen. Dann könnte man die Serielle oder Seriell-USB-Schnittstelle zB nur fürs Debugging o.ä. verwenden.

 

Die haben aber alle keinen USB Anschluss und wenn doch, dann koennten die auch darueber kommunizieren, oder?

 

Von mir aus kannst du einen TEmperatursensor mit der Kaffeemaschine verbinden wollen, aber irgendwo muss doch Software laufen die das steuert.

Eben! Und da liegt der Unterschied. Ein Atmel/muC/Arduino den kannste programmieren, ne Batterie dran machen und in die Schublade werfen. Sofern er platz zum Speichern hat loggt der dann eben die Temperatur in der Schublade.

Und ich könnte dann, zB die Kaffeemaschine einen Kaffee kochen lassen wenn es in der Schublade unter 12°C sind. Völlig ohne PC oder so. - Ok, das ist nicht das Szenario das ich plane, aber ich hoffe es hilft dabei meinen Standpunkt zu verstehen.

 

Die Tinkerforge Bricklets haben alle eine EEPROM drauf dass man per I2C ansprechen, aber nicht ansprechen muss wenn man die Bricklets einzeln nutzt. Dort wird ueblicherweise Teile der Firmware abgelegt. Einige Sonsorbricklets geben die Werte per I2C, andere analog aus. Jedes Bricklet hat eine gute HArdwaredoku (Schaltplan) in der alles problemlos zu sehen ist.  :)

 

Danke Dir. Es ist schon eine Weile her, dass ich PCBs gelayoutet habe, darum bin ich über die inzwischen verfügbaren Arduinos auch recht glücklich. ;) Jedenfalls, bisher habe ich davon abgesehen genau nachzulesen/-vollziehen was der zusätzliche Chip auf den drei in Frage kommenden Bricklets tut.

Na mal sehen... macht ja auch wenig Sinn für die Bricklets zu zahlen, wenn man dann doch einfach nur den Sensor über I2C digital auslesen will. Wahrscheinlich sollte ich mir dann doch einfach nur die Sensoren bestellen und die ans Arduino klemmen.

 

Anyway. Danke auf jeden Fall für Deine Kommentare. Auch wenn es nicht so ganz das ist was ich will, es hat zumindest eine Falschbestellung verhindert. ;)

 

Greetz Photon

Link zu diesem Kommentar
Share on other sites

Ok, das ist nicht das Szenario das ich plane, aber ich hoffe es hilft dabei meinen Standpunkt zu verstehen.

 

Hallo photon.

 

Das habe ich alles verstanden, aber du wolltest doch Daten per USB nutzen.

 

Ich meine:

- Wenn du Daten per USB nutzen willst, hast du einen Rechner der Tinkerforgehardware ansprechen und nutzen kann.

 

- Wenn du nur einen Rechner mit seriellem I/O hast, kannst du so ohne weiteres nicht mit Tinkerforge kommunizieren. Dann musst du per Hardwareprogrammierung was machen.

 

 

Viele Gruesse

 

Der Loetkolben

Link zu diesem Kommentar
Share on other sites

Exakt.

 

Ich möchte es gerne so basteln, dass ich im Prinzip "beides" verwenden könnte.

 

Sprich, ein Modul bauen das ich zunächst an ein RPi hänge (ja, der könnte tatsächlich die nötigen TF-Skripte ausführen) aber später soll das gleiche Bauteil eventuell auch unabhängig davon laufen können (zB an der "Kaffeemaschine" ;) ).

 

Danke nochmals. Ihr habt mir auf jeden Fall beim Verständnis geholfen. Ich werde nun mal abwägen, aber ich denke ich werde mich eher für die "Hardwareprogrammierung" (=Arduino mit Sensoren) entscheiden... denn damit habe ich letztlich mehr Möglichkeiten.

 

Schönes WE. :)

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...