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.

Xingran’s Status Report for 4/3/2021

This week I was able to flash firmware updates to BM83 through OTA. I talked to the BM83 develop team over email and after rounds of debugging I could finally use their Android app as intended; I have also looked into many other programming and controlling options of BM83 along the way.

However, changing the operation modes in the firmware easily made BM83 stop connecting to the Android app, so I think the most reliable option is to have traditional UART update; I also found a GUI tool for sending/receiving UART commands/events to/from BM83, which I think should be our first step to connect BM83 to a speaker. Therefore, I purchased a USB-to-UART converter, so that I can largely follow the BM83 support documents in terms of how I program and config it.

While I am waiting for the converter to arrive, I tested our I2C control interface with the ADC. I can now read and write to the page select register in the ADC, which means that the hardware, I2C protocol and command formats are largely functional; by the time I post this I am still debugging writing and reading other control registers, but I believe it could be done soon.

Looking ahead, I will configure, pair, and connect BM83 to a Bluetooth speaker through the UART control interface with my computer (once the converter arrives). I will debug the ADC so that I can set its control registers, and then I will test its functions by feeding in a sine wave and check the output received by the microcontroller.

If these two things are done, I will officially be developing and testing our main audio path – streaming audio from the ADC input, through the microcontroller, to the BM83 module and then to the speaker.

Adam’s Status Report for 4/3/2021

REV 1 ASSEMBLY: This week most of my time was focused on Rev 1 hardware assembly in order to get working boards into the hands of my team members as quickly as possible. We decided that the new board (named “Alexey”) with the additional passive components we ordered from Digikey last week would go to Xingran while Sam would get the old board (named “Bernice”) which is still capable of running the UI modules.

By the end of the day on Thursday, I delivered both Alexey and Bernice, as well as a rotary encoder for Sam to test UI code and a power switch. A small amount of work still needs to be done on Alexey to fully implement the Analog Overdrive module, but since this is of secondary importance, we decided to put that off in favor of getting a prototype with a working ADC.

BARI BOX: Meanwhile, I continue to work on the mechanical design for BARI’s enclosure. At present, I can estimate that the cost for 3D printing + fasteners will be on the order of $50 (half of what we budgeted), though I am working on ways to make it lighter and thus cheaper.

I don’t have any good photos this week, so enjoy the remaining parts spread across the floor of my apartment:

And a close up of one of the unfinished boards:

And a suggestive, soft-focus close up for the fans out there 😉