Mia Han’s Status Report 5/2/20

What did you personally accomplish this week on the project?


Once I started writing the final report and began looking more into my implementations, I realized that I didn’t implement the right Reed-Solomon version; instead, I implemented a combination of viterbi + rs which is why the accuracy was so high for errors less than <10%.  So, I re-did the reed solomon implementation that more accurately reflects the actual implementation.  Additionally, I implemented BCH, another algorithm that detects errors within certain packet sizes.   Moreover, we met a couple times as a group to make sure everyone understood the GUI, how to integrate their portions, and how to go about de-bugging our issues.

I also worked on our final presentation earlier this week.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I feel that we are slightly behind; the actual product is almost finished, but I’m worried that we are a bit behind on our video.  Additionally, I’m a bit rusty on C, so that was a little hurdle I overcame today.

To catch up, I plan on spending all day tomorrow creating the script and video that’s due Monday.  Moreover, now that I’ve overcame that hurdle, I feel that it should be smooth sailing from here.

What deliverables do you hope to complete in the next week?


I hope to (in order of priority):

  1. Clean up RS
  2. Maybe implement a nuanced version of RS
  3. Finish the video
  4. Final Report

Mia Han’s Status Report 4/25/20

What did you personally accomplish this week on the project?


I worked on converting getting my protocols to convert from static calls to repetitive calls every second to display on our live graph; additionally, I integrated JP’s graph with my implementation of the GUI.  I also collected data that verifies that my protocol meets the requirements that we set at the beginning of the semester- everything looked good!  I also fixed the Viterbi + convolutional codes implementation to verify the accuracy of the data that was recovered and not just measure the number bytes of data that was recovered.

I then spent the latter half of the week working on our presentation that is due Sunday night.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I feel that we are slightly behind; I hope to finish up at least one more protocol implementation before the video of the final product.  But, because we spent some time figuring out how to integrate the protocols with the GUI and the best way to present the data on the GUI, I feel that I am a bit behind.

At this point, a few of my classes have already wrapped up, so I plan on spending this extra time working on this new protocol and making sure the everything that I have already written is near perfect.

What deliverables do you hope to complete in the next week?


I hope to (in order of priority):

  1. Reintegrate my Viterbi and RS implementations with the new GUI
  2. Finish gathering the measurements for the presentation tonight
  3. Implement one more error detection and correction protocols that we previously discussed in our project re-design.

Mia Han’s Status Report 4/18/20

What did you personally accomplish this week on the project?


We met a few times this week to discuss who would be responsible for the remaining tasks and how to begin integrating each other’s work.  I felt that it was best for me to integrate the graph with the GUI, while JP worked on writing a nice wrapper class to encapsulate the protocols and make calling each protocol from the GUI a lot easier and neater.

I integrated the line plot graph with the GUI; now, the results from each iteration of the protocol is plotted in the graph in real-time (thus, the graph from JP’s demo and the GUI from my demo are in one nice GUI!).  Additionally, I’ve finished implementing and integrating Reed Solomon simulation.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I feel that our progress is on schedule; we spent a good amount of time ensuring that any protocol can be easily integrated with the GUI, and I’m satisfied with those results.  Additionally, since the integration is mostly completely, I feel that we can focus more on creating more types of encoding and decoding schemes.  I’m a little worried about the UDP integration with the GUI putting us behind schedule, since that is so different than the current serial/bit stream implementations that we’ve currently integrated.

What deliverables do you hope to complete in the next week?


I hope to (in order of priority):

  1. Ensure that there are no bugs in the GUI- right now, we are getting a few bugs every now and then.  Additionally, I would like to clean up the GUI by adding more console messages and figuring out if it is possible for the graph to be updated more quickly.
  2. Implement more error detection and correction protocols that we previously discussed in our project re-design.

Mia Han’s Status Report for 4/11/20

What did you personally accomplish this week on the project?


I’ve been working on refining the prototype demo-ed on Wednesday by further testing my program and debugging it from minor issues.  Additionally, I’ve been working on implementing other algorithms like Reed-Solomon and integrating the Hamming Codes + graph and UDP protocols.  I also did my reading for next Wednesday’s discussion this week!

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I feel that our progress is slightly behind; I would like to further along with the integration, but I feel that putting in a few more hours this week will put us in a good spot.

What deliverables do you hope to complete in the next week?


