Today (Nov 2012) – Osciprime, An Open Source Android Oscilloscope
After the success of the Bachelor Thesis in 2010, we decided to create our own product “OsciPrime” with our start-up company Neuxs-Computing GmbH Switzerland.
Second Project 2010 – An Open Source Android Oscilloscope
Our second project (Bachelor Thesis) is an open source Android Oscilloscope. Following features outline the project and final product:
- Open hardware Front End from scratch samples at 6 Msps, 8 bit, and high res at 48 Msps
- CPLD feeds the Cypress USB FX2 micro controller to transfer data.
- The Beagleboard is connected to the Front End with USB and runs Android
- Our application processes and visualizes the samples that are acquired using libusb
- The data is rendered using OpenGL
Find out all details in our technical report:
To the post
First Project 2009/2010 – The Android Spectrum Analyzer
Our sample application is a spectrum analyzer.
Here is a brief abstract of what we do.
- We are sampling a signal with ~12 kSamples/sec.
- These samples are read by our USB FX2 Dev Board over the I2C Interface.
- We then send these samples to the Beagle Board over USB.
- We then pass the samples to our Android application and calculate the FFT.
- Finally we present the spectrum on the display to the user.
Core Hardware Components
- FX2 Dev Board
- A/D Converter with I2C Interface
- Beagle Board
Core Software Components
- FX2 Dev Board Application
- Android Kernel for Beagle Board
- Android Root File System Build from Google
- Libusb for Android
- fxload for Android
- Android Spectrum Analyzer
From the samples to the spectrum – our hardware/software path
We aquire the source signal samples from the A/D Converter on the right in the picture and pass them to our FX2 micro controller over the I2C Bus. The Board on the left is a FX2 Development Board providing our USB Interface. The samples are then stored in the USB-Bulk Endpoint Buffer. As soon as our Beagle Board sends an IN-Packet to the endpoint the buffered samples will be sent.
Our Android application runs on the Beagle Board and consists of two parts. We require to access our USB-Interface – this is done with a native C-Application using libusb 1.0 which we had to port to android. The native application starts the bulk transfers to the FX2 Board and gets in return the requested samples. On the other hand we have a Java Activity running on Android which needs the A/D samples to display and to calculate the FFT. Via JNI the Activity gets the sample buffers from the native C-Application and presents the results on the screen.
On the display we visualize the FFT of the acquired samples. We are also creating a brief user interface and some basic spectrum analyzer functions.� As soon as our application is created we start to tune and benchmark all our software components recursively and find out what capabilities Android can provide in terms of delay, stability and preemptivity.