Airsoft Pellet Bitmaps (build blog): Unterschied zwischen den Versionen
Axl (Diskussion | Beiträge) (→Farbsensor Pollin) |
Axl (Diskussion | Beiträge) K (→Links) |
||
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 7: | Zeile 7: | ||
Das Projekt entsteht aus einer Reihe von Hard- und Software-Artefakten, die später zu den individuellen Maschinen zusammengeführt werden: | Das Projekt entsteht aus einer Reihe von Hard- und Software-Artefakten, die später zu den individuellen Maschinen zusammengeführt werden: | ||
* Hardware | * Hardware | ||
− | ** Aufbewahrung der Pellets | + | ** [[Airsoft_Pellet_Bitmaps_(build_blog)#Aufbewahrung|Aufbewahrung]] der Pellets |
− | ** Transport der Pellets | + | ** [[Airsoft_Pellet_Bitmaps_(build_blog)#Vereinzelung|Vereinzelung]] der Pellets |
+ | ** [[Airsoft_Pellet_Bitmaps_(build_blog)#Transport|Transport]] der Pellets | ||
** [[Airsoft_Pellet_Bitmaps_(build_blog)#Farberkennung|Farberkennung]], Sortierung und Verteilung der Pellets | ** [[Airsoft_Pellet_Bitmaps_(build_blog)#Farberkennung|Farberkennung]], Sortierung und Verteilung der Pellets | ||
− | ** Positionierung der Pellets und Aufbau als vertikales Bild | + | ** Positionierung der Pellets und [[Airsoft_Pellet_Bitmaps_(build_blog)#Aufbau_als_vertikales_Bild|Aufbau als vertikales Bild]] |
* Software | * Software | ||
** Erzeugung des Motivs | ** Erzeugung des Motivs | ||
− | ** Farberkennung | + | ** [[Airsoft_Pellet_Bitmaps_(build_blog)#Farberkennung_per_Software|Farberkennung und Quantifizierung]] |
** Steuerung der Maschine | ** Steuerung der Maschine | ||
+ | |||
+ | |||
+ | == Transport == | ||
+ | === Optischer Trigger === | ||
+ | Der Sensor soll ein Pellet im Plexiglas-Rohr erkennen. Er besteht aus einer aufgesägten Gabellichtschranke mit roter LED. | ||
+ | |||
+ | <gallery perrow="5"> | ||
+ | Datei:220 Pellet Trigger IMAG1610.jpg|Lichtschranke | ||
+ | Datei:220 Pellet Trigger IMAG1632.jpg|Lichtschranke | ||
+ | Datei:220 Pellet Trigger IMAG1629.jpg|Lichtschranke | ||
+ | Datei:220 Pellet Trigger IMAG1642.jpg|Abschirmung gegen Umgebungslicht | ||
+ | </gallery> | ||
+ | <br/> | ||
+ | ==== Photo Eye - Version 2 ==== | ||
+ | Der Einsatz einer Infrarot-Lichtschranke war erfolglos, da einige Kugelfarben zu wenig Infrarot-Licht absorbieren. Daher wir eine blaue LED (Pollin 120216) für die Lichtschranken benutzt, die mit allen Kugelfarben funktioniert. | ||
+ | Die Lichtschranke wird direkt auf das 10 mm Rohr aufgesteckt. Sie wird zusätzlich Schrumpfschlauch und einer kleinen [[Datei:Photo eye shell 003.scad|3D-gedruckten Hülse]] gegen Umgebungslicht abgeschirmt. | ||
+ | |||
+ | * Sender: Blaue LED (Pollin 120216) | ||
+ | * Empfänger: Fototransistor 5 mm 1200 nm Everlight Opto PT 331 C (Conrad 156408) | ||
+ | |||
+ | <br> | ||
+ | <gallery perrow="5"> | ||
+ | Datei:260 Photo eye IMAG1749.jpg|Version 2 ... | ||
+ | Datei:260 Photo eye IMAG1751.jpg|... mit Infrarot-LED ... | ||
+ | Datei:260 Photo eye IMAG1752.jpg|... im Test | ||
+ | Datei:260 Photo eye IR photo eye 001.PNG|Schaltung | ||
+ | Datei:260 Photo eye IMAG1771.jpg|Photo Eyes mit Schutzhülsen | ||
+ | Datei:260 Photo Eye Shell 003.PNG|3D-gedruckte Photo Eye Shell | ||
+ | Datei:260 Photo Eye Shell IMAG1844.jpg|Abschirmung gegen Umgebungslicht | ||
+ | Datei:260 Photo Eye IMAG2241.jpg|Photo Eye - 2. Generation | ||
+ | </gallery> | ||
+ | <br/> | ||
+ | |||
+ | ==== Kugelbahn - Sorter exits ==== | ||
+ | Die Kugeln werden nach Vereinzelung in einem Rohr mit 5° Gefälle nach unten transportiert. | ||
+ | <br> | ||
+ | <gallery perrow="5"> | ||
+ | Datei:Sorter exits 005-001.PNG | ||
+ | Datei:Sorter exits 005-002.PNG | ||
+ | Datei:Sorter exits IMAG2224.jpg | ||
+ | Datei:Sorter exits IMAG2228.jpg | ||
+ | Datei:Sorter exits IMAG2229.jpg | ||
+ | </gallery> | ||
+ | <br/> | ||
+ | |||
+ | == Vereinzelung == | ||
+ | Aus einer Reihe vor Pellets gleicher Farbe soll genau ein Pellet entnommen werden. Da diese Funktion oft gebraucht wird soll der Aufbau sehr einfach sein und nur eine Bewegung per Servo ausgeführt werden. Die Ansteuerung der Servos erfolg über einen [http://www.adafruit.com/products/815 Arduino Servo Shield] | ||
+ | |||
+ | <gallery perrow="5"> | ||
+ | Datei:250 Pellet separator disk IMAG1745.jpg|Prototyp 1 ... | ||
+ | Datei:250 Pellet separator disk IMAG1746.jpg|... für zwei Farben ... | ||
+ | Datei:250 Pellet separator disk IMAG1756.jpg|... finale Anordnung | ||
+ | Datei:300 pellet separator prototype IMAG1792.jpg|Prototyp 2 mit ... | ||
+ | Datei:300 pellet separator prototype IMAG1795.jpg|... Servo-Shield | ||
+ | Datei:Servo positions separator.png|Servo PWM Positionen | ||
+ | Datei:250 Pellet separator disk IMAG2242.jpg|2. Generation ... | ||
+ | Datei:250 Pellet separator disk IMAG2243.jpg|... Disk fixiert ... | ||
+ | Datei:250 Pellet separator disk IMAG2245.jpg|... mal 8 | ||
+ | </gallery> | ||
+ | <br/> | ||
== Farberkennung == | == Farberkennung == | ||
Zeile 29: | Zeile 90: | ||
=== Farbsensor von Watterott === | === Farbsensor von Watterott === | ||
− | [http://www.watterott.com/de/ColorSense-Module Farbsensor Module - ColorSense Module] - Tests stehen aus | + | * [http://www.watterott.com/de/ColorSense-Module Farbsensor Module - ColorSense Module] - Tests stehen aus |
+ | * [http://www.geeetech.com/wiki/index.php/Arduino_TCS230_Color_Recognition_Sensor_module Arduino Sample] | ||
+ | |||
+ | <gallery perrow="5"> | ||
+ | Datei:240 Color sensor TCS230 20140501 133731.jpg | ||
+ | Datei:240 Color sensor TCS230 20140501 134904.jpg | ||
+ | Datei:240 Color sensor TSL45315 20140501 134233.jpg | ||
+ | Datei:240 Color sensor TSL45315 20140501 135028.jpg | ||
+ | </gallery> | ||
+ | <br/> | ||
+ | |||
+ | == Sortierung == | ||
+ | Testaufbau: Die Sortierung erfolgt mit Hilfe von zwei Kreisscheiben, die von Servomotoren bewegt werden. In beiden Scheiben ist ein 7 mm Loch für ein Pellet. Sind beide Löcher an der gleichen Position, wird das Pellet ausgeworfen. Sind die Löcher nicht deckungsgleich, kann das Pellet durch synchrone Bewegung der Servos an eine Position bewegt werden. | ||
+ | |||
+ | Im aktuellen Setup ist damit steuerbar: | ||
+ | * Holen eines Pellets aus einen zuführenden Röhrchen | ||
+ | * Erfassung der Farbe mit einem [[Airsoft_Pellet_Bitmaps_(build_blog)#Farbsensor_Eigenbau|Farbsensor]] | ||
+ | * Auswurf des Pellets in eines von sechs Fächern | ||
+ | |||
+ | <gallery perrow="5"> | ||
+ | Datei:120 Setup 4 IMAG1576.jpg|Test-Rack | ||
+ | Datei:120_Setup_4_IMAG1579.jpg|Servos und Scheiben | ||
+ | Datei:221 Pellet Trigger IMAG1655.jpg|Zuführung und Farbsensor | ||
+ | Datei:230 Pellet Separator Test IMAG1668.jpg|Zuschnitt von Winkeln für Separatorfächer | ||
+ | Datei:230 Pellet Separator Test IMAG1670.jpg|Separatorfächer | ||
+ | Datei:230 Pellet Separator Test IMAG1671.jpg|Separatorfächer | ||
+ | Datei:230 Pellet Separator Test IMAG1672.jpg|Sortierung Tests | ||
+ | Datei:261 Big pellet sorter IMAG1753.jpg|Achtfach-Sorter ... | ||
+ | Datei:261 Big pellet sorter IMAG1754.jpg|... mit Servos | ||
+ | </gallery> | ||
=== Farberkennung per Software === | === Farberkennung per Software === | ||
Die eigentliche Erkennung der Farbe erfolgt analog zur [http://de.wikipedia.org/wiki/Farberkennung Farberkennung in der Wikipedia] per Quantifizierung. Die drei Messwerte für rot, grün und blau werden dabei als dreidimensionale Koordinaten X, Y und Z im RGB-Raum interpretiert. Es wird eine Reihe von Messwerten aufgenommen und nach dem Muster "wenn dominante Farbe rot dann klassifiziere Pellet rot" verarbeitet. | Die eigentliche Erkennung der Farbe erfolgt analog zur [http://de.wikipedia.org/wiki/Farberkennung Farberkennung in der Wikipedia] per Quantifizierung. Die drei Messwerte für rot, grün und blau werden dabei als dreidimensionale Koordinaten X, Y und Z im RGB-Raum interpretiert. Es wird eine Reihe von Messwerten aufgenommen und nach dem Muster "wenn dominante Farbe rot dann klassifiziere Pellet rot" verarbeitet. | ||
− | Der Mittelwert aller Messwerte zu einer erkannten Farbe ergibt einen Markerpunkt. Spätere Messwerte ermitteln mit Hilfe der Euklidischen Distanz den nächstgelegenen Markerpunkt und ordnen damit das Pellet einer Farbe zu. | + | Der Mittelwert aller Messwerte zu einer erkannten Farbe ergibt einen Markerpunkt. Spätere Messwerte ermitteln mit Hilfe der [http://de.wikipedia.org/wiki/Euklidische_Distanz Euklidischen Distanz] den nächstgelegenen Markerpunkt und ordnen damit das Pellet einer Farbe zu. |
Zur Visualisierung der Messwerte in RGB-Raum wird aus Processing eine Datei im OpenSCAD Format erzeugt: [[Datei:3D diagram example colors.scad]] (für Wiedergabe der Farbe nur Preview Rendering / 'F5') | Zur Visualisierung der Messwerte in RGB-Raum wird aus Processing eine Datei im OpenSCAD Format erzeugt: [[Datei:3D diagram example colors.scad]] (für Wiedergabe der Farbe nur Preview Rendering / 'F5') | ||
Zeile 42: | Zeile 132: | ||
Datei:Color quantifier test 3D diagram.PNG|Visualisierung von Farbmesswerten in OpenSCAD | Datei:Color quantifier test 3D diagram.PNG|Visualisierung von Farbmesswerten in OpenSCAD | ||
</gallery> | </gallery> | ||
+ | |||
+ | == Aufbewahrung == | ||
+ | Die Pellets werden in Platikflaschen nach Farben sortiert aufbewahrt. Die Pellets können mittels eines drehbaren Stabes durch eine Öffnung im Boden aus der Flasche gefördert werden. | ||
+ | |||
+ | <gallery perrow="5" caption="Prototyp"> | ||
+ | Datei:200 Rack IMAG1635.jpg|Rack aus Alu-Elementen | ||
+ | Datei:200 Rack IMAG1721.jpg|Flaschen | ||
+ | Datei:200 Rack IMAG1725.jpg|Stab | ||
+ | Datei:200 Rack IMAG1723.jpg|Getriebemotor am Stab | ||
+ | </gallery> | ||
+ | |||
+ | == Aufbau als vertikales Bild == | ||
+ | === Test === | ||
+ | Zwei Plexiglas Platten im Abstand von gut 6 mm, mit vertikalen Kanälen aus Nylonschnur als 'Spacer'. Für den Spacer sind 1,5 mm Durchmesser rechnerisch optimal. | ||
+ | |||
+ | <gallery perrow="5" caption="Prototyp"> | ||
+ | Datei:121 Spacer calculation IMAG1586.jpg|Berechnung Spacer | ||
+ | Datei:121 Spacer 1,5mm.PNG|Visualisierung Spacer | ||
+ | Datei:201 Frame Prototype IMAG1644.jpg|Testaufbau | ||
+ | Datei:201 Frame Prototype IMAG1645.jpg|Testaufbau mit 10 Pellets je Kanal | ||
+ | Datei:301 Frame IMAG1789.jpg|Rahmen 15 Zoll | ||
+ | Datei:301 Frame IMAG1788.jpg|Details | ||
+ | Datei:310 Frame IMAG2186.jpg|Rahmen will nicht, Kugeln hängen fest | ||
+ | Datei:310 Frame IMAG2371.jpg|Test-Pattern, erster Abwurf hat fast geklappt | ||
+ | </gallery> | ||
+ | |||
+ | == Gesamtaufbau == | ||
+ | <gallery perrow="5" caption="Prototyp"> | ||
+ | Datei:500_Machine_IMAG2334.jpg|Stand 4. Mai 2015 | ||
+ | Datei:500 Machine IMAG2335.jpg | ||
+ | Datei:500 Machine IMAG2336.jpg | ||
+ | </gallery> | ||
+ | [https://www.youtube.com/watch?v=rVnoRLMWPz8&feature=youtu.be Test Run Movie: Pattern schwarz/weiß] | ||
+ | <br/> | ||
== Software Repository == | == Software Repository == | ||
Zeile 54: | Zeile 178: | ||
<br/> | <br/> | ||
+ | |||
+ | == Links == | ||
+ | * [https://blog.arduino.cc/2017/02/06/sort-your-mms-or-skittles-with-this-ingenious-machine/ Sort your M&Ms or Skittles with this ingenious machine] | ||
+ | * [https://www.instructables.com/id/Skittle-Pixel8r/ Skittle Pixel8r (instructables)] | ||
[[Kategorie:Projekte]] | [[Kategorie:Projekte]] |
Aktuelle Version vom 12. Juli 2019, 07:00 Uhr
Inhaltsverzeichnis
Das Projekt
Ziel des Projekts ist die Erzeugung von physischen Bitmap-Bildern mit Airsoft pellets.
Die Pellets kommen in verschiedenen Farben und sollen entsprechend der Bildvorlage in einen vertikalen Bilderrahmen einsortiert werden.
Artefakte
Das Projekt entsteht aus einer Reihe von Hard- und Software-Artefakten, die später zu den individuellen Maschinen zusammengeführt werden:
- Hardware
- Aufbewahrung der Pellets
- Vereinzelung der Pellets
- Transport der Pellets
- Farberkennung, Sortierung und Verteilung der Pellets
- Positionierung der Pellets und Aufbau als vertikales Bild
- Software
- Erzeugung des Motivs
- Farberkennung und Quantifizierung
- Steuerung der Maschine
Transport
Optischer Trigger
Der Sensor soll ein Pellet im Plexiglas-Rohr erkennen. Er besteht aus einer aufgesägten Gabellichtschranke mit roter LED.
Photo Eye - Version 2
Der Einsatz einer Infrarot-Lichtschranke war erfolglos, da einige Kugelfarben zu wenig Infrarot-Licht absorbieren. Daher wir eine blaue LED (Pollin 120216) für die Lichtschranken benutzt, die mit allen Kugelfarben funktioniert. Die Lichtschranke wird direkt auf das 10 mm Rohr aufgesteckt. Sie wird zusätzlich Schrumpfschlauch und einer kleinen Datei:Photo eye shell 003.scad gegen Umgebungslicht abgeschirmt.
- Sender: Blaue LED (Pollin 120216)
- Empfänger: Fototransistor 5 mm 1200 nm Everlight Opto PT 331 C (Conrad 156408)
Kugelbahn - Sorter exits
Die Kugeln werden nach Vereinzelung in einem Rohr mit 5° Gefälle nach unten transportiert.
Vereinzelung
Aus einer Reihe vor Pellets gleicher Farbe soll genau ein Pellet entnommen werden. Da diese Funktion oft gebraucht wird soll der Aufbau sehr einfach sein und nur eine Bewegung per Servo ausgeführt werden. Die Ansteuerung der Servos erfolg über einen Arduino Servo Shield
Farberkennung
Die Farbe eines Pellets soll schnell und eindeutig erkannt werden.
Farbsensor Eigenbau
Der Sensor besteht aus einer 5 mm RGB LED und einem Fototransistor mit Verstärkerschaltung. LED und Transistor sind in einem Winkel von 45° angeordnet, der sich bei Tests als günstig erwiesen hat und wenig störende Reflektionen und Umgebungslicht einfängt.
Farbsensor von Watterott
- Farbsensor Module - ColorSense Module - Tests stehen aus
- Arduino Sample
Sortierung
Testaufbau: Die Sortierung erfolgt mit Hilfe von zwei Kreisscheiben, die von Servomotoren bewegt werden. In beiden Scheiben ist ein 7 mm Loch für ein Pellet. Sind beide Löcher an der gleichen Position, wird das Pellet ausgeworfen. Sind die Löcher nicht deckungsgleich, kann das Pellet durch synchrone Bewegung der Servos an eine Position bewegt werden.
Im aktuellen Setup ist damit steuerbar:
- Holen eines Pellets aus einen zuführenden Röhrchen
- Erfassung der Farbe mit einem Farbsensor
- Auswurf des Pellets in eines von sechs Fächern
Farberkennung per Software
Die eigentliche Erkennung der Farbe erfolgt analog zur Farberkennung in der Wikipedia per Quantifizierung. Die drei Messwerte für rot, grün und blau werden dabei als dreidimensionale Koordinaten X, Y und Z im RGB-Raum interpretiert. Es wird eine Reihe von Messwerten aufgenommen und nach dem Muster "wenn dominante Farbe rot dann klassifiziere Pellet rot" verarbeitet.
Der Mittelwert aller Messwerte zu einer erkannten Farbe ergibt einen Markerpunkt. Spätere Messwerte ermitteln mit Hilfe der Euklidischen Distanz den nächstgelegenen Markerpunkt und ordnen damit das Pellet einer Farbe zu.
Zur Visualisierung der Messwerte in RGB-Raum wird aus Processing eine Datei im OpenSCAD Format erzeugt: Datei:3D diagram example colors.scad (für Wiedergabe der Farbe nur Preview Rendering / 'F5')
Aufbewahrung
Die Pellets werden in Platikflaschen nach Farben sortiert aufbewahrt. Die Pellets können mittels eines drehbaren Stabes durch eine Öffnung im Boden aus der Flasche gefördert werden.
Aufbau als vertikales Bild
Test
Zwei Plexiglas Platten im Abstand von gut 6 mm, mit vertikalen Kanälen aus Nylonschnur als 'Spacer'. Für den Spacer sind 1,5 mm Durchmesser rechnerisch optimal.
Gesamtaufbau
Test Run Movie: Pattern schwarz/weiß
Software Repository
unter anderem mit Processing Code zur Umwandlung von Bitmap-Bildern in den Farbraum der Pellets: