High Level Requirements

The high level requirements for this project are split into two categories: Embedded System and User Interface.
  • Embedded System
    • Record audio.
    • Analyze audio for bird vocalizations.
    • Will be able to utilize a Fast Fourier Transformation (FFT).
    • Stream audio to the desktop user interface.
    • Be power efficient.
  • User Interface
    • Import audio recordings from the sensors.
    • Bring audio recordings into Matlab.
    • Export audio recordings.
    • Display audio data on a spectrogram.

    These requirements have been gathered and updated over several weeks along with Dr. Flikkema's guidance and approval. Since this is a unique project mainly based in research, we had goals to strive towards in addition to our core requirements. These goals are not expected to be met 100% but research into them would be sufficent. To see more detail, please view our Requirements Specifications document on our Documents page.

Bird Picture


The technologies we are using for development and implementation are:
  • GitHubGithub
  • Github is our main source control program. This allows us to share code quickly and easily between teammates, enables collaboration, and keeps a log of recent changes if one needs revert to previous commits. Code can be open source on this platform which is one of the requirements of the project.

  • ThunderboardThunderboard EFM32GG12
  • The Thunderboard EFM32GG12 is our main development board for the gathering of audio. This device can be connected to a computer and transfer data using serial communication in order to transfer audio samples to a desktop application. This device allows us to record audio for a cheaper price while maintaining the flexibility we require to develop it.

  • Simplicity Studio Simplicity Studio
  • Simplicity Studio is the IDE that Silicon Labs provided to program and flash the Thunderboard EFM32GG12. This was selected because any alternative that we have found required a license over our budget. Simplicity Studio allows us to test our code on the board as well using the debugger supplied with the IDE.

  • MatLab Matlab's GUI Builder
  • MatLab's GUI builder is used to build the user interface. This GUI builder was selected because it is an easy to use drag and drop system that automatically generates the code needed to implement functions and widget objects such as buttons.

  • Simplicity Studio Python
  • Python is used to build the backend of the application side and is used to gather and process the incoming audio samples. This was selected because Python is easy to implement modules and easy for our team to use, since we already have experience with this programming language.

  • PySerial PySerial
  • PySerial is used to assist the backend of the application side to communicate with the board over a USB serial connection. We chose PySerial because it is the best documented and most supported serial I/O module for Python. This allows us to fufill the requirement of gathering data from the board.