Python und Sensoren??

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
bierfreund
User
Beiträge: 8
Registriert: Mittwoch 15. November 2006, 19:15

Hallo,

ich habe vor mit python ein Programm zu schreiben, welches auf Sensoren reagiert. Ist dies Sinnvoll, oder wie sieht es aus mit der Verarbeitung von Signalen aus?

Es soll funktionieren.

ich will ein Signal an den Pc senden. ka was da am besten ist, über Comport oder USB Mhh, also Ich will einen Sensor berühren und dadurch, dass der Stromkreislauf geschlossen wird, soll ein Signal übermittelt werden. Je nach Signal, soll eine Tondatei abgespielt werden.

Ist dies überhaupt mit Python möglich. Wie schell können Signale abgelsen werden usw. Bitte um Hilfe Danke
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

[wiki]Module#Schnittstellen[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
bierfreund
User
Beiträge: 8
Registriert: Mittwoch 15. November 2006, 19:15

thx
tao
User
Beiträge: 15
Registriert: Sonntag 12. November 2006, 21:34
Wohnort: basel
Kontaktdaten:

was du da willst ist wirklich keine grosse sache und lässt sich sehr leicht mit python bewerkstelligen. ich empfehle dir ein microcontrollerboard für deinen sensor, dass usb kann.
billig mit opensource ist arduino. kann ich dir wärmstens empfehlen. mit pySerial kannst dann sehr leicht die daten empfangen, die der sensor ausgiebt. ohne weiteres kann man so ohne grosse elektronik auch komplexere sensoren auslesen.

arduino ist hat eigene programmiersprache die an C angelehnt ist, aber sehr stark vereinfacht und nur für diesen zweck gemacht.

schau's dir an, ist echt klasse und ein board kostet keine 30 euro, egal ob klein oder gross, nur mit 100m bluetooth wird's etwas teurer.

schau dich doch mal auf:
www.arduino.cc um oder auf www.wiring.org.co
da steht wirklich alles was man wissen muss, und der python teil ich kleinkinder kram!

lg
tao
bierfreund
User
Beiträge: 8
Registriert: Mittwoch 15. November 2006, 19:15

danke, hilft mir mal sehr weiter, meine Frage ist nun, ob die Übertragung schnell ist, bzw. wie schnell die ist, weil ich gerne ein Elektronisches Schlagzeug bauen würde.

Also wie ein Akustikschlagzeug mit Pads hat, in denen die Sensoren sind. Jedoch ist die Geschwindigkeit der Übertragung gerade beim Schlagzeugspielen sehr wichtig. Möchte mir also ein Gehäuse bauen, in dem eine Platine usw. steckt, die mit den Sensoren verbunden ist. Dieses Gerät ist nun mit dem Pc verbunden, auf dem die einzelnen Lieder/Sonds/Beats sind, die je nach Sensorreaktion abgespielt werden.

Oder kann man dies auch anders bewältigen ohne Pc? also vom Pc in einen Speicher laden. Der Speicher ist mit der Platine verbunden. Somit wäre das Gerät mobiler.

Am liebsten noch eine Soundkarte, sodass ich einen Soundausgang habe. Ok ich weiß, dass geht etwas über meine zuerst dargestellten Fragen darüberhinaus, aber es ist mir wichtig, da ich sonst gar nicht mit dem Projekt beginnen würde.
alfadas
User
Beiträge: 11
Registriert: Montag 3. März 2008, 13:18

also ich habe ungefähr das selbe problem nur weiß ich nicht genau wie ich das mit dem modul bewerkstelligen soll. So möchte ich auch signale von sensoren erhalten und diese auch weiterbenutzen für ein diagramm usw

vll könnte mir einer von euch das mit dem modul und weiterem erklären.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alfadas hat geschrieben:So möchte ich auch signale von sensoren erhalten und diese auch weiterbenutzen für ein diagramm usw
Hallo alfadas!

Willkommen im Python-Forum!

