Aspire (2013)

Aspire is a 1980’s style pop machine crossed over with a modern day self-checkout. It is 5 feet tall and approximately 4 feet wide, requiring a single outlet to run. Users are left with a shiver, a receipt, and a question: was it worth it? In our world, everything has a price and everybody makes sacrifices for materialism and status. Users are made to decide whether they are willing to scan a real organ for an expensive item on the vending machine. Aspire draws its influence from a news story about a 17 year-old boy, who sold his kidney for an iPad. The greater the need, the greater the sacrifice: would you give up a kidney?

Music: Ambient-M by Antony Raijekov (cc 2.5)

Ryerson New Media 4th Year Thesis (2013)

Conceptual, electronics, build, documentation by Cristal Sung with the support from professors and loved ones.

Hardware: Arduino, Thermal Printer, RFID, Arcade Buttons with LEDs, Microswitches, Fluorescent lights wired in Parallel

Showings: Meta 2013, MaxEx 2013

Disclaimer: Organs are preserved and sealed pig organs purchased from a grocery store

It’s over! Now what?

I went for the regrade, since I figured all the changes I’d made for Meta would help bring up my grade. For the showcase, I had gotten my project working half an hour before the jury came.

The lcd flickering is gone and I’ve gotten the timer working. Boolean statements don’t work properly on Arduino and I had to work my way around that.

I also got the Parallax scanner to stop sending the previously scanned card by changing the RFIDReader.available() to greater than 2 rather than zero (tipped from Gumbo Labs). It worked amazingly well and I made sure to add serial.flush(), set char[] to zeros to clean out everything.

Resource: RFID to Arduino (Code) | Using RFID Parallax | Serial.flush()

void ReadSerial(String &ReadTagString)
int bytesread = 0;
int val = 0;
char code[10];
String TagCode="";

