Over the holiday weekend I was able to get started on testing the idea and circuit for the change collector. In web class we are learning to use Sinatra & Ruby to post and get things from a database. So for homework in that class, I made a survey for this class!
After deploying it to the ITP listerve, I was able to parse over 50 responses. [a note about that, thank you to whoever said they collect $1000 dollars in change in a month, you made my charts crazy at first :)]
Overall, it seems like there are other people who collect a significant amount of change and they might be interested in knowing the tangible worth of it. Also interesting, most people only collect 5 to 10 dollars, so it will be important to make sure that there are less expensive items for them to track when they first start using the device.
It looks like I'm going to be okay with pins (just barely). I'm not sure if I'll be able to get an ethernet shield in this mix.
Enclosure - Laser Cutter!
I also was able to cut an initial enclosure before the break began. Using the laser cutter, cardboard and a online template maker, I made an enclosure that is roughly the size of the final device. I'm using a cheap coin sorter as the basis for the design. This will save significant fabrication time, ideally, a future iteration would include something I want to 3D print.
The motor it uses to move the coins is annoyingly loud, but I think any version I create would also have to have that. The box I made ends up being a bit too small. Good to know.
I started playing with the Adafruit RFID/NFC shield and was able to successfully read & write to cards. I've picked up a number of stick on tags so that the individual trinkets can activate different responses on the screen.
The RFID reader will stick out the front of the machine. A user will place a trinket on the reader to check if they have enough money saved to buy whatever that item represents. [4 beers, 2 meals for people in need, etc] I didn't really have any difficulty getting this guy to work.
I was lucky enough to have the displays delivered this weekend as well, so I worked on getting them working individually and then together. This has been the most difficult part so far. I picked a LCD display for a visual representation of items & an OLED display to show the amount of money & other text. The OLED has a MUCH better viewing angle and looks better all together. I might have to angle the LCD display so it doesn't suck.
The main problem I had was that the OLED display isn't really SPI as much as 'fake/software/not exactly SPI' masquerading as I2C. Thankfully, others have experienced the same problem and an awesome contributor on the Arduino form figured out how to change the Adafruit library for the display to work over SPI. I needed this because the two displays will work best sharing the same SPI bus.
I still need to get the LCD display working with an SD card (I don't have a microSD). I was able to do an initial integration of the RFID and display, to get it to change when a tag is placed on the reader.
Counting coins optically
After watching the way that the coin collector worked, I thought the most efficient way to count the coins would be an optical sensor. I ordered two types of optical sensors (cheap!) from Sparkfun: Optical Detector / Phototransistor and a Photo Interrupter.
It ended up being that the Photo Interrupter isn't wide enough to pass the coin because of the way the coin collector throws the coin into the bin. I knew this, but ordered them anyway as a backup in case I had problems with the optical detector [i'll have to build something to change the orientation of the coin if I end up needing them].
Fortunately, the optical detector is super fast and seems to be perfect for this job because the coin is flat as it slides down into the bin. Using a Dremel I cut the plastic of the coin collector and placed the optical detector in the path of each of the coins. To secure the sensor, I used Sugru, a nifty self-setting rubber.
Initially I set one of the sensors in to test it before committing to securing all of them in. After allowing the sugru to set, I hooked everything up. It successfully was reading the dime passing! Yay! Now how to make it count 1 coin and not 30 of them? The method I am testing works like this:
I'm using a millis timer to prevent the coins from double counting. So far it's worked wonderfully! The true test will be when I'm running multiple sensors. At this moment, I'm waiting for the other optical detectors sugru to set.
So it looks like all the components are working individually. Hurray!
- figure out design & buy material for final enclosure (acrylic most likely, maybe wood?)
- wire up optical detectors on perfboard (they are an annoying 4 wire ordeal but with a shared 5V and ground I will only have to deal with the 4 sensor wires and 1 power and 1 ground)
- mount displays on perfboard too so that's less wiring to worry about too
- figure out how to turn coin collector motor on - I'm out of analog inputs and would prefer not to deal with a multiplexer. A button?
- see if it's feasible to add ethernet capabilities
- get all 4 coin counters working
- integrate coin counters + RFID reading + displays
- design/program logic for RFID to display
- design method for encoding tags & information related (perhaps I could make this my ICM project, additional analytics about your change & a method to encode new tags?)