Mit dem Modul pySerial kannst du Daten über die RS-232 schicken und empfangen.

Mit dem Modul pyParallel kannst du Daten über den Parallelport schicken -- was allerdings nicht empfehlenswert ist, da das mit dem Parallelport seit Windows XP nicht mehr gschei'd/verlässlich funktioniert.

Es gibt USB-Treiber, die einen RS-232/COM Port simulieren. Das heißt, dass du USB-Geräte in Python so wie ein RS-232-Gerät ansprechen kannst. Siehe auch: http://pyusb.berlios.de/

USB ist sowiso ziemlich ausbaufähig. Besonders interessant sind diese Seiten:
- http://www.siphec.com/converter/index.html#USB2SERIAL
- http://www.obdev.at/products/avrusb/index-de.html

USB kennt mehrere Modi für die Datenübertragung. Diese gehen von 1,5 MBit, 12 MBit bis zu einer Datenübertragungsrate von 480 MBit.

http://www.tu-chemnitz.de/etit/messtech ... old_da.pdf
Besonders interessant ist der Geschwindigkeitsvergleich auf Seite 8.

Als Anfänger würde ich mich aber zuerst mal auf pySerial und ein RS-232-Gerät, oder ein USB-Gerät welches einen RS-232 simuliert, stürzen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

@gerold: Die Infos würden sich gut auf der [wiki]Module/Hardware-Schnittstellen[/wiki] Seite machen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
alfadas
User
Beiträge: 11
Registriert: Montag 3. März 2008, 13:18

nur da öffnet sich ein problem in welcher weiße verarbeitet oder sendet pyserial dann die signale, denn eig. gibt es nur 1 oder 0 mehr ist nicht nötig für unsere weiteren schritter. werde mich nun erstmal mit pyserial auseinandersetzen bei fragen hab ich ja euch ^^
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alfadas hat geschrieben:nur da öffnet sich ein problem in welcher weiße verarbeitet oder sendet pyserial dann die signale, denn eig. gibt es nur 1 oder 0 mehr ist nicht nötig für unsere weiteren schritter. werde mich nun erstmal mit pyserial auseinandersetzen bei fragen hab ich ja euch ^^
Hallo alfadas!

pySerial ist nur dann eine Lösung, wenn du weißt was RS-232/UART überhaupt ist und die Gegenstelle (der Sensor) auch UART spricht.

Hier habe ich ein paar Links und Hinweise dazu: http://halvar.at/elektronik/rs232/

Du kannst also nicht einfach irgendeinen Sensor an den Seriellen Port anschließen und glauben, dass du Werte übermittelt bekommst. Meist nimmt man dazu einen Mikrocontroller. Dieser liest den Sensor aus und gibt die Daten über die RS-232-Schnittstelle an den PC weiter.

Zur Abschreckung: http://halvar.at/elektronik/mikrocontro ... _anfangen/ :-)
Was willst du machen? Und wie bereit bist du dich auch ein wenig mit Elektronik zu befassen?

Wenn du dich nicht mit Elektronik/Mikrocontroller befassen willst, dann bleibt dir nichts Anderes übrig, als dir fertig aufgebaute Sensoren zu suchen, die bereits eine definierte Schnittstelle (RS-232, USB,...) bieten.

Wenn du dich ein wenig mit Mikrocontroller befassen möchtest, dann kannst du jeden beliebigen Sensor an einen billigen Mikrocontroller (µC) anschließen und die Daten vom µC zum PC übertragen lassen. Das ist nicht sonderlich schwer. Aber man muss sich ein wenig in das Thema einlesen, bevor man Ergebnisse sieht.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alfadas
User
Beiträge: 11
Registriert: Montag 3. März 2008, 13:18

