Xiao’s Weekly Status Update (04/29)

My task this week is the testing of all the metrics of our design. Since I am responsible for the integration, and I have the device, I am mostly responsible for actually doing the testing and gathering the data, while my team mates are responsible for designing the tests. We have met our design goals in some areas, such as gyro drift limit and battery life. However, some metrics such as weight and gyro oscillation are not as fine-tuned as we would like.

Videos and pictures of testing results are in the Team’s Status Report.

We are on track. Test data is ready to be incorporated into the final report.

Xiao’s Weekly Status Update (04/22)

I’ve been working through Spring Carnival to get the first prototype working. It is indeed integration hell. The job of designing the 3D models for the enclosure was shifted from being Qiaoan’s to mine, since he was busy working on the Magwick algorithms for the gyroscope. I designed and 3D printed the enclosure, did custom wiring and now the whole thing works. I also integrated Qiaoan’s gyro implementation and Yuxuan’s gauge UI inplementation.

One small problem is that now the power delivery module is not bolted on to the RPi anymore, and the single power and ground wire I used was not enough for the power requirements of the RPi 4. I will try connecting multiple wires to all of the RPi’s power terminals to solve the problem. So far, the problem is not affecting the performance of our controller (other than the ugly low voltage prompt that is on top of everything LOL).

We are on schedule for next week’s presentation.

Xiao’s Weekly Status Update (04/08)

This week for me, my work focus has shifted from electronics to 3D modeling. I have measured all the components and made rough models of them. The next step is to design an enclosure and stuff everything inside. So far on schedule.

For testing, first of all the electronics are on a piece of breadboard and functionalities can be tested. During interim demo this has already been done. Second of all, the 3d printed enclosure will be test fitted and any modifications can be made easily. After the whole assembly is complete, the battery life will be tested by keeping it connected to the computer for a long time and record time. The controls will be tested by seeing raw input values in the game and comparing that to our desired values. If anything is not working as expected, we either have the member responsible to make changes, or declare the design feature a failure.

Xiao’s Weekly Status Update 04/01/2023

The first half of the week I was focusing on getting a test bench style hardware setup.

The above test bench was what I ended up with. It can be connected to any wifi network for our team members to use anywhere for development. At this point, hardware setup for the preliminary demo is all complete. IMU is able to output raw data (acceleration, gyroscopic, magnetic, each with 3 dof). ADC reads raw voltage input from the potentiometer. All 16 buttons work.

On Monday I transferred this setup to my team mate Qiaoan for coding and testing of gyro algorithm. Over the course of this weekend I will coordinate with him to get the hardware control part all working as a whole.

As the preliminary demo is imminent, I think my part is right on schedule, but could have gone a little bit faster.

Xiao’s Weekly Status Update 03/25/2023

This week I have been working on completing the hardware wiring of our project. I set out planning to connect every breakout board on a piece of breadboard, and attach everything to a temporary 3D printed back plate for easy transportation.

I encountered some problems with I2C buses on the RPi at first. As our power management, gyro, and ADC all use I2C (4 addresses in total), It presents a heavy load on one single bus. What happened was that one of the addresses for power management would keep disappearing, leaving the power management board inoperable. I later solved it by creating a second I2C bus using two extra pins on the RPi, and connecting the power management board to that new bus separate from the gyro and ADC. ADC is now wired up with the potentiometer.

On Sunday hardware operation code will be finalized, and pushed to GitHub. Then I will give the completed hardware system to my team mates for  the software side of things.

Xiao’s Weekly Status Update 03/18/2023

This week I have been focusing on hardware building. Following last week’s experiments with the battery module, now I have got it working with complete python API for charging status, charge level, and so on. Charging is via USB-C and so far works as I expected.

Additionally, I 3D printed a test case for a 4×4 button matrix and wired it up. Code has been written with python, which stores the buttons’ status in an array that’s updated with every button press.

At the time of writing this status update, I am working on wiring up the gyro and potentiometer and ADC. Expected to be finished this weekend.

