Activity Log 2: Electronics Design and Production

Summary

During Week 8, Week 11 and Week 13, I have aquired skills such as interpretting datasheet of different chips, setting up my input device (accelerometer/gyroscope) and my output device (vibration motor). In those weeks, I used tinyAVR-1 series as my processor. Later, during the Networking and Communications Week, I chose to upgrade my board with the ESP32-WROOM-32 as the processor, the main reason for that was because this microcontroller has the bluetooth feature, which would help with the bluetooth application development of my project.

ESP32-WROOM-32

 May 4, 2021 

ESP32-WROOM Tutorial

Wroom32 pinout


PCB Design

PCB design Version 1: inspired by Griffin's design, I put all my I/O devices into one board:

Version 2: notice that I replaced the vibration motor in version 1 with a "haptic feedback board", the one that I was planning to use was Adafruit's Haptic motor Controller as I could use the SDA and SCL pins for I2C communication. In the second image, I reproduced Adafruit's PCB design for this board using KiCad.


 May 6, 2021 

Version 3: 1) Fixed the schematic errors that I made and added eight 0 ohm resistors as the bridges; 2) removed the power supply since I was not sure if the battery alone would work for the system; 3) replaced the ESP32-WROOM footprint with the one in Barduino 2.2 in order to pass the electronics rules check.

Please note that this layout may only work for non-flex PCB production process, since the small pads may struggle staying on the sheets during the weeding process.

How to change the ESP32-WROOM footprint

Schematic

PCB layout (non-ground pour version)

The white/blue components are from Neil's board and I tried to arrange the components in the same way as his board. The purple/black components are the extra ones for my board. The ones without labels are the 0 ohm resistors

labeled PCB layout (the non-labeled components are the 0 ohm resistors serving as the bridges)

PCB layout (ground pour version for laser cutting)

 May 7, 2021 

Since I knew that it would take a while to fabricate this board, I decided to spend time making sure my PCB design was correct. I used the built-in "caliper" in KiCad to measure the distances between components to make sure I had left enough room for every component - I found this approach helpful because I realized that I did make a mistake on the OLED display and the Haptic Feedback board. I was able to solve this issue by rotating the OLED board, and also bringing the Haptic Feedback board further away from the resistor. As a result, I was also able to use one fewer 0 ohm resistor. When doing the "ground pour", I blocked out a big area between the FTDI and the ESP32 in order to avoid the FTDI connect directly to the ESP32 without passing the capacitor, since I placed multiple 0 ohm resistor in between. Here are the updated images for the PCB design:

The updated PCB schematics

The updated PCB layout

3d View of the board, with the orientation that i am planning for the i/o devices.

PCB Production on FR1 Boards

 May 10, 2021 

Part 1 - Laser cutting attempt

Part 2 - Milling and Soldering

I/O Devices Testing on the FR1 Prototype

1) Test the Accelerometer/Gyroscope module and OLED display

2) Test the Haptic Controller module

Flexible PCB Production

 May 20, 2021 

My instructors had told me that it was challenging to produce a working flexible PCB using copper vinyl, thus I had set up a back up plan to use the FR1 PCB if it was not working at the end. However, I still wanted to give it a try, and so I consulted my instructors for advices. Spencer had spent some time optimizing the fiber laser settings for the Kapton/Copper vinyl sheets, so he was able to provide me some advices for making a flexible PCB that would work for my project:

  • Option 1: make a small FR1 PCB with a I2C line, then connect that with flex PCB ribbon cables that we can make on the laser to your different modules. This is a nice durable solution that based on Spencer's experiments making simple flex pcbs should work ok.
  • li>
  • Option 2: do more tests to see if we can make a flexible PCB of my current PCB design. It may be possible to do raster engraved PCBs with the kapton if the calibration is perfect.
  • Option 3: figure out the more of the design rules for making flexPCBs and try to adapt my PCB design to those. For example, hand weed boards if the traces are curved or large enough.

I really liked Option 1 but I was not sure which components I should choose to keep with the ESP32. I assumed the components that were on Neil's example would all be crucial, however keeping them all on the FR1 board might not make the overall system as flexible as I wanted it to be... After some internal debates, I chose to first do a test cut on an ESP32 before making a final decision. I followed Spencer's documentation to set up the fiber laser for flex PCB.

Step 1: layer (2 layers of ) kapton onto acrylic sheet

Step 2: layer over 3M copper foil tape (only use copper tape from the lab supply)

Step 3: place into corner of laser bed to insure repeatable alignment

