Progress Report for Chia-Hua Peng





Week 2:

Date: September 1, 2017
Total hours: 14
Description of design efforts:

In the first two weeks I was finalizing/ updating our project proposals and preparing some of the setup work. To give my teammates a better idea about what VR glasses look like, I brought my personal VR glasses in a team meeting and showcased what I have learned during summer intern as a HoloLens developer. I also started drafting the software overview for the app and gathered resources that could be useful for the design work. I found a “Bluetooth LE for iOS and Android” Unity plugin and a YouTube video proving that people have successfully communicating the iOS VR app with an Arduino UNO. There wasn’t a tutorial about how to use the plugin, however. I believe this would be a useful plugin we could use for communicating the VR mobile app with a microcontroller. I decided to break down the software communication development into the following stories and encounter the problem step by step.



  1. Get a Bluetooth LE module and download the LightBlue app from Apple App Store. Use the LightBlue app to test the Bluetooth connection with an Arduino UNO.
  2. Design a debugging Unity mobile App and use the Bluetooth LE plugin to test the connection with an Arduino UNO.
  3. Use the same debugging Unity mobile App to test the connection with an STM32 board.
  4. Find an alternative solution if running any issues in the first three steps, or continue developing the VR app using the plugin.


VR-Headset


For the microcontroller software development, I installed the Atollic True Studio IDE on my laptop, followed a tutorial on Youtube, and successfully created an LED blinking as well as LED intensity control demo using an STM32F4 discovery board I purchased in the summer. But the free version IDE does not have a debugger window that helps me track the value of a variable when the program is running. I decided to use an alternative tool, the Keil Microvision instead. I also installed STM CubeMX, a software that allows us to easily change the peripheral initialization settings from a user interface. There were some problems during installation. The debugger was not able to find the ST-Link. But I eventually found out the problem and successfully work out the GPIO testing. I was also able to track the value of a variable when the program is running. After testing how to use some basic peripherals, I lend another STM32F4 board to my teammate, Hengyi, helped him install the tools, and taught him what I found.




Apart from the software development work, I also help set up the team website with Hengyi ans started ordering some design components for testing. My goal for next week is to use Arduino UNO to tets the Bluetooth connection and the accelerometer.


Week 3:

Date: September 8, 2017
Total hours: 20
Description of design efforts:

This week I was working on drafting the software narrative, selecting the firmware candidates, and testing some hardware components. Below are some of the block diagrams I made for the software overview. I decided to break down the VR application to three blocks – a Bluetooth controller, a movement handler, and a haptic manager. The Bluetooth controller is responsible for communicating the app with the microcontroller. The movement handler is going to convert the accelerometer raw data to Euler angles and visualize the digital sword movement in a virtual environment. The haptic manager will determine the intensity the motors need to vibrate as well as the directions the sliding contact handles need to move toward. A detailed description for these blocks are demonstrated in the “Software Overview” document.



Overview-Block

VR-Block


Apart from drafting how the software is going to be designed, I also selected the firmware components for the project. I went through numerous datasheets and compared the characteristics for different types of components. Below is a sample comparison table I made. The complete analysis is described in the “Component Analysis” document. I also made a table summarizing the voltage and current consumptions for the selected components.




In addition to working on the firmware component analysis, I also tested the accelerometer and the Bluetooth modules with my Arduino UNO and STM32F407 board. The ADXL345 accelerometer was working perfectly on Arduino. However, it was not working on the STM32 board. I believe this was because some of the configuration was not set correctly. I will debug the problem later this weekend. The HM-10 Bluetooth LE module was working fine with Arduino. I followed the procedures I described last week. I was able to perform the basic read write using the LightBlue mobile app. Then I started designing the debugging Unity app using the Unity for iOS and Android plugin. I am likely going to finish the debuggin app next week.



Moreover, I also tutored Yutao and Lingke about how to set up the STM CubeMX tool and the Keil IDE for STM32 microcontrollers. I also consulted Joe, the lab engineer, about how to program the STM32 microcontroller using SWD pins. This is an extremely important part we need to understand before we shift to the PCB design phase. My goal next week is to continue testing the accelerometer, the HM-10 Bluetooth LE, and some other firmware peripherals using Arduino, STM32 board, and the Unity Apps I designed.


Week 4:

Date: September 15, 2017
Total hours: 18
Description of design efforts:

This week I was testing the hardware components and designing a debugging Unity app. Here is a list of the components I was working on and a summary of the testing results.


  • ADXL345 Accelerometer Testing:
  • As described in the figure below, I have successfully logged accelerometer data on the Keil debugger. We are now able to send the data to the STM32F4 microcontroller over an I2C interface. I did not set the device address alignment correctly last week and that was why I was not able to retrieve the data. The entire breakout board testing is completed. Moreover, Lingke also has finished designing and ordering the accelerometer PCB. We will start doing the soldering work as well as testing our customized accelerometer PCB as soon as we receive the board.


    Table 4-1 Accelerometer Testing Status
    Story Status
    Log the accelerometer data on a serial port using an Arduino UNO Completed
    Log the accelerometer data on a debugger watch window using STM32F4 microcontroller Completed
    Design and order a customized PCB for the accelerometer Completed by Lingke
    Test the customized PCB for accelerometer Wait for Shipping


    Figure 4-1 Successfully log the accelerometer data on Keil debugger's watch window


  • HM10 Bluetooth LE Testing:
  • This week I also went through the Bluetooth API datasheet and designed a Unity app that does the basic data transfer between my iPhone and an Arduino UNO. Below is a screenshot of the app I designed. I can log the accelerometer data from Arduino. I can also send a command from my app to instruct the Arduino UNO to toggle an LED. An issue I found is that the HM-10 module does not support the write-with-response mechanism. This means the mobile app itself will not get notified after the write success. It will not receive a feedback indicating if the write transfer is completed or not. However, this shouldn’t be a serious problem that will affect the design as my Arduino UNO does receive the correct message. The next step is to test the Bluetooth LE device and the debugging Unity App with an STM32 microcontroller.


    Table 4-2 Bluetooth LE Testing Status
    Story Status
    Use the LightBlue app to test the connection between an Arduino UNO and an iPhone Completed
    Design a Unity app that communicates with an Arduino UNO over HM10 Completed
    Communicate the Unity app with an STM32F4 microcontroller Ready for Development


    Figure 4-2-1 A screenshot of the Unity app

    Figure 4-2-2 Toggle an LED from the app I designed


  • DRV2605 Haptic Driver and Vibration Motor Testing:
  • I also tested the DRV2605 Haptic Driver and the vibration motor with an Arduino UNO. The haptic driver is a chip that uses I2C to communicate with a microcontroller and PWM to drive a vibration motor. According to its datasheet, the haptic driver is able to send over 100 types of pulses to a vibration motor. We can also adjust the vibration duration by updating the waveform sequence registers. There was an Arduino library available but I did not want to use it, as configuring the library with an STM32 microcontroller could be difficult. Therefore, I decided to carefully follow the datasheet and write my own functions that perform the equivalent tasks. The vibration motor is now able to provide a various types of haptic feedback through the DRV2605 chip. Hengyi will continue playing around with the touch feedback mechanism and find the waveform combinations that best simulate the sense of collision for our project. Meanwhile, I will transfer the Arduino code to embedded C and test it with the STM32 microcontroller. I am planning to complete the code conversion work by this weekend.


    Table 4-3 Haptic Driver Testing Status
    Story Status
    Test the haptic driver with an Arduino UNO Completed
    Convert Arduino code to embedded C for STM32 microcontroller Under Development
    Test the haptic driver with an STM32F4 microcontroller Analysis

    Figure 4-3 Testing Haptic Driver with an Arduino UNO


  • GS1502 Linear Servo Actuator Testing:
  • Lastly, I also helped Hengyi test the linear servo with an STM32 microcontroller. I adjusted the timer CCR registers using the HAL library and the microcontroller is now able to slide the servo back and forth. The next step is to integrate the mechanical component (contact handle) with the linear servo. Hengyi and Yutao will take care of this part.


    Table 4-4 Linear Servo Testing Status
    Story Status
    Test the linear servo with an Arduino UNO Completed by Hengyi
    Test the linear servo with an STM32F4 microcontroller Under Development
    Integrate the mechanical components Analysis

    Figure 4-4 Testing Linear Servo


    My plan for next week is to continue testing the firmware components. I also want to start designing the VR app and visualizing the sword movement using the accelerometer data.

    Week 5:

    Date: September 22, 2017
    Total hours: 17
    Description of design efforts:

    This week I was testing hardware components and gathering design package ideas. I also started designing the VR application. Below is a summary of the progress.


  • HM10 Bluetooth LE Testing:
  • Last week I built an Arduino prototype that communicates with the Unity app I designed over the HM10 Bluetooth module. This week I built another prototype using the STM32F4 microcontroller. I used CubeMX to set up the baud rate configurations and routed the UART pins to the Bluetooth module. I successfully transmitted the accelerometer data from the microcontroller to the debugging Unity app I designed. I can also toggle an LED from the app. The Bluetooth communication testing is completed.


    Table 5-1 Bluetooth LE Testing Status
    Story Status
    Use the LightBlue app to test the connection between an Arduino UNO and an iPhone Completed
    Design a Unity app that communicates with an Arduino UNO over HM10 Completed
    Communicate the Unity app with an STM32F4 microcontroller Completed
    Route the Bluetooth LE module to the main PCB socket Not Ready Anytime Soon


    Figure 5-1 Bluetooth and STM32F4 Testing


  • DRV2605 Haptic Driver and Vibration Motor Testing:
  • As I mentioned in last week’s progress report, I was working on the Arduino to STM32 code conversion. I used the HAL library to perform I2C communications. I also wrote functions that decode commands coming from a serial port and send collision pulses to a vibration motor. The STM32F4 microcontroller is able to provide a various types of vibration feedback. The haptic driver testing is completed.


    Table 5-2 Haptic Driver Testing Status
    Story Status
    Test the haptic driver with an Arduino UNO Completed
    Convert Arduino code to embedded C for STM32 microcontroller Completed
    Test the haptic driver with an STM32F4 microcontroller Completed
    Solder the chip on the main PCB Not Ready Anytime Soon

    Figure 5-2 Control the DRV2605 chip using I2C


  • Servo Testing:
  • The GS1502 linear servo we were testing last week seems to be too fragile to slide a contact handle. The sliding mechanical portion gets stuck easily. We decided to use an SG90 Servo with an alternative mechanical structure to apply the haptic torque cues. The new mechanical structure will be described in the revised Mechanical Overview documentation. I was testing the SG90 Servo with an STM32 microcontroller this week. I used the function generator to send pulses to the servo and the oscilloscope to track the waveform. Then, I used the STM microcontroller to duplicate the same pulses and tested it with the servo. We are now able to rotate servo to the desired angles. The next step is to design a contact handle prototype and to slide the mechanical prototype with servos.


    Table 5-3 Servo Testing Status
    Story Status
    Test the linear servo with an Arduino UNO Completed by Hengyi
    Test the linear servo with an STM32F4 microcontroller Completed
    Testing the alternative servo with function generator Completed
    Testing the alternative servo with an STM32F4 microcontroller Under Development

    Figure 5-3 Debugging Servo Using Function Generator and Oscilloscope


  • Voltage Regulator Testing:
  • We received the OKI-78SR voltage regulator from Digikey and started testing it with some of the firmware components. This is the voltage regulator recommended by Professor Mithuna. According to its datasheet, the regulator is able to provide a constant 5V output at a 90.5 % efficiency. However, we were having trouble testing the voltage regulator with the servo. The voltage drops significantly after the servo is attached. After consulting the course staff, we learned that the battery we used was not able to provide enough current. We switched the battery and servo is now able to function properly. The next step is to put the voltage regulator and the other firmware components together and to build a complete prototype.


    Table 5-4 Voltage Regulator Testing Status
    Story Status
    Solder the voltage regulator chips Completed by Yutao
    Test the Voltage Regulator output using DMM Completed by Yutao
    Test the voltage regulator with firmware components Under Development

    Figure 5-4 Voltage Regulator


  • Preliminary Design Package
  • The firmware component testing is pretty much completed. The next step is to design a mechanical prototype. I used Blender to draw a conceptual design layout. Below is a screenshot of the model. After consulting Yutao’s friend, who’s been working with 3D printer extensively, we learned that there were many restrictions in 3D printing model design (e.g. curved surfaces, geometry, holes, size). The model I drew in Blender was actually not suitable for 3D printing. The printed model is likely going to have strange artifacts. Therefore, we decided to use an existing model from an open source site for our preliminary prototype. We went to a friend’s place and print out a model that seems to be suitable for our design. It turned out that the printed model is also too small. The conclusion is that we will have to re-design another prototype that better fits with the digital components.


    Table 5-5 Design Package Status
    Story Status
    Drafting the Design Package Layout Completed
    Make a prototype using a 3D printer Under Development
    Re-design the design package model Ready for Development

    Figure 5-5-1 Drafting design layout using Blender
    Figure 5-5-2 preliminary 3D printed model


  • VR Software Development
  • This week I also started designing the VR app. I downloaded Google Cardboard SDK and updated Unity settings so we could utilize the iOS Virtual Reality capabilities. Additionally, I also set up the rigid body, collider, mesh renderer, hinge joint, and fixed joint properties of the hitting target objects and started coding the sword rotating logic. The next step is to visualize the sword movement in a Unity simulation.


    Table 5-6 VR Development Status
    Story Status
    Download VR SDK and basic Unity setup Completed
    Design the Bluetooth Controller Block Under Development
    Test the sword movement in a Unity simulation Under Development
    Test the sword movement using the accelerometer data sending from Arduino UNO Analysis
    Design the haptic manager block Not Ready

    Figure 5-6 Design VR app in Unity


    Next week I will continue working on the VR development. I will also assist my teammates in designing the package prototype as well as drawing the schematic and PCB layout.

    Week 6:

    Date: September 29, 2017
    Total hours: 24
    Description of design efforts:

    This week I was working on the VR app and the design package prototype. I also assisted my teammates in drawing the schematic. Below is a progress summary.


  • VR App Development Status:
  • I applied the algorithms described in the “Software Overview” document and designed a VR app that uses the accelerometer data to rotate a digital sword. I connected my Arduino prototype to the Unity Game Engine over a serial port, calibrated the accelerometer data, and made a simulation in Unity. After ensuring the sword was able to rotate to the correct orientation, I transferred the Bluetooth scripts I wrote earlier to the current project scope and deployed the app to my iPhone. We are now able to retrieve the data from the microcontroller wirelessly over a Bluetooth module. We can also use the tilting angle data to visualize the sword movement. The tilting orientation of the digital sword matches the perceived touch feelings. This should satisfy the minimal requirement for our first two design specific criterion. Additionally, I also tutored my teammate, Yutao, about how to use C# scripting to manipulate prefabs and objects in Unity. I had him review and understand the code I wrote as well as the setup I made. The next step is to design the haptic manager block, which logs the collision information from the Unity physics engine and uses conditional statements to determine the types of haptic feedback the hardware needs to provide.


    Table 6-1 VR Development Testing Status Testing Status
    Story Status
    Download VR SDK and basic Unity setup Completed
    Design the Bluetooth Controller Block Completed
    Test the sword movement in a Unity simulation Completed
    Test the sword movement using the accelerometer data sending from Arduino UNO Under Development
    Design the haptic manager block Not Ready

    Figure 6-1-1 Designing the VR App in Unity

    Figure 6-1-2 The second scenario I designed

    Figure 6-1-2 Deploying the App to iPhone using Xcode


  • Hardware, Schematic, and PCB Status:
  • This week I also tested programming the microcontroller from the SWD pins. This is a critical step we need to complete before drawing the PCB layout. I was trying to use the programmer on the first discovery board to program the microcontroller on the second discovery board. I removed the jumpers at the CN3 pins to isolate the programmers from the micros. Then, I routed the external SWD pins from the first discovery board to the corresponding microcontroller header pins on the second discovery board. However, I was not able to program the micro from the Keil debugger because the reset pin was held down by a solder bridge. Even after consulting the course staff and removing the solder bridge, I was still having problems programming a micro from a separate programmer. For some reason the micro wouldn’t make any response. Therefore, I decided to borrow a ST-Link V2 from the course staff and tried to use it to program the micro over SWD. It was finally working.


    Figure 6-2-1 Programming the STM32F407VG microcontroller from the SWD pins

    Besides testing the SWD interface, I also assisted Lingke in designing the schematic. I consulted the course staff about some of the confusions we had in the STM32F407 datasheet and took notes on the parts we need to be cautious about (e.g. The oscillator has be to located as close as possible to the micro and the length of the two traces has to be equal). The next step is to design the PCB layout and to verify the work with the course staff.


    Figure 6-2-2 Taking notes on the schematic

    Additionally, we also received the accelerometer PCB Lingke designed couple weeks ago. Yutao and Hengyi took care of the soldering job under the help of the course staff. I used the STM32F4 discovery board to test the chip. We are able to log the accelerometer data on the Keil debugger. The accelerometer testing is completed.


    Figure 6-2-3 Testing the accelerometer PCB using STM microcontroller

    Table 6-2 Hardware, Schematic, and PCB Status
    Story Status
    Test programming the micro from SWD pins Completed
    Test the accelerometer PCB Completed
    Designing the schematic In Progress
    Designing the PCB layout In Progress
    Verifying the PCB work with the course staff Not Ready
    Order the PCB Not Ready
  • Design Package Status:
  • I downloaded a linear servo mechanical structure from an open source site and printed out the model at Purdue BoilMAKER Lab. The 3D model is a perfect fit with the SG90 servo. I assembled the mechanical parts and used the STM32 microcontroller's PWM features to drive the servo. It was working perfectly.


    Figure 6-3-1 Linear Servo 3D Printed Model

    Figure 6-3-2 Linear Servo 3D Printed Model

    Figure 6-3-3 Linear Servo 3D Printed Model

    I also started drawing the second version design package prototype using Google SketchUp. Below are some of the photos. We still need to adjust the size and dimensions to ensure that all the electrical and mechanical components would fit it.


    Figure 6-3-4 Preliminary Design Package Model

    Figure 6-3-5 Preliminary Design Package Model

    Figure 6-3-6 Preliminary Design Package Model

    Figure 6-3-7 Preliminary Design Package Model

    Table 6-3 Design Package Status
    Story Status
    Choosing the linear servo mechanical structure Completed
    Test the linear servo structure using SG90 Servo and STM microcontroller Completed
    Designing the preliminary design package In Progress
    Finalizing the design package model Need to confirm the PCB dimensions first
    Print out the design package model Not Ready

    Next week we will be focusing on drawing the PCB layout and verifying the PCB work.


    Week 7:

    Date: October 6, 2017
    Total hours: 11
    Description of design efforts:

    This week I continued working on the VR app and assisted my teammates in designing the PCB layout. Below is a progress summary.


  • VR App Development Status:
  • I made a third VR Kendo scenario which features an opponent. I wrote animation scripts that rotate the joint of the opponent’s hand and update the colliding object properties. The opponent would swing the sword toward the player at a random interval. I also set up an event handler that tracks the collision event and sends notifications to the haptic manager block. The notifications are displayed in the 3D digital text in the virtual environment. It has been verified that commands are being send to the haptic manager block correctly. The next step is to improve the VR scenario and to verify that our embedded device would respond to the digital object collision properly.


    Table 7-1 VR Development Testing Status Testing Status
    Story Status
    Download VR SDK and basic Unity setup Completed
    Design the Bluetooth Controller Block Completed
    Test the sword movement in a Unity simulation Completed
    Test the sword movement using the accelerometer data sending from Arduino UNO Completed
    Design the haptic manager block Under Development
    Use vibration motors and servos to provide feedback when colliding digital objects Wait until the design package prototype is 3D printed

    Figure 7-1-1 Designing the VR App in Unity

    Figure 7-1-2 VR App demo



  • Hardware, Schematic, and PCB Status:

  • This week I also assisted Lingke in designing the PCB layout. I used CubeMX to generate the microcontroller pin layout and re-organized the component positions so that it would be easier to draw the traces. I learned from the course staff that it is recommended to add a ground layer on the bottom side so it is easier to place the decoupling capacitor directly beneath the VDD pins. I also helped Lingke look through the datasheets and verify if the traces are routed correctly. According to the microcontroller datasheet, we can route the Boot0 pin directly to ground if we are only using the main flash memory. However, we decided to route it to a jumper and enable the user to select the boot mode instead. The first PCB layout is completed. The next step is to optimize the area, and confirm the dimensions, to verify the design work with the course staff, and to order the PCB from OSH Park.


    Table 7-2 Hardware, Schematic, and PCB Status
    Story Status
    Test programming the micro from SWD pins Completed
    Test the accelerometer PCB Completed
    Designing the schematic Completed
    Designing the PCB layout In Progress
    Verifying the PCB work with the course staff Not Ready
    Order the PCB Not Ready


    Figure 7-2-1 Drafting the component positions on a PCB

    Figure 7-2-2 According to the manual, we can route Boot0 to ground if we are only using the main flash memory


    Next week, I will continue working on the VR app development. I will also update the design package prototype model once the dimension of the PCB is confirmed.


    Week 8:

    Design Review Week

    Week 9:

    Date: October 20, 2017
    Total hours: 18
    Description of design efforts:

    This week I was focusing on drawing the 3D model for our handheld controller. Below is a summary of the weekly progress.


  • VR App Development Status:
  • I have completed majority of the VR development work. I transferred the code and the VR scenarios I made to Yutao. I explained to him about how I handle the VR camera, the scenario manager, the movement handler, and the animations. I also found an open source Dojo 3D model from the 3D Warehouse. The model seems to be a perfect fit to our design. Yutao will import the model to the VR environment. He will also add some additional features to the design. I am planning to continue developing the VR app after the PCB and design package work are completed.


    Table 9-1 VR Development Testing Status Testing Status
    Story Status
    Download VR SDK and basic Unity setup Completed
    Design the Bluetooth Controller Block Completed
    Test the sword movement in a Unity simulation Completed
    Test the sword movement using the accelerometer data sending from Arduino UNO Completed
    Design the haptic manager block Under Development
    Additional Features Under Development
    Use vibration motors and servos to provide feedback when colliding digital objects Wait until the design package prototype is 3D printed

    Figure 9-1 3D Warehouse's Dojo Model


  • Hardware, Schematic, and PCB Status:

  • This week we have completed drawing our PCB. When I was doing the final schematic check and layout verification, I found that our Bluetooth header pins were placing too close to the ADXL header pins. This means it will be difficult to place the Bluetooth module in the desired orientation. I informed Lingke the modifications we need to make. He quickly updated the layout and ordered the board from OSH Park. It is expected that the PCB will be shipped by next Monday. We will start doing the soldering work as soon as we receive our board.


    Table 9-2 Hardware, Schematic, and PCB Status
    Story Status
    Test programming the micro from SWD pins Completed
    Test the accelerometer PCB Completed
    Designing the schematic Completed
    Designing the PCB layout Completed
    Verifying the PCB work with the course staff Completed
    Order the PCB Completed
    Solder electrical components Waiting


    Figure 9-2-1 This is the orientation we will be placing the Bluetooth

    Figure 9-2-2 Final PCB Verification - The header pins need to be moved downward in order to create space for placing the Bluetooth Module



  • Design Package Status:

  • I was focusing on drawing the design package model this week. After Lingke informed me that the dimensions of the PCB were confirmed to be 64.59 x 62.99 mm, I started drawing the PCB cases and covers. The diameters of the mounting holes at the PCB corners are less than 10 mm. I made a 52.4 x 52.4 mm square hole at the top center face of the handheld controller. We will place the PCB directly on top of the square hole and stabilize the four corners with screws. This way, we can solder the testing LEDs and the voltage regulator on the top side of the PCB (outer surface of the PCB case) while routing the servo and vibration motor wires from the bottom side of the PCB (inner side of the PCB case) to the main handheld part. Hengyi and I took careful measurement for the linear servo, battery cases, and other individual components, and drew the main handheld controller body as well as the linear servo gear together. I also spent additional time modifying the sliding handle, the case covers, and other miscellaneous components individually. In order to easily place and stabilize the linear servo structure inside the handheld controller body, I cropped out a rectangle on the opposite side of the sliding contact handle surface. The handheld body will be covered up by an L-shape case cover. The 3D drawings are pretty much completed. However, the course staff were running out of 3-mm PLA filament. We will also start the 3D printing work as soon as we receive the filament.


    Table 9-2 Design Package Status
    Story Status
    Drawing and updating the 3rd Version the 3D Model In Progress
    Use Print Studio AutoDesk to check potential 3D printing error Hengyi is learning the tool
    Get the model printed Waiting
    Assemble the components Not Ready


    Figure 9-3-1 The Handheld Model (It was separated into multiple groups in the later modification version)

    Figure 9-3-2 52.4 mm by 52.4 mm square hole for the PCB

    Figure 9-3-3 Dimensions for the PCB case, main handheld part, and sliding handle

    Figure 9-3-4 Component Dimensions

    Figure 9-3-5 Placing components into suitable orientations for 3D printing


    Next week, we will start the soldering work as soon as we receive our PCB. We will also start printing and assembling the mechanical components.


    Week 10:

    Date: October 27, 2017
    Total hours: 20
    Description of design efforts:

    This week our team is focusing on soldering and testing the PCB. We also started 3D printing our design package model.


  • Design Package Status:

  • I was notified that the PCB case I designed was probably not 3D printable. There was no such a way to place the model in an orientation without adding a tremendous amount of supporting material. Therefore, I decided to split the box into two sub-parts. We will assemble the two components together using super glue. Hengyi helped me use the Print Studio AutoDesk software to verify that the models do not have any error for 3D printing. We received a pack of 3-mm black PLA filament from the course staff this Tuesday and immediately submitted the STL files to the WALC 3D printing lab. We will start assemble the mechanical component as soon as we receive the printed parts.


    Table 10-1 Design Package Status
    Story Status
    Drawing and updating the 3rd Version the 3D Model Completed
    Use Print Studio AutoDesk to check potential 3D printing error Completed
    Get the model printed In Progress
    Assemble the components Waiting


    Figure 10-1 Divided the PCB case into two sub-parts (dimensions were labeled in week 9 images)

  • Hardware, Schematic, and PCB Status:

  • We have received our PCB this Monday. Hengyi and I were finalizing the embedded software while Yutao and Lingke were taking care of the PCB soldering jobs. Hengyi helped me reconfigure the timer settings and added the backup UART, I2C, and PWM features using CubeMX. I was adding some functions for the backup peripherals as well as organizing the code. After Yutao finished soldering the microcontroller, the decoupling capacitors, and the voltage regulators, we started programming an LED testing script to the microcontroller using the ST-Link V2 programmer. However, the Keil debugger failed to recognize the micro. I started debugging the PCB using the DMM. Each VDD pin does receive a 3.3 V power from the voltage regulator. However, the core voltage was incorrect. The voltage level at the Vcap pins was only 0.2 V, which is way lower than the typical value (1.26 V) specified in the datasheet. After spending the entire Wednesday afternoon debugging the problem, I found that the chip was not placed in the correct orientation. Yutao quickly soldered another micro on the second PCB. After verifying that the Vcap pins receive the correct voltage, we started programming the testing scripts again and it was finally working. We have completed testing the accelerometer, the vibration motor, the linear servo, and the Bluetooth module on our PCB. Yutao will complete soldering the header pins and we will start putting the mechanical and electrical components together next week.


    Table 9-2 Hardware, Schematic, and PCB Status
    Story Status
    Test programming the micro from SWD pins Completed
    Test the accelerometer PCB Completed
    Designing the schematic Completed
    Designing the PCB layout Completed
    Verifying the PCB work with the course staff Completed
    Order the PCB Completed
    Solder electrical components Completed
    Debugging the PCB Completed
    Integratd the PCB with the design package model Waiting


    Figure 10-2-1 Finalizing the microcontroller coding

    Figure 10-2-2 The orientation of the chip was flipped around

    Figure 10-2-3 Top view of the correctly soldered PCB

    Figure 10-2-4 Testing with the LED toggling script

    Figure 10-2-5 Testing with the finalized program




    Next week, we will start asembling the mechanical and electrical components once the 3D printing work is completed.


    Week 11:

    Date: November 3, 2017
    Total hours: 28
    Description of design efforts:

    This week I was finalizing our design. Below is a summary of the progress.


    In the beginning of the week, I was focusing on finalizing the software end of the design. I added the pushbutton logic to our microcontroller program and updated its Bluetooth transmission functions. I also modified the Bluetooth listener script from the VR app side. The app can utilize the pushbutton inputs to change the VR scenario. I logged the pushbutton status in a 3D digital text and confirmed that the app does receive the correct data. Additionally, I also updated haptic feedback logic in our VR app. Our haptic device is able to provide two different types of touch feedback – vibration feedback and torque feedback. Originally, I was using separate commands to indicate the vibration intensity and the torque direction. This means the app needs to send two commands in a short instance of time. To reduce Bluetooth workload, I modified the command data structure. I used the upper four bit of the haptic instruction to indicate the vibration intensity level and the lower four bit data to specify the torque feedback direction. I informed Hengyi the change and have him modify the haptic feedback decoding logic in the microcontroller program.


    Figure 11-1-1 Finalizing the VR app and its communication with the microcontroller


    Figure 11-1-2 Adding the sound effect


    After we received our 3D printed parts, we started the design packaging processes. I drilled holes on the handheld parts for the pushbuttons and the screws and started assembling the components. I used hooks and loop fasteners and glues to put the mechanical parts, the linear servo, the sliding contact handle, the vibration motors, the membrane pushbuttons, the battery case, and the power switch together. I also used sand papers and silicon sprays to smoothen the sliding handle surface. After we put everything together and tested the overall product with our VR app, we stabilized the PBC on the top of the PCB case. We have demonstrated the end product to the course staff. The PCB is completed and all the 5 PSSCs are satisfied. Next week, we will be cleaning our table.


    Figure 11-2 Testing the pushbuttons


    Figure 11-3 The PCB case


    Figure 11-4 Bottom side of the PCB case


    Figure 11-5 Packaging design


    Figure 11-6 Drilling holes


    Figure 11-7 The end product of our haptic handheld controller


    Table 11 Overall Status
    Story Status
    VR App Completed
    Microcontroller Coding Completed
    Schematic and PCB Design Completed
    3D Model Design Completed
    Soldering and Design Packaging Completed
    PSSC Demonstration to course staff Completed
    Cleaning our table Next Week

    Week 12:

    Date: November 10, 2017
    Total hours: NA
    Description of design efforts: Done

    Week 13:

    Date: November 17, 2017
    Total hours: NA
    Description of design efforts: Done

    Week 14:

    Date: November 24, 2017
    Total hours: NA
    Description of design efforts: Done

    Week 15:

    Date: December 1, 2017
    Total hours: NA
    Description of design efforts: Done

    Week 16:

    Date: December 8, 2017
    Total hours: NA
    Description of design efforts: Done