Projekt -> Scheibenfarbe erkennen und über USB an PC ausgeben.

  • Hallo zusammen,


    Hallöchen, ich bin der Neue :)


    Ich bin was Programmieren angeht nicht unbeholfen, deswegen denke ich das ichs mir grundsätzlich zutrauen würde, das notwendige Programm mit vorhandenen Tutorials zu schreiben und dann ggf. mit ein wenig Hilfe entsprechend anzupassen. Meine Frage geht eher in die Richtung ob es überhaupt Möglich ist und welche Hardware ich am besten nutze.


    Mein Vorhaben:


    Für meinen Internet-Shop muss ich jede Menge Discgolf Scheiben (sowas wie Frisbees) als Artikelvarianten einpflegen. Die Angaben die ich machen muss, sind zum einen das Gewicht und zum anderen die Farbe. Bei manchen kommt noch die Randfarbe hinzu.


    Das Gewicht bekomme ich inzwischen von einer speziellen Waage, die das Gewicht misst und dann per USB an meinen PC in Form einer Tastatureingabe übergibt.


    Das gleiche möchte ich nun per Raspberry auch für die Farbe realisieren.


    Wenn ich nun die Scheibe auf die Waage lege, wird erst das Gewicht übergeben. Mit einer Verzögerung von 2-3 Sekunden soll nun die Farbe als Text über USB ebenfalls an den PC übergeben werden.


    Ich habe in meiner Auswahl ca 40 verschiedene Farben. Wie z.b. Blau, Hellblau, Dunkelblau, Blassblau, Rot, Hellrot ...... usw usw..... Türkis, Weiß, Grau, Schwarz, Braun usw usw.


    Ich weiß inwzischen, dass man das mit Farbräumen irgendwie hinbekommt.


    Meine Frage ist nun, ist das überhaupt möglich? Wenn ja, welche Hardware benötige ich für die Erkennung? Kamera oder Farbsensor?


    Ich würde mich sehr über Antworten freuen ;)


    LG Sven

  • Servus BigRib ,

    willkommen im Club ...


    Ich würde mir da mal opencv anschauen.

    Wenn Du eine Kamera entsprechend montierst und die Scheiben mit einer neutralen Lichtquelle beleuchtest, dann sollte es kein Problem sein eine Bitmap zu erstellen und die Farbe zu ermitteln.

    Automagisch wird das allerdings nicht funktionieren, aber evtl. findest Du im Umfeld von opencv ja ein Beispiel das einfach anzupassen ist.


    //EDIT: ich hab' da auf die Schnelle z.B. das hier -> https://www.learnopencv.com/in…opencv-4-on-raspberry-pi/ gefunden.


    cu,

    -ds-

  • Vielen Dank schonmal für die Antwort.


    Ich habe das Video gefunden was mich schon etwas hoffen lassen hat, das dies funktionieren könnte.


    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Ich denke das ich dann die Übertragen noch triggern muss, also eine Taste dücken und die Farbe wird übergeben oder?


    Brauche ich außer einen Raspberry PI 3 (+Netzteil) und einer Kamera noch was? Wie bekomme ich die Ausgabe über USB an den PC?

  • Es gibt auch Farbsensoren - wenn du dir mit so einem eine Art Scannerpistole baust, kannst du die an die Scheibe halten, abklicken und der Wert kann analysiert und umgesetzt werden. In der Pistole sollte dann auch gleich die Beleuchtung (weiße LEDs) drin sein... Am besten eine Konstruktion, die du direkt an die Scheiben hältst, damit kein Störlicht von außen kommt und die Beleuchtung immer gleich ist.


    Sowas zum Beispiel - da ist die Beleuchtung schon drin.


    OpenCV finde ich hier zu aufwändig (es sei denn, du willst auch noch gleich den Durchmesser mit der Kamera ausmessen).

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Servus,

    vielleicht beschreibst (oder zeigst) Du mal Deinen Aufbau.

    Das mit der Farbermittlung sehe ich ehrlich gesagt gar nicht so sehr als Problem.

    Allerdings ist es ja so, dass an einem PC/Rechner in der Regel nur eine Tastatur hängt. Üblicherweise wurden z.B. Laser-Scanner einfach in das Tastatur-Kabel eingeschleift damit ein eigelesener Bar-Code so als Zahlenfolge übertragen wird, als wäre er mit der Tastatur eingegeben worden.

    Nun hast Du aber scheinbar schon was da dran hängen ... nämlich die Waage.

    Spannende Frage: wie kommen die Daten in die Eingabemaske Deines Programms?

    Den Pi z.B. mittels seriell <-> USB Wandler an den PC anzuschliessen ist nicht das Problem. Aber wie sagst Du dem Programm, dass es die Farbe von der seriellen Schnittstelle lesen soll? Oder ist das Marke Eigenbau und Di kannst das entsprechend anpassen?


    cu,

    -ds-

  • Wieso soll man nicht zwei Tastaturen anschließen können? Am Notebook gehts doch auch... warum soll ein Rechner nicht zwei Tastaturen haben?


    Mit einer Lesepistole könntest du zwei Werte nacheinander erfassen. Könntest es so programmieren, dass, wenn innerhalb von x Sekunden zwei Werte gemessen werden, der erste für den Rand und der zweite für die Fläche ist...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Noch gibt es keinen Aufbau. Habe nur die Waage hier stehen und würde dann, wenn das Projekt verwirklicht wird, darüber dann die Kamera/Sensor bauen.


    Die Waage hängt per USB am Rechner. Die gemessenen Werte werden über ein Programm in Text umgewandelt und dann an der Cursor-Position ausgegeben als ob man mit der Tastatur schreibt. Anders macht es ein Barcodescanner ja auch nicht, der ist ja auch mehr oder weniger als Tastatur eingebunden.


    Ich hatte gehofft, das man den PI so anschließen kann, das er eine Tastatur simuliert.

  • Ich hatte gehofft, das man den PI so anschließen kann, das er eine Tastatur simuliert.

    Das ging mal/geht(?) nur mit dem Pi Zero, wenn ich mich nicht irre.

    Der "normale" Pi kann keinen USB Slave Modus.

    Beim Zero wird's aber evtl. eng mit OpenCV und Bilderkennung. Ist halt ein Singlecore mit 512 MB ...

    Das müsste man mal näher recherchieren.


    cu,

    -ds-

  • Open CV ist meiner Meinung nach nicht nötig. Wozu 1 Mio Pixel aufnehmen und mit einer umfänglichen Software die Farbe daraus rechnen, wenn man mit einem Klick an der gewünschten Stelle den Farbwert mit einem einzigen Sensor auslesen kann... Dann reicht auch ein Pi Zero oder ein Arduino. Billiger, zuverlässiger, ...

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Warum ds mich jetzt anpflaumt, kann ich nicht nachvollziehen.

    Ich sagte "meiner Meinung nach" - er darf das gerne anders sehen.

    Das Problem mit der Einspeisung der Daten über USB bleibt bei beiden das Gleiche. Und hier ist ein möglicher Lösungsansatz. (Die Daten werden nicht oer USB, sondern per serieller Schnittstelle an den PC geschickt und dort von einem Programm in Tastendrücke umgesetzt.)

    Einen Simplen Sensor abzufragen ist aber weniger aufwändig, als OpenCV so einzurichten, dass es das gewünschte Ergebnis liefert.

    Ein kleines µC-Gerät mit Sensor und geeigneter Schnittstelle zum PC (Tastatursimulation) wäre schnell betriebsbereit, preiswert, stromsparend, robust. Einen Aufbau mit Pi, Kamera, Halterung, großflächiger Beleuchtung erscheint mir dagwegen sehr aufwändig.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Warum ds mich jetzt anpflaumt, kann ich nicht nachvollziehen.

    Weil das, was Du da "beiträgst" imho keine zielführende Herangehensweise ist.

    Natürlich kannst Du weiter erst mal gegen alles sein ... nur was bringt das?

    Realistische und für den TO machbare Alternativ-Vorschläge kann ich nicht sehen - und das lässt sich zu diesem Zeitpunkt imho auch noch gar nicht genau abschätzen, weil da noch viel zu viele offene Fragen existieren.


    Aber wie gesagt ... Du wirst das schon machen.

    Ich bin hier jedenfalls raus.

    cu,

    -ds-

  • Sorry, Dreamshader, aber wenn du beleidigt bist, nur weil jemand eine andere Lösung vorschlägt als du, ist das mehr dein Problem als meins.
    Ich habe sehr wohl realistische Alternativen benannt - mit Links, konkreten Produkten und Ansätzen für die Realisierung. Was der TO davon umsetzen kann, muss er selbst beurteilen. Im Web gibt es genügend Beispielanwendungen anhand derer er abschätzen kann, ob das für ihn ein gangbarer Weg ist. Warum er mit einem Kameramodul und OpenCV leichter zum Ziel kommen soll, als mit einem Farbsensor, kann ich nicht erkennen. Jedenfalls dürfte es alles andere als trivial sein, mit OpenCV aus einem Kamerabild die relevanten Stellen automatisch zu ermitteln und Farben für Fläche und Rand zu ermitteln. Ich habe nie behauptet, dass es mit OpenCV nicht geht, aber ich habe Argumente vorgetragen, die für meinen Ansatz sprechen. Du hingegen wirfst mir Dinge vor, die du nicht belegen kannst und bringst kein einziges Argument, das konkret gegen meine Lösung spricht. Du ziehst lediglich ohne Grund in Zweifel, ob der TO oder ich selbst eine Lösung mit dem Farbsensor mit unserem Wissen realisieren können. Du bezeichnest, was ich "beitrage" in Anführungszeichen (was offensichtlich abwertend gemeint ist), wirfst mir vor, ich sei "gegen alles" und suggerierst, ich hätte keine konstruktiven Vorschläge gemacht (sicher wolltest du mit "kann ich nicht sehen" nicht sagen, dass du blind bist).

    Ich empfinde deine Äußerungen mir gegenüber als beleidigend.

    Dein Rückzug auf "viele offene Fragen" ist wenig hilfreich. Warum sollte dein Ansatz der einzig richtige sein, wenn für dich noch zu viele Fragen offen sind? Ich habe die Lösung genannt, die ich nach meinem Verständnis der Aufgabenstellung und mit meinen Erfahrungen zuerst probieren würde. Wenn der TO einen triftigen Grund hat, deinen Lösungsvorschlag vorzuziehen, steht ihm das selbstverständlich frei. Ich denke, hier im Forum geht es darum, alternative Lösungen zu benennen, so dass der TO sich das für ihn Passende raussuchen kann. Wenn dann jemand so reagiert wie du, ist das jedenfalls alles andere als nachvollziehbar.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Sorry, aber solange noch nicht mal klar ist, ob und wie die Daten überhaupt in seine Anwendung kommen, ist es kontraproduktiv von dieser wichtigen Frage abzulenken und mit allem möglichen um die Ecke zu kommen.

    Das Equipment auf der "anderen Seite" ist vorgegeben ... nur weiss niemand hier genau wie es aussieht und die Fragen danach gehen vor lauter bla bla wieder mal unter.

    Was ist das für eine Software zum Einpflegen? Wie ist die Waage jetzt genau angebunden? Wird eine zweite Tastatur erkannt und auch von der Software benutzt oder braucht es evtl. auf dem PC zum Einpflegen ein weiteres Programm das die Daten z.B. von der seriellen Schnittstelle ausliest und dann über "Paste" in das Datenfeld einträgt? Gibt es überhaupt jemanden, der das dann umsetzen kann?

    Und, und, und ...

    Hier wird der Braten schon verteilt, bevor überhaupt klar ist, ob es Hasen gibt.

    Und dafür habe ich einfach kein Verständnis.

    //Das nervt einfach und macht es sehr mühselig die einzelnen Informationen zu bekommen weil die Nachfragen immer wieder untergehen.

    Und darauf habe ich halt keinen Bock ...


    -ds-

  • [OT-Frieden]

    hier versuchen mehrere zu helfen. Jeder mit eigener Lösungsstrategie. (Frage: sind die Anforderungen geklärt?) Sowas kommt öfter vor. Je mehr Helfer beteiligt sind, desto mehr Kommunikation und Koordination ist zwischen ihnen notwendig.


    Eine Möglichkeit das zu vermeiden, wenn nur ein Helfer hilft. Dann hat der TE (Themen-Ersteller) auch nur einen Ansprechpartner.


    Da weder Helfer noch Themen-Ersteller fehlerlos sind, sollten das Konzept des TE und die Voraussetzungen für den Lösungsweg des Helfers geklärt werden.


    Im übrigen bestehe ich auf höflichen Umgangsformen.

    [/OT-Frieden]

  • Hier wird der Braten schon verteilt, bevor überhaupt klar ist, ob es Hasen gibt.

    Sehe ich nicht so. Ich denke, hier sind zwei Probleme zu lösen, die relativ unabhängig voneinander sind: 1. Wie erkenne ich die Farbe und 2. wie kommuniziere ich sie an den PC? Ich glaube nicht, daß man eines der beiden Probleme zwingend vor dem anderen angehen müsste.


    Was 1. angeht, bin ich bei Gnom: So einfach wie möglich, so kompliziert wie nötig. Insofern finde ich den Farbsensor auch plausibler als die Lösung per OpenCV. Falls die Auswahl der Farben einigermaßen konstant bleibt bzw. sich nicht allzu oft ändert, könnte ich mir sogar vorstellen, eine Farbtafel mit einem Taster pro Farbe an die Wand zu hängen – das wäre dann noch weniger komplex.

  • Meine 2ct. zur Teilproblematik "Übergabe des ermittelten Farbwertes als Tastatureingabe"


    Also ich habe die Erfahrung gemacht, dass es am PC (unter Windows wie Linux) und am RPi (an dieser Stelle letztlich auch nichts anderes als ein "Kleinst-PC" mit Linux) möglich ist, mehrere USB-Tastaturen (echte wie unechte: z.B. Waage) gleichzeitig zu betreiben. Hier die Anzeige bei Anschluss zweier (echter) USB-Tastaturen an einem Windows7-PC im Geräte-Manager:



    Auch mit meinem Arduino Esplora Gaming Controller konnte ich dies bereis erfolgreich an meinem RPi evaluieren. Das Arduino Esplora-Board emuliert hier eine Tastatur zusätzlich zur "normalen" USB-Tastatur am RPi.


    Allerdings hat dreamshader in Beitrag #9 recht, wenn er sagt, dass ein RPi als Tastatur nur mit einem RPi Zero funktionieren wird, weil nur der sowohl als USB-Device (das was hier benötigt wird) als auch als USB-Host fungieren kann:

    Das ging mal/geht(?) nur mit dem Pi Zero, wenn ich mich nicht irre.

    Der "normale" Pi kann keinen USB Slave Modus.

    Aufgrund des bei den "großen" RPis (zumindest bei den B-Varianten) eingebauten USB2.0-Hubs ist die USB-Device-Funktionalität nicht mehr möglich. Vielleicht kann ein RPi ...A ebenfalls als USB-Device konfiguriert werden?

  • ds, ich finde dein Verhalten hier völlig inakzeptabel. Ich habe lediglich eine technische Alternative zu OpenCV/ Kamera vorgeschlagen. Ich kann nicht nachvollziehen, warum du mich deshalb nachhaltig angreifst. Fühlst du dich irgendwie gedemütigt, wenn dein Lösungsvorschlag nicht von jedermann als der gottgegeben einzig richtige angesehen wird? Das wäre sehr traurig. Tragfähige Argumente dafür, warum die Lösung des Problems mit dem Farbsensor weniger zielführend sein sollte als mit OpenCV, bringst du jedenfalls nicht vor.


    Kle, ich bin der Ansicht, dass gerade die Vielzahl von Ideen fruchtbar ist. Wenn nur einer hilft, dann gibt es auch nur einen Lösungsansatz - aber das garantiert nicht, dass es der treffendste ist.

    Ich hab aber kein Problem damit, wenn der TO sich für OpenCV entscheidet und ds ihm hilft, das umzusetzen. Umgekehrt scheint ds aber ein erhebliches Problem schon allein damit zu haben, dass ich es auch nur gewagt habe, eine Alternative zu seinem Vorschlag zu nennen. Nachvollziehen kann ich das nicht.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!