Project idea proposal : Sensornode


I’m Tushar Pal, currently pursuing my b Tech in IT from a SASTRA University. My skill set is as given below :

Decently good Java programmer
Adept at C/C++
I have made quite a few android applications.
I also work with the arduino platform quite actively.

Most of my recent work has been in the area of Arduino/Android/PC bidirectional communication. Specific mention here of the app I created to get all sensor data, and stream it to my linux PC, via adb to a listening TCP client. Most BBB projects depend heavily on sensors. For which, custom boards must be spun, IC’s ordered, and then programming done. Instead, I propose that we use the same concept I employed above, on the BBB. We can extract the adb files from the android source repository, create a standalone application that lets the phone communicate over USB, and the send the sensor data. Wifi and Bluetooth could also be used for communication, and the necessary hardware adapters must merely be installed on the BBB.

Not only do we get gyro and accelerometer inputs from one source, but also camera and microphone as well. OpenCV could be implemented in the android part, and the image recognition part can be offloaded to the phone, freeing up the BBB resources for faster H/W control. Of course, I’m not implying here that only android phones can be connected. Once the protocol for communication and data transfer has been established, anybody can build an app for their respective phone platform and connect it to the BBB. A simple Nokia N95 setup with python S4LA could provide camera input for a motion detecting setup, thus avoiding the need to go out and buy a compatible webcam.

Sensors are all fun and good. They help the BBB understand it’s surroundings. But, what if we wanted long range communications capabilities for the BBB, to control it or receive feedback? Well then, this setup can again be employed, in a slightly modified manner. We use the Wifi/2G data/3G data/Bluetooth interface of the phone, for communication with either another phone, or a server setup, or even a simple handheld remote. The phone merely acts as an access point of data for the BBB. Thus, the need for a dedicated communication hardware for the BBB is also eliminated.

The advantages of said project are :

Sensor data processing computation gets offloaded to phone.
Vast array of sensors, including camera and microphone input, available through one device.
Data communications channel, using the phone’s inbuilt WiFi/Bluetooth chip or data connection

I would definitely like to implement aforementioned project for this iteration of GSoC. Suggestions and critical appreciation are welcome.

Thank you.

I don’t get it. There are drivers already for tons of sensors. What code are you looking to develop, in-specific?

The base goal of my project idea, is to connect an android phone to a BBB, via USB/Bluetooth/WiFi. Then, the data from the sensor on the phone, can be sent to the BBB, for use in robotics or autonomous drone installations. Also, since this is a phone that we have connected, a data connection is available to us. So, we can send additional data to the BBB via the internet as well.

The code modules I wish to develop are:

Android application that sends the sensor data via the specified communication channels.
The BBB library. A minor hiccup, is the language choice for writing said library. Should I write it in C/C++, or is there another more preferable language?

I am outlining the features of the various components of this project below.


All sensors on the phone will be listed. Individual sensors can be selected, and their data sent to the BBB.
Camera and Microphone data can be output to the BBB. Pictures and surrounding audio input.
An A/V stream from the above two can be sent to the BBB. As one would expect from a webcam. Either using RTSP or HLS.
Incoming data over WiFi/Data connection of the phone can be sent to the BBB


Receive the sensor data
Receive the A/V stream
Receive the data that the phone got over WiFi/Data connection
Output all the above via separate OutputStreams

I hope I’ve managed to clearly outline the purpose and outcome of my project. I would appreciate feedback on the same, especially for the BBB library part.

This seems more like an Android project than a BeagleBone project to me. The part you’re describing that would run on the BB sounds like it would just be receiving a video stream and some HTTP packets, which are both well supported things in any operating system. All the complexity of the project would really be on the Android app side.

Couldn’t the phone also be streaming its sensor data to a service like Xively ( without the additional cost/complexity added by the BB?

I do not deny, that the project will require more coding on the Android phone side. But, the BB part is complex as well. Allow me to explain. Unlike J2ME, there is no dedicated USB connection method. What I have already implemented, between my laptop running Ubuntu and my phone, is a workaround using adb. One must forward from port A to port B on the adb. The PC client connects to one port. The Android server, to the other. adb is basically a socket tunneling service over USB. But, we cannot install the entire Android SDK on the BB, just for this one component. The adb part must be extracted from the SDK source. Whittled down to the bare minimum. Then included in the comms library.

Granted, the complexity would mostly be in making the Android application. But think of the benefits of this setup as well. ONE device, that supplies sensor data, as well as a live A/V stream, AND also supports data communications. The whole point of a development board is so it can interact with it’s surroundings. How can it do so, without knowing about its environment first? I am simply reducing the complexity of setup.

I have submitted my proposal to the Beagleboard organization. It was primarily an android project, so I made some changes in the proposal that I think might be in the interest of the BB community. I would be grateful if you to take a look through it, and give me some feed back. Thank you.

My proposal