After some experiments, we found that the original settings (P: 65, V: 1.2, Frequency: 2000, Pass: 1) were high on the ESP32, thus, we lowered the power to be 50 and velocity to be 0.6. Yet, the next challenge was weeding:

The failed weeding attempts

Eventually, I was able to find the right tool and right angle for weeding the copper vinyl.

Having found the right tweezer and angle for weeding

 May 24, 2021 

Thanks to this exercise, I felt more confident on making the whole PCB flexible. Here are some changes I made on my PCB to help with the weeding process.

Part 1: KiCad

Thickening the track widith from 0.4mm to 0.7mm in KiCad layout

Use "Rounded Rectangle" with "15%" corner size

Make sure the lines are as straight as possible

Here is the 3D view of the PCB. My input device is the accelerometer/gyroscope (MPU6050 module), and my output device is the vibration motor (DRV2605 module)

Exporting the copper traces and solder masks from KiCad for post-processing in Adobe Illustrator

Part 2: Adobe Illustrator

Reduce the solder mask to 88% of its original size

Here is how the finished .ai file looked (before weeding lines)

Here is how the finished .ai file looked (after weeding lines)

Part 3: Laser Cutting the Board

Here is a short video of cutting the copper vinyl.


A couple of the many failed attempts on making the flexible PCB

Having finally weeded the whole PCB

After I removed the scrap copper, I then lay a layer of kapton over the traces. Here is a short video showing the cutting process for the solder masks.

After removing the solder masks

It is suggested to remove the PCB from the acrylic before soldering.

Peeling the PCB off the acrylic

However, I burned some copper pads on the ESP32 so I had to make a new flexible PCB.

Attempting to soldeer the ESP32 on a flexible PCB

Part 4: Debugging and Testing

 May 25, 2021 

From this experience, I learned that weeding plays an important role for soldering. I noticed that I had some difficulty weeding the 90 degree corners, so I reviewed my .ai file and make adjustments on the weeding lines. Spencer had suggested me to keep an extra set of I2C pads on the board in case one of the other two didn't work out.

Using the weeding lines to break the corners

I noticed that the top left corners were not focused and this issue recurred in my later attempts.

so I cut the board with a second pass, but that was not helpful as some ESP32 pads were removed due to over power

Eventually, I settled down on one of the boards and started weeding.

Having weeded a small section of the PCB

Having removed all the (Kapton) solder masks

Before removing the PCB from the acrylic, I chose to carefully clean the board with soap water because I thought it was easier for me to find the copper pad. Next, I was ready to solder. To begin, I taped the PCB on the solder mat. I also taped the ESP32-WROOM for better alignment. The modified footprint allowed me to solder this component using the regular method.

Aligning the ESP32-WROOM

Having successfully soldered the ESP32

Having successfully soldered the whole board

Testing the PCB with the hello.ESP32-WROOM.echo Arduino sketch

Next, I tested my I/O devices using Adafruit's Arduino examples. Here is a short video showing the I2C communication works for the vibration motor.


 Jun 4, 2021 

While working on the networking code for my board, I noticed that I kept receiving the error of Failed to connect to ESP32: Timed out waiting for packet header. I then tried the sketch on my FR1 board but it worked. I decided to do a continuity test and found that the GND pad of the FTDI was disconnected. I took a closer look and found that the pad was coming loose, thus I would need to resolder the pad and test again. I also would like to desolder the 4 position headers and solder the modules directly on the board, since that would make the system more compact.


 Jun 7, 2021 

Part 1: Desoldering

During the office hour, Spencer taught me how to fix the board and also desolder the headers from the flexible PCB using a heat gun. I forgot to take images when he showed me, but the basic process is as follows:

  • To fix the pin headers: Spencer used a tweezer to remove a tiny bit of the Kapton mask around the pad to expose some trace, and then connected the pad with the trace. This method helped secure the pin header and passed the continuity test!
  • For desoldering: Spencer suggested to hold the header using a long pair of tweezer and lifted the board, then he blew the area (of the header) with a heat gun. In order not to overheat / burn in the area around it, he made sure to move the heat gun left and right. In a minute or two, the tin around the pins started to melt and eventually, the board droped to the table (gently) due to gravity.

Part 2: Making a Second Flexible PCB

I also seized the chance to make a second flexible PCB. As I already had some experience by then, the process was smooth and it took much shorter time to achieve one. The result was beautiful to me! Here is a short video showing the process and the result of the second flexible PCB. In this PCB, I used a slightly larger power, so the setting that I used for the fiber laser was: P: 55; V: 0.6; Frequency: 2000; Pass: 1.

And here is a hero shot of the final flexible PCB, I was very happy with the result!

Files

Please find below the files that I made for this assignment.

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License