if (RFIDReader.available() > 2) { // If data available from reader
if ((val = == 10) { // Check for header
bytesread = 0;
while (bytesread<10) { // Read 10 digit code
if ( RFIDReader.available() > 0) {
val =;
if ((val == 10)||(val == 13)) { // If header or stop bytes before the 10 digit reading
break; // Stop reading
code[bytesread] = val; // Add the digit
bytesread++; // Ready to read next digit
if (bytesread == 10) { // If 10 digit read is complete

for (int x=0;x<10;x++) //Copy the Chars to a String
TagCode += code[x];
ReadTagString = TagCode; //Update the caller
while (RFIDReader.available () > 0) //Burn off any characters still in the buffer
for (int i=0;i<10;i++){
code[i] = 0;
bytesread = 0;

It was the fastest way to make everything stable and it solved the issue. I would like to keep tweaking it, getting the LEDs to start turning off and on again. It’s in the code, but now oddly doesn’t work anymore.

I can set it up for MaxEx before I leave for May, and then I’ll be back in June to pick up my project from IMA. I’ll have to figure out where to store it or maybe I’ll just burn it.

Looking back at the year, I feel like I’ve learned a lot. I learned to not over commit myself. I need to know when to say no, especially if I’m under a lot of pressure. I still get everything done, but I can’t work for free forever. I’ll always offer help and advice, but if I’m helping you take down your project, please let me know that you’re going to throw it away, so I know not to be so careful.

I learned time management and perseverance. Interning at Y&R, part-time at ISS, freelancing, and school (thesis and a liberal). I’ve always wanted to be this busy, since going to Ryerson. I always felt like I could do more with my time and I felt like I have. I get the opportunity to research and develop in new technologies, playing with the Raspberry Pi, learning GPIO, Bash, Python, and Linux terminal. Figuring out solutions with few resources (both from Y&R and thesis), figuring out what I had (hot glue and drills became my best friends), working around time limitations of other people and the buildings. I also got to improved my PHP, while incorporating my html/css abilities.

I understand the value of my work and that I know a lot of different things (jack of all trades, master of none). I’ve always been good with searching on Google and I can always find an answer (even if it’s just a concept of how to solve it). Programming concepts and structures can be converted to the language that I’m working in. That applies to other things too, I guess. Becoming the interdisciplinary manipulator.

Working at Y&R has been a good experience. The agency currently lacks a lab team, but hopefully they’ll see the importance of jumping on getting a lab space and a lab team (like Nurun).There are a lot of ad, interactive, and multimedia agencies in Toronto and I’m not limiting myself to this city.

I like conception, development, and experimentation. It keeps things interesting and being able to show a prototype brings the client to another level of understanding. We’ve worked on coming up with good concepts, achieving it technically, and then making it aesthetically pleasing for 4 years. I’ve really enjoyed new media and I don’t think I would have learned these skills anywhere else.


It was interesting to see people interact with my project at the reception. Some people got it right away, some people didn’t get it at all. It was hilarious to watch people reactions when they opened the box. When I was watching one guy walk right up to my project. Read the screen, press the button, and open the box. He jumped back a little and then proceeded to scan the organ and waited for the receipt. He then brought his friends over to show them. It was amazing to see, he got it perfectly and nobody explained it to him.

I should have gotten the timer to work on my Arduino because I knew that some people would press the button and walk away. I’d then have to reset it or people didn’t get what is going on.

Some people went to the box first. I assume because of the lighting that I had setup on the box. It was brighter than I liked.

The added cabinet handle worked well as an intuitive sign for people to open. I also added an arrow into the lcd screen at the scan item prompt.

The RFID still jumped, I think the RFID is sending the code again. I’ll have to stabilize it for MaxEx.

Freak Out!

I was hoping the move to Arta would be easy. My project isn’t hard to move, but of course it’s never easy. I found out on the first day of setup that there was probably a short circuit on my board. My fuse kept going out.

I found out this morning that the smallest hairline of solder connected a pin to ground. I used my nail and the tiny line of solder flicked off and it didn’t connect anymore. The multimeter that I had bought last from Craigslist used for 5 bucks was a bargin and super useful right now. I did connectivity tests on everything to make sure that the screen was going to work. I ended up changing the headers to the white connectors. I made sure all the stranded wire had heat shrink. I added more solder and re-solder some connections because they weren’t actually connected.

I went back to Arta the second day and my circuits didn’t fuse anymore, but I noticed my printer wasn’t working. It had a weird burning smell. I think I might have crossed over the power when I plugged it back in, which must have bypassed the fuse.

I had the terrible feeling that I couldn’t show. Adafruit took way too long to ship me my printer and it was out of stock anywhere. Where do I get a small thermal printer anyways? David Rokeby was there and helped me. We figured it was a connection that melted or something. We called around to see if places sold a small black thermal printer. Amazing, Creatron had one in stock!

It took a little while for the printer to run properly and I noticed that the door doesn’t sit that well in the box, it causes the paper not to move out fast enough sometimes.

The scanner also jumps through sometimes. I’m not sure what it is.

I got the flickering to stop by moving the lcd.clear() to the end of each state, so the lcd would only clear once that state was over and then put the new lines.

To help get rid of those weird characters that sometimes appear on the screen I found out that putting a for loop for each string to work better. It sends the signal in the right order that allows it not to jumble up.

for (int i=0; i <= (ln4.length() - 1); i++) {


Luckily for me, I’ve always had my wiring written in the top of all of my Arduino code.

Printer (GND, RX = 3, TX = 4)
RFID (VCC to 5V, /ENABLE to 5, SOUT to 6, GND)
Parallel Button LEDs (pin 1)
Speaker (pin 2 -> Small Cap -> Speaker -> Large Cap -> GND)
Button (A0, A1, A2, A3, A4, A5)

LCD LiquidCrystal display with:
LCD 4 (RS) to arudino pin 12
LCD 5 (R/W) to ground
LCD 6 (E) to arudino pin 11
d4, d5, d6, d7 on arduino pins 7, 8, 9, 10

I also included links to the tutorials in my code, just to make sure. Especially for the HD44780 LCD.

I planned out  my perfboard, getting Creatron’s custom one. The white PCB connections on top are great for colouring with a red or blue sharpie.

Had to drill a couple holes to be bigger for the PCB fuse holders.

2013-04-05 10.16.06

Those white mounts are great to work with. I had the metal terminals put in wrong, but I found out that I could just solder my wire straight to the terminal and put them in properly, they stay very well. All other ones were headers and hot glued to guarantee they won’t move.

I got some pens and used them to hold my boards off the metal box I’m using, which was my old ATX power supply that died right before my user test. Reusing things is great!

The components are to be powered then a 5V and ground wire will be attached to the 5V and ground pins on the Arduino.

Hope everything works out.

Showcasing is Stressful

Setting up for showcase was very stressful. I hadn’t gotten every done. I finished most of the physical elements before reading week and worked on the circuit during reading week.

My boss at Y&R was very nice and he asked if I needed time off. I think I looked stressed. I left work early on Wed. and off all day Thursday. I needed to get my circuits and everything working.

I plugged in and got this error during upload:

avrdude: verification error, first mismatch at byte 0x0308
0x62 != 0xff
avrdude: verification error; content mismatch

Resource: avrdude :verifcation error; content mismatch | Bitmap printing

Apparently, all those 0xFFs are white pixels. I figured it was from the bitmap logo that I made (aspire.h). I changed it to black on white and still go the error. After a lot of testing, I found out that it was the size of the bitmap was too big. I made sure to cut it back a few pixels on the sides and the bottoms to fit the requirement.

Screen Shot 2013-04-08 at 3.51.05 AM

It was the first error that I fixed. I noticed that the buttons weren’t working properly, some of them pressing without anyone pressing. I serial printed the input of the buttons and found that instead of HIGH, it would go to 0 when pressed. It also jumped around a little, sometimes 0 would appear. I reprogrammed it so that each button would check 3 times with a 1ms delay and I placed it into an array to save myself the trouble of writing an int for each test.

void checkbtn() {
for (int i=0; i < 3; i++) {
btnR[i] = analogRead(btn0P);
for (int i=3; i < 6; i++) {
btnR[i] = analogRead(btn1P);
for (int i=6; i < 9; i++) {
btnR[i] = analogRead(btn2P);
for (int i=9; i < 12; i++) {
btnR[i] = analogRead(btn3P);
for (int i=12; i < 15; i++) {
btnR[i] = analogRead(btn4P);
for (int i=15; i < 18; i++) {
btnR[i] = analogRead(btn5P);
}//end of checkbtn

This worked well and the button didn’t randomly press itself. It requires people to press a little longer though, only very little.

My LCD joints broke and the buttons broke, which is why everything is so finicky. Had to resolder everything. I barely finished for the jury, maybe 30 minutes. Some people stopped by and I watched them test my project. Occasionally, the RFID jumped and people didn’t have to scan. I’ll need to figure out why.

Luckily, it only happened once for the jury.

I also noticed that the text on the screen flickered in one state (scanned), but not another. I guess as long as I got it working for the showcase.


I’ve wasted hours at RCC, not getting the soldering irons to work. I’ve burned myself, but could not successfully create good connections. 4 hours, 2 joints.

I was so frustrated. I was at the RCC from 4:30am to 8:30am. I decided to buy my own soldering iron from the Source. I did a bit of research and the variable soldering iron seemed good and was within my budget.

The best instructables for soldering suggested 60/40 solder and it really does work so much better. I can solder connections at an insanely fast speed now, so I do know how to solder properly. It was just the soldering irons at RCC.

Resources: How to solder – the secrets of good soldering


Arcade buttons finally arrived in the mail! I’ve already bought spade bits, since they were half off at Canadian Tire, a full set for 10 bucks.

I can use the 1 1/8″ spade bit to drill through both the Lexan and the wood. Then I’ll make sure the buttons fit.

Snow Day

The weather outside was a little frightful. I have a critique Monday, so I decided to go to Home Depot and get some MDF for my organ box. I want my light box done and my organ box done. I need doors for my light box with aluminium foil to diffuse and reflect. I returned some things and got more vinyl.

I’ve noticed that the vinyl isn’t sticking to the wood well, I’m assuming because it’s not smooth. I decided to get carpet tape and construction glue. I’ll be fixing this later.

I also ended up going to Walmart to get fluorescent light bulbs for my light box.

I got all the wood cut smaller, hoping that I could carry it home on the streetcar. Of course, due to weather, I didn’t see any streetcar. The wood and MDF was really heavy and I was struggling to wait for a streetcar. Ended up cabbing it home. The weather looked terrible, I’d hate to be driving in this weather.

I went home, dropped stuff off. Went to visit my sister, who told me Ryerson had closed. There’s no access to IMA322 because it’s not RFID and the workshop was likely to be closed.

So frustrating! I’m falling behind on my project, lost an entire day! An entire week of woodworking! I need to cut the holes for my vellum, make my light box, mount my plexiglass, and then I can start getting closer to finishing the physical. I didn’t think it would take me this long, but I’m working with so many time and resource restrictions.

I snapped. I bought a saw and spade bits. The saw was half off, so I don’t feel as bad. It was cheaper than my drill.

I worked on the organ box today, started gluing and nailing it together. Then I’m going to laminate (vinyl), paint the interior white, and get hinges.

I’ll be cutting the holes tomorrow, make my light box and mount it tomorrow. I have to try and make up this day, but it seems unlikely. The building closes at 5:30 pm tomorrow, and isn’t open on Sunday. My critique is Monday!


I went to Home Depot a couple days ago with another very long list of things. I figured out my aesthetics, 1970/80s vending machine with a checkout shelf on the side. The guy at Home Depot was very helpful, getting me vinyl adhesive wood pattern, metal joint liner, and PVC edging that I’ll have to spray paint black. No where in Canada sells black vinyl edging. I wanted it black to match the printer, the PVC edging comes in only white.

I also cut the wood the wrong size for the light box. I decided I only need 1 lightbox to light up the selection item display as well.

Resources: How to Apply Wood Veneer | Arcade Black Vinyl Edging

2013-02-05 22.15.53 Then I got rubber pigtail lights, so that I could build the light box.

Black is live, white is neutral. The wire with texture is live, while the smooth one is neutral. This made it a lot easier to wire the lighting. I used the electrical screw caps (used for lighting in ceilings and walls).

Wiring in parallel is quite easy, I’ve wired in led and fluorescent now.

I made sure that everything was done right, 110V is dangerous and switching the the live and neutral can break the fluorescent lights.

Resource: Instructables – Photo lamp and lightbox, version 2 | Homemade Movie Poster Light-box | Light Box | Wiring American 110 volt


I had to think of the logo, which I know is going to be the name of my project. Bouncing names off a lot of people and finally settling on Aspire. A desire, a goal, positive, but aspiring for status and willing to sacrifice. I had to do research on 70s, 80s graphics and logos. I opted for a font based logo that was 80s style. Then I went for solid primary colours.

Resources: Graphic Design Through the Decades Series: The ’70s | Graphic Design Through the Decades Series: The ’80s | Rolling Rock 80s logo | 7up Pop Machine

I looked into movie posters and the material used for posters in light boxes is very very expensive. I’m looking into maybe using Vellum paper and I asked InkPort if they printed on vellum. Apparently, it’s not as bright as it should be, but will probably work. It’s also half the price of professional movie posters. I don’t mind it being that bright because it’s suppose to look retro.

%d bloggers like this: