mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Messwertausgabe eines Mikrocontrollers an Drucker per USB


Autor: Kevin Schrater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,

ich möchte Meßwerte eines µC (nicht USB-fähig) am besten über UART per
USB an einen Drucker senden (ohne PC-Verbindung).
Welcher Kontroller eignet sich hierfür für den Anschluß an meinen µC?
Habt ihr Lösungsansätze?

Danke schon mal

Kevin

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
such mal bei conrad unter "usb modul" aber ich denke nen usb drucker
anzusteuern ist irgendwie nicht so toll. paralleldrucker gehen viel
einfach, dann kannst du den ascii standardtreiber nehmen und dann schön
drucken. korrigiert mich wenn ich falsch liege :)

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Welcher Kontroller eignet sich hierfür für den Anschluß an meinen µC?
Einer, der einen USB-Host mit entsprechendem Stack zur Verfügung
stellt. Weiterhin ist der Aufbau der Drucker-Protokolls von Nöten.
>Habt ihr Lösungsansätze?
Daten irgendwo (Flash-Card o.ä.) zwischenspeichern, dann Controller an
PC anschliessen, und dann an den Drucker ausgeben.
Ist wesentlich unanstrengender.

Autor: SIGINT (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kevin:
  Das wird wahrscheinlich mit USB nicht funktionieren: Du brauchst
dafür einen USB-Hostcontroller... der wird
1.) wahrscheinlich schwer zu bekommen sein
2.) relativ teuer sein
3.) Nicht so einfach anzusteuern sein, wie die Schnittstellenconverter
4.) eine relativ breitbandige Anbindung benötigen

Als alternative wäre ein serieller oder paralleler Drucker
wahrscheinlich besser. Es gibt kleine "Kioskdrucker", die man leicht
irgendwo einbauen kann und seriell ansteuerbar sind... schau mal bei
Ebay.

Gruß,
  SIGINT

Autor: walifogel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die meisten Preiswerden Drucker sind so genannte GDI Drucker, die Daten
werden im PC aufbereitet und dann an den Drucker Punkt für Punkt
gesendet.

Du müsstest den PC an dieser stelle emulieren.

Die einzige Möglichkeit ist, einen ''vollwertigen'' Drucker über
seine ESC Sequenzen zu steuern. Bei Grafik, musst du dann, deine
Grafik, in ein Punktmuster übersetzen und dann an den Drucker als ESC
Steuersequenz ausgeben.

Das heißt du musst einen eignen Druckertreiber schreiben.

wf

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei Atmel gehen Controller in Produktion mit USB-Hostmode on Board.
ATUSB1286/1287/646/647.
Ich empfehle mal, die Datenblätter gründlich zu studieren.
Sinnvoller erscheint mir, entweder einen Bondrucker (RS232/Centronics)
oder einen Postscript-Drucker(RS232/Centronics). Postscript ist voll
dokumentiert und deshalb ebenfalls implementierbar. Davon ab, Epsons
ESC-P ist noch lange nicht tot, z.B. für Arztpraxen gibt es immer noch
Nadeldrucker. Und das können viele Laser auch noch (Epson Emulation).

Gruss
Jadeclaw.

Autor: Tubie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
solange es nur um Meßwerte (ohne Grafik) geht, könnte man doch fast
jeden "älteren" Drucker mit Centronics Schnittstelle nehmen. Habe
hier noch einen Epson Stylus Photo 700 und einen HP Laserjet 6L stehen.
Diese lassen sich unter DOS mit > copy autoexec.bat lpt1 < herforagend
steuern.

Gruß,
Tubie

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philips hat den ISP1160. Der ist für 7,25 Euro bei Reichelt zu kriegen.
Das Problem wird aber trotzdem der Treiber für den Drucker sein:
Entweder gibt es dazu irgendwelche Dokumentation (linux-Treiber), oder
wenn er zu den "besseren" Druckern gehört (HP, Epson), dann
unterstützt er u.U. auch die entsprechenden Protokolle.

