Difference between revisions of "ECE497 Project - Andriod App to Speaker"

From eLinux.org
Jump to: navigation, search
(Future Work)
(Theory of Operation)
Line 76: Line 76:
 
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.
 
Give a high level overview of the structure of your software.  Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.
  
The basic structure of our program is an Android app sends instructions to an application running on the BeagleBone. The app first 'discovers' the BeagleBone and connects to it via Bluetooth. Then, the user can select to play, pause, resume, or stop playing different songs. The BeagleBone controls the music according to the command using mplayer. The audio output plays through the Bluetooth speaker or a headset, whichever one is currently selected by the mplayer audio driver.  
+
The basic structure of our program is an Android app sends instructions to an application running on the BeagleBone. The app first 'discovers' the BeagleBone and connects to it via Bluetooth. Then, the user can select to play, pause, resume, or stop playing different songs. The BeagleBone controls the music according to the command using mplayer. The audio output plays through the Bluetooth speaker or a headset, whichever one is currently selected by the mplayer audio driver.
  
 
[[File:SequenceDiagram2.png|thumb|This is the basic flow of the program.]]
 
[[File:SequenceDiagram2.png|thumb|This is the basic flow of the program.]]

Revision as of 13:10, 5 November 2018

thumb‎ Embedded Linux Class by Mark A. Yoder


Team members: Anne Boxeth, Trey Lewis

Grading Template

I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

00 Executive Summary
00 Installation Instructions 
00 User Instructions
00 Highlights
00 Theory of Operation
00 Work Breakdown
00 Future Work
00 Conclusions
00 Demo
00 Late
Comments: I'm looking forward to seeing this.

Score:  10/100

(Inline Comment)

Executive Summary

The goal of this project is to interface a simple android application with the BeagleBone. Songs will be able to be chosen and controlled from the Android App and played through a speaker connected to the bone either directly or through Bluetooth. We are working to support possibly having the option to choose either through the headphones or through a Bluetooth speaker. Another feature that would be neat to include is playing songs through YouTube so you can have a wider range of options to play.

Packaging

If you have hardware, consider Small Build, Big Execuition for ideas on the final packaging.

Installation Instructions

Give step by step instructions on how to install your project.

  • Link to GitHub project: https://github.com/boxetham/EmbeddedLinuxMusicAppProject.
  • Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
  • Include a Makefile for your code if using C.
  • Include any additional packages installed via apt. Include install.sh and setup.sh files.
  • Include kernel mods.
  • If there is extra hardware needed, include links to where it can be obtained.

possible instructions to turning on bluetooth: https://olsonetworks.wordpress.com/2014/01/03/enabling-bluetooth-on-your-beaglebone-black/


  • If bluetoothctl gives you waiting to connect to bluetoothd:
    • sudo modprobe btusb
    • sudo systemctl start bluetooth

User Instructions

Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.

Use the program by building the Android application onto an Android device. Everything in this program is controlled from the Android device. Start by selecting "discover" and then selecting your BeagleBone device to Bluetooth connect to. The BeagleBone should be running the perky_blue.py program found in the Git repo under the AppToSpeaker folder. Select the song to play once the BeagleBone is connected to the device.

Highlights

Here is where you brag about what your project can do.

Include a YouTube demo the audio description.

Theory of Operation

Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.

The basic structure of our program is an Android app sends instructions to an application running on the BeagleBone. The app first 'discovers' the BeagleBone and connects to it via Bluetooth. Then, the user can select to play, pause, resume, or stop playing different songs. The BeagleBone controls the music according to the command using mplayer. The audio output plays through the Bluetooth speaker or a headset, whichever one is currently selected by the mplayer audio driver.

This is the basic flow of the program.

Work Breakdown

List the major tasks in your project and who did what.

Also list here what doesn't work yet and when you think it will be finished and who is finishing it.

  • Go over example of getting phone to bluetooth connect to bone through app - Trey
  • Wrote App - Trey
  • Using mplayer to play, pause, resume, and stop music, in python script - Anne
  • Using mplayer to play music from online?
  • Connecting beaglebone black to bluetooth speaker
  • Solving choppyness of mplayer when playing music - team effort

Future Work

Suggest addition things that could be done with this project.

  • Have a way to dynamically load music to the Beagle from the app
  • Play music on multiple audio outputs at the same time

Conclusions

Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting. This project presented some interesting challenges. Using mplayer in the Python application cause the output of the audio to initially skip at some points. We tried many different things to solve this but ultimately the issue was the sampling rate used during playback. Overriding this setting caused the audio to sound a lot better. Another issue we had was getting the Bluetooth set up. Initially, we didn't know that we needed to use a Bluetooth dongle, so it was a lot of work before finally realizing we needed to purchase that. After getting the dongle, the work we did initially worked to connect to the speaker. Then, the BeagleBone stopped connecting to the speaker after turning off the Beagle and turning it back on. We tried a different dongle and installing different packages to monitor Bluetooth, but so far no luck.

Besides these two hiccups, creation of the app to outputting sound went smoothly. The project allowed us to experiment with different peripherals that we thought could make an interesting project. Some things that would be interesting to pursue is sending the music files to the BeagleBone so that you could play any song that you had on your phone. There might also be a way to get the music from other apps to play on the Beagle (basically just use the Beagle as the audio out for the phone). Overall, while there were some difficult parts, we are happy with the outcome of the system as it presented us new ways to connect to and use the BeagleBone.




thumb‎ Embedded Linux Class by Mark A. Yoder