Michael’s Weekly Report March 24-30

In preparation for the demo this upcoming week, I have focused mostly on integrating all the hardware components on the jacket.

One of the major components is the LED matrix, which is large, making it hard to place on the jacket, and has the highest power consumption, requiring careful wire management. We decided that we wanted to put the battery pack on the top of the jacket, so we had to move the LED matrix down a bit on the back.

For putting the LED strips on the jacket, I considered several attaching mechanisms, including:

  • Sewing pulley joints to zig-zag the strip
  • Gluing the strip directly on
  • Gluing the strip onto a clothe and then sewing the strip on
  • Sewing the strip directly on

I went with gluing the strip onto a clothe and then sewing the clothe on the jacket. The reason for this choice is that the pulley joints depended too much on the sewing for the joints, which is risky. Gluing the strip directly on is not flexible, and sewing the strip directly on is not secure, and if we pierce the waterproofing sleeve, then we don’t have waterproofing anymore.

Gluing the LED strip sleeve was no easy task though…the following glues did not work:

  • Hot glue
  • Super glue
  • EPOXY
  • Acrylic Glue
  • Gluestick
  • Electrical tape
  • Duct tape

You get the idea…it was a struggle. But it turns out there’s a special glue called Silpoxy that works brilliantly, and tada…

I also heat shrinked the LED strip wires for additional waterproofing protection.

I also soldered the vibration motor component of the jacket as well, and will finish the integration before the demo. Next steps are to sew everything onto the jacket, and do a quick Raspberry to Arduino comm test via Bluetooth.

Mike’s Weekly Update, Mar 10 – Mar 23

Worked on figuring out programming the LED matrix and figuring out how to integrate the matrix onto the jacket.

In order to reduce memory usage on the Arduino, there had to be some clever tricks used to minimize the representation of the matrix images.

// bit representation of signal image on matrix
left_turn[] = { 
0B1000000000000001, 
0B0100000000000010,
0B0010000000000100,
0B0001000000001000,
...
}

void show_matrix (uint16_t M[], int r, int g, int b) {
  int curr_led = 0;

  for (int col = 0; col < WIDTH; col++) {
    uint16_t curr_bitvec = M[col];
    uint16_t mask = 0B0000000000000001;

    for (int row = 0; row < HEIGHT; row++) {
      if (curr_bitvec & mask == 1) {
        leds[curr_led] = CRGB(r, g, b);
      } else {
        leds[curr_led] = CRGB(0, 0, 0);
    }

    curr_led++;
    curr_bitvec = curr_bitvec >> 1;
  }

  // Skip LEDs that loop around at the corners
  for (int i = 0; i < NUM_LEDS_SKIP; i++) {
    if (curr_led < 300)
      leds[curr_led] = CRGB(0, 0, 0);
    curr_led++;
  }
}

By using a bit-vector instead of a naive integer matrix, we save (SIZE_INT – 1) * 256 = 992 bytes per 16×16 image.

An image from testing the matrix code:

Many possible mounts for the matrix onto the jacket, but the biggest concern is flexibility while maintaining integrity of the matrix to stay on the back. The most likely approach is to glue the matrix onto a clothe, which is then screwed or sewn onto the jacket. Heat shrink wrap and hot glue will serve as waterproofing for holes that have to be put into the jacket.

There is also a preliminary communication protocol that has been developed for the Arduino, which will be utilized when the Raspberry talks to the Arduino via Bluetooth.

Michael’s Weekly Update, Mar 3 – Mar 9

Accomplishments

  • Finished design review report
  • Acquired a jacket for the wearable component
  • Designed waterproofing for LED strips (heat shrink)
  • Designed a sew-on component for the LED strips instead of directly gluing it on the jacket
  • Preliminary sketches for possible 3D-printed waterproofing shells on the bike

Future

  • Prototype a few waterproofing shells
  • Build the jacket

Michael’s Weekly Update, Feb 24-Mar 2

Accomplishments this week:

  • Designed signal light patterns. Since at full capacity, the LED strip can consume 12 – 15 A at 5V, we need to be careful about turning on all of the light s at the same time. Therefore, I designed some light patterns that try to be conservative on the number of LEDs used.

Above: brake light is the entire panel, but at low power
Below: Turn signals, we are not using all the lights.

  • Listened to other presentations, and received feedback from Prof. Ken about what steps to take in the future, which include batteries and weight specs.
  • Received LED matrices, wrote code to interface with the matrix.
  • Drawing diagrams and helping write the design review paper.

Concerns:

  • The LED matrix code is not hard to write in terms of turning 2D data[][] into 1D serial data to be interpreted by the Arduino, but the problem is that if we want to store signals that are very specific, a single 16×16 bit-vector to describe a signal is very expensive, if we have around 100 such signals. This is made worse, since the Arduino Nano also has a very limited memory. One possible solution we may have to consider, is to offload the signal memory to the Pi, and then have the Pi send over communication the signal that the Nano should be displaying. This can be cached, for better performance, so we don’t have to fetch 256 bits every time we want to display a signal.
  • We are bit worried about how much battery power we need. We are currently thinking about one on the bike and one on the jacket, the Pi and the LED matrix are the two biggest energy suckers.

A1 CycleSafe Weekly Update, Feb 24-Mar 2

We had presentations this week, and were able to see many aspects of how even projects that were well underway and seemingly on a good track still could use some design reflections and feedback.

For our team specifically, we mostly missed out on specifications for our battery life and weight. This is a very important aspect of our product, as the first two things a consumer are probably going to consider in our product are:

  • Will the battery life last long enough?
  • Will the device be bulky and unwieldy to put on the bike/my body.

Our plan is to conduct some sort of competitive analysis on other similar situations, and the other is to conduct a small user test to see how people respond to weight and battery life. We met with Prof. Ken Mai as well to talk about other ways to find solutions for our problem.

We also received a concern about how we plan to measure the brightness of our LEDs, but for now, we are going to assume that we light all of the LEDs at 100%, and we are going to use the candela ratings that the datasheeet gives us. If we need to adjust the brightness to an in between, we can consider buying a sensor (around 6.99) to test it out.

Michael’s Weekly Update, Feb 17-23

Accomplishments:

  • Worked on Bluetooth module communication with mobile device
  • Worked on Maps intersection detection API
  • Wrote Arduino code for all peripherals
    • Piezo Buzzer, controlled sound and created notification sounds
    • Cell phone vibration motors
    • LED Matrix data
    • Bluetooth module
  • Worked on design documents
    • Created LaTeX template for the report
    • Created specifications for power and refresh rate needed for peripherals

Future work needed on making a more solidified Bluetooth communication scheme, since right now it is very impromptu on how devices are triggered.

Also, I need to minimize the latency of how all the devices respond, while making communication still as readily available as possible.

Upcoming Work:

Some of the improvements I mentioned above I’d like to work more on. In addition, the major next step is to actually install the devices on a jacket. This will bring challenges for how to make the devices fit well while also working properly.

Some risks I foresee are that the devices will be very hard to power on low power. Fortunately, we should be using the bike for power for now, so power is not too much of an issue. Also, I am a bit worried about how comfortable devices will be on a wearable, and whether they will work well once they have to move around a lot with the wearer of the jacket.

Schedule:

On schedule, except for the LED strips which didn’t arrive. Since I already have a prototype with code, they should be very easy to set up once they arrive.