If all these features are implemented during this weekend, then we’re still on schedule. If for any reason hardware implementation takes too long, I think we’ll reconsider whether it is necessary and viable to design a custom PCB, or do we just use hand made wiring.

Xiao’s Weekly Status Update 03/11/2023

The past 2 weeks, including the Spring Break, had mainly two focuses. First one is to reorganize our team and get the design report written and submitted, and the second one is to order the parts and start building.

The design report was a big challenge for us. We stupidly ignored everyone’s advice on starting early, and left ourselves with barely enough time to finish the report. We did try our best to gather every piece of information we could on the parts chosen, and documented every step in coming up with our design. For the hardware part, I realize that we are missing information on the design trade-off studies. We are aware of that and we will not miss this critical part in our final report. The truth is, we messed up because we were all too busy with the sudden workload increase from multiple midterms, and we were focusing perhaps a little bit too much on actually building the device, rather than writing the report.

All the major components (components that cannot be sourced at a generic parts store or be found in my personal parts bin) have been sourced and have arrived during the spring break. Assembly has begun and hardware assembly is expected to be done by the end of this weekend, latest by the end of next week (Friday). I do expect little hiccups but so far so good. Currently RPi is setup with an OS running, and the UPS power source for the RPi is up and running (charging function still needs to be tested and API integration still needs to be done).

Xiao’s Weekly Status Update 02/25/2023

This week I have been mainly focused on getting our  design choices right, and presenting for our design review.

During the searching for components for our design, I was amazed at the vast selection the Internet has to offer. Following advice from Professor Mukherjee, and after taking a closer look at some of the products, I realized that for a formal project, I cannot just go on Amazon and buy from the cheapest vendor. We need data sheets for the components. That’s what prompted me to eventually find all the electronic components on Adafruit. They have data sheets, and also some tutorials listed under every product we’ve chosen.

Preparing for the presentation was something I should have spent more time on. We kind of rushed through making the slides, leading to a couple of typos which I am not very proud of. The first time I actually went through all the slides and practiced was an hour before the presentation. Gladly, I think it went OK.

It is a fact, however, that we are still not that familiar with some of the quirks of the components we have chosen, but we are making progress. I think from this point on, us three as a team should most importantly be more proactive about deadlines. Sometimes I am busy because I am taking too many classes this semester, and I am glad my team mates could help out. However, in the end we are trying to avoid this sort of rushing before the deadline situation.

Xiao’s Weekly Status Update 02/18/2023

This week has been mostly focused on researching components we can use in our design. During the conversation with Professor Mukherjee and our TA Alex, it became very clear that we need to lay out every single detail we can think of in our design, and it will make our work much easier down the line.

I made some design choices:

  1. Buttons will be wired into a matrix, with diodes to achieve “N-key rollover”.
  2. Screen will be HDMI to avoid the use of GPIO pins. The smallest size HDMI screen for Pi from a good vendor is 5 inches. https://www.adafruit.com/product/2232
  3. Buttons will be an assortment of these in different colors. https://www.adafruit.com/product/1504
  4. Adafruit’s TDK InvenSense ICM-20948 9-DoF IMU is an ideal candidate for us. https://www.adafruit.com/product/4554
  5. https://www.adafruit.com/product/4133 This potentiometer is a good candidate for our analog inputs

Xiao’s Weekly Status Update 02/11/2023

  1. Researched existing enthusiast level DIY gaming steering wheels. There are a lot of 3D printed open source designs that we can borrow ideas from. There are also a lot of existing button layouts we can learn from. Researched feasibility of adding analog joysticks to Arduino for control. Researched components needed for an LCD screen to work with Arduino/Raspberry Pi.
    1. https://www.thingiverse.com/thing:4058270
    2. https://www.thingiverse.com/thing:3400357
    3. https://www.thingiverse.com/thing:2980569
    4. https://www.thingiverse.com/thing:4668185
    5. https://www.thingiverse.com/thing:2762839
    6. https://www.thingiverse.com/thing:5173152
    7. https://www.instructables.com/Create-a-Joystick-Using-the-Arduino-Joystick-Libra/
  2. So far I am on schedule.
  3. I will have the first version of components to purchase ready next week.