Showing posts with label Home Automation. Show all posts

Android + Raspberry Pi + Microcontroller = Intelligent gadgets with everything possible

1. What is Rapsberry Pi?

I have always wanted to talk about my favorite thing of the year: the cheap tiny linux PC - Yes, the Raspberry Pi!

It will be avaiblable soon by the end of the year 2011, let's hope.

Size: same as a credit card (for model A, even smaller, like a pen)

Price: 25 dollars

It is a full linux PC on which we can install Ubuntu, or even play Quake smoothly.



2. Why is Raspebrry Pi so interesting for DIY Phone Gadgets?


Android = Gorgeous user Interface, portable telecommunications services and the Internet of things everywhere with you

Raspberry Pi = Cheap, smart, tiny linux PC that can be powerful brains of any intelligent gadget and easily uses the USB port to add Microcontrollers like Arduino to control any motor or light or whatever sensors

Conclusion: Every project that combines Android and Raspberry Pi can make a powerful gadget.

3. How to make DIY Phone Gadgets combining Rasperry Pi and Android?


Mode 1. Android as a standalone remote control and Raspebrry Pi as a part of the gadget.


There are two possible types of communications:

a. Short range low delay communication


We can plug USB WiFi or Bluetooth dongles on Raspberry Pi, connecting it to the Arduino or whatever microcontroller, and use Android to interact with it.

Typical examples can be home automation gadgets such as an NFC lock or an intelligent airconditionner, showing user interface on the Android phone. WiFi toys with augmented reality feature can be interesting too. In UAV, you can connect Raspberry Pi to ArduPilot, and do some near real-time telemetry and video feedback via WiFi to be displayed on the Android phone, seamlessly working with Google Maps.

b. Cloud communication

We can connect the Raspberry Pi powered gadget to the Internet, and use Android to "chat" with it from everywhere in the world.

An example that I can imagine would be a surveillance robot with USB camera at home (of course its brain is the tiny Raspberry Pi). While the robot is wandering at home, we can chat with it on Google Talk using our Android phone from another end of the world. The QoS on some 3G or 4G networks can be good enough to support video chat and voip. Android will use XMPP, Web RTC or whatever promising or classical Internet protocols to interract with the gadget.

Mode 2. Android and Raspberry Pi together as a part of the gadget.

This mode takes advantage of the Android's built-in software and hardware (GPS, sensors, WiFi, bluetooth, etc) and the advantage of Raspberry Pi's good hardware extensitivity (because it is a linux PC with USB 2.0 OTG ports).

In this mode, the Android is directly connected to Raspberry Pi using a USB cable, just as it is connected to any PC. So ADB and USB tethering can be great protocols to help realizing fast bidirectional communication.

An example can be a sophisticated RC controller with many physical buttons and joysticks, and of course Android's large touch screen. You can download many different Android applications for this gadget, or add different 2.4Ghz radio modules. So there is a both a greater software and hardware flexibility compared to the classical radio controls from different manufacturers.

Mode 3. Installing Android on Raspberry Pi...And make cheap gadgets.


This seems a bit difficult for now because higher versions of Android are demanding in terms of hardware capabilties.

3. What can be done to help developers of DIY Phone Gadgets?


The idea is to buid up some good libraries in Raspberry Pi that can work with a special microcontroller such as Arduino, while supporting different types of connections with Android. The ultimate purpose is to provide a simple and single way to develop, instead of always developing on different platforms and trying to figure out how to bridge.

I really like the way how projects like IOIO and Amarino integrate the electronics programming in Android development. If Raspberry Pi can provide such a platform to handle PWM, UART etc while easily supporting WiFi dongles, and it is so cheap, why not?

4. Limitations of using Raspebrry Pi in DIY Phone Gadgets


Unfortunately, as Raspeberry Pi is so tiny and squeezes all cool things into a small board, there are not enough I/O pins for hardware developers. This is what is better considered on the more expensive BeagleBone. However, we can always connect a cheap Arduino board to it and it's all done easy and clean. Remember it is a PC and it is USB-friendly. For those of you who are curious about the I/O on Raspberry Pi, please read the official WiKi:

http://elinux.org/RaspberryPiBoard#General_Purpose_Input.2FOutput_.28GPIO.29.2C_I2C.2C_I2S.2C_SPI

