Forum: Mikrocontroller und Digitale Elektronik QR/Barcode-Reader mit serieller Schnittstelle an ATmega128A


von Daniel D. (__daniel__)


Lesenswert?

Hallo liebe Helfer,

ich habe ein paar Fragen:

Ich möchte ein QR-Code-Lesegerät mit serieller Schnittstelle an einen 
ATmega128A anschließen. Dieser µC besitzt zwei UARTs. Die Eine habe ich 
bereits belegt (RXD1/INT2/PD2 und TXD1/INT2/PD2), mit dieser verbinde 
ich den µC mit einem PC. Die andere UART (RXD0/PDI/PD0 und TXD0/PDO/PD1 
liegt auf den Pins die ich auch für zum ISP-Progammieren verwende.

1. kann ich alle Pins die ich zum Flashen über ISP nutze ohne weiteres 
nachträglich (also nach dem programmieren des µCs) auch als I/O-Pins 
verwenden (und in dem Fall speziell die beiden UART-Pins)?

2. der QR-Reader wird, entweder mit echter serieller Schnittstelle 
ausgeführt also D-Sub 9-pol, oder mit USB-Schnittstelle. Ich weiß 
aktuell nicht, ob die in der Version "USB-Schnittstelle" einfach einen 
UART-USB-Wandler wie z.B. den FTDI FT232RL oder Silabs CP2102 verbaut 
haben oder es sich um eine "richtiges" USB-Gerät handelt.

Möglichkeiten um den QR-Reader anzuschließen:
 - serielle Schnittstelle (D-Sub 9-pol): nach dem Programmieren kleine 
Schaltung mit MAX232 zwischen QR-Reader und µC hängen und anstöpseln?
 - serielle Schnittstelle mit USB-Ausführung: nach dem Programmieren 
kleine Schaltung mit FT232RL oder CP2102  zwischen QR-Reader und µC 
hängen und anstöpseln?
- "richtiges" USB-Gerät: nicht möglich, da keine USB-Kompatibilität bzw. 
Schnittstelle am µC.
- Zusatz: Wenn ich bei der echten seriellen Schnittstelle (D-Sub 9-pol) 
direkt am µC einen FT232RL oder CP2102 verwenden möchte, brauche ich 
dann zusätzlich nochmal einen Adapter z.B. 
https://www.reichelt.de/USB-Konverter/DIGITUS-DA-70156/3/index.html?&ACTION=3&LA=2&ARTICLE=99617&GROUPID=6105&artnr=DIGITUS+DA-70156 
?

Stimmt das so?

Vielen Dank für eure Hilfe im Voraus!

Grüße, Daniel

von Uwe K. (ukhl)


Lesenswert?

Daniel D. schrieb:

> 1. kann ich alle Pins die ich zum Flashen über ISP nutze ohne weiteres
> nachträglich (also nach dem programmieren des µCs) auch als I/O-Pins
> verwenden (und in dem Fall speziell die beiden UART-Pins)?

Normalerweise ist das kein Problem.
Solange der Programmer die Pegel noch wechseln kann und die Impulse der 
SPI die angeschlossene Hardware nicht stört. In deinem Fall sehe ich 
keine Probleme.

> 2. der QR-Reader wird, entweder mit echter serieller Schnittstelle
> ausgeführt also D-Sub 9-pol, oder mit USB-Schnittstelle.

Meine Empfehlung ist die direkte RS232. Das machen viele Kassen 
immernoch so.
Denke daran, dass Du den Scanner auch mit Strom versorgen must.
Meist sind das 5V. Prüfe mal ob Du den Scanner an Pin9 mit Strom 
versorgen kannst.

Info:
Barcodescanner arbeiten entweder mit RS232 oder PS/2 Tastatur. Das 
machen sie entweder Direkt oder als USB. Oft kann man das in Scanner 
einstellen.

Welcher Scanner soll es denn werden (Hersteller / Typ)?

von Daniel D. (__daniel__)


Lesenswert?

Hallo Uwe,

danke für deine Antwort.

Du meinst also direkt RS-232 in Kombination mit dem MAX232 am µC?

Das Lesegerät soll schon etwas professionelleres sein. Ich dachte da an 
dieses von der Firma Keyence: 
http://www.keyence.de/products/vision/barcode/sr-700/lineups/index.jsp
Der Scanner arbeitet soweit ich weiß mit 24V. Man bekommt da wohl noch 
ein zusätzliches Gerät dazu in dem Signal und Spannungsversorgung 
gesplittet werden. In dem Bildchen auf der Seite wäre das für die RS-232 
scheinbar das Gerät "N-R2"

Ich habe den Scanner noch nicht. Deswegen kann ich auch nichts testen. 
es geht erstmal um die Auswahl bzgl. der Schnittstelle.

Viele Grüße,

Daniel

von Uwe K. (ukhl)


Lesenswert?

Daniel D. schrieb:
> Du meinst also direkt RS-232 in Kombination mit dem MAX232 am µC?

Das sehe ich als beste/einfachste Lösung. Alle Kombinationen (Außer 
Ethernet) arbeiten mit einer UART. Auch die USB-Variante ist ein UART 
per USB. RS-232 mit MAX232 ist am einfachsten und hat keine Nachteile.

von Frank K. (fchk)


Lesenswert?

Daniel D. schrieb:

> 1. kann ich alle Pins die ich zum Flashen über ISP nutze ohne weiteres
> nachträglich (also nach dem programmieren des µCs) auch als I/O-Pins
> verwenden (und in dem Fall speziell die beiden UART-Pins)?

Du kannst zB einen MUltiplexer nehmen wie diesen:
http://www.onsemi.com/pub_link/Collateral/74FST3257-D.PDF

Gibts von verschiedenen Herstellern: ON, Fairchild TI,... unter leicht 
unterschiedlichen Bezeichnungen. Den S-Pin zum Selektieren zwischen A 
und B Pins schließt Du an Reset an. Reset Low -> ISP Reset High -> UART. 
So kommt sich garantiert nichts ins Gehege.

>  - serielle Schnittstelle (D-Sub 9-pol): nach dem Programmieren kleine
> Schaltung mit MAX232 zwischen QR-Reader und µC hängen und anstöpseln?

genau so. Mit dem Multiplexer-Chip brauchst Du dann nicht einmal 
umstecken.

fchk

von Wolfgang (Gast)


Lesenswert?

Daniel D. schrieb:
> - serielle Schnittstelle mit USB-Ausführung: nach dem Programmieren
> kleine Schaltung mit FT232RL oder CP2102  zwischen QR-Reader und µC
> hängen und anstöpseln?

Dafür wirst du eher einen USB-Host brauchen.

von Daniel D. (__daniel__)


Lesenswert?

Hey!

Frank K. schrieb:
> Du kannst zB einen MUltiplexer nehmen wie diesen:
> http://www.onsemi.com/pub_link/Collateral/74FST3257-D.PDF

Tolle Lösung! Das werde ich so machen. Ich habe mir jetzt überhastet den 
MAX233ACCP bei Reichelt bestellt. Schön und gut. Leider über 10€ teuer 
und erst anschließend festgestellt, dass es auch den MAX233CCP für 
weniger als die Hälfte gibt.  Verdammt. Einziger Unterschied wohl "nur" 
die geringere Abtastrate beim CCP. Naja :D auch wieder schlauer 
geworden.

Uwe K. schrieb:
> Das sehe ich als beste/einfachste Lösung. Alle Kombinationen (Außer
> Ethernet) arbeiten mit einer UART. Auch die USB-Variante ist ein UART
> per USB.

Habe mich jetzt dafür entschieden, ja. Woher weißt du dass auch die 
USB-Variante ein UART per USB ist? Könnte ja auch ein µC im Gerät 
verbaut sein der als USB-Host-Controller fungiert...das weiß ich eben 
(noch) nicht. Ob es eine UART mit nachgeschaltetem FTDI-Chip oder ein 
USB-Host...Wie auch immer. Ich entscheide mich für die RS232-Variante in 
Kombination mit dem Multiplexer-Chip und MAX233.

Danke an Alle!

Grüße, Daniel

von Daniel D. (__daniel__)


Lesenswert?

Kurze Frage noch...ich habe bei Conrad jetzt die Bauteile SN74HC257 oder 
auch SN74HC157 gefunden die zu dem von dir vorgeschlagenen IC 
vergleichbar sein könnten. Wo ist denn der Unterschied zwischen den 
beiden?

Sind die ICs bidirektional? Also Ausgang/Eingang <--> Ausgang/Eingang?

Danke und Viele Grüße,

Daniel

von Uwe K. (ukhl)


Lesenswert?

Ich denke Du brauchst keinen Mutiplexer nur um den Controller in der 
Schaltung programmieren zu können. Ich sehe im Moment nicht, was sich an 
den ISP stören könnte. Mach dir das Leben nicht so schwer.

von Daniel D. (__daniel__)


Lesenswert?

Hey Uwe,

ich finde den Ansatz von Frank gut, da ich mir so die Umsteckerei sparen 
kann. Und wenn ich den QR-Reader in Betrieb nehme, werde ich wohl einige 
Male neu programmieren müssen, testen, neu programmieren usw. Da lieber 
ne kleine Schaltung statt dauernd umstecken. Macht doch Sinn, oder?

Daher trotzdem nochmal die Frage: Unterschied SN74HC257 <-> SN74HC257?

Und sind die ICs bidirektional? Soweit ich das nach dem Datenblatt 
verstanden habe leider nicht?! Gibts da ne einfache Lösung? Die ICs 
cd4051, 52, 53 sind bidirektional aber doch irgendwie nicht für diesen 
Fall gedacht...

von Wolfgang (Gast)


Lesenswert?

Daniel D. schrieb:
> Sind die ICs bidirektional? Also Ausgang/Eingang <--> Ausgang/Eingang?

Was genau verstehst du an der Schaltung auf S.2 der Datenblätter nicht? 
Logikgatter sind nie bidirektional.

von Frank K. (fchk)


Lesenswert?

Daniel D. schrieb:
> Hey Uwe,
>
> ich finde den Ansatz von Frank gut, da ich mir so die Umsteckerei sparen
> kann. Und wenn ich den QR-Reader in Betrieb nehme, werde ich wohl einige
> Male neu programmieren müssen, testen, neu programmieren usw. Da lieber
> ne kleine Schaltung statt dauernd umstecken. Macht doch Sinn, oder?
>
> Daher trotzdem nochmal die Frage: Unterschied SN74HC257 <-> SN74HC257?

geht nicht

> Und sind die ICs bidirektional?

Die, die ich Dir genannt habe, schon. Das sind einfache MOSFET-Switches.

> Soweit ich das nach dem Datenblatt
> verstanden habe leider nicht?! Gibts da ne einfache Lösung? Die ICs
> cd4051, 52, 53 sind bidirektional aber doch irgendwie nicht für diesen
> Fall gedacht...

... und haben nicht wirklich gute Werte. Sind ja auch aus den 70'er 
Jahren, damals ging das nicht besser. Wenn dann 74HC40xx.

Alternative: ein 74HC125 und ein 74HC126. Einfach zu bekommen. Sind 
einfache Buffer mit Enable - beim einen invertiert, beim anderen nicht. 
Alle Enables an !RESET, und die jeweiligen Buffer in die Zuleitungen zum 
ISP und zum Reader, und zwar so, dass die Buffer zum ISP durchgeschaltet 
sind, wenn !Reset Low und die anderen Buffer sperren.

von Uwe K. (ukhl)


Lesenswert?

Daniel D. schrieb:
> Da lieber ne kleine Schaltung statt dauernd umstecken.

Wieso umstecken? Komplett aufbauen und Programmieren ohne Umstecken.
Du kannst den uC auch mit angeschlossenen Barcodeleser programmieren.
Das hält er aus. Deswegen heist es ISP ( In System Programmierung ).
Und ja, man kann die ISP-Pins natürlich auch für die Schaltung vewenden.
Wie soll man sonst einen ATtiny13 programmieren? Die hälfte aller Pins 
werden für ISP verwendet. Lass den Multiplexer weg und stecke nicht um.

von Daniel D. (__daniel__)


Lesenswert?

Hey,

Uwe K. schrieb:
> Deswegen heist es ISP ( In System Programmierung ).
> Und ja, man kann die ISP-Pins natürlich auch für die Schaltung vewenden.
> Wie soll man sonst einen ATtiny13 programmieren?

Ich erinnere mich noch dunkel, dass ich schonmal einen Tiny zerstört 
habe weil ich eine Last (Summer) angeschlossen lassen habe habe zwischen 
VTG und PB7 während des Programmierens. Ich glaube zumindest so war das. 
Dieses Projekt habe ich damals nachgebaut: 
http://www.avr-projekte.de/tinyclock.htm

Lieber wäre es mir jedenfalls das zu trennen. Ich habe eine Schaltung 
die ich auf keinen Fall kaputt machen möchte. Naja..aber wenn du sagst 
das geht ohne Probleme...

Wolfgang schrieb:
> Was genau verstehst du an der Schaltung auf S.2 der Datenblätter nicht?
> Logikgatter sind nie bidirektional.

Ich lese bei manchen Datenblättern von Multiplexern "Input/Output" auf 
"Output/Input" (z.B.74HC4051) . Das suggeriert mir, dass ich, würde ich 
so einen an meinen µC anschließen die Pins des Controllers nach belieben 
als Eingang oder als Ausgang nutzen kann. Genau das möchte ich auch. 
Tatsächlich ist ja z.B. TxD ein Ausgang und RxD ein Eingang. Bei anderen 
ICs steht wiederum an bestimmten Pins explizit Input und an bestimmten 
Pins Output. Also nur eine Richtung.

Der 74FST3257 ist eigentlich genau ein solcher wie ich ihn gerne hätte. 
Nur finde ich ihn nicht im DIP/DIL-Gehäuse, leider. Kennt jemand evtl. 
einen ähnlichen Chip den es bei Conrad oder Reichelt gibt?

Die Lösung mit dem 74HC125/126 muss ich mir nochmal genauer anschauen..

Viele Grüße und ein schönes WE!

Daniel

von Daniel D. (__daniel__)


Lesenswert?

Daniel D. schrieb:
> Der 74FST3257 ist eigentlich genau ein solcher wie ich ihn gerne hätte.
> Nur finde ich ihn nicht im DIP/DIL-Gehäuse, leider. Kennt jemand evtl.
> einen ähnlichen Chip den es bei Conrad oder Reichelt gibt?

Nachtrag: gefunden! Leider nicht als DIP aber es gibt ja diese kleinen 
SMD-Adapterplatinen.
Typ: TS5V330C
http://www.conrad.de/ce/de/product/1187350/Linear-IC-Texas-Instruments-TS5V330CDBQR-Gehaeuseart-SSOP-16?ref=searchDetail

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.