Autor: Bernd Rüter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh mal auf http://www.saelig.com nach dem USBWiz! Ein Chip für alles.

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm jetzt bin ich aber auch stutzig, Tubie meinte ja auch man kann
einfach auf die schnittstelle ausgeben und mit basic gabs ja auch immer
lprint(). was für daten verschicken die denn dann auf den drucker? muss
man da wirklich nen komplizierten treiber schreiben?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es kommt drauf an. Zunächst mal gibt's, wie schon erwähnt wurde,
GDI-Drucker. Das sind Billigst-Spargeräte, wo man einen ausreichend
leistungsstarken Prozessor eingespart hat. Stattdessen wird der
Löwenanteil der Arbeit im PC gemacht. Die funktionieren dann auch nur
auf einem PC und nur unter Windows, weil der Treiber auch die
Druckerlogik enthält. Informationen über die Ansteuerung sind natürlich
nicht verfügbar. Sowas selbst anszusteuern ist daher aussichtslos.
Dann gibt's noch richtige Drucker. An die kann man z.B. einfach
ASCII-Text schicken, und den drucken sie dann einfach so aus. Wenn man
Grafik haben will, gibt's spezielle Protokolle, über die man die Daten
an den Drucker schicken muß. Da hängt's dann vom Drucker ab, welches
Protokoll er kann. Das ließe sich oft durchaus noch in einem µC
implementieren, denke ich. Bei USB wird's hier aber auch schon
schwierig, weil man dann auf der µC-Seite einen USB-Host braucht, über
den man den Drucker ansteuern kann. Ein paralleler (nicht-GDI-)Drucker
dagegen läßt sich einfachst ansteuern und ist mit Sicherheit die beste
Lösung für sowas.

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo genauso hab ich mir das auch vorgestellt, auf ebay kriegt man für ein
paar münzen schon einen alten nadeldrucker (tinte ist irgendwie doof
weil die immer eintrocknet wenn man sie nicht benutzt), ich hab noch
nen alten star nl-10, der ist schon etwaaaaas älter hehe. Das ding
arbeitet immer noch mit den alten bändern und da könnte man
sicherlicher nen µC dranbauen. Irgendwann probier ich das mal aus. Ich
glaub im Handbuch steht sogar noch drin wie die ascii commandos gehen.
Sowas haben die hersteller ja damals reingeschrieben!

Autor: Kevin Schrater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schon mal für die zahlreichen Antworten.

Wenn ich aber bei USB bleiben will, sollte mir ja der Hersteller das
USB-Protokoll zur Verfügung stellen.
Gibt es einen, der das macht? Brother z.B. macht es nicht.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst hier zwei Dinge voneinander trennen.

Die Ansteuerung von USB-Druckern besteht aus zwei getrennten Teilen -
der reinen Datenübertragung (das ist eine USB-Standardgeräteklasse und
dürfte bei fast allen USB-Druckern identisch sein) und der Aufbereitung
der zu druckenden Daten.

Für den ersten Teil gibt es eine Lösung*, mit der Du mit zwei Chips
einen USB-Drucker quasi wie einen Paralleldrucker ansprechen kannst,
diese Lösung besteht aus einem fertig programmierten Microcontroller
(anscheinend ein ARM7 aus der LPC2xxx-Serie von Philips) und einem von
diesem angesteuerten USB-Host-Controller.

Deine Schaltung kommuniziert mit dem fertig programmierten
Microcontroller über SPI und kann über diese Schnittstelle die zu
druckenden Daten an den Drucker senden (soweit also "quasi", da SPI
ja nicht parallel ist ...).

Der zweite Teil hängt vom verwendeten Drucker ab und ist völlig
unabhängig von der verwendeten Druckerschnittstelle. Die hier zu
treffenden Entscheidungen sind für USB-, Parallel- und auch
Netzwerkdrucker die selben.

Es empfiehlt sich dringendst, einen Drucker zu verwenden, der über
"Eigenintelligenz" verfügt und über eine standardisierte
"Druckersprache" angesteuert werden kann - Kandidaten dafür sind
ESC/P2 (Epson), PCL und natürlich Postscript.

Nur bei der Verwendung einer solchen "Druckersprache" besteht die
Chance, den Drucker durch einen anderen ersetzen zu können, sollte er
ausfallen oder nicht mehr lieferbar sein.