There are approximately 16 spare GPIOs, which on the Alpha board are brought out to 1.27mm pin-strip. Voltage levels are 3v3. The connector choice is deliberately annoying to connect to directly; there is no over-voltage protection on the board so the intention is that people interested in serious interfacing will use an external board with buffers, level conversion and analog I/O rather than soldering directly onto the main board. It brings 2x I2C (3v3), I2S and an SPI (3v3) interface out to the same connector. It supports one slave interface for I2C and one for SPI. The UART has four PINs: 3.3V, GND, TX and RX. Kernel boot messages go to this UART at 115200bps.

Good ideas are happily discussed on Raspberry Pi Forum here:
http://www.raspberrypi.org/forum?mingleforumaction=viewtopic&t=1158
or in IOIO User Group here:
http://groups.google.com/group/ioio-users/browse_thread/thread/d23be2c908a9d5ae/be8101778a202a52

3 possible ways for Android to control the outside world using WiFi

In our last post about the Top 10 Android Hardware Interface Tools, we have already been concentrating too much on the low-speed high-delay Bluetooth connectivity; we have also been hacking too hard (the ROM or the Android Debug Bridge) to ask the little micro USB port to give us serial Rx/Tx and prepared some Android libraries to avoid programming the microcontrollers; we have even been dying to get some low rate serial characters or PWM signals through the poor 3.5mm audio jack on the phone.

What haven't we tried? Due to the seemingly high-price issue, we haven't tried much those WiFi modules or dongles. But finally we ask: why not! WiFi means easier configuration (UDP/TCP/WiFi direct), secured connection, NO annoying cables, high speed data transmission (video streaming possible), smoother control (less delay), and the Internet of things.

What are the possible WiFi connection modes with an Android phone? The DIY Phone Gadgets community has drawn such a conclusion so far:

1.    Classic mode: WiFi router+Android+external WiFi device:

Thanks to the router, the Android device has full Internet connection, and can control multiple external WiFi devices within this local network. The inconvenience is that the LAN is not mobile (limited by the router's WiFi range).

Sample application or ideas:

Well, we haven’t seen something using WiFi and Android but we would love to test those good-looking arduino-compatible WiFi boards and shields very soon.
DomoticHome uses Android, Arduino and an Ethernet shield to provide simple home automation protocol. Based on that, it is hyper-easy to use WiFi shields to quickly realize the same thing. To port the project using a WiFi shield, we don’t even have to change anything on the Android side. Here is how it works:



2.    Ad Hoc P2P mode: Android+WiFi device, without WiFi router, where there are two types :

a) P2P Android Client mode:

The external device is the AP. The Android device is the client.

Sample application or ideas:

The AR Drone from Parrot. The AR Drone mother board is a WiFi AP.

b) P2P Android AP mode:

The Android device is the AP and the external WiFi device is the client.

Sample application or ideas:

There is no mature application of this type now in the market. But we do see pretty much potential. Unlike the P2P type A that is limited to be connected to one AP, the Android AP can control multiple external WiFi client devices. Shown in the Open World Forum 2011 in Paris, Yan’s “Chicken Haha Telepresence Robot” is the first prototype based on P2P WiFi Android AP solution. Multiple android devices can control multiple robots and get live video feedback, without needing a router.




FAQs: 

In P2P Ad Hoc mode, do we still have Internet access?

Nowadays, each Android device has only one WiFi module. Once configured to work in Ad Hoc P2P Android client mode, the phone will no longer have internet access unless the external AP can provide an Internet content (which is difficult). In P2P Android AP mode, more luckily, the Android device will have Internet access if it has a 3G connection.

How to enable Android WiFi tethering hotspot AP?

You don’t have to root the phone. The WiFi tethering hotspot (AP) is natively supported on Android 2.2 Froyo or above. One interesting thing that we noticed is that on all Android devices we have tested so far, the IP address of the Android AP is always 192.168.43.1. That makes it so easy to develop client applications without considering the server's IP address. What's more, we can even programmatically enable tethering mode and define the AP name in the Android code. It needs some hack because one of the pains to develop P2P Adhoc applications is that Android SDK doesn't provide explicit APIs to configure the network). In our next post, we will give you a tutorial to enable and configure P2P AP mode, both manually and programmatically.