Week 09 - Output Devices



1.1 Group Assignment

1.2 Individual Assignment

This week's group assignment was to measure the power consumption of an output device. Together with the Harvard Section, we plugged a DC motor to the power source and observed its behaviour in terms of speed. We increased the voltage up to 25V per 3 units and held 10 seconds for observing the change in the accelaration of the speed. The change was almost constant.

1.1 Group Assignment

1.2 Individual Assignment


For this week, our assignment was to add an output device to a microcontroller board we have designed and program it to do something.Initially, I wanted to continue experimenting with the microphone and speakers, since my breakout board failed last week. However, we are very close to produce our final projects and I want to use a better sound quality system for it.
Deciding for the Microcontroller

I decided to design my new main board that I could use for my final project. A small reminder about the final project: creating my own musical instrument/ synthesizer that can directly manipulate my voice.

Due to our assignment being ‘adding an output device’, I decided to additionally experiment with TFT Display screens.
I decided to use ESP32 microcontroller due to its integrated Wi-Fi and bluetooth properties, as well as an IMU breakout board for its 9-axis motion tracking qualities. If I have time, I also want to connect the board to Max MSP through Arduino IDE, and manipulate synth sounds through changing the axis.

That already sounds like a lot. Future me approves that it will be a lot.

About ESP32:

Designing a board with ESP32 meant diving into a new learning territory.
Instead of I2C protocol, ESP32 uses the SPI protocol which stands for Serial Peripheral Interface. This serial data is used by microcontrollers to communicate with one or more peripherals (slaves). For example, my ESP32 board (master) communicating with a sensor (slave) that uses SPI or with another microcontroller.
ESP32 has two bus interfaces that serve as master (newer term is controller) or slave (newer term is peripheral). Master can send data to a slave, and a slave can send data to the master at the same time.
How to (almost) not Design the Board The design process took 2 days and a lot of trouble-shooting. I have consulted with Treyden, who had two nicely functioning ESP-32’s with an IMU breakout board. He shared very useful files that I could take as a reference. I have learned that ESP32 had to be programmed through another microcontroller within the same board, and that microcontroller was ATSAM11DC in Treyden’s and Quentin’s examples. So, I have repeated the same steps.

For this design and my future designs, I also decided to change the not so user friendly Eagle into KiCAD, which I felt very glad about.

After many route try-outs, here is what my board schematic looked like:


Milling the -wrong- Design How sure I was… I do not know what triggered my confusion exactly, but I misread the ESP32 pinout for MOSI and MISO pins, and connected the MISO, MOSI pins of the TFT screen to random digital pins and realized it through Treyden looking at it and thankfully realizing the problem before soldering. I once more thank him for the calmness and wisdom he brought to this process, because it already was 1 am and I was feeling devastated. We reconnected the wires on KiCAD and resent it to milling.

Here is some of the trace-outline milling parameters, which also Quentin helped us with:









Next day, around 12 pm, the board was ready to be soldered. The clock was showing 9 pm when the soldering was completely finished.







When it came to programming the ATSAMD11C first, we have come up with issues. When attached the USB, the chip is getting warm but not too hot, which is a good sign. However, the same error kept occurring:
DEPRECATED! use 'adapter driver' not 'interface'



I might not have seen the end result come into fruition this week but I am very excited to use the information I have learned this week and come up with a functioning board for the next week!