das ist nicht das problem ich habe das soweit geklärt das alles übertragen wir dnur leider bleibt uns nur die option über usb das heißt ich brauche hilfe in dem bezug, dass ich die daten also nun von einem microcontroler bekomme, aber wie bekomme ich diese als wertezuweisung in phyton ich denke nun versteht ihr das problem besser.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alfadas hat geschrieben:das ist nicht das problem ich habe das soweit geklärt das alles übertragen wir dnur leider bleibt uns nur die option über usb das heißt ich brauche hilfe in dem bezug, dass ich die daten also nun von einem microcontroler bekomme, aber wie bekomme ich diese als wertezuweisung in phyton ich denke nun versteht ihr das problem besser.
Hallo alfadas!

1.) Das hier ist kein 0815-Chat. Das ist ein Forum für Programmierer. Bitte versuche dich in Groß-/Kleischreibung und versuche ganze Sätze zu formulieren, damit man dich besser versteht.

2.) Wie können wir dir helfen, wenn du uns keine Informationen gibst? Werden die Daten bereits von einem Mikrocontroller über USB an den Computer geschickt? Oder musst du dich darum selber kümmern? Welche Sensoren? Wieviel Daten? Wie oft die Minute sollen Daten abgefragt werden? Was ist schon erledigt und was noch nicht? Hast du Links zu Datenblättern oder anderen Informationen, die ein wenig Licht in die Sache bringen können? Anzahl der Sensoren. Usw.

Wir helfen dir gerne, aber du musst schon mit ein paar Informationen rüber kommen. Vielleicht genügt ja schon eine USB-TTL-Schnittstelle. Aber das kann ich mangels Informationen noch nicht abschätzen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

gerold hat geschrieben:Es gibt USB-Treiber, die einen RS-232/COM Port simulieren. Das heißt, dass du USB-Geräte in Python so wie ein RS-232-Gerät ansprechen kannst. Siehe auch: http://pyusb.berlios.de/
Dazu gibt es auch Hardware: so habe ich an meinem Laptop kein Sereiellen anschluss aber so ein USB-Dingens, welches einen RS-232-Port hat und wo ich serielle Geräte anschließen kann. Wenn man ein Ding mit dem richtigen Chipsatz erwischt (da muss man wohl etwas achten, muss aber gar nicht teuer sein), dann wird das Gerät unter Linux unter /dev/ttyUSB0 verfügbar. Sehr angenehm, wie ich finde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben:Wenn du dich ein wenig mit Mikrocontroller befassen möchtest, dann kannst du jeden beliebigen Sensor an einen billigen Mikrocontroller (µC) anschließen und die Daten vom µC zum PC übertragen lassen.
Hallo!

Hier sind ein paar Bilder die zeigen wie das in die andere Richtung aussieht. Es wird über die Serielle Schnittstelle ein Mikrocontroller angesteuert, welcher ein (im Programm bis zu 20) Relais schaltet.

http://www.roboternetz.de/phpBB2/zeigeb ... 915#344915

Und das ist schon mit einem Hardwareaufwand von unter 15 Euro möglich. Genau so kann man auch Sensoren auslesen und die Werte zum PC übertragen lassen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alfadas
User
Beiträge: 11
Registriert: Montag 3. März 2008, 13:18

Ok.

Ich wollte niemanden provozieren. Doch von anderen Foren bin ich es nicht gewöhnt Groß- und Kleinschreibung zu beachten.

Doch nun mehr zum Thema.

Die Daten laufen über einen Microcontroller vom speziellen optischen Sensor, dessen Aufbau nicht relevant ist. Hierbei ist der Microcontroller über USB mit dem PC verbunden. Nun stellt sich die Frage wie rufe ich die 60 Signale pro Minute mit Phyton ab und kann sie danach weiterverwenden.

Hoffe diese Erklärung hat mehr Licht in die Angelegenheit gebracht.


Ich entschuldige mich nochmals für meine unvollständigen und nicht passablen Sätze.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alfadas hat geschrieben:Hierbei ist der Microcontroller über USB mit dem PC verbunden.
Hallo alfadas!

Wenn du Glück hast, dann installiert sich auf dem Computer automatisch eine neue, virtuelle RS-232-Schnittstelle, sobald du den Mikrocontroller am Computer anschließst.

