Leilani | How to Make


Final Project

There is no hand bag in the market designed for women that will protect the notebook from wear, weather, and liquids while remaining a fashionable handbag. This bag will be functional enough to be carried to work and fashionable enough to be taken straight from work to a dinner out.

Original design original drawing

Innovation in purse technology is focused on electronic power and charging and not safety and usability. There is no hand bag in the market designed for women that will protect precious belongings from liquid damage. The goal of this project is three-fold:

  1. Water and liquid damage is the #1 cause of computer damage, yet no purses on the market protect electronics inside the bag.
  2. Most high-functioning women carry multiple bags to work when they should only need one.
  3. Modern stylish purses have no organization.

Week 1 - Design

For my final project, I want to work on a "smart" purse that can determine when liquids are present to prevent electronic damage. I want to design the purse similar to the style of a Longchamp le pliage bag.

Design Idea

I also thought about how to change integrate the bottom of the bag, and I drew up a preliminary design in OpenScad.

Design Idea

Week 2 - Research

I started doing some research on the state of the art in liquid sensing for materials. Zack found some nice papers on this.

Week 3 - More Research (Design)

Unfortunately, most of this week I have been out of town at DSAA (IEEE Conference on Data Science and Advanced Analytics. Luckily for me, the conference is in Italy, so I have focused on some style and bag-designing research. (I am in the fashion capital of the world.)

I've been struggling to find good software to design my bag. Right now, I have been using SketchUp, but I have had trouble using the 3D warehouse. In particular, I cannot get the objects (zippers, handles) to attatch to my bag model as I would like them too.

After doing a bit of research, I found that many fashion designers like optitex. However, it seems like it may cost a lot of money. It's also very targetted to designers that need to know about the "fall" and "feel" of fabric. This is important to my design, but not essential.

Week 4 - Materials

This week I've been trying to see what would be the best types of materials to use. I really want to use the types of materials that a Longchamp bag is made up of (nylon and a water proof layer). But I also wanted to see if there would be a conductive material that I could weave inside to see if the bag is leaking or not.

Week 5 - Printing Bag Straps

Unfortunately, this week I have been very busy with the "Make something" big assignment, but I want to 3D print some bag straps later this week. I'm thinking of ways to use small pieces and chain them togehter into a sturdy strap.

One thing I have been looking at is different ways to 3D print fabrics.

Week 6 - Embedded Programming

Unfortunately, this week I have been very busy with the embedde programming asssignment , but I've been thinking of ways that I could use my board (and the light, to alert a person when there is water damage in their bag.

Week 7 - Sensors and bag molds

I was hoping that I'd be able use the molding and casting a ssignment for my project, but that wasn't able to happen with the small machinable wax.

I had started to think about ways to incorporate lights into the bag for alerting the bag owner that water was leaking. I have been brainstorming ways to mold the bag in a translucent material, so that lights could show through, but individual items in the bag would not be identifiable.

Another development is that I bought a pair of water and humidity sensors that I will be using for my input device week. Updates to come!


Week 8 - Sensors and fabrics

I've been struggling to find some 3D printed materials to incorporate into the bag. Although I did find a few interesting candidates.

I've also found an old bag that I can tear apart and play with for my first prototype! I've already ripped up some of the waterproof lining inside to start testing the water sensor.

dummy bag bottom

Week 9 - Connecting input and output

Since I had some trouble using an existing water/humidity sensor, I spent most of this week making my own water sensor. The idea comes from a couple papers that Zach sent me early on. The key idea here is to sew two wires into the bottom of the bag, very close together, but not touching. One wire is attached to high, and the other wire is attached to low. If water or another liquid is spilled and reaches the bottom of the bag, then the liquid connects the circuit and the higher the current the bigger the spill.

idea wires

I also added some thicker wires to connect to the screw terminal. I also had to design a new board for this purpose.

idea wires

One frustrating thing was that I had to sand the edges of the thin wire for connectivity. I unfortunately realized later that I will probably have to do this for all of the thin wire if I end up sewing it into the bag. Although I haven't thoroughly tested it and sewn in the wires, the hand-crafted water sensor board is complete!


Week 11 - Bag strap design

After being in charge of a lot of the 3D printing for machine week, I have started designing the 3D components for my bag.

Week 12 - Crunch Time

Now that we only have a few weeks left in the course, I will start documenting TODOs and indicate progress

  • Get the "conductive thread" input water sensor to work and find a suitable fabric for integrating
  • Use the servo motor to turn just slightly when water is detected by the input board
  • Laser cut moving part of bag that is connected to the motor
  • 3D print bag handles
  • Laser cut and sew together outside bag

Back to the Input Board

I was having a lot of trouble getting the input board working, so I decided this was the first important step to making progress in the bag

  • Board is plugged in with a green light (HORRAY!)
  • Starting with hello world example (for sanity)

In earlier designs of the input board, I didn't have reset connected on together. This caused the board to not be connected and not be able to work. This was difficult for me to figure out, because I had not realized that reset needed to be connected to RESET (not just another pin on the ATTiny). In order to make sure the board could function as expected, I started by running Neil's hello-world.

make -f hello.ftdi.44.echo.c.make
sudo make -f hello.ftdi.44.echo.c.make program-avrisp2-fuses
sudo make -f hello.ftdi.echo.c.make program-avrisp2
ptyhon term.py /dev/ttyUSB0 115200
  • That runs the hello world just fine. Step 2, let's try to turn on the light.
  • led is connected to pin 5 – PB2
  • Let's just try to turn on the light…
while(1) {
 set(PORTB, (1 << PB2));

I was really happy that this worked. The light is on!

Input light is on!  Finally!
make -f light-on.make
sudo make -f light-on.make program-avrisp2

Now, came the input thing to figure out. How do I figure out the information (voltage or current) from the two connected wires? Here is what I know:

  • Pin 10 is connected to 5V
    • High value
    • PA3
    • Also seems to be ADC3
  • Pin 11 is connected to Ground
    • Low value
    • PA2
    • Also seems to be ADC2
  • How do I read in the values of these wires?
  • What does it mean if they are bridged
  • PA3 is high
  • PA2 is low
  • Spilled liquid connects the circuit, and the higher the current, the bigger the spill

I knew that I wanted to use ADC for something, but I didn't know how to use it. I found this link how to read a single pin, but that didn't really help. I found the following code snippet, but it didn't do anything useful for me.

DDRA = 0b00000000; //PORTA set as input?
PORTA = 111111100; //internal pullups on except switches.

I did find some of Neil's code which was very helpful! Ok, what do we know about this.

  • So what really is ADCSRA?
  • I see that Neil has a readADC!
  • ADC has it's own clock. WOMP
  • ADC read stat is a macro
  • Write to start a conversation, read to see if one is happening.
    • ADSC : bit 6 of ADCSRA
    • Moving to bit zero, and bit-wise anding with bit 0 set.
    • If not zero, conversion in progress
    • If zero, conversion not in progress
  • readADCeight - Do a conversion and grab the 8 most significant bits.
    • highByte is where the return value is placed
  • ADC Mux
    • 0 through 5 are important
picocom /dev/ttyUSB0 -b 115200
  • Check the low value
  • Prints, otherwise not.
  • [ ] Read in information from serial, read the number and disply the number
  • [ ] See how this setup responds to water.
  • I have a touch sensor!
>>> ser.read(100)
>>> ser.read(100)
  • Note that we get \x00@ when the wires are touching, and \x00 when they are not
  • It remains to think about the best way to parse this serial code.

I was also able to send that it could communicate with my output board with the following commands.avrdude -p t44 -c avrisp2

Boards and Wires 2.0

I designed a motor board with my water sensor that can detect if water is spilled, and then move the motor.

bag bottom Fabric for the bottom

The water sensor wires also need to be very thin. I had been testing prototypes with the thicker wire, but the thin wire works much better.

bag bottom Fabric for the bottom

Another important thing to test was how well the wires were connected with water. At first I wanted to use very thin wire, but it was tough to sand wire (since it had a non-conductive outer layer). The thicker wire looked just fine too.

Testing different types of connectivity.

Remaining TODOs

  • [x] Read in the wire values for the input. How to test this in a meaningful way with water?
  • [ ] 3D Print bag straps
  • [ ] Integrate input with motor code

Organizing Myself

The next few sections are written in terms of the tasks that had to be done, they were namely:

  • Laser Cutting - fabric pieces for the bag (outside of the bag+ straps), base of the bag (firm accrylic)
  • Textiles - mostly covered by laser cutting, but also sewing pieces together
  • 3D printing carriages for different electronics
  • Programming

3D Printing

I orginally wanted to completely fabricate my bag by 3D printing the entire exterior, but that didn't end up happening. Instead, I went ahead and 3D printed two different components. I designed and printed a motor holder, to connect the moving part and the base of the bag. I also 3D printed the strap holders, that connected to the bag to the straps that I cut and printed. I designed both of these in openScad. The strap holder design is here and the motoro holder design is here.

The motor holder The strap holder.

Laser Cutting

Laser cutting ended up being one of the major components of my project. I knew that it would be difficult, but I wanted to laser cut the individual parts for to have the bag be sewed in. This took a lot of designing, testing and redesigning. In particular, I wanted to be able to put the 3D printed motor "home" on the bottom of the booard. I design it in openScad, and the final design file is here

Testing design pieces.


One of the biggest components of my bag that I haven't been able to spend much time on is what the outside of the bag will look like. Since I already have a dummy bag, and the bottom of the bag which I machine knit.

bag bottom Fabric for the bottom

I thought a new reasonable thing would be to cut out a design in cotton. Unfortunately, we did not see a setting for cotton on the laser cutter. There is a settting for felt, which would be nice for a decorative component. I was thinking of reusing the voronoi design that I used in machine-controlled cutting, but on felt. I hope to achieve something like this: cut felt

Fabrics for the laser cutter

If time permitted, I wanted to add a pattern to my bag. Since I really enjoyed the Voronoi design from Make Something Big Week, I decided to also add the similar pattern to the outside of my bag.

Fabrics for the laser cutter Fabrics for the laser cutter voronoi_pattern_openscad

The OpenScad final I used, with [mostly] parametric design is here.

Putting It All Together

One of the tough parts with the bag is that once it's all sewn together, you can't really do anything else. So I tried to set in the construction of the bag into pieces.

  • The servo needs a holder to attach it to the base board
  • There needs to be a bottom mesh that holds everything together
  • The bag needs to attach to the base.

The first thing I decided to do was to 3D print a holder for the motor. This involved a design in OpenScad, and a new laser cutting of the base board.

The position where the motor holder should be.

A Big Set Back

When I finally got the motor holder printed, to the exact specifications that I wanted, I had a little trouble getting the motor into holder. It was a VERY tight fit. Then, as I was gently pulling the motor wire through the side, it disconnected. This would have been a small mistake, as the EECS section has many spare servo motors, but, it was a different brand, with slightly different specifications. This meant that I had to reprint the holder, and re-attach many of the servo components. Most importantly, I had to change the holes on the moving vinyl cut piece, since the motor attachments were not the same size. You can see that I had to use the other side of the vinyl cut portion.

Motor broke in the holder Changed to match the specs of the motor

Another Big Set Back

I was finally starting to get the hang of thing (working with serial), when I got an RC=-1 error. Actually, this was one of the few times I had gotten this error in the class. I guess I had kind of deserved it; after all, I did end up attaching an FTDI jumper cable to be able to check the serail output. I tried to check all the problems that were outlined on the website, but I just decided to design and print two new boards. I decided that one would be my safe board, just a button with a flashing light in case anything went wrong (cycle 1, in Neil speak. And the other would be my more experimental board. The right below photo is a picture of my schema for the board with the attached FTDI.

This ended up getting me an error. This ended up getting me an error.

Traces Lift

At approximately midnight, my battery started to lose juice and at the same time my traces lifted. It was heartbreaking, I milled two new boards.

This ended up getting me an error.

Murphy's Law

Around 4am the night before the deadline. I proclaimed that this is "Murphy's Law, the class." I had so many things break the day before the deadline, that I ended up cutting almost all my features entirely.

This ended up getting me an error. This ended up getting me an error.

This included milling, stuffing, and programming a completely new board that would trigger the movable portion by a button click. The code is available here, and the traces are below. I used photoshop to invert the colors and used mods to mill the board. Additionally, the input sensing code is here

The simplest board.

Glue is Your Friend

Thanks to glue, I was able to attach many parts of my project together. Most importantly, this consisted of gluing the motor home together, to the base board, and also gluing the fabrics to the base board. I also ended up gluing together a lot of the fabrics; sewing by hand was going to take a lot of time.

An important design decision that I made early on was to glue a mesh to the bottom of the bag so that contents would not fall out if the moveable piece moved.

Clamping down parts. Gluing the bag straps Mesh with a protectant All the glue

The final product is not exactly what I had hoped for, but it works nonetheless! The inside circuits are stuffed in a small pocket. I would have liked to 3D print something, but ran out of time.

The final pieces The final pieces inside

Postmortum Presentation

Unfortunately, during the final exam yesterday, my demo failed. I think the battery may have been low, or something happened when I was transmitting the bag in the cold. It was pretty disappointing. I also was unable to answer Neil's quesiton (was I reading in the current using AC or DC) I said AC, although I wasn't sure. But, since I am actually processing the output of serial, I'm actually using DC. When I mentioned that the sensor was rather finicky, Neil said that AC would be more reliable. I may look into this in future work.

Since I've been determined to show that this works, I went into lab this morning and milled a couple new boards. Although I wasn't able to fix my original board, I did find that I needed a new battery, and I was able to invoke the bag movement with water, as planned and as seen below.

Masterpiece Summary

What Does It Do?

I fabricated a handbag that senses when there is a liquid spill inside the bag and opens a bottom compartment to let the liquid out.

Who's Done It Beforehand?

While there have been many attempts at creating handbags that repel liquid from the outside (Longchamp, etc), there have not been bags that try to limit water damage from the inside.

What Did I Design?

  • The bag exterior (3D desitn to 2D design pieces)
  • The water sensor PCB and motor sensor PCB (and the PCB of them together)
  • The bottom base accrylic piece and the moving accrylic pieces
  • The voronoi exterior design
  • The 3D printed strap holders and the 3D printed motor holder

(I think I designed everything myself, but took inspiration from elsewhere).

What materials and components were used?

  • PCB components (i.e. copper base, leds, resistors, etc.) and a servo motor.
  • Wires
  • "Hardware" components: screws, washers, etc.
  • Accylic sheets
  • Felt and cotton canvas for the exterior
  • Plastic from the 3D printer
  • Yarn from the knitting machine

Where did they come from?

  • PCB components, wires, hardware, accylic and printed parts from EDS
  • Felt, cotton, and wiring mesh from Blick

How much did they cost?

The EDS components were free. The felt and cotton canvas were $20. The wiring mesh was $10.

What parts and systems were made?

I made all the components except for the canvas and felt, although the designed and cut them.

What processes were used?

  • Org mode, which I just discovered (A huge shout-out to org-mode, and Dylan on helping me get started with it!)
  • Parametric 2D and 3D design in OpenSCAD
  • PCB fabrication and electronics design (KiCad)
  • 3D printing
  • Embedded programming
  • Machine knitting
  • Input devices and output devices
  • Project management: TODOs and triaging

What questions were answered?

  • Can you use wire connectivity to sense liquid?
  • Can you laser cut fabric?
  • Can everything that can go wrong, go wrong? (yes...)

How was it evaluated?

I honestly did very little evaluation, for testing the water sensor, I checked connectivity with a multimeter, as well as in my embedded programming code. Unfortunately, I ran out of time. For evaluating the design, I relied largely on the design of my Longchamp bag. I checked differences in measurements and dimensions between the two designs. If I wanted to evaluate the useful of this project, I would probably have to do a use study.

What are the implications?

I think the most novel thing is thinking how to use connective materials in fabrics. Although this was a small component of my project, I would have liked to look into this idea further. Of course, I'm not the only person to consider this, in the few couple weeks I looked at many papers on it, but I would have liked to experiment with this more if I had time.

Another implication is to consider modular accessories. There are many people working on modular clothing, that can change shape, but not necessarily in the accessories market.