Xingran’s Status Report for 4/24/2021

This week I have successfully implemented the audio in and out of our board.

I can input music through the XLR/ 1/4 inch jack to our board, sample it through ADC, process it so that one input channel is selected as both the L and R channel of output, and output it to the BM83 and finally hear it in my Bluetooth speaker or earphone.

Furthermore, I can control the ADC’s internal amplifier to adjust the gain on the signal. Currently I find that 8dB gain produces a reasonable volume level with clearest sound. Our on-board pre-amp was previously having about 0~2dB gain, it was faulty and Adam replaced it with a new one just recently, so I haven’t tested setting both our pre-amp circuit gain and the ADC gain to get the best possible overall gain level and music quality, I can do that next week.

As for signal quality, it is still quite noisy right now. I am using the rev 1 board which has some temporary soldering that could introduce a lot of noise, so we hope that noise will be less on our final board. I will be testing our new board next week, and integrate the UI module in so that the user could select the gain on the LCD screen, while our team will together try to increase the signal quality as much as we can.

Team Status Report for 4/24/2021

This week Rev2 came in early, which was a nice surprise! Adam has begun assembly on it already. The BARI box has also been 3-D printed. We spent time on the signal path, successfully getting Bluetooth output from the BM83, even from a 1/4″ jack input, using a double buffering I/O scheme for audio streaming. We were unsatisfied with the quality of the old pre-amp, but the new one works a lot better, as verified from some tests in the lab. In addition, work has been done on the UI, with a pixel map and menu structure successfully created.

Next week we will work on the final presentation (probably later in the week) and continue work on Rev2 assembly, UI, and the signal path integration.

Sam’s Status Report for 4/24/2021

The past two weeks I have been focusing on the LCD UI. I finished the character maps and have created helper functions and a main menu, as well as a bare-bones channel parameter menu. From here, I will include global variables that are controlled by the UI, and I will enable control via the rotary encoder, button, and footswitch.

My progress is behind schedule, but I plan to work on the UI more before Monday.  The code is written modularly, so once I write interrupt routines for the user-input controllers, I should be able to integrate everything quickly.

In the next week I hope to finish the UI and maybe implement some of the DSP effects, or do whatever else the team needs. We will probably also work on the final presentation slide deck, which I will be presenting.

Below is the small demo of going through a channel parameter menu:

Video

Adam’s Status Report for 4/24/2021

BARI BOX: This past week, I finalized the CAD for the BARI BOX and had it 3-D printed at TechSpark. The partially-assembled box is shown below. There were a few glitches in the manufacturing process, namely defacing of the surface finish and some poor tolerances in the mounting holes which will require drilling for further assembly, but overall this box is sufficient to serve as a mockup case for our design.

REV 2 MANUFACTURING: Components for BARI Rev 2 began to arrive this week, kick-starting my manufacturing of the new boards. My progress on the first Rev 2 board is shown below: I’ve assembled most of the pre-amplifier and analog effect stages, with the UI, ADC, and microprocessor to come next week as the necessary components arrive. The BM83 for this board was resoldered from a Rev 1 board due to the global chip shortage preventing us from obtaining a new device. The shielding case was dislodged during the resoldering process, and further testing is required to ensure the SoC remains functional.

PRE-AMP VERIFICATION: Finally, the new and more easily-solderable amplifiers arrived with Rev 2, and by retrofitting one of them onto a Rev 1 board, I was able to verify clean audio amplification on that Rev 1 board, as shown below:

Assuming that I receive the parts I need for next week, my goals are to finish the Rev 2 manufacturing quickly enough to help my teammates get the software of our device finished.

 

Team Status Report for 04/10/2021

This week we worked on hardware interfacing and debugging. Adam and Xingran tested the pre-amp and debugged interfacing with the ADC, and Sam worked on the LCD, receiving assistance from Adam for debugging.

At our interim demo, we expect to show off proof that our ADC is spitting out values and show off that we can interface with the LCD and toggle pixels.

Looking forward we hope to get the full signal path going, which includes interfacing with the BM83. We also hope to complete the BARI Box and the LCD UI. We look forward to ordering Rev2 soon. We are deprioritizing DSP effects, but will include them once the signal path and UI and are completed. In addition, we decided to move from 4 channels to 2 channels for the final product in order to save in complexity.

Here is our updated schedule for the rest of the semester:

 

Sam’s Status Report for 4/10/2021

This week I focused on interfacing with the LCD. On Wednesday I went to the lab to meet Adam and Xingran and learned how to program Rev1 using the STM32 Discovery Board. Following that, I debugged the flashing process locally at my house. Attempting different USB cables, ports on my computers, wires, and allowing for a lot of hard and soft resets on all devices, I eventually got it to flash (at least once in a while)!

From there I wrote up some code to turn the LCD’s display on and display characters. Again, this was based on this Arduino code from the manufacturer. I had no luck with getting the LCD running, even after some debugging.

On Saturday I went to the lab with Adam and we found out a couple important discoveries

  1. The parallel/serial pin was hard-wired to VDD, which is parallel. However, we needed it to be connected to ground so that we can interface it via SPI. Adam fixed this
  2. My initialization code was running before any peripherals or SPI was set up, so I moved it to later in the execution.

We were amazed to see that the LCD displayed pixels after making these changes!

Video demo of LCD

Next week I will wrap up the LCD UI, adding a menu structure.

Adam’s Status Report for 4/10/2021

REV 2 FABRICATION: As we continue the process of bringing up the Rev 1 PCB and developing appropriate software, I am recording errata to inform the updates that will become the Rev 2 board. So far the only major errata is a mis-connection of one of the LCD pins which incorrectly sets the mode to serial instead of parallel. The target to finalize the Rev 2 design was 4/9/2021, but we pushed it back to the middle of the upcoming week to allow more time for verification on the Rev 1 hardware. Due to the overall excellent performance of the two Rev 1 boards, this should not significantly impact our schedule.

REV 1 BRINGUP: This week, I played a major role in supporting the bringup of the remaining peripherals on Rev 1. I helped Xingran to properly set up and communicate with the ADC, and I helped Sam properly set up and communicate with the LCD screen. At this point, essentially all of the peripherals are functional; the only somewhat undetermined element on the critical path is communication with / programming the BM83, but new programming hardware should allow us to resolve this shortly.

In the coming week, I will continue to assist with hardware bringup and simultaneously complete the mechanical design for the “BARI BOX”.

Working on the LCD with Sam:

Xingran’s Status Report for 4/10/2021

This week as usual I went into the lab to facilitate testing the hardware, specifically programming the board to test the pre-amp signal out ability.

I have successfully setup the I2C control protocol with the ADC and can read data from our input channels. I will need more testing to determine the correctness and quality of the sampled digital signal.

For the Bluetooth module, the UART-to-USB converter we ordered a week ago arrived without noticing my apartment so I only got the package after I asked Quinn for tracking information this week. I later discovered that the module is smashed in transit and could not be used, so I had to order another one which is running late in delivery, and I have to wait until Monday to get it and test. There are a lot of uncontrollable forces in this but there are my faults too. I am learning the lesson and will be very proactive in tracking and examining the delivery every step along the way (sorry Quinn for bugging you :)) for any order from now on.

Next week I will finish the audio in and out ability or else we are in danger. I will keep everyone posted.

Team Status Report for 4/3/2021

This week we finalized assembly of Rev1, worked on interfacing with the BM83 Bluetooth module, and began development on the UI.

We will meet on Monday or Tuesday to discuss our project and adjust our schedule as needed, likely deciding to expend available slack time in the schedule and maybe cut some non-essential parts.

Next week we will finalize what we want to display at the interim demo, and discuss changes we want to make for Rev2, hoping to get that shipped as soon as possible. Work with the BM83 and UI will continue.

No specific media to share in this post, but check out the individual status reports for some progress updates!

Sam’s Status Report for 4/3/2021

This week I shifted my focus to the UI. I created a draft of a wireframe of our menu interface, received feedback from the team, and then incorporated their changes. Give the specs of our LCD (128×64 pixels), and the use of standard 8×5 pixel characters, all the items on a menu will fit on the screen. Here is the wireframe for your reference: (BARI UI Wireframe)

From there, the team decided I should work on some of the lower level implementation of the UI as well, so I worked on a function that maps characters to pixels. I did not find any resources online for this in terms of code, but I did find a nice template for the pixel maps,  as well as a tool to quickly get the hex for each pixel map. I also found an example of interfacing with our LCD. All of these resources have been helpful in working with the implementation of the UI. Further, I have found mapping numbers, letters in both cases, and select symbols to pixel arrays has been a time-consuming process. However, it is the foundation of the UI.

Next week I hope to finish interfacing with the LCD, getting some kind of trivial writing, and then eventually laying out the menu and writing menu layers to the screen.