Homemade Hardware - Final Project - Computer Wellness Stone V2

my cut and soldered PCB, waiting for the correct code.

my cut and soldered PCB, waiting for the correct code.

When I made the first version of my project The Computer Wellness Stone, the biggest compromise was that I was unable to make the device entirely self contained. Because it was running on a MKR ZERO board, I ended up being forced to connect the device itself to the board separately, which was then connected via USB to a computer. Because I was particularly proud of the concept, using my new knowledge from Homemade Hardware my goal for this final project was to redevelop the electronics of this device as a custom PCB so that it would fit inside of the device itself, allowing the second version of my Computer Wellness Stone to be completely self-contained. Otherwise, the functionality would be identical.

The first version of the Computer Wellness Stone.

The first version of the Computer Wellness Stone.

Having already completed a version of this project, I had a general sense of the components I would need, and by downloading, adapting and combining the Eagle designs for the Adafruit versions of each of these parts I was able to create my own unique schematic. Excluding the various necessary capacitors, diodes and resistors, the BOM included: a ATSAMD11C14 microcontroller, a AT42QT1010 touch sensor IC, a 3.3V voltage regulator and a vibrating mini motor disk. I chose this specific microcontroller for its ability to communicate natively over USB, allowing for me to use it as an HID device. I then cut and soldered a PCB board holding all of these components.

Milling the board.

Milling the board.

However, it would be this microcontroller I chose that would ultimately prove to be the biggest roadblock while developing this project. Firstly, because of the specific nature of the chip I had to use a J-Link bootloader to flash the bootloader onto the chip, and doing so using just the macOS terminal was new for me and a finicky process.

the code and electronics working on a breadboard.

the code and electronics working on a breadboard.

The next step, because I had adjusted the code slightly, was to test the new code on the MKR ZERO, which I did successfully. But, once I attempted to upload the same code onto the D11C14 I ran into the issue that I have still been unable to overcome. The flash memory on this chip is only 16KB, and the bootloader and necessary HID libraries alone took up 75% of that. As a result, despite the relative simplicity of my Arduino code, I simply have not been able to refine my code to the point that it successfully fits on this microcontroller.

The storage error.

The storage error.

As I mentioned earlier, I am really fond of this concept, and I do not intend to give up on this idea. My next plan, in addition to further digging into the code, is to potentially look into hardware timer components as a way of reducing the code further. Much of the code as it stands now is simply to time out the different states of the vibration motor, and the possibility of moving some of that to an electronic component seems promising. I have not given up yet!