Wenn du weniger Glück hast, dann musst du den zugehörigen Treiber installieren. Aber es wird danach auch eine virtuelle RS-232-Schnittstelle simuliert. Der, der den Mikrocontroller programmiert hat, weiß welcher Treiber zu installieren ist.

Wenn du weniger Glück hast, dann musst du den Treiber installieren und es steht danach trotzdem keine neue, virtuelle RS-232-Schnittstelle zur Verfügung.

Für die ersten beiden Fälle ist pySerial die Python-Schnittstelle deiner Wahl. Und für den dritten Fall musst du dich mit pyUSB befassen. Ich kenne pySerial, aber mit pyUSB habe ich noch nicht ernsthaft etwas gemacht.

Aber zuerst mal herausfinden, wie die Verbindung stattfindet.

Unter Windows:

Trenne den Mikrocontroller vom Computer.

START-->Ausführen: Dort gibst du CMD ein und drückst ENTER. Danach befindest du dich in der DOS-Konsole. Dort gibst du den Befehl "MODE" ein. Hier werden dir die vorhandenen COM-Schnittstellen aufgezeigt.

Stecke jetzt den Mikrocontroller über USB an.

Starte eine **zusätzliche** DOS-Konsole und führe den Befehl "MODE" dort noch einmal aus. Vergleiche! Schau nach, ob eine neue COM-Schnittstelle hinzugekommen ist. Wenn JA, dann hast du Glück und kannst direkt mit pySerial arbeiten.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alfadas
User
Beiträge: 11
Registriert: Montag 3. März 2008, 13:18

OK

Werde ich versuchen und berichte euch davon^^

danke dir
alfadas
User
Beiträge: 11
Registriert: Montag 3. März 2008, 13:18

So, wie versprochen melde ich mich zurück. Wir haben mit unserem betreuer gesprochen und wir hätten sogar die Möglichkeit über eine parallele Schnittstelle. Ich habe auch nachgesehen, doch ich werde nicht ganz schlüssig, ob ich noch weitere Treiber oder Ähnliches brauche.

Zudem hab ich Probleme mit den Zeilen:

>>> import parallel
>>> p = parallel.Parallel() #open LPT1
>>> p.setData(0x55)


da mir diese vorher noch nie über den Weg gelaufen sind.

Hoffe ihr könnt mir ein weiteres mal helfen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

alfadas hat geschrieben:wir hätten sogar die Möglichkeit über eine parallele Schnittstelle
Hallo alfadas!

Kläre ab, ob du die Möglichkeit hast, über USB auf einen simulierten COM-Port zuzugreifen. Das ist nämlich einfacher als das Installieren von pyParallel.

Wenn das nicht möglich ist, dann musst du wohl mit pyParallel arbeiten. Dafür ist es zuerst mal wichtig zu wissen, welches Betriebssystem auf dem Computer läuft.

Irgendwo habe ich mir mal aufgeschrieben, welches der beste Treiber dafür ist. Aber das suche ich erst dann raus. -- Ich finde nichts. Suche hier im Forum nach "pyParallel". Vielleicht findest du hier einen Hinweis. -- aber nur, wenn du keinen simulierten COM-Port kriegst. Denn das mit dem Parallelport ist Murks.

mfg
Gerold
:-)
Zuletzt geändert von gerold am Montag 10. März 2008, 13:57, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
alfadas
User
Beiträge: 11
Registriert: Montag 3. März 2008, 13:18

danke für die schnelle Antwort.

Also USB ist bei uns nicht wirklich möglich. Deshalb kmüsste ich mich in parallele Schnittstelle einarbeiten, doch ich weiß nicht wie wo was?? damit bin ich etwas überfordert. Eig. liegt mein Problem ja noch relativ einfach, denn ich möchte "nur" ein SIgnal 1 oder 0 von der schnittstelle ablesen.

Zur Zeit benutezn wir Windows XP
Antworten