Forum: Mikrocontroller und Digitale Elektronik Spezial Barcode Scanner


von Flo F (Gast)


Lesenswert?

Hallo Forum,

ich moechte einen etwas ungewoehnlichen Barcodescanner bauen.
(Die Suche findet nur einen Beitrag - und der sagt 'vergiss es' :) )

Es geht darum, auf Eppendorfgefaesse ( kleine Plastikdinger mit Deckel,
1,5 - 2 ml Volumen ) geklebte Barcodes zu lesen.
Der Deckel, auf den der Barcode soll bietet mir ca. 5x5 mm an Platz -
das sollte prinzipiell fuer einen Datamatrix (
http://en.wikipedia.org/wiki/Datamatrix ) Code ausreichen.

Meine Ideen bisher: der Sensor wird in einem Zylinder montiert und
jeweils auf das Gefaess gestuelpt. Dadurch erreiche ich einen (im
Milimeterbereich) definierten Abstand, wenig Streulicht, und damit
hoffentlich gute Bilder, die die Auswertung einfacher machen. Ausserdem
kann iche einen Schalter einbauen, der erkennt wann ein Gefaess
vorliegt.

Die Aufnahme soll per USB an einen PC ueberspielt und dort ausgewertet
werden ( Der PC haelt die Datenbank Barcode -> was ist eigentlich in
dem Gefaess vor, und soll spaeter Experimentplanung & Kontrolle machen,
ist obligatorisch, und es gibt bereits C Bibliotheken um Datamatrix zu
interpretieren ).

Ich wuerde gerne einen Atmega einsetzen, im Zweifel auch mit externem
Ram.

Meine Probleme:
-Was fuer einen Sensor setzt man fuer sowas ein? CCD? CMOS? Woher in
Einzelstuecken? Eureca bietet Mustersets an - von Linearsensoren. Damit
kann ich aber keinen Matrixcode lesen ;). Sonys gibt's wohl bei Eureca
auch in "Kleinmengen". Was immer das heissen mag - bin auf dem Gebiet
Anfaenger.
Ein ICX258AL-7  liest sich 'nicht schlecht' - braucht aber wohl einen
SMD-Timing & Pulsgenerator.


-Optik: Brauch ich eine Linse? Ein 1/4" Sensor haette, wenn
quadratisch, ja eine Kantenlaenge von ~ 4,5mm. Ein 1/3" ca 6mm. Das
entspraeche ja gut meiner Codeoberflaeche.
Wo wuerde ich sowas beziehen koennen? Sollte ich meinen Optiker
bestechen?


Vielen Dank fuer euer Feedback,
mit freundlichen Gruessen
Flo

von Thomas (Gast)


Lesenswert?

>Linse?

Ich sag mal ja, wie willst du denn sonst eine Abbildung vom Objekt auf
den Sensor machen? Du kannst ja nicht einfach das Ding auf den Sensor
kleben ;-)

Frei aus dem Bauch würde ich mal sagen, dass ein Mega damit überfordert
sein wird.

von tomafa (Gast)


Lesenswert?

Hallo,

Bitte nicht böse sein aber da ist es
einfacher das man einen Handscanner dafür schlachtet.

Die kann man auch auf dauerread stellen und emulieren über USB ein
Keyboard das dir den Barcode als Text liefert.
z.B
http://www.datalogic.de/_vti_g2_p_det.aspx?idp=684db93b-3e90-4119-8ffe-5a13943f6257&rpstry=17_

Wenn du eine Applikation dafür schreiben willst kannst du auch welche
nehmene die kleiner sind aber das ganz nur über die serielle liefern.
z.B
http://www.datalogic.de/_vti_g2_p_det.aspx?idp=ID20041213101126&rpstry=17_

Die folgenden haben auch schon USB
http://www.symbol.com/MS22xx/
http://www.symbol.com/MS32xx/
http://www.symbol.com/MS4400/

mfg

Tomafa

von inoffizieller WM-Rahul (Gast)


Lesenswert?

