Card Feeder for a Trading Card Machine
by theguymasamato in Circuits > Tools
30283 Views, 115 Favorites, 0 Comments
Card Feeder for a Trading Card Machine
Card Feeder for a Trading Card Machine
The Background
When I was young, I collected tons of trading cards, but for some years, the passion for collecting has been decreasing. In the meantime I have children and slowly but surely they also start to get interested in trading cards. So I'm back in the game. :)
Meanwhile, we have more than 10,000 cards. Most of them are from World of Warcraft, but we also have many others:
- Magic: The Gathering
- Skylanders Battlecast
- Pokémon
- Star Wars
- Yu-Gi-Oh!
- Lego Star Wars and Ninjago
Some of our cards are sorted and protected in UltraPro 9-pocket pages and UltraPro Albums, but most of them "stored chaotically" in boxes. We tried to sort them by hand, but after a few days we gave up frustrated. Especially with these quantities, handling and administration is very laborious and time-consuming.
The Solution
A few months ago, I stumbled across an interesting article published in the MagPi Magazine Issue 71, Jul 2018. Michael Portera explained there how he built a Card Counter.
It was exactly the motivation and inspiration that I need. Which that said, I want to create a machine that can handle our trading card collection.
Some goals; Trading cards should automatically be
- managed (Which cards do I have?, Which ones are missing?)
- sorted (Block, Language, Set, Series, etc)
- rated (How valuable are my cards?, How much money do I have to spend for a full set?)
- traded (Buy and Sell)
Because of this ambitious goals, I decided to split the huge machine into 3 parts.
- Card Feeder - a machine which grab and transport a single card out of a card stack
- Card Scanner - a part where the cards will be analyzed
- Card Sorter - a machine which will sort and store the identified cards.
Let's do it!
In this instructable I will show you Part 1 - How to create the Card Feeder.
Tools and Materials
Tools and Materials
I decided to create the Card Feeder out of cardboard. It's cheap and easy to handle.
Here's what I used:
Tools:
- Cutter
- Cutting mat
- Ruler
- Rubber bands
- Scraper
- Wire cutter and stripper
- Screwdrivers
- Pencil, markers
- Sanding paper
- Files
- Acrylic paint and brushes
- Hot glue gun
- water-containing adhesives or solvent-containing adhesives.
- Soldering iron and tin solder
- Table saw
Materials:
- Cardboard (main material, I used a thickness of 3mm)
- Thin strips of wood for the stabilization (they have to fit inside the cardboard!)
- Some filling compound (stabilization and visual appearance)
- Some Lego axis, wheels and gears (in the step "Mechanical parts" you could see in detail what I used)
- Springs (to create some pressure between the wheels)
- Rubber bands (very important for additional grip)
- Raspberry PI
- Raspberry PI Power Supply
- Adafruit Servo Bonnet
- Adafruit Micro Switch
- FEETECH FS90R Micro Continuous Rotation Servo
- Servo Power Supply
- SD Card with Raspbian OS
- Adafruit Python PCA9685 lib
- USB Mouse and Keyboard
- HDMI cable and Monitor
- Some wires
Prototyping
Prototyping
I would like to share with you my ideas, thought processes and decisions in the Prototyping and Design phase. In my opinion, this stage is the most fun part during a project. From nothing to a first idea.
The Mechanism
To understand the whole mechanism, I analyzed one of the best feeders that exists; a printer. It does exactly that what I need. I bought a cheap 8€ printer on eBay and disassembled it until I could take a closer look at the needed mechanism.
I tested a lot:
- with a piece of paper
- with one WoW (World of Warcraft) card
- with many cards
It worked perfect. To be honest I didn't expect that behavior, but even with the trading cards the mechanism was able to pull out only one card at a time.
From my point of view the secret of the mechanism is:
- an area which press the paper to the major roll
- a second smaller roll which has direct contact to the major roll
- the second and major roll are covered with rubber
Tinkering
It was time to copy the printer functionality. I made the 1st tests with a piece of IKEA cardboard to get a feeling for the sizes. Very simple and reduced to the feeding mechanism.
After that I created the 2nd version with a container for the cards out of MDF. Very ugly, but it's working. While testing, I realized that:
- I need some ramp for the cards which came out of the Card Feeder.
- It's not necessary to have a separate container for the cards.
In the 3rd version I switched back to cardboard, which I felt in love during the creation of this prototype. With the right tools and the right handling the material is sooooo great.
Design
Design
With the experiences from the 2nd and 3rd version and some thoughts about symmetry and equality, I created the final and 4th prototype on the computer. I've designed everything in Fusion360/Inventor and used all the built in functions like:
- Rendering
- Animation
- Drawing
I took the important measurements from the prototype with a caliper gauge and transferred them into the 2D sketch. All other measurements I made with the help of dependencies in Inventor and calculations. That's the reason for the strange dimensions. All angles and many distances are the same. The size of a Trading Card 63 x 88 mm was also a big factor in the design process.
The basis of all further planning was the outside [2]. All other parts are oriented to it. The inside [1] is mainly for stabilization. Front [4] and back [5] prevent the cards from falling out. The ramp [3] serves as a slide for ejected cards. The cards are inserted into the machine via the top/back and placed on the card tray [10].
[x] the numbers are references to the drawing
Dimensions:
- Outside 210,79 x 185,32mm
- Inside 188,74 x 185,32mm
- Front 73 x 84mm
- Back 79 x 185,32mm
- Card tray 70 x 67mm
- Ramp 67 x 73mm
Basic Shape
Basic Shape
(You can find all pdf-files in the last step!)
The individual shapes I had created during the design phase were printed on A3 paper. I glued them to a piece of 3mm corrugated cardboard. It is very important to apply glue and paper (scraps) on both sides. If not, the cardboard will bend. To be safe I put some weight on it during the dry time.
I also would say (not sure at the moment) that water-containing adhesives will cause more bending that solvent-containing adhesives. Do you have here some experience?
For a nice and clean look it is also important to distribute the adhesive evenly. Otherwise, bubbles will appear later. I used a spatula/brush to spread the glue.
I doubled the backside for stabilization, which means I cut out two times the 3mm shape and glued them together. I also took care of the different orientations of the cardboard. A horizontal oriented outside will later be glue to a vertical oriented inside.
After the drying time I cut out the shapes with a cutter and a ruler on my cutting mat. I worked my way through the process in several steps. Not the whole material at once!
Stabilization
Stabilization
After everything was cut out, I used my small table saw and cut some small strips out of a big piece of wood to stabilize the cardboard. These strips have to fit inside the cardboard, so they have to be very thin (around 2mm). It is also a good way to protect the corners and edges. As you can see in the pictures, I only stabilized the critical areas.
I put them, with some glue, into the cardboard. After the glue was dry, I cut off the excessive wood with a wire cutter, so they are flush with the shape. I mounted everything together and hold it in place with a rubber band.
For a better optical effect and additional stabilization, I filled the cardboard "holes" with some filler and sanded them. I also applied some black color to create a bit of contrast on the inside. (It is visible on a later picture)
Mechanical Parts
Mechanical Parts
Since I didn't want to disassemble the printer, I looked around for other components. I found what I was looking for in the Lego collection of my children.
With Lego Technic components I copied the mechansim from inside the printer.
- A Lego Axle 16 with two major 40mm Lego wheels and a Lego 40 Tooth Gear
- A Lego Axle 16 with two support 10mm Lego wheels.
I used a bunch of Lego Bushes and Lego Bushes 1/2 to hold each wheel or gear in place.
The distance between the sides is determined by the width of the card tray. The 4 washers are spacers to achieve exactly this width with the axes.
For the right pressure, between the wheels, I added two springs on the outside of the axis. Direct contact between the wheels is necessary.
One secret and a very important part are the rubber bands on the main wheels. Without them it will not work very well. Each wheel has three rubber bands in an 120 degree angle.
I made the card area flexible. It can be adjusted in height in relation to the major wheel. I did this with two M8 threaded rods and 4 M8 nuts.
After that, I glued all parts together with some hot glue.
Electrical Parts
Electrical Parts
The whole Trading Card Machine will be managed by a Raspberry PI, even the Card Feeder.
If you need some Raspberry PI basics => Raspberry PI Class
A continuous rotation servo, which is connected to the Adafruit Servo Bonnet via a standard 3-pin female connector, will move the 40mm major wheels forward and so eject a card for the card stack. The Adafruit Servo Bonnet is mounted directly on the Raspberry PI.
I glued a Lego 24 Tooth Gear to a servo arm and screwed everything onto the motor. The whole unit fits perfectly below the card tray. I mounted it with some hot glue. The Lego 24 Tooth Gear has contact with the Lego 40 Tooth Gear on the major axle.
I soldered some wires to the Adafruit Micro Switch and "connected" it temporaly to the Raspberry PI. With the switch i can turn the servo On an Off.
I connected an external 5V/10A power supply to the Adafruit Servo Bonnet terminal block to power the servo. At the moment the power supply is oversized, but it should be enough for the whole machine.
Coding
Coding
If you need some Raspberry PI basics => Raspberry PI Class
I used the Raspbian OS and the Adafruit Python PCA9685 lib to interact and control the Card Feeder.
The Adafruit Servo Bonnet will "talk" via I2C to the Raspberry PI. Therefor I had to activate I2C in the Raspberry PI Kernel and install 2 packages.
sudo apt-get install -y python-smbus sudo apt-get install -y i2c-tools
My code is based on the Adafruit example. I used it out of the box, just implemented the Adafruit Micro Switch to turn the Card Feeder On and Off.
Attention!
I'm a coding noob, so there are better ways to write the code. It was good enough for my test, but I still have a lot to learn.
# Simple demo of of the PCA9685 PWM servo/LED controller library.<br># This will move channel 0 from min to max position repeatedly. # Author: Tony DiCola # License: Public Domain from __future__ import division import time import RPi.GPIO as GPIO #import the PCA9685 module. import Adafruit_PCA9685 #NEW GPIO.setmode(GPIO.BOARD) GPIO.setup(18, GPIO.IN, pull_up_down = GPIO.PUD_DOWN) # # Uncomment to enable debug output. #import logging #logging.basicConfig(level=logging.DEBUG) # Initialise the PCA9685 using the default address (0x40). pwm = Adafruit_PCA9685.PCA9685() # Alternatively specify a different address and/or bus: #pwm = Adafruit_PCA9685.PCA9685(address=0x41, busnum=2) # Configure min and max servo pulse lengths servo_min = 385 # Min pulse length out of 4096 servo_max = 407 # Max pulse length out of 4096 # Helper function to make setting a servo pulse width simpler. def set_servo_pulse(channel, pulse): pulse_length = 1000000 # 1,000,000 us per second pulse_length //= 60 # 60 Hz print('{0}us per period'.format(pulse_length)) pulse_length //= 4096 # 12 bits of resolution print('{0}us per bit'.format(pulse_length)) pulse *= 1000 pulse //= pulse_length pwm.set_pwm(channel, 0, pulse) # Set frequency to 60hz, good for servos. pwm.set_pwm_freq(60) print('Moving servo on channel 0, press Ctrl-C to quit...') while True: if GPIO.input(18) == GPIO.HIGH: pwm.set_pwm(0, 0, servo_max) time.sleep(1) else: pwm.set_pwm(0, 0, servo_min) time.sleep(1)
The End
The End
That's it!
I've created a video. It's all about the Card Feeder building process. I hope you like it.
To be honest, I would have expected a good to mediocre result at the beginning. But it's perfect. It never happened to me that either none card or more cards were fed at once. I am very surprised and pleased how well the whole thing works.
I will use it as a Card Feeder for my Trading Card Machine. However, the principle can also be applied to other areas. Card Dispenser, Card Dealer, etc. Please let me know if you build a dealer for card or party games, blackjack machines or something else. I would like to see your ideas.
I would appreciate any criticism, comments or improvements. Whether in relation to the Card Feeder, Photos, Skills or Writing/Language.
I will move on to the next part of the Trading Card Machine; The Card Sorter. In my next update I will show you how I (will) built it.
If you do not want to wait until the next update, you can see some news on Instagram.
Thank you for taking time to read about my project!
Have a great time.
Servus and cu next time!
Attachment
Here you can find all shapes as pdf-files. They have to be printed in an DIN A3 format.
If you need anything else, feel free to ask!