Hardware ansteuern - Signal an PCI-Karte

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Mit der Steckplatine und den Klemmen bist du jetzt komplett ohne Loeten ausgekommen, oder? Nicht schlecht...
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Nachtrag

Hier noch der Schaltplan dazu:
Bild

lg
Gerold
:-)

EDIT: URL zum Bild geändert
Zuletzt geändert von gerold am Mittwoch 17. Oktober 2007, 21:05, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hand
User
Beiträge: 65
Registriert: Sonntag 28. Januar 2007, 14:28

Zufällig arbeite ich in dem Bereich ;)

Sauber währe es:

USB-Microcontroller
Microcontroller mit Ethernet Stack
RS232 (hat fast jeder Micro onboard)

wenns professionell werden soll Über RS232 / Ethernet auf ne SPS zugreifen ;)

bzw RS232 auf RS485 da kannst dann dezentral kostengünstig jeder menge Steuern

Ich träume eh seit geraumer Zeit Python in irgend ner Firma als Steuerzentrale mit dezentraler Pheripherie einzusetzen, leider fehlen mir die Connections ;)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hand hat geschrieben:Sauber währe es:
USB-Microcontroller
Microcontroller mit Ethernet Stack
RS232 (hat fast jeder Micro onboard)
[...]
bzw RS232 auf RS485 da kannst dann dezentral kostengünstig jeder menge Steuern
Hallo Hand!

Ich arbeite daran. Derzeit lese ich das Buch "AVR Mikrocontroller Lehrbuch" von Roland Walter. Ich experimentiere intensiv mit dem ATMega8 und bin auf der Stufe, dass ich mit RS232 mit dem Microcontroller kommunizieren kann. Messwerte kann ich bereits vom ATMega zum PC übertragen und per PC Aktionen auslösen. (LEDs schalten ;-) )

Der nächste Schritt wird die Kommunikation mit mehreren EEproms und Mikrocontrollern per RS485, I2C und SPI sein. Vielleicht zwischendrinnen noch ein Experiment mit USB.

Ich will ja nicht langsam erscheinen, aber da es nur ein Hobby ist, werde ich noch eine Weile warten, bis ich mich um Ethernet-Verbindungen mit kleinen Mikrocontrollern kümmere. Aber ich habe mich schon informiert. Es gibt erfolgreiche Projekte mit einem ATMega168. Man muss also kein großes Geld dafür ausgeben. Aber es ist sehr komplex.

Aber du wirst sicher zugeben, für einen Anfänger ist es zuerst mal einfacher etwas mit dem Parallelport zu machen. ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hand
User
Beiträge: 65
Registriert: Sonntag 28. Januar 2007, 14:28

Ja die AVR's sind nette Dinger ;)

Ich benutz meistens die kleinen tiny2313 tiny22 und versuch mich im Moment mit Multitasking mit C unter Linux, angefangen hab ich mit ASM und dem Studio ;)

Mit dem Ethernet hab ich mich mal beschäftigt, gibt von Wilke praktisch fertige Controller die man entweder parallel oder seriell steuern kann, feine Sache :)

Mein letztes Projekt war eine Heizgriffsteuerung mit PWM und LIN-Bus Schnittstelle zum PC, liegt jetzt irgendwo hier rum,
mir fehlt einfach die Freizeit um da mal was zu Ende zu bringen ;)

Wie wärs Python ansatzweise zu portieren so dass Scripts aus einem externen bzw. internen Eprom ausgeführt werden, und die serielle Schnittstelle als Console dient? ;)
Benutzeravatar
C4S3
User
Beiträge: 292
Registriert: Donnerstag 21. September 2006, 10:07
Wohnort: Oberösterreich

War da nicht mal ein Bericht in der Linux-User zu solchen Sachen, erst vor ein paar Ausgaben?
Ah, hier: http://www.linux-user.de/ausgabe/2007/05/
Es war "LCD am LPT". Da wurde beschrieben, wie man mit ein paar Euronen Hardware ansteuern kann (Leds, kleine Anzeigen auf denen man RAM, CPU-Werte, .. ausgeben kann).
Da wurde eine Lib vorgestellt, die sowas kann, ich habe es aber jetzt gerade nicht im Kopf. Vielleicht sind da ein paar Tips dabei? Ich habe die Ausgabe sicher noch wo rumliegen.
Gruß!
py_lo
User
Beiträge: 60
Registriert: Freitag 20. März 2009, 09:12

Hallöchen,

tja da suchte ich jemanden der schonmal Hardwaremäßig mit Python was
gebastelt hat und wen finde ich da? Gerold!
(hat mir schon beim Web-Projekt sehr weitergeholfen)

Nunja lange Rede... ich knüpfe einfach mal an diesen doch schon älteren
thread an, um erstens mal zu Fragen was denn aus diesen "spielereien"
geworden ist - und ob mir jmd. bei meinem aktuellen Problem behilflich
sein kann.

Ich habe ein alix2d2 board von PC-Engines und möchte über den I2C
Bus (auf board direkt vorhanden) bis zu 16Leds ansteuern.
Den Passenden Controller PCA9552 von Philips habe ich schon gefunden.