1. Möglichkeit: Bestell dir irgendwas, was durch UPS, DHL o.ä. geliefert
(was du bestellst ist egal/dir überlassen).
Wenn das Ding dann geliefert wird, mußt du nur noch dem Boten sein
"Quittierungsgerät" wegnehmen, und schon hast du einen entsprechenden
Scanner.

2. Möglichkeit:
Wenn es darum geht, mal die Technik der Bildverarbeitung kennen zu
lernen, bietet es sich an, eine Webcam an den PC anzuschliessen und
sich "openCV" von Intel zu besorgen. Das ist eine kostenlose
Bildverarbeitungsentwicklungsumgebung...

Um einen AVR für solche Sachen zu benutzen, wirst du eine gewisse
"Vorbeschaltung" brauchen. Du musst ja auch davon ausgehen, dass das
Etikett nicht ganz gerade bzw. verdreht vor dem Sensor auftaucht...

Die MC hat Programmcode auf diese Weise abgedruckt...

von avrler (Gast)


Lesenswert?

servus,

da ich mich zur zeit auch mit der Erkennung von Barcodes und DataMatrix
Codes beschäftige finde ich dein projekt sehr interessant. Ich würde dir
empfehlen das ganze über eine billige kleine CCD Monochrom Kamera oder
eben Webcam zu machen. Die erkennung der barcodes und datamatrix codes
sollte dann in software gemacht werden. die opencv lib hab ich mir auch
schonmal angeschaut - leider schwer für mich da ich mehr aus der visual
basic ecke komme. es ist schade das es für die erkennung von barcodes
keine opensource oder freeware controlles ocx, oder dlls gibt. alles
was man bekommt ist sau sau teuer - ok dafür auch sehr sehr gut. ich
denke jedoch das es mittels kamera und einer softwareseitigen
bildverarbeitung relativ leicht ist und vor allem du kannst dann deine
positionierung usw. auch über die bildverabeitung laufen lassen (in
deinem falle die kamera genau über dem mittelpunkt der datamatrix
fahren lassen und dann ein image ziehen mit dem du den code ausließt)
also du hättest damit ein rießen potential ! wenn sich jemand mit
diesem thema näher auskennt und / oder ocx dlls controlls (speziell für
vb) kennt -> sagt mal bescheid!
ps: was schonmal ein super geiler ansatz ist jedoch glaube ich nur
barcodes keine matrix lesen kann - und leider keine freeware ist :
"EymBarcode" http://www.metois.com/
gruß
avrler

von Flo F (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

mal von oben nach unten...

Linse: Die Sensoren kommen wohl (teilweise) mit einer Scheibe vor dem
eigentlichen Sensor. Ich vermute, dass die damit auf kurze Entfernung (
5mm? ) durchaus auch scharf sehen.

Kaufen: Ich moechte Basteln, nicht 'nen fertigen & unpassenden Scanner
fuer 350 USD kaufen :)
Das drueberstuelpen ist quasi Ppflicht, weil durchaus auch mal 96 von
den Gefaessen nebeneinander stehen - ein normaler Scanner wuerde wohl
irgendeinen davon erkennen.
Der UPS-Mann faellt damit leider auch aus - und von dem bekomm ich
garantiert kein Datenblatt^^.

Wenn's nur um's Bildverabeitungs-lernen gehen wuerde, wuerd ich 50
Stueck mit der Digicam schiessen. Aber ich will damit ja auch spaeter
arbeiten.
Die Verarbeitung auf der PC Seite wird schon, ich komm nicht aus der VB
Ecke ;).


Also: Ich suche, soviel ist mir mittlerweile klar, einen monochromen
Bildsensor, den ich in ein eigenes Gehaeuse packen kann.

Die Idee mit einer monochromen Webcam ist vieleicht gar nicht schlecht
- aber die braucht auch eine neue Optik, und ich hab seit Jahren keine
monochrome Webcam gesehen.
Eventuell ist auch in einer spaeteren Ausbaustuffe angedacht, die
Bilddaten per Bluetooth zu verschicken - dann braucht's eh einen
einene MC.

Ich hab mal ein Bild angehaengt, wie ich mir das ganze vorstelle.


Vielen Dank fuer euer Feedback,
mit freundlichen Gruessen
Flo

