I realise this is a huge post, but I really wanted full documentation so I know the steps I took and stages I implemented along the way.  I wanted to look at making message bag and the way it was implemented at this stage.

When I started thinking about this project and following a discussion in class I thought I wanted to make an object I wanted to keep, and something that was ‘me’. I decided that modifying an iPod Classic would have the potential to meet what I was looking to do.

I looked up tutorials and took apart an iPod I had and created an empty shell from the case left behind. I then worked through ideas for how to modify and had several, eventually settling on getting a display screen that would be motion activated and display misheard lyrics. I wanted to keep with the sound aspect of the device in theory as well as preserve its minimalist shape. But after spending a weekend with it, I discovered so many issues with the size of the device that I decided it needed a lot more work, planning, and experience so I will attempt it at a later stage.

I then found an old toy (police car) which I decided to modify. I planned out what inputs / outputs would go where and what their point would be. I will use a distance sensor so there is a way to tell when someone approaches the car which will then illuminate it. But it didn’t grip me nor seem like something I wanted to keep forever or represent me very well. So I stopped working on the project and decided to rethink.

Then I came across a bag I hadn’t used in a long time and I was immediately excited by the potential of it. I loved this bag and modifying it into a more techie bag would be very me as well as making an item I would love to keep. I decided to have a think about what modifications to the bag I could do that would be fun. So from this was the idea that instead of a messenger bag that people typically carry, I would make a message bag. The changes ultimately that I decided to add to the bag were the following:


Recipe for the message bag

Ingredients:


Method for Arduino Board 1 LCD Display:

LCD

Initial thoughts were to get an LCD screen to display messages, so I did some research into how they worked, what different kinds there were, this information from Arduino was very close to what I was looking for. My LCD had a back light so there were 2 more wires to add, an additional power and ground to power the screen.

I also incorrectly assumed the 16 x 2 size screen or larger would be too much for a first project so I went with a 16 x 1. This caused me a lot of challenges that I wasn’t aware of at the time. This post from Tronixstuff, had a good rundown of the different types of LCD screens you could use.

The issue with the 16 x 1 display was that it displayed 2 rows of 8 characters side by side. This firstly took me a log time to realise and work into the code as well as it didn’t really have the exact effect I was after. Due to time constraints I went with the one that I had ordered, I would like to replace this or do a different screen if I make another similar item. I would go for 16 x 2 as a minimum.

You must include the LiquidCrystal library, and here was the code for that as well as setting the pins:

You must then add to void setup() the initialization of the LCD by telling it the number of rows and columns.

Then within loop() where you want your display to print something you need the following code, so mine was within sensor values and if statements dependant on the values of the sensor readings:

Distance Sensor

The distance sensor was one of the first sensors I implemented to test it and get the code working initially to get readings – this code from LuckyLarry worked out a readable distance:

 

The idea here was that it would change messages based on the distance of the bag to people. The issues with this is it didn’t track huge distances, and also it could literally detect anything so it wouldn’t be changing according to people, so it was pretty inaccurate for my purpose. Other issues became that it was reading values pretty quickly, even with a slight delay, so the messages were recycling too quickly. When I slowed it down, it seemed to users that the change wasn’t registered. After watching people use it and getting feedback this would be something that I would need to alter.

Photo Resister

This sensor was pretty straight forward although I had noticed I was getting erratic readings when testing it – so I swapped the resistor and it seems that the one I had been using was broken. Switching the resistor fixed it and it worked well as a way to light the bag in the dark. A future addition would be to be able to turn off these lights if the wearer didn’t want them on. Code from Arduino is pretty straightforward as well as the schematic.


Method for Arduino (Teensy) Board 2 RFID Reader :

RFID Reader

The RFID code was on a separate board and part of the bag, so essentially I had two separate code files, one for each Arduino. The reader I was putting on a breadboard with a Teensy so that the whole unit could fit into the inside pocket of the bag. The teensy needed a power source as it doesnt have that as part of the board so I added power from a battery as shown at pjrc.com.

For me the RFID part of the implementation really felt like it was an idea with potential. I loved getting this to finally work and it seemed a good addition to a bag and a feature I would like as well. Here is a short clip showing the LED lighting up when the item is placed in the bag.

I had an issue with the Reader and it seemed to read the values initially then stopped reading and displaying the values. I tried changing the components, altering the wires, changing the Arduino board and when I was still getting sporadic results, it was suggested that actually my soldering had not made full contact and this could be the issue. I checked the board and it was the problem. Because the board was soldered first into a breakout board it was a really difficult issue to fix so I initially used a screwdriver to bang it closer to make contact with the wire. I have since re-soldered this board and it has fixed the error. As it was my first time soldering I hadn’t realised about this being an issue so although it was very frustrating it was a good lesson to learn. As far as the code goes, initially I put code on to read the tags so I knew which numbers I was reading. Then when the numbers are recognised, some action happens.

The tags I declared at the start of the files:

In the loop() we are reading the serial numbers. When the code is uploaded you have to remove the wire going to the RX, and then put this wire back so it can send the values we are looking for.

The tags are then checked to see if they match the values we declared already – if not we are given the value on the serial monitor.

The following code is used to reset the reader, clear the tag value so we can scan again, and compare the tag value with the tag scanned.

There is some code through the Sparkfun website that I looked at initially. 

The code I looked at closer was from bildr, though the images seemed to have the wiring differently to how I got mine to work.

Pink LEDs

This was pretty straight forward to add, I put them on a little circuit board to space them evenly for display on the bag. I had an issue again with my soldering and two of the LEDs were not working. One I had to remove and res-older and the other light was broken so had to be replaced.

Piezo

This was added so that there was feedback for the user when they scan an item. It just emits a noise so they know it was successful. I also included a small LED so they can also see that it was a success incase it’s too loud where they are.

 Results:

What I’ve taken from this assignment is to always read the data sheets for the components you use. I realize this will be obvious for folks but I just assumed I would know how to use or wire up the things I got and actually, the slightest difference of component means that it may need different wiring then what you read in online tutorials for example.

Also I had initially spent a lot of time trying to make everything look good. Cutting the bag very modestly, and trying to hide all the components as I went along and just being far too gentle. I ended up having to really hack into the bag and then I could make it look good afterwards, which saved a lot of time, so next time I would not worry about the appearance of the item too much at the start, and only start making those aesthetic judgements after a certain point of implementation of the device.

I had started to work in a methodological fashion as far as the code went. I used one Arduino board to test code snippets for each individual function, to wire up and make sure I could get the device / sensor working and this worked really well. I did find it difficult to organise the code at times and had so many sketches opened, but it was a great way to test what was working step by step.


Images

Wiring up the LCD – back view

Running tests on the LCD

Wiring up the Arduino with the LEDs as well as LCD, testing code.

Starting to get a little more complex with the LEDs and sensors etc

The Teensy on the breadboard, next to the RFID sensor.

Wired up with the other componants.

The back of that breadboard has the Piezo element and the pink LEDs that will indicate which item is in the bag.

The completed bag:

Photo Credit: Toby Harris