I hope to (in order of priority):

  1. Integrate the hamming codes implementation + UDP protocol with the GUI and integrate the graph feature
  2. Finish debugging and refining GUI

Mia Han’s Status Report 4/4/20

What did you personally accomplish this week on the project?


I’ve been working on integrating my protocol with the GUI.  I’ve ran into more issues that I was expecting; I feel that my issues have arose from forgetting small things in C and relearning a few concepts.  Additionally, our team met a few days ago to discuss how we are going to approach integration and what unforeseen tasks need to be addressed.  Ultimately, I’ve spent this past week refining my protocols and integrating it with the GUI; moreover, I’ve been helping my team understand the GUI and the plan for how it all should be integrated.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I feel that my progress is a bit behind; because of my rustiness with C and learning along the way with these algorithms, I underestimated slightly the difficulty of implementing these.  These algorithms are a lot more complex to implement than understanding.

To catch up, I’ve committed spending the time now until the demo to integrate, test and debug our protocols.  I feel that I can make a big push before things get too hectic with my other coursework next week, and now that we have a clearer vision for what we are planning to do, I feel that I can complete those tasks with more confidence.

What deliverables do you hope to complete in the next week?


I hope to:

  1. Refine the GUI
  2. Integrate the viterbi + convolutional codes and hamming codes implementation with the GUI

Mia Han’s Status Report 3/21/2020

What did you personally accomplish this week on the project?


After hearing that we are no longer returning to campus and moving to virtual classes, I paused what I was working on, because I was uncertain where our project would be moving from there; I spent the remainder of spring break working on homework assignments that I knew would not be affected by moving virtually online.  Once we regrouped on Wednesday as a team and with our professor + TA, I began shifting my focus from working on the convolutional codes + Viterbi to restructuring our project and new project proposal.  We really liked the idea of comparing several FEC’s, turbo codes, and LDPC to determine which one best fits CubeRover’s hardware constraints.  Therefore, I spent most of this week deciding which error detection and correction algorithms would be prioritized for GPIO/SPI and finishing up Viterbi + convolutional codes; I also researched the pro’s and con’s of those various algorithms more thoroughly.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

I believe our progress is definitely behind; already using this week to restructure our project, I believe that we are behind turning our project around and implementing a slightly different version of the project in the next seven weeks.  Additionally, I didn’t accomplish as much work as I would like over spring break, putting me more behind than I was originally expecting; I spent more time brushing up on C/C++ and fully understanding the nuances of convolutional codes + Viterbi than I was originally expecting.

To catch up to project schedule, I believe that I will be able to spend more time on the project, since the quarantine in my town is stricter and there’s literally nothing else to do besides stay home.  Additionally, I spent some time next week worrying about and cancelling future plans; therefore, I feel that getting into the school work grind will begin this week.

What deliverables do you hope to complete in the next week?


I hope to

  1. Finish and test convolutional codes + Viterbi implementation
  2. Fully understand and start writing the Turbo Codes implementation

Mia Han’s Status Report for 3/7/20

What did you personally accomplish this week on the project?


This week my team and I spent a lot of time finishing up the design document. There was some confusion on the overall architecture so as a team we spent a lot of time ironing out the details before we submitted. After that we planned out our goals for the implementation phase going into spring break.  Additionally, we decided who would be implementing what parts of project during spring break.  This week, I began writing some code for the GUI implementation and wrote at least 1/3 of the functions for the communication using the STM32 cube libraries.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?

We are on schedule but we have a lot of work to dot before the first demo. I plan on using spring break to make some initial progress on the implementation phase.  During spring break, I hope to at least implement the GUI and MCU communication and protocols; with this completed, we would be able to use the GUI to begin testing the individual components.

What deliverables do you hope to complete in the next week?


During spring break, I hope to complete the GUI and MCU interactions and communications over a few days that I plan on completing course work.  Additionally, I hope that those functions are tested and ready to use for testing the protocols by the time school starts.

Mia Han’s Status Report for 2/29/2020

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

At the beginning of this week, my team and I were putting the final touches on our design presentation; I was last-minute finding the best ways to measure latencies on the STM 32 and making sure that the GUI + interactions diagrams were finished and looked good.  When I was looking into how to best measure latencies, I found that we can use oscilloscope via an unused pin, hardware timers: Hal_tick/sys_tick, TIMx, or analyze assembly code + count clock cycles.  Finding multiple ways to measure the latency provides flexibility with our verification so that we aren’t dependent on one method if another method falls through.  Additionally, it allows us to verify that  the latency measured is correct by being able to verify through multiple ways.

