Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Using websockets and android to control robots in realtime

14,596 views

Published on

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

Published in: Technology

Using websockets and android to control robots in realtime

  1. 1. Using WebSockets and Android to control robots in real-time Sudar Muthu (@sudarmuthu) http://hardwarefun.com http://github.com/sudar
  2. 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. 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-droidconhttp://hardwarefun.com
  4. 4. So today… WebSockets in Android How to use it to control robotshttp://hardwarefun.com
  5. 5. Why hardware for a software hacker? Fun!http://hardwarefun.com
  6. 6. Let’s start with a demo Demo http://hardwarefun.com/projects/asimijshttp://hardwarefun.com
  7. 7. Participate in the demo  Visit http://hardwarefun.com:3000http://hardwarefun.com
  8. 8. Control the bot at stage http://hardwarefun.com/projects/asimijs #asimijs @hardwarefunhttp://hardwarefun.com
  9. 9. Now let’s see how I built ithttp://hardwarefun.com
  10. 10. What is WebSockets? Full-duplex over a single TCP connection Provides push support Designed to work inside browsers Works on port 80http://hardwarefun.com
  11. 11. WebSockets vs HTTPhttp://hardwarefun.com
  12. 12. http://hardwarefun.com
  13. 13. HTTP (Pull) Is there an update? No Is there an update? No Is there an update? Yeshttp://hardwarefun.com
  14. 14. WebSockets (Push) Tell me when you have an update Ok Here is the updatehttp://hardwarefun.com
  15. 15. Why use WebSockets in Android Firewall friendly No need to reinvent protocol Real-time communication Easy to setup serverhttp://hardwarefun.com
  16. 16. Remember, I am not talking about using WebSockets inside an Android browserhttp://hardwarefun.com
  17. 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-websocketshttp://hardwarefun.com
  18. 18. Why Socket.IO? You should have attended jsFoo ;)http://hardwarefun.com
  19. 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 languageshttp://hardwarefun.com
  20. 20. and …. I had the server already written http://hardwarefun.com
  21. 21. Let’s see some codehttp://hardwarefun.com
  22. 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. 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. 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. 25. Checkout the full source code at http://hardwarefun.com/projects/asimijshttp://hardwarefun.com
  26. 26. So… How the demo worked?http://hardwarefun.com
  27. 27. Node.js Server Android Client Admin page Web Socket User page Asimi (Bot) User page ADK User pagehttp://hardwarefun.com
  28. 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-workshophttp://hardwarefun.com
  29. 29. Thank you Sudar Muthuhttp://hardwarefun.comhttp://github.com/sudar

×