Executive Summary

Where is Dr. Yoder?

I'll leave him a message

We wanted a way for students to be able to leave audio (and possibly video) messages for professors when they are out of their office. Using a BeagleBoard Bone, we plan to connect a wireless USB device and a PlayStation Eye to achieve this. Students will be able to walk up to the device and press a button to record their message which will then be available for the professor.

At this time, we have have been able to successfully capture audio while a user presses and holds a button. Once the button is released, there is a python script that will encoding the recording into a mp3 file and send it via an email message to a predetermined email address. We have also developed a web interface that will allow a user to change the preferences for what email account to use and where to send the email message.

The wireless usb adapter does not work at this time. We are still trying to get recompile the kernel to install and enable the driver for this wireless adapter.

Overall we have a functioning project that consist of a C program, python script, bash script, and nodejs webserver. The C program controls how the audio is recorded. The python script controls sending emails with attachments. The bash script is in charge of moving the audio file, converting it to mp3, and firing the python script. The nodejs server controlls the preference file for the python script.

Hardware

BeagleBone

PlayStation Eye

Belkin N150 Micro Wireless USB Adapter

BeagleBone

This project is design primarily for the BeagleBone, but could be implemented on any other Beagle Board given the proper driver installation for the USB hardware and available GPIOs. The BeagleBone is applicable for this project due to is small size, low power consumption, and networking capabilities. Make sure to use the A5 image of Ångström as the A6 image is still buggy with respect to audio/video capturing, as well as using the USB WiFi drivers.

Further BeagleBone documentation can be found on the official Beagle Board website.

In this project tutorial, we will be using the PlayStation Eye as the audio and video source to recod messages and capture face images. The PlayStation Eye is very compatible with the A5 image of Ångström and used in many other Beagle embedded Linux projects.

Here we would like to use a WiFi dongle to easily connect to surrounding wireless networks for ease of installation and placement in the remote stretches of hallways and doorframes. We will need we will need network connectivity to transmit e-mails and recording attachments over to an available e-mail server account. In particularly we are using the Belkin N150 Micro Wireless USB Adapter.

Although this device is not natively supported with the stock A5 image of Ångström, a brief tutorial has already been made on how to compile and install the device drivers for this particular wireless USB adapter: Belkin Micro Wi-Fi USB dongle on the BeagleBoard

Battery Pack and USB Hub

To again better a ease installation and quick deployment for our system we are using a battery pack to provide power for the BeagleBone, the WiFi dongle and the USB camera. Due to the hottest limitations of the Beagle bones single USB port, in addition to the limited amount of current that the single USB port can provide, we will also use a USB hub with power adapter to solve both issues.

In order for the end user to trigger the recording sequence, we will implement a traditional mechanical momentary pushbutton that will connect to the BeagleBone’s GPIO using the enabled internal pull-up resistors.

LED

As a simple display, our project will utilize a simple LED as an indicator for the user that the audio is currently being recorded and that a face capture will be taken.

Software

Angstrom A5 Image

In order to use the camera drivers for the playstation eye you will need to install the A5 image on the beagle bone. To do this you will need to download the A5 image. Then you will need to install this image on the sd card of the BeagleBone using the instructions bases on ECE 497 Exercise 03 Installing a Beagle OS.

github

In order to use the project code for the Beagle VNS, you will need github installed in order to download the code. If you do not have github there are instruction on how to install it on the ECE Exercise 16 web page.

A python mail client that prompts the user for information to send an email with optional attachments.

python smtp-mail-client-attachments.py

Send To (Separated by a comma):
Files (Separated by a comma):
Send From: beagle497@gmail.com #Must use this email for now
Subject:
Message:

Install Instructions

Currently as long as the arecord libraries are installed and nodejs is install, no other installation is required. The app file will use files that are contained in the git repository. The python script does not need any additional packages, and the javascript libraries are also located in the repository.

For simplicity and clarity when reading and understanding the code, as well as some limitations with using mix of C, Python, and bash scripts, there exists some hard-coded references dependencies. As such, we suggest cloning the repo to your home directory to get up and running first before modifying anything for your own application.

Highlights

Theory of Operation

This device is intended to record audio messages from students when professors are out of their office. The device will sit outside a professors office and will have a microphone and user button attached. A student who wishes to leave a message will press and hold the button then begin speaking, when the student has finished speaking they will release the button. The software will then save the audio file and then send the file as a mp3 to the user specified email.

As a user the professor will be able to modify the default preferences such as email to send to and the message that they receive.

The system consists of a C program that will need to be started and checks for the button press. When it picks up that the button has been pressed it collects audio until the button is released. The system then calls on a python mail client script passing in the location of the newly created audio file. The python script then reads from the user preferences and sends an email accordingly.

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.

1. Acquire Hardware - Ruffin

Done

2. Set up project page - Tom & Kevin

Page made and updated

3. Get USB wireless to work - Kevin & Ruffin

This is not working at this time for A6 image

4. Get PlayStation Eye to work - Tom

Audio working, need to use A5 image

Passing capture video on to Ruffin

5. Get BeagleBoard Bone to run off a battery pack - Ruffin

Done

6. Register an email for the BeagleBoard - Ruffin

Google acound made, along with Gmail and Google voice accounts

7. Create an email script to send email with attachments - Tom

Email sending complete

8. Encode the raw audio from ALSA into mp3 format - Kevin

Able to record on bone, use lame to convert file, and SCP to send to PC and listen to the recording

9. Capture an image using GStreamer - Kevin & Tom & Ruffin

This is still being developed

10. Create a C program to capture the audio and listen for GPIO inputs - Kevin & Ruffin

This is complete it is in the C-Program Directory

11. Putting all the pieces together - Tom, Kevin, & Ruffin

This is a c program that exist in the C-Program Directory.

Code

C

The following C application is used to collect audio from the Playstation Eye and then write it to a file when a gpio button is being pressed. Once the pgio button is released, the program runs a bash file that will encode the raw audio into mp3 and email it.

Parts

Conclusions

Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting. Need More Cake Want to discuss alsa limitations that prevented more advanced recording methods.