Once the presentation was done, we realized that the GUI + the interactions between the components were good and more focused needed to be put towards the actual implementation of the protocols.  Therefore, I took over the stream of bits (GPIO + SPI) protocols since my teammate will focus his efforts on the serial data transmission (I2C + UART).  I felt that my work on the GUI was mostly done and I wanted to help off load some of the work from them.

Regarding the protocols for streams of bits, I determined what the constraints should be for stream of bits by finding implementations of convolutional codes with the Viterbi algorithm online that is most similar to what our implementation would be.  With testing of various code rates and constraint configurations for passing 113 bits, the average latency was 0.004 seconds, which will be our goal latency;  113 bits = 13 bytes is the amount of bits that CubeRover is currently expecting to pass through SPI and GPIO.  Additionally, we determined how the code rate will be determined; after researching the best code rates for convolutional codes, I realized that it will ultimately vary and it will be best to try out a handful of code rates (1/2, 4/7, 6/7 etc) to determine which one is best.  Like the code rates, the constraint will be determined by testing various values to determine which one the lowest latency.  Moreover, my research solidified choosing the Viterbi algorithm + convolutional codes since Turbo Coding and LPDC are best for streams with a high throughput and since CubeRover is not expecting a high throughput, using convolutional codes is the best fit.

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?


I believe that my progress is behind schedule; ideally, I would have liked to begun coding already but because we forgot to order a cable, I can’t upload any code to the STM32 yet.  Despite having the GUI and software + hardware interactions figured out, I feel that we are behind with a lot of the specifications for the protocols which was also communicated to us through the presentation feedback.  Additionally, because we kept deciding between a decentralized model vs a centralized model, those discussions hindered our work and took up time that we could have spent working on other components.
What deliverables do you hope to complete in the next week?

The design document is due Monday night, so that will be for sure completed with the correct specifications listed as that was the biggest critique of our feedback from the presentation.  I would like to begin either working on the GUI or convolutional codes with Viterbi; I am meeting with my teammates tomorrow discuss what components should be prioritized to work on.
Minimum Goals For This Week
– Draft of Convolutional Code + Viterbi Algorithm
– Create Functions that can read/write data bytes to STM32 from GUI

 

Mia Han’s Status Report for 2/22/20

What did you personally accomplish this week on the project? Give files or photos that demonstrate your progress. Prove to the reader that you put sufficient effort into the project over the course of the week (12+ hours).

I finalized what libraries will be used to implement the communication between the GUI and the STM32.  With the finalization of what the responsibilities of the STM32 and the GUI communication will be, the ideal library used to implement our design became clearer and easier to determine. I determined what specific libraries and functions will be used to measure the latencies and to interface with the STM32 peripheral, UART.  Measuring latencies was something that we were initially unsure about how to implement, but I began to look into what the stm32cube HAL libraries and microPython libraries offered and realized that both offer libraries that can measure and return the number of clock cycles internally.  Furthermore, I wanted to find implementations that contained libraries that would best achieve what we have and mind and would offer the most useful functions to do so.

A good amount of the work this week has been going into our design presentation.  After discussion with my teammates regarding what design we should go with, we finalized the design and I created multiple diagrams that are used in the presentation.

Final GUI Design:

Interactions Between GUI, MCU, and Components:

Is your progress on schedule or behind? If you are behind, what actions will be taken to catch up to the project schedule?


I believe that my progress is behind schedule; I feel confident in the design decisions that I’ve made especially after thoroughly discussing them with my team and hearing their thoughts regarding them.  I would have liked to start writing some code this week to see what it’s like using an STM32 and having it communicate with my computer, but unfortunately, the cable to connect over USB didn’t come with the MCU.  To make up for this delay, I intend on spending more hours next weekend when I’ll have more time to begin writing some of the functions for the transactions between the GUI and STM32.  Additionally, by beginning to write these functions, I will have a better understanding of what implementing these functions are like for the Design Report due next week.
What deliverables do you hope to complete in the next week?

I hope to write at least 3-5 functions that will be implemented and I hope to be 110% confident in my design and implementation choices.  Moreover, I hope that I have determined how exactly I intend to implement each function in our design using which languages and libraries.