"GDI"-Drucker oder "host-based"-Drucker verwenden meist völlig
undokumentierte und nicht standardisierte "Druckersprachen", so daß
eine Entwicklung für so etwas eine reine Insellösung wäre, die
spätestens beim Erscheinen des Nachfolgermodells ein Kandidat für die
Tonne/Neuentwicklung ist. Das ist leider auch bei den meisten der
einfachen Tintenstrahldrucker der Fall.

Für manche dieser Drucker gibt es Druckertreiber im Quelltext, diese
findet man als Bestandteil von Ghostscript.

*) http://www.ghielectronics.com/USBwiz.htm

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PCL5 (Julius Packard), ESC/P2 (Epson) etc müssten eigentlich
offenliegen...
Wie man das aber einem USB-Drucker verpult, wüsste ich nicht.
Linux-Kernel-Treiber vielleicht mal angucken.

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich möchte Meßwerte eines µC (nicht USB-fähig) am besten über UART per
>USB an einen Drucker senden (ohne PC-Verbindung).

UART per USB???

Dann würde ich wie oben schon genannt nach einem RS232 fähigen Drucker
suchen. Du ersparst die sehr viel Aufwand und Arbeit.

MFG

Kai

Autor: Kai Riek (kairiek)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Ich glaube kaum, dass die Hersteller ihr USB-Protokoll rausrücken.

Autor: Philipp Karbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum auch den ganzen USB unsinn? das ist doch total viel aufwand und
man findet die drucker für ein paar euro bei ebay das ist doch wirklich
kein problem!

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da das nur über einen USB-Host auf der Mikrocontroller-Seite geht,
vielleicht nach der USB-on-the-go Norm, ist der Áufwand hoch. Eine
fertige Lösung mit dem ISP1161 und einem LP... Prozessor von Philips,
die von RS232 auf USB-Host wandelt gibts hier:
http://www.ghielectronics.com/USBwiz.htm
Ich habe einen Laserjet mit seriellem und parallelen Anschluß, der
versteht auch HP-GL Vektorformat (sollte jeder LJ-kompatible können),
damit kann man Messkurven mit wenig Aufwand drucken.

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na Rufus hatte ja auf denselben USBwiz hingewiesen, habs erst jetzt
gelesen.
Was jedenfalls nicht geht, ist ein RS232-USB-Wandler mit FTDI oder
Prolific-Chip, das ist immer nur ein USB-Device, kein USB-Host

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@USBwiz:
Ein bischen pervers ist das ja schon, einen ARM als Sklaven für einen
AVR arbeiten zu lassen...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja - wenn Du einen USB-Host-Stack für einen AVR hast, nur her damit!

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meinte das eher so, dass der ARM dann gleich den Job des AVR
übernehmen könnte.
Ich könnte dir einen Stack USB-Hosts auf nen AVR kleben...

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Links auf USB-Projekte mit AVR gibts hier:
http://www.obdev.at/products/avrusb/benefits.html
aber einen Drucker so anzusteuern hat noch keiner geschafft

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt auch noch eine Japaner, der mit einem MPEG1-Video vorführt, wie
er eine USB-Maus am AVR betreibt:
http://www.asahi-net.or.jp/~qx5k-iskw/robot/usbhost.html
leider gibt es anscheinend keine englische Version dieser Seite, daher
sehe ich vor allem Fragezeichen. Die Quelltexte sind aber downloadbar.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christoph:

Der OSBDEV-USB-Stack ist ein *Device*-Stack, damit kann kein Drucker
angesteuert werden.

Abgesehen davon unterstützen diese Software-USB-Stacks (OSBDEV und
Igor) auch nur low-speed-USB mit 1.5 MBit/sec, während USB-Drucker
full-speed-USB-Geräte (mit 12 MBit/sec) sind.

Das was der Japaner da in seinem MPEG-Video vorführt ist ein
low-speed-USB-Host-Stack (eben auch 1.5 MBit/sec), mehr ist in reiner
Software einfach nicht möglich.
HIDs (Tastaturen und Mäuse) sind i.d.R. low-speed-Geräte, deswegen
funktioniert sowas.



Was erforderlich wäre, ist ein USB-Host-Stack, der mit einem
(Hardware-) USB-Host-Controller wie dem Philips ISP1160
zusammenarbeitet.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.