SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
Using websockets and android to control robots in realtime
Talk about using WebSockets in Android to control robots in real-time. More details at http://sudarmuthu.com/blog/using-websockets-with-android-to-control-arduino-robots
Talk about using WebSockets in Android to control robots in real-time. More details at http://sudarmuthu.com/blog/using-websockets-with-android-to-control-arduino-robots
Using websockets and android to control robots in realtime
1.
Using WebSockets and Android
to control robots in real-time
Sudar Muthu (@sudarmuthu)
http://hardwarefun.com
http://github.com/sudar
2.
Who am I?
Research Engineer by profession
Create robots as hobby
Uses an Android phone
Why not combine both of them?
Has spoken in 6+ hasgeek events
http://hardwarefun.com
3.
Android and Arduino
There are at least half dozen ways to do it and I am not
going to talk about each of them.
http://sudarmuthu.com/blog/building-robots-using-
arduino-and-android-at-droidcon
http://hardwarefun.com
4.
So today…
WebSockets in Android
How to use it to control robots
http://hardwarefun.com
5.
Why hardware for a software hacker?
Fun!
http://hardwarefun.com
6.
Let’s start with a demo
Demo
http://hardwarefun.com/projects/asimijs
http://hardwarefun.com
7.
Participate in the demo
Visit
http://hardwarefun.com:3000
http://hardwarefun.com
8.
Control the bot at stage
http://hardwarefun.com/projects/asimijs
#asimijs @hardwarefun
http://hardwarefun.com
9.
Now let’s see how I built it
http://hardwarefun.com
10.
What is WebSockets?
Full-duplex over a single TCP connection
Provides push support
Designed to work inside browsers
Works on port 80
http://hardwarefun.com
13.
HTTP (Pull)
Is there an update?
No
Is there an update?
No
Is there an update?
Yes
http://hardwarefun.com
14.
WebSockets (Push)
Tell me when you have an update
Ok
Here is the update
http://hardwarefun.com
15.
Why use WebSockets in Android
Firewall friendly
No need to reinvent protocol
Real-time communication
Easy to setup server
http://hardwarefun.com
16.
Remember, I am not talking about
using WebSockets inside an
Android browser
http://hardwarefun.com
17.
WebSocket implementation for
Android
There are lot of options, but I choose Socket.IO
implementation by Kaushik Dutta (Rom Manager fame)
https://github.com/koush/android-websockets
http://hardwarefun.com
18.
Why Socket.IO?
You should have attended jsFoo
;)
http://hardwarefun.com
19.
Why Socket.IO
Additional features on top of WebSockets
Node.js based server
Has support for maximum no: of browsers
Has clients in lot of languages
http://hardwarefun.com
20.
and ….
I had the server already written
http://hardwarefun.com
22.
In Android, create a socket
client = new SocketIOClient(URI.create(
”http://hardwarefun.com:3000"),new SocketIOClient.Handler() {
@Override
public void onConnect() {
Log.d(TAG, "Connected!");
}
@Override
public void on(String event, JSONArray arguments) {
Log.d(TAG, "Got event);
}
@Override
public void onDisconnect(int code, String reason) {
Log.d(TAG, "Disconnected!);
}
});
http://hardwarefun.com
23.
Send data through socket
client.connect();
JSONArray arguments = new JSONArray();
arguments.put("first argument");
JSONObject second = new JSONObject();
second.put("dictionary", true);
arguments.put(second)
client.emit("hello", arguments);
client.disconnect();
http://hardwarefun.com
24.
In node.js side
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on(’my other event', function (data) {
console.log(data);
});
});
http://hardwarefun.com
25.
Checkout the full source code
at
http://hardwarefun.com/projects/asimijs
http://hardwarefun.com
26.
So…
How the demo worked?
http://hardwarefun.com
27.
Node.js Server
Android Client
Admin page
Web Socket User page Asimi (Bot)
User page
ADK User page
http://hardwarefun.com
28.
Links
AsimiJS – The demo that I showed initially
http://hardwarefun.com/projects/asimijs
Android websockets - https://github.com/koush/android-
websockets
Getting started with hardware programming
http://hardwarefun.com/tutorials/getting-started-with-hardware-
programming
Getting started with Arduino
http://hardwarefun.com/tutorials/getting-started-with-arduino-
and-avr
Android and Arduino - http://sudarmuthu.com/blog/building-
robots-using-arduino-and-android-at-droidcon
Arduino Workshop - http://hardwarefun.com/arduino-workshop
http://hardwarefun.com
29.
Thank you
Sudar Muthu
http://hardwarefun.com
http://github.com/sudar