von Flo F (Gast)


Lesenswert?

Vieleicht hab ich einfach nur Tomaten auf Gehirnwindungen...

Ich hab mir jetzt 'ne guenstige 640x480 Farbpixel Webcam bestellt (
nachdem ich bei Ebay endlich was gefunden hatte, was nicht direkt aus
"Hongkong, Deutschland" kam).

Der nehm ich die Optik ab ( im Zweifel halt Makro-Optik, der Optiker
meines Vertrauens hat sicherlich eine Idee, ich probier's erstmal so),
am USB haengt sie bereits und im schlimmsten Fall hab ich gerade 13 EUR
fuer einen undokumentierten CMOS Sensor ausgegeben.

Gruss
Flo

von Flo F (Gast)


Lesenswert?

Avrler:
Hier ist meine bisherige Recherche:

-die Open Source C Bibliothek ist pre-Alpha, und ich bin mir noch nicht
sicher, dass sie gedrehte Codes ueberhaupt erkennt. (
http://www.libdmtx.org/documentation.php ). Aber sie erkennt
theoretisch auch mehrere Codes in einem Bild. Zum Ausgleich hat sie
wohl einen 'crashing' Bug den der Autor noch nicht gefunden hat....

-Der Isostandard ISO/IEC 16022:2006 wo wohl alles drin steht, was man
so ueber DataMatrix wissen muesste, kostet 212 Schweizer Franken ~ 133
Euros. Bezahlbar, aber ich hab sie gerade nicht zur Hand...

-Semacode haben ein (fuer nicht-komerzielle-Nutzung) kostenloses (
closed source ) JavaSDK, das sich auch als Kommandozeilenprogramm
integrieren laesst. Bedingt natuerlich eine passende JavaVM etc, ist
aber fuer die ersten Experimente mit der Kamera ideal. (
http://semacode.org/ ).

-Generatoren gibt's wie Sand am Meer. Als Fonts, als Komerzielle
OCX/ActiveX/DLL/Whatever Componenten, und als Opensource in mindestens
3 Varianten inkl. einem Debian ( testing ) Packet (
http://www.datenfreihafen.org/projects/iec16022.html ). Womit wieder
mal bewiesen waere, dass schreiben viel einfacher als lesen ist.


Bis spaeter
Flo

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Kennst du http://www.jrobot.net/?
Damit könnte es sogar was werden, wenn man eine Kantenerkennung in den
AVR programmiert bekommt...

Monochrome WebCams wird man wohl kaum mehr bekommen (ausser in einem
Museum...).
Es gibt aber noch Monochrome-CCD-Kameras (Überwachungsbereich...);
zusammen mit einer TV-Karte bekommt man so auch Bilder in den PC.

Vielleicht lässt dich der UPS-Mann ja mal seinen Handscanner
auseinanderbauen^^.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Noch was: Irgendwo habe ich mal ein USB-Mikroskop gesehen... Soviel zum
Thema Optiker...

von Flo F (Gast)


Lesenswert?

Es gibt jetzt eine Open Source C# (also .net ) Biblothek unter der GPL 
um DataMatrix in Bildern zu erkennen und decodieren.

Und ja, das funktioniert mit den Bildern die meine billigste Webcam auf 
~2cm Entfernung schiesst.

http://datamatrixdec.berlios.de/

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Das ist doch klasse!
In einen ATmega wirst du das aber wohl eher nicht programmiert bekommen, 
oder?

von Flo F (Gast)


Lesenswert?

Naja... Vieleicht. Das allermeiste davon laesst sich auch locker in C 
umsetzen - aber vieleicht ist ein AVR doch etwas schwach auf der Brust.

Anyhow, fuer mich reicht's wie's ist - und die 10 EUR/Webcam werd ich 
wohl auch nicht geschlagen bekommen...

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

>aber vieleicht ist ein AVR doch etwas schwach auf der Brust.
Vor allem beim Wandeln der Bilder...

Da könnte die jrobot-Kamera (gibt es auch in D  zu kaufen) interessant 
sein. Der Speicher wird vermutlich das Problem sein.

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.