sd23-30 Final Report
sd23-30 Final Report
sd23-30 Final Report
Team Members:
Revised: 5/1/2023
Executive Summary
PREAMBLE
A kalimba is a musical instrument (example shown in figure 0.1), usually a wood base with metal
tines, that is played by plucking the tines, making a sweet bell-like sound. Due to the thumb
dexterity required to play tines that are so close together, it is almost impossible to play without
looking directly where your thumbs are. This makes playing the kalimba while reading sheet music
exceedingly difficult, as one can’t simultaneously focus their eyes in
two places multiple inches apart at once; thus, memorization is the
typical route to learning songs. Memorizing songs is more effort than
many casual users would like to put in, so an idea for a senior design
project was pitched whereby some light indicators on the tines
themselves would illuminate the notes in the correct order of a song so
that a user could successfully play songs without having to memorize
music.
Figure 0.1 .
- To properly test the software we will adhere to the IEEE 829 Software Testing Practices
- Following standard Git techniques and file management.
- FCC PART 15.247, Federal bluetooth design standards for low power 2.4 GHz bluetooth
communication.
- IEEE Standard for Bluetooth Low Energy (BLE) devices 802.15.1
- IEEE Standard for Documentation Schema for Repair and Assembly of Electronic Devices
SUMMARY OF REQUIREMENTS
- Interface a kalimba with software for song note instruction
- The software should store accessible songs in a library/database
- The lighting system should illuminate notes (tines) to be played in a correct note order
- The interfaced hardware and software should correctly recognize tines played
- The mount system should be transferable
- ComS/SE 309
- ComS 363
- SE 319
On the hardware side 3d modeling/3d printing and soldering skills were developed by team
members that did not previously have that skill, mostly because these skills are not taught
in the regular ECPE curriculum.
On the software side we had to research a couple different things. This included bluetooth
connection to a microcontroller, react-native, firebase database. Everything we plan to do
on the hardware side is at least tangentially related to things that we have done in class
thus far. It is mostly design soft skills that we have learned so far. Both the hardware and
software team had to develop soft skills such as:
List of figures/tables/symbols/definitions
Figure 0.1 - Image of a Kalimba
Soldering skills
3d modeling/ 3d printing
Soldering skills
3d modeling/ 3d printing
- Eileen, Stuart
- Kaitlyn, Isaac
Needs (2) and User Benefits (3): A person, who has an interest in music, needs an easier and
faster way to learn how to play the kalimba because they have a hobby for learning new skills, and
they are struggling to learn efficiently without giving effort beyond what is desired.
This is the intended user for our project at this point, should we have time in the future to address
the needs of other personas (i.e. maybe four-year-olds or advanced musicians) we can. It will be
easier to design for the general user first and then tweak features later to address non general users
than it would be to design for a bunch of different users at once. Obviously, the general user (i.e. us)
that would benefit from Twinkle Tines and anyone who enjoys the music played would receive the
secondary benefits. They will also have reduced stress and frustration by easily being able to play
music and relax. The creators would also benefit intrinsically from seeing people enjoy the fruits of
their labor.
Empathy Map
Functional
- The next note to be played should light up no longer than a quarter of a second after the
correct note is played.
- The lights should be bright enough to be seen in general lighting conditions.
- The hardware needs to be able to recognize that the correct note/group of notes has been
played within a quarter of a second.
- The software should display the next note(s) to be played.
- The software should be able to pull songs from a set of stored songs within the database.
- The lights shall not block or limit the user’s ability to play the Kalimba.
Resource
- Any mobile device capable of running android or ios shall be able to run the app.
- There should be an external LED mount device to light up and detect notes played.
- The application shall connect to the hardware device via Bluetooth Low Energy
Physical
- The hardware apparatus should be no heavier than half a pound
- The hardware apparatus should not increase the overall footprint by more than 10 percent
of the original kalimba size.
- The LED apparatus shall not interfere with the user’s ability to pluck the tines
User experiential
- The user should be able to access the library of songs
- The user should be able to favorite songs from the extensive library page
- The user should be able to connect their application to the hardware device
- The user should be able to start the song by clicking a button
3 - Project Plan
3.1 PROJECT MANAGEMENT/TRACKING PROCEDURES
The Agile scheme has allowed us to restructure and change goals or functionality as we learned
more about how our specific implementation was going to come together. We planned this to be a
sprint heavy project to get rapid feedback and development, and the agile style will served that
strategy best.
For the software side we will collaborate using github to share our code progress with one another.
We also utilize the user story framework within github to be able to break down our progress into
smaller chunks and better implement our agile scheme. Hardware and overall team progress will be
tracked by hand on a shared google document/drive. Team communication also happens through
Discord.
2. Software
a. Research Period
i. How to store/upload music
ii. How to control the LEDs through software
b. Design UI Period
i. Figma app layout
ii. create initial app pages
c. Core Functionality
i. add songs to a database
ii. create a function for users to add/remove songs to a local library
iii. create a function for users to preview songs
iv. light the LEDs from the software according to the next note
d. Test Software
i. create tests to check for any bugs that may need to be fixed
Hardware
- Designers should be able to select methods and devices for LEDs, LED control, LED
interface, note detection, and mounting apparatus upon conclusion of the research period.
- LEDs are able to light up and indicate notes to be played when selected within 0.25s
- Note detection device should be able to detect notes with 95% accuracy and 0.15s
- Device should communicate information to and from software within 0.1s
- Device LED apparatus should be mountable on most normally sized and shaped kalimba
Software
- Note recognition software should be able to identify 95% of the notes played by the user.
(shared milestone)
- Software should be able to assign each note to its corresponding variable with 95%
accuracy.
- Users should be able to add songs to a local library.
- Be able to access all pages in the app from any other page.
- Software should be able to light the LEDs for each note.
Research:
- [0.05] Research incorrect information and need to restart or come back later and do more
research.
- [0.1] We are unable to come to a conclusion on hardware due to not being able to find a
solid solution
Purchase Hardware Devices:
- [0.3] Purchase incorrect or poor quality device, risk should be mitigated through research
phase and purchasing extra devices
- [0.1] We already have two kalimbas, and generally LEDs are very cheap and available, low
supply chain risk
- [0.25] If we need a PCB, from a quick google search, lead time is usually not more than a
month and often much less for simple boards. Additionally, the PCB could be constructed
wrong and have to be resubmitted for manufacturing.
- [0.2] One or more of the LEDs could be bad apples, so we will get many extras to prevent
this from being an issue
- [0.1] Designs from the app design phase do not work in the program.
- [0.15] LEDs overheat and burn out, risk should be mitigated in phase 1.
Note Detection:
- [0.05] On a kalimba that is improperly tuned, the device might correctly identify a “wrong
note.” The solution would be to retune
- [0.45] Too much background noise. This should theoretically be completely mitigated with
a pickup
- [0.2] Complications while attempting to record the note that the user played.
- [0.35] Multiple notes at once may not all be registered if one of the notes played is
especially quiet.
Playback functionality:
- [0.25] Bugs in the code may crash/freeze/loop software in the middle of playback.
- Hard to judge probability due to the heavy dependence on how we code it
Final Testing:
- [0.99] Someone gets the urge to violently hurl the kalima at the floor
- Risk Mitigation: Good thing we have a second one!
- [0.05] Catastrophic failure at the very end, low risk
- [0.05] At any point we could drop the Kalimba near the end, break everything, and not
have time to rebuild. This can be mitigated by developing multiple kalimbas and keeping
one as a dedicated back up.
Figure 3.2
Individual effort requirements will be subject to change based on subgroup and timeline date.
The group will also discuss the need to increase the number of hours when facing increasing
project demands. Hours include 1 hours per weekly meeting.
Public health, How does your project affect - This project may reduce stress for users
safety,and the general well-being of - This project may provide a creative
welfare various stakeholder outlet for some
groups? These groups may - This project could provide a relatively
be direct users or may be healthy coping mechanism for some.
indirectly affected (e.g., - This project could increase general
solution is implemented in welfare for the population from the
their communities) increased enjoyment from easily
learning the kalimba
Global, How well does your project - This project could potentially increase
cultural, and reflect the values, practices, musical interaction for subgroups of
social and aims of the cultural people that would not otherwise want to
groups it affects? Groups put in the effort required to develop
may include but are not musical skill.
limited to specific - More children might start to interact
communities, nations, music as they could easily learn to play
professions, workplaces, familiar songs
and ethnic cultures. - More people might start replacing short
bursts of screen time with Kalimba time.
- This project might bring more
recognition to Zimbabwe in Africa,
where the kalimba is thought to have
originated
Figure 4.1
For hardware, there exists light-up pianos that operate similarly to our light-up kalimba.
- Here is one example of this.
- and here is an example video of one in action coupled with software.
For software, there does not exist an exact copy of what we are going to be using, but there
is a very good visual tool for learning online that we found called TabWhale. Instead of
being web-based, our product will include a mobile application with the tutorial song
library. Another source of inspiration on the software side is KalimbaTabs.
At this current time, there does not exist a tool that will allow as much direct interactivity.
Our tool will mount any kalimba and through a series of hardware mounts and software
I/O, the user will be able to get instant feedback from the device to more rapidly contribute
towards their learning.
The closest way someone is able to mimic what we are trying to do is to write down tabs
and place those written notes near the top of the kalimba while attempting to play the
tines in order. There is no tool currently available that gives the user immediate feedback
while they play notes.
4.2.2 Ideation
In order to decide between the following options, we brainstormed ideas together as a group.
As mentioned in the following section, the pros/cons that we came up with ruled out many
of our options.
Vibration
- Pros: Sensors already exist for the Kalimba to transmit this, and we already have a
pickup to test with. It would also be easy to transmit this information with an aux
cord, and the power draw would be very small.
- Cons: The pickup might not have the sensitivity to correctly identify notes played,
especially if many are played at once. If the user is very percussive in their playing,
they might introduce noise that messes with the program a lot.
Sound
- Pros: This would be fairly simple to program. Most modern devices have mics
prebuilt in them that could be used.
- Cons: If a key is out of tune and isn’t in the database the software may not be able
to recognize it as the correct note and the user would be stuck on that note. Also,
any background noise in the user environment could mess with the note
recognition, which is a big problem..
Tine Movement/Proximity
- Pros: Because it is using visual input, it would be able to take in lots of information
about the tines being plucked.
- Cons: This would require setting up an external camera, and the external camera
would also have to connect to the rest of the system, it would also be hard to see
which tine the user is touching since they are close together and it may look like
the user is touching more than one, it could also think the user has played a tine if
they are touching it even if they haven’t actually played it. This would also be
expensive in terms of power draw and equipment.
4.3.1 Overview
High Level Functional Block Diagram
Figure 4.2
The software side of our design will be a mobile application where a user can
add/remove songs to their own liked library. They can add or remove songs from the app's
existing library or upload sheet music that will then be processed to be able to be played.
They will then be able to play songs from this library, the notes of this song will then be
displayed on the device that is connected to the kalimba. There will be a led light over
every tab on the kalimba that will light up based on which note the user needs to play next.
This device will also be able to process which note the user has just played and whether it
was correct or not. Once this is determined the software will decide if the next note in the
song will be played or if the same note will display again.
4.3.2 Detailed Design and Visual(s)
Engineering Specific Block Diagram
Figure 4.3
The hardware side of the device would consist of inputs of an array of LEDs
controlled wirelessly with a microcontroller chip and user inputs from the plucking of the
tines on the kalimba. The audio output would be gathered with an audio pickup fed into a
preamp in order to make the signal intelligible for software to read it. This will then be fed
into an aux/usb port which will connect to the user device (generally a smartphone).
For the backend side of the software, the mobile application has a database that
stores songs. A user can select which song to play from the library, and this will query the
backend to choose that specific song based on the song ID. The backend will send the song
name and the individual song notes stored as a string array. Each note is represented by a
specific number. These numbers tell the physical device which specific note to turn on.
Once the note that the user played is determined the backend will take in that information
and compare it with the note we are on in the array and determine whether the next note
should be lit or if we stay on the current note. (A tine will stay lit until the user correctly
plucks that tine)
For the frontend side of the software, the mobile application will have a page that
will have a user’s library for songs they have added to it as well as songs that we added, a
page/function where they can upload sheet music and a way to start a song on the physical
device.
4.3.3 Functionality
Step 1: The user mounts the device to the kalimba.
Step 3: The user connects the pick up to the preamp if a preamp is used.
Step 4: The user connects the preamp to the appropriate port on the mobile device if a
preamp is used.
Step 5: The user connects power to the microcontroller via the appropriate port on the
mobile device
Step 6.1: The user can add songs to their liked library from the larger library
Step 8: The application sends the note data to the kalimba to light up the tines
Step 9: The user plucks the lit up tines in the order they are presented based on the
note order of the preselected song.
Step 10: Once the user has finished a song, they can select another song to play or
disconnect the power to the device and unplug the preamp.
Storyboard of the User - Our project with a Kalimba by Isaac Vrba
Our primary concerns for our current design include the method of
attachment, ease of user set up, and the ability for users to upload their own songs.
We have not tested a method of attachment of the device to the kalimba and have
not settled on a concrete idea to begin testing. The device and user set up should
be designed to maximize ease of use, our current set up has not been streamlined
yet for this capacity. We would like for the user to be able to upload their own
songs to our app, this could present difficulties with reading the music and
correctly formatting the song to play on the kalimba.
- LED
- LEDs allow us to locate a lot of lights in a small space, perfect for the small design
of the mount used for the Kalimba. We wanted to make sure the user is able to see
the upcoming notes and any mistakes if they play the wrong note. We think that
this is the best visual we can provide to the users.
- Pre-amp
- A strength of the pre-amp is that it makes the sound waves much more readable
for a pickup or condenser microphone to pick out each individual note. A
weakness, however, would be that a pre-amp is another separate piece of hardware
that we would have to add to our design which would increase the cost as well as
the size of our entire contraption.
- Wireless microcontroller control chip
- We are still not completely sure of what model we are going to use, however the
particular model we are going to use will be discussed and purchased by the end of
our research period. The strengths of the wireless microcontroller include the
robustness of the device, allowing us to plug in multiple hardware components and
communicate to everything in an easy manner.
- Pick-Up
- What is a Piezo pickup and why do we need an amp? Piezoelectric amps work due
to the piezoelectric effect. Piezoelectric materials, usually a type of crystal or
ceramic, produce a voltage in response to mechanical compression. So a
piezoelectric material can produce a voltage when squeezed and have the voltage
disappear when the squeezing ceases. Just as sound waves are pressure waves in the
air, vibrational waves are pressure waves in a material. So, when a musical
instrument is making a sound, it is vibrating. By attaching a piezoelectric pickup to
an instrument, the piezoelectric material in the pickup will vibrate at the same
frequency as the instrument, and thus, the piezoelectric material expands and
contracts at that vibrational frequency and a voltage will appear that perfectly
matches the sound frequency. However, the output impedance of the piezoelectric
material is usually very high (the piezoelectric material is not a conductor after all),
which means the potential output voltage that a computer would have to read
would be very small to the point a computer might not even recognize that a
voltage signal is present. So the signal needs an appropriate amplifier between the
piezoelectric material and the computer for the majority voltage drop to occur
across the load (i.e. computer) instead of the piezoelectric material. (Ask me what
a voltage divider is to properly explain impedance matching.) Anecdotally, when I
plug the kalimba into my roommate's guitar amp and turn the volume all the way
up, it is still really quite relative to connecting a guitar. This happens because the
output impedance of the piezoelectric pickup is still large relative to the load
impedance of the guitar amp.
- Explanation video
Software technology
- Song database
- there will be a lot of songs that the user can choose from and data for each
song so this will be easiest to work with if stored in a database
- External music sheet files
- musicXML, midi, etc.
- There are multiple strengths and weaknesses for each external
music sheet file type we have considered.
- Midi would be a lot easier to read from, because the notes
can easily be changed into an array of data. However, we
would need to create midi for each song or find a library
of midi arrangements for each song.
- Sheet music would have the strength of it’s very easy for a
user to find, and they could easily upload it. However, a
weakness could be that sheet music may be more difficult
to parse when changing the notes to an array of data.
- The purpose of only accepting specific file formats is so that our software
can easily read it
- React native
- React native does well to support designing an application that supports
both ios and android
- React native has lots of supporting documentation and useful resources to
be able to learn how to use it for our system.
- Git
- We decided that git would be a good technology to use for version control
because it does a very good job of collaborating on teams with code, and
we all have a lot of experience using it.
- Tune function
- this function will pick up the tune when a user plays a note
- this can be used to detect whether a user played the right or wrong note
instead of using the pre-amp
- this function could also be an in app function the user can use if their
kalimba is out of tune which is important for our app to work overall
We have yet to test other aspects of our design, but subsequent testing may alter
future plans just as testing with the piezoelectric pickup and the guitar amp has shown that
we will need a preamp for the pickup to be effective.
5 - Testing
Software
Song Database - test that queries to the database grab the correct data (song and song
info). We used a mock database to be able to use with unit tests created in Jest.
UI - test that each page is reachable from the homescreen. We created several unit tests in
the code to test the functionality and that the proper elements were showing up. We also
tested this manually a lot.
Song Favorites - test that the user can favorite a song to add it to their favorites list. We
used a mock database to ensure that the querying of data was working correctly.
Library - test that the user can view all songs in the library and test for the specific
components within the library. We used a mock database to ensure that the querying of
data was working correctly in the library as well.
System testing was done with dummy data to vet that the necessary communication
occurred as designed.
Using Git we will be able to have many versions of our software available in case a new
component broke the previous functionality. We can also implement a CI/CD pipeline to test new
software as it is added to our Git repo.
For any decision that strays off of our original plan is to be discussed within each team,
hardware or software, to discuss if changing plans or testing different components will result in a
better user experience while still following our functional and non-functional requirements. We
will involve our client for acceptance testing while we are developing our prototypes and ask them
for feedback during major milestones.
The final demo video serves as the acceptance test showing that the design works as
intended and is ready for presentation.
- Make sure that queries to the database are only coming from the predetermined
queries necessary to pull the song information
- Make sure user/account information is secure in that it is not possible for users to
access other users’ accounts
Hardware:
- not applicable, except in maybe a circumstance where a user throws the kalimba to
break a window or something, but that's on the user.
5.8 RESULTS
Ultimately, our product will be able to detect played notes and the application will
determine if it is a correct note or not. The software will then send the hardware what note
should light up next. This process should be decently easy to test and will largely determine if
we have met most of our requirements.
So far two different hardware tests have been conducted. They are both described below.
A pickup for the kalimba has been tested. A piezoelectric pickup was attached to
the kalimba and then subsequently plugged into a guitar amplifier. The guitar amplifier has
to be turned up to full volume for a soft output sound to be heard; although, the output
sound was just as clear and full as the kalimba itself. After some research, it has been
determined that a preamplifier is going to have to be added to our design in order for the
software to receive a waveform that can actually be used. The issue is that the output
impedance of the piezo pickup is high, around 1 Mohm, and the input impedance of most
amplifiers is not relatively high, which is why the output on the guitar amp was still soft
despite being at max volume.
On 11/7 I tried to measure the voltage signal output of the piezo pickup. To do so, I
wrapped wires around the aux cable connected to the pickup (note, I have not tested this
aux cable with the guitar amp yet, and I didn’t have rubber bands or anything to make sure
there was a strong connection between my leads and the aux cable) and interfaced those
wires with an LM324 op amp on my bread board, which was set in a typical inverting
configuration with an ideal gain of -1E5 V/V. Using a signal from the voltage generator
instead of the pickup, I was able to confirm that the amplifying circuit worked as expected .
However, even with the 1E5 gain, I was not able to observe a signal on the oscilloscope after
plucking a tine. The noise was on the level of 3 to 4 volts peak to peak. Potentially, the
signal is still too small to pick apart from the noise even with a gain of 1E5 V/V. Potentially,
the connection between the aux cable and the amplifying circuit (haphazardly wrapped
wires) was not strong enough to consistently pass signal. Potentially, I have made some
other mistake. These are the resources I used to make the circuit so I don’t have to look
them up later.
Figure 5.5
Figure 5.6
For the first test, we designed an op amp circuit with the standard LM324 op amp in the
non inverting configuration with Rf equal to 2.6 Mohms and Rin equal to 10 Rin, so an ideal
gain of 2.6E5 V/V. When plucking the tine that corresponds to C4, we get the following
waveform.
Figure 5.7
C4 should be 262 Hz, and the frequency of the scope reads 258 Hz, only a little out of tune.
When we pluck C4 and C6 simultaneously (frequency of 1047 Hz) we get a resulting frequency
of 262 Hz, the frequency of C4, superimposed with the frequency of C6 (1047 hz) just as
expected.
Figure 5.8
Using the multimeter to measure the resistance of pickup, we were getting values that
fluctuated from .5 Gohm to 1 Gohm. After a quick google search, I found that multimeter
resistance is measured with either constant current or constant voltage. I do not know how the
specific multimeter in the TLA was operating, but the resistance of the pickup was fluctuating
quite a lot. (over an approximate range of 500 Mohms). This fluctuation is probably due to the
fact that the piezoelectric pickup is not technically a conductor, so trying to force current
through it or place a voltage across it will not create behavior similar to measuring a resistor.
Long story short, the input resistance of the Kalimba is quite high but not known exactly.
Figure 5.9
6 - Implementation And Project Evolution
Microphone/Note Detection:
As discussed in section 5.8, a decision matrix was employed to determine the most effective note
detection option to which the result was the pdm onboard microphone. While initially the thought
was that the piezoelectric pickup would be the most desirable option for its extreme accuracy and
supreme noise rejection ability, the pdm microphone was eventually chosen as the winner mostly
due to the fact it was the easiest to physically realize (no amplification necessary) and its accuracy
and noise rejection were only marginally worse than the piezoelectric pickup.
LED implementation:
Skinny LED arrays from Adafruit were chosen for their easy individual addressability and
customizability in brightness and color. They had to be cut into sections and soldered together
again to replicate the tine pattern on the kalimba. This implementation worked better than trying
to use and mount individual LEDS or using an LED/Fiber optic system.
The Seeed Studio XIAO nRF52840 (Sense) microcontroller has a BLE module integrated onto the
board located near the PDM microphone at the bottom of the Seeed Xiao. We would then use the
ArduinoBLE library to call functions from throughout our software for integrating Bluetooth
functions into our code. Near the top of the main code, before the setup function, we define the
BLE service, characteristics, and characteristic descriptions along with an appropriate UUID that
would uniquely distinguish each of them. There is a single service that represents the single
kalimba mount, and multiple characteristics used for exchanging information between the two
devices. Lastly, we needed to place BLE.poll functions throughout our code to update the BLE radio
events for the specified BLE device so that the connection and/or any updates can be handled.
Database:
We looked into several different options for how to store our database. We ended up settling on
Firebase due to several reasons. A big reason was that Firebase is a top industry standard for
database management and because of this it has lots of good documentation and tutorials. We
realized we wanted to choose technology with easy access to items to learn the technology, so the
fact that Firebase is very popular and has lots of documentation made it a good choice for us to
learn. In addition, Firebase is very easily integrated into React Native and can be deployed to both
android and IOS which made it a good choice as well. We also found in our research that it has a
quicker learning curve compared to something like AWS.
To implement this database within our project we had to follow several different steps. We first had
to setup our database within firebase.google.com and fill our tables with some actual data that
would store our songs. Each song was given a value for song id, song title, a favorite boolean and a
string array that contained each individual note. Once we had this part set up, we had to figure out
a way to connect this to our frontend portion of the app. To do this, created a firebase config file
that set up our Twinkle Tines database within our app. We then used several techniques to query
the database. In the library and favorites page, we queried the database for all the different song
titles and had them show up in our songs panel. We also queried the individual notes array when
the user chose a song, and parsed the array into individual notes which were then sent to the
kalimba.
User Interface:
The user interface has stayed very consistent since our original design. We originally created the
design using Figma where we came up with a theme and a flow of screens. We knew we wanted to
keep a common and simple theme to make it easy for the user to navigate and use. Once we settled
on a react native application we implemented our design using typescript.
Hardware Mount:
The device mount was created using Autodesk Inventor, a 3D design program. This was used to
model each mount design allowing for easier testing. Makerbot printing was used to model and
print each mount. The LED display can be attached to the top of the device while the battery and
microcontroller can be housed in two boxes on the side. Once these pieces have been connected the
mount can be slid onto any kalimba, the four supports will slot at the back of the device and around
the bridge. We recommend the use of rubber bands to fully secure the mount to your kalimba and
to reduce the resonance disruption that can occur between the plastic of the mount and the body of
the instrument.
Figure 6.1
Figure 6.2
Figure 6.3
7 - Professional Responsibility
This discussion is with respect to the paper titled “Contextualizing Professionalism in
Capstone Projects Using the IDEALS Professional Responsibility Assessment”, International Journal
of Engineering Education Vol. 28, No. 2, pp. 416–424, 2012
Financial Deliver products Act for each The professional The ‘Definition’
Responsibility and services of employer or client should never says that the
realizable value as faithful agents charge more than professional should
and at reasonable or trustees. their service is judge the cost of
costs. worth and the their
customer should product/service
not worry that responsibility and
the professional should not
is charging them overcharge but the
incorrectly. ‘NSPE Canon’ says
that the customer
should be able to
trust the
professional's cost.
Health, Safety, Minimize risks to Hold paramount All of the work The ‘Definition’
and Well-Being safety, health, and the safety, health, done and the column specifies
well-being of and welfare of the finished product the health and
stakeholders. public. should not safety of
disrupt the stakeholders but
health, safety, and the NSPE says to
well-being of keep in mind the
anyone. health and safety of
the public.
Property Respect property, Act for each Don’t damage or The first definition
Ownership ideas, and employer or client take the physical is more specific
information of clients as faithful agents or intellectual and lists property
and others. or trustees. property of examples to be
others. mindful of while
the NSPE
generically states
that the customer
should trust the
professional.
Social Produce products Conduct themselves All work and the The first definition
Responsibility and services that honorably, final product is very general and
benefit society responsibly, ethically should not says that the work
and communities. and lawfully so as to disrupt any should not disrupt
enhance the honor, communities and society or other
reputation, and each individual communities but
usefulness of the employee should the NSPE is specific
profession. be respectful of to the individual
others. and how the
employee should
conduct
themselves.
Figure 7.1
7.2 PROJECT SPECIFIC PROFESSIONAL RESPONSIBILITY AREAS
Area of Definition NSPE Canon Important to our How well our team is
Responsibilit Project? performing
y
Figure 7.2
Our project has to be completed as close as possible to our specifications because any error
could cause the kalimba to not work properly. The LEDs will also need to line up to the tines and
the mobile app will need to correctly store the current note. Any error in these capabilities will
break the core functionality of our project.
8 - Closing Material
8.1 Concluding Thoughts
Despite doubts and problems encountered during the process and along the way, the
project has reached a conclusion to be proud of. The prototype implemented meets the initial goals
set out in the beginning and addresses the user needs originally identified.
7) Isaac Vrba
Team Procedures
1. Day, time, and location (face-to-face or virtual) for regular team meetings:
4. Procedures for record keeping (i.e., who will keep meeting minutes, how will
minutes be
shared/archived):
a. One person on team will record our minutes each meeting
b. They will be shared via a Google drive document called Meeting Notes
Participation Expectations
a. Expect each team member to make each meeting unless a notice is given 2
days in advance.
b. If not able to make the meeting, be sure to catch up on what the team
went over by reading through the minutes and asking questions about
things that were discussed.
c. Expect each team member to attend each Thursday lecture unless a notice
is given 2 days in advance
2. Expected level of responsibility for fulfilling team assignments, timelines, and
deadlines:
a. You are to complete all team assignments, timelines, and deadlines before
the decided team deadline.
i. If any of the above is needed to change, you must communicate to
the group for a goal re-evaluation.
3. Expected level of communication with other team members:
a. Team members are expected to meet all deadlines that were set by the
group
b. Team members are not to “go dark” and continuously communicate with
each other about any progress.
Leadership
1. Leadership roles for each team member (e.g., team organization, client interaction,
individual component design, testing, etc.):
a. Hardware half:
i. Stuart - Client communication point
ii. Eileen - Hardware
iii. Isaac - Git Expert
b. Software half:
i. Andrew - User Interface
ii. Mesa - Sub group meeting planner
iii. Kaitlyn - Sub group meeting minutes
iv. Daniel - Design
c. These roles are not final and subject to change as project develops
2. Strategies for supporting and guiding the work of all team members:
a. Show up to meetings
i. Group meetings will be for updating everyone on the sub-team
progress and for group decision making
ii. Sub-Group meetings that are aimed for keeping all the members
of the smaller teams in the loop.
b. Show up to class
c. Discuss in Discord continuously
3. Strategies for recognizing the contributions of all team members:
1. Skills, expertise, and unique perspectives each team member brings to the team:
a. Mesa (SE) - Experience using Git, experience using android studios and
xcode for both android and ios apps, HTML, Figma app planning/design
b. Andrew (SE) - Experience using Git, front end and back end internships
(React, Java, etc)
c. Stuart (EE) - Soldering, hardware testing and troubleshooting, cinda
creative™
d. Eileen (EE) - Power systems, hardware systems, signal processing
e. Kaitlyn (SE) - Experience with Git, Android Studio, Java, HTML, Front-End
and Back-End development, Figma,
f. Daniel (SE) - Experience with Git, Visual Studio, HTML, Java, C, Creative,
Unique, Can make buttons, like really cool ones
g. Isaac (CprE) - Experience using Git, Soldering, android studio, embedded
work, C, Java, Front-end
2. Strategies for encouraging and support contributions and ideas from all team
members:
a. Celebrate Success
b. Learn from failure
c. Document Successes, all of them inside the Success and Milestone
Document
3. Procedures for identifying and resolving collaboration or inclusion issues (e.g., how
will
a team member inform the team that the team environment is obstructing their
opportunity or ability to contribute?)
a. Never you versus me, always us versus the problem
b. Group discussion (Virtual/Face-Face)
c. Be there for each other
d. Overcome challenges as a team
Goal-Setting, Planning, and Execution
1. Team goals for this semester:
a. Have fun
b. Have a well ideated plan to shoot for
c. Start on the build of the project, both hardware and software before end of
semester
d. Create effective, detailed documentation and have it organized
e. Apply what we learn in class to the project
f. Learn a new technical skill during the course of the project
2. Strategies for planning and assigning individual and team work:
a. At every weekly meeting, we are to go over the next sprint period’s goals
and between the set period a series of smaller sprint goals is to be set to
keep all team members freshly updated of what is expected of them.
b. Starting a team meeting with standups.
3. Strategies for keeping on task:
1. How will you handle infractions of any of the obligations of this team contract?
a. Reach out and ask what happened that caused non participation
i. Work out how to stay better on track in the future
2. What will your team do if the infractions continue?
a) I participated in formulating the standards, roles, and procedures as stated in this contract.
b) I understand that I am obligated to abide by these terms and conditions.
c) I understand that if I do not abide by these terms and conditions, I will suffer the
consequences as stated in this contract.
1) Mesa Hassel DATE 9/12/2022
2) Andrew Adams DATE 9/12/2022
3) Stuart Pearson DATE 9/12/2022
4) Eileen Hillier DATE 9/12/2022
5) Kaitlyn Nolting DATE 9/15/2022
6) Daniel Duerr DATE 9/12/2022
7) Isaac Vrba DATE 9/12/2022
Appendix
APPENDIX A: INSTRUCTION MANUAL
To get to a point where you are able to use the kalimba mount device, a react-native environment
needs to be created so that the application can be loaded and able to communicate with the Seeed
Xiao microcontroller. The steps for starting an installation are as follows:
Once the application loads, you will see the title screen and have the option of going to the song
library, view your favorite songs, and/or going to the settings. Within the library page is a list of all
the songs that have been added to the database and are available to be played. In the favorites page,
only the songs that the user has favorited will be displayed. Again, you can scroll through this list to
choose a song. As of this time, the settings page is blank and has not been implemented yet.
Before any song can be played, we need to connect to the microcontroller via Bluetooth. Power on
the microcontroller either by plugging in a battery to the two open wires located near the battery
pocket, or by powering it with the USB Type-C cable that connects to the Xiao located at the
bottom right of the mount. Once it is powered, the microcontroller will start searching for a central
bluetooth device.
When the application connects to the mount device, the user will have the option to either play the
song or favorite the song. If the user favorites the song it will updates the database and will be
available to be selected on the favorite screen.If the user decides to play the song, the notes string
will be pulled from the database and one note will be sent to the microcontroller at a time,
updating only if the user plays the right key. This loop stops once we have reached the end of the
song string.
The current version of the project code currently only supports full-tine lighting when it receives
notes from the application. Planned within any future work on this project, we would like to see the
implementation of a “Waterfall Mode”. This will accept an array of input notes in case multiple
notes need to be played, and send the note down the LED canvas as the time it will be played
approaches.
When the application is done sending notes for any given song, it will turn off all the LEDs on the
mount and wait for the user to either select another song or to power off the device.
APPENDIX B: SCRAPPED DESIGNS
1. USB Type-C as the sole connection from a phone to the device
a. We opted for a bluetooth connection to transmit data between the microcontoller
and Twinkle Tines Applicaiton.
b. This worked a lot better for the design of our mount and convenience for the user.
c. When we decided to use bluetooth, we also wanted to find a way to run the device
with a battery so that we were not stuck with a tethered device.
2. Piezoelectric Pickup and Condenser microphone for the analog signal detection
a. The pdm microphone was judged to work the best of the three options. This
hardware element was built into the microcontroller and was the most reliable for
detecting the notes played as determined by our decision matrix.
3. Lighting using fiber optics
a. When we were problem solving for how to best notify the user about incoming
notes we considered using fiber optic wire since it was cheaper, did not require
wiring on the bottom, and was the most durable option we found.
b. We ended up scrapping the idea after we received some to test with. We found that
when we used them we would be sacrificing the ability to run waterfall code in the
future.
c. To supply a light source to the fiber optics would require 17 Optical Transmitters
and those take up more space and to connect the thin optic was going to be very
challenging for our design.
4. 3D Printed mount designs
a. Chevron shaped top base to support LED display above kalimba tines
b. Moving mount pieces to allow for complex size adjustments for different kalimbas
c. Secondary model piece to support the device and ensure a tight connection to the
kalimba
d. Adjusted designs to improve measurements
e. Previous designs that miss microcontroller/battery storage and additional support
structures