Nun macht mir die Ansteuerung mit Python Sorgen.
Ich habe zwar ein Modul für Python gefunden (pyi2c) welches aber
anscheinend nicht für den Einsatzzweck geeignet ist da in der Hilfe steht:

"...access to I2C components through serial or parallel interface.."
Und ich habe ja bereits den I2C-Bus-Connector Hardwaremässig auf dem
Board.

Seriell / Parallel ist schon belegt.

Frage also: hat da jemand schon Erfahrung (speziell Gerold ;-) ) und kann
mir da ein paar Tips geben???

mfg
Normann
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Normann!

Vorab: Das ist nur Theorie, da ich mit Onboard-I2C-Controllern noch nie etwas gemacht habe.
py_lo hat geschrieben:Ich habe ein alix2d2 board von PC-Engines
Auf dem läuft Linux! Also nimm Linux! ;-)
py_lo hat geschrieben:Ich habe zwar ein Modul für Python gefunden (pyi2c) welches aber anscheinend nicht für den Einsatzzweck geeignet ist
Stimmt. pyi2c ist nicht für deine Zwecke geeignet. Aber in weiterer Folge, könntest du pyi2c selbst um die Möglichkeit erweitern, auch eingebaute I2C-Geräte anzusprechen. Dann hättest du ein kleines Rahmenwerk mit dem du arbeiten kannst. Dein Code würde damit ohne große Anpassungen später auch mit externen I2C-Controllern arbeiten. Außerdem könntest du diese Codeanpassung auch an den Programmierer von pyi2c schicken. Vielleicht baut er deinen Code sogar ein.
py_lo hat geschrieben:ich habe ja bereits den I2C-Bus-Connector Hardwaremässig auf dem Board.
Dann sind libi2c-dev und die i2c-tools das was du brauchst.

Unter Ubuntu: ``aptitude install libi2c-dev i2c-tools``

Mit den Kommandozeilenprogrammen i2cdetect, i2cdump, i2cget, i2cset kannst du schon mal herausfinden, wie die Kommunikation über I2C funktioniert und ob du den PCA9552 ansprechen kannst.

Du kannst diese Kommandozeilenprogramme auch direkt in dein Python-Programm einbinden. Entweder mit subprocess oder mit pexpect. Ich kenne diese Kommandozelenprogramme nicht. Wenn es mit subprocess nicht funktioniert -- weil du vielleicht auf Rückmeldungen warten musst -- dann probiere es mit pexpect.
Das dürfte das Einfachste sein, wenn du gelernt hast, mit diesen Kommandozeilenprogrammen eine Verbindung zum PCA9552 herzustellen.

In der Datei /urs/share/doc/libi2c-dev/dev-interface.gz findest du weitere Hinweise. Unbedingt durchlesen!
Dort steht z.B., dass du im Ordner /sys/class/i2c-dev/ Informationen über die I2C-Geräte findest. Weiters ist in dieser Textdatei ein C-Beispiel. Das bedeutet, dass du auch mit Python, direkt auf diese Geräte-Steuerdateien zugreifen kannst (du brauchst vielleicht ctypes dafür). Du musst also nicht unbedingt den Umweg über die Kommandozeilenprogramme (i2c-tools) machen. Wenn du das C-Beispielprogramm verstehst, dann kannst du es direkt nach Python portieren. Das bringt dir wahrscheinlich einen kleinen Geschwindigkeitsvorteil, falls du mit dem Einbinden der Kommandozeilenprogramme Zeitprobleme bekommst -- was ich aber nicht glaube, denn der I2C-Bus ist nicht besonders schnell.

Ich persönlich glaube, dass du mit dem Einbinden der Kommandozeilenprogramme (i2c-tools) mit geringem Aufwand den größten Nutzen hast und am Schnellsten ans Ziel kommst. Du willst ja keine Raumfähre damit steuern.

- http://www.lm-sensors.org/wiki/i2cToolsDocumentation
- http://www.lm-sensors.org/wiki/man/i2cdetect
- http://www.lm-sensors.org/wiki/man/i2cget
- http://www.lm-sensors.org/wiki/man/i2cset
- http://www.lm-sensors.org/wiki/man/i2cdump

------

Ich schrieb bereits, dass ich das alles nicht ausprobiert habe. Außerdem weiß ich nicht, ob es eine bessere Lösung für dich gibt. Das was ich schrieb, ist alles was mir im Moment dazu einfällt.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
py_lo
User
Beiträge: 60
Registriert: Freitag 20. März 2009, 09:12

ja danke Gerold dafür...

Auf dem Board läuft natürlich schon (voyage)linux und ich habe mir
die i2c-tools schnell mal angeschaut.

Dort gibt es auch etwas was sich py-smbus nennt welches Python-bindings für den Zugriff auf den SMBus über i2c-dev bietet.

Klingt zumindest schonmal sehr interessant.

in /dev * habe ich allerdings nur ein gerät gefunden welches "bus" heisst,
ich hoffe das isser dann auch. Aber das dürfte ich ja recht schnell rausfinden. Anonsten muss ich wohl einen neuen Kernel kompilieren...
aber eins nach dem anderen.

Nu brauch ich dann wohl erstmal die Hardware, in der Zeit werde ich mich
da noch ein wenig einlesen müssen.

Mal gucken was dabei rauskommt....
Antworten