Hello, Arduino! Whats up,         Android? Extensões com Android Open Accessory        Thiago Figueredo Cardoso           ...
Extensões?
Android Open AccessoryHardware
Android Open AccessoryHardwareUSB Host: devices são USB client atéagora!
Android Open AccessorySoftware (Arduino)Implementação do Android Accessory protocol
Android Open AccessorySoftware (Android)Google API● com.hardware.usb: 3.1+● com.android.future.usb: 2.3.4+
Android Open AccessorySoftware (Android)Google API● com.hardware.usb: 3.1+● com.android.future.usb: 2.3.4+Fabricante decid...
Hands-on
ComponentesHardware:            Software:● Arduino Mega ADK   ● Google API● Google Device      ● Arduino libs:            ...
Passo 1: Faça o Arduino Falar                      void setup() {1. Estrutura mínima   }                      void loop() ...
Passo 1: Faça o Arduino Falar                         #include <Max3421e.h>1. Estrutura mínima      #include <Usb.h>2. Inc...
Passo 1: Faça o Arduino Falar                         #include <Max3421e.h>1. Estrutura mínima      #include <Usb.h>2. Inc...
Passo 1: Faça o Arduino Falar                           ...1.   Estrutura mínima2.   Incluir bibliotecas   AndroidAccessor...
Passo 1: Faça o Arduino Falar                           ...1.   Estrutura mínima2.   Incluir bibliotecas   void setup() {3...
Passo 2: Faça o Android Responder1. Intent filter   AndroidManifest.xml                   <activity                      a...
Passo 2: Faça o Android Responder                      AndroidManifest.xml1. Intent filter2. Especificação do      ...    ...
Passo 2: Faça o Android Responder                      accessory_filter.xml1. Intent filter2. Especificação do   <?xml ver...
Passo 3: Conexão                         HelloArduinoActivity.java1. Encontrar acessório                         public vo...
Passo 3: Conexão                         HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório       public vo...
Passo 3: Conexão                         HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório       private v...
Passo 3: Conexão                         HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório       public vo...
Passo 3: Conexão                         HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório       private v...
Passo 4: ComunicaçãoAndroid                      ArduinoFileInputStream              acc.write()FileOutputStream          ...
Demo
Dicas● É possível conectar a um acessório não  informado no AndroidManifest.xml  a. Enumerar acessórios  b. Pedir permissã...
Links úteis●   Android Open Accessory Development Kit●   USB Accessory●   Arduino●   Open Accessories for Android
Hello, Arduino! Whats up,         Android? Extensões com Android Open Accessory        Thiago Figueredo Cardoso           ...
Hello, Arduino! What's Up, Android? (Android Rec 2012)
Hello, Arduino! What's Up, Android? (Android Rec 2012)
Hello, Arduino! What's Up, Android? (Android Rec 2012)
Upcoming SlideShare
Loading in …5
×

Hello, Arduino! What's Up, Android? (Android Rec 2012)

932 views
856 views

Published on

Lightning Talk apresentado na Android Rec 2012 (28/04/2012) mostrando como integrar Android e Arduino com o Android Open Accessory.

Published in: Self Improvement
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
932
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Hello, Arduino! What's Up, Android? (Android Rec 2012)

  1. 1. Hello, Arduino! Whats up, Android? Extensões com Android Open Accessory Thiago Figueredo Cardoso tfcardoso [at] gmail [dot] com
  2. 2. Extensões?
  3. 3. Android Open AccessoryHardware
  4. 4. Android Open AccessoryHardwareUSB Host: devices são USB client atéagora!
  5. 5. Android Open AccessorySoftware (Arduino)Implementação do Android Accessory protocol
  6. 6. Android Open AccessorySoftware (Android)Google API● com.hardware.usb: 3.1+● com.android.future.usb: 2.3.4+
  7. 7. Android Open AccessorySoftware (Android)Google API● com.hardware.usb: 3.1+● com.android.future.usb: 2.3.4+Fabricante decide se suporta!
  8. 8. Hands-on
  9. 9. ComponentesHardware: Software:● Arduino Mega ADK ● Google API● Google Device ● Arduino libs: ○ Android Accessory ○ USB Host Shield
  10. 10. Passo 1: Faça o Arduino Falar void setup() {1. Estrutura mínima } void loop() { }
  11. 11. Passo 1: Faça o Arduino Falar #include <Max3421e.h>1. Estrutura mínima #include <Usb.h>2. Incluir bibliotecas #include <AndroidAccessory. h> void setup() { } void loop() { }
  12. 12. Passo 1: Faça o Arduino Falar #include <Max3421e.h>1. Estrutura mínima #include <Usb.h>2. Incluir bibliotecas #include <AndroidAccessory.h>3. Definir acessório AndroidAccessory acc( "Robolivre.org", "Hello", "Hello, Android!", "http://www.robolivre. org", "0000000000000001"); void setup() { ...
  13. 13. Passo 1: Faça o Arduino Falar ...1. Estrutura mínima2. Incluir bibliotecas AndroidAccessory acc(3. Definir acessório "Robolivre.org", "Hello",4. Inicializar "Hello, Android!", "http://www.robolivre. org", "0000000000000001"); void setup() { acc.powerOn(); } ...
  14. 14. Passo 1: Faça o Arduino Falar ...1. Estrutura mínima2. Incluir bibliotecas void setup() {3. Definir acessório acc.powerOn(); }4. Inicializar5. Esperar conexão void loop() { if (acc.isConnected()) { // Connected } else { // Not connected } }
  15. 15. Passo 2: Faça o Android Responder1. Intent filter AndroidManifest.xml <activity android:name= ". HelloArduinoActivity" ... <intent-filter> <action android:name="android. hardware.usb.action. USB_ACCESSORY_ATTACHED" /> </intent-filter> ...
  16. 16. Passo 2: Faça o Android Responder AndroidManifest.xml1. Intent filter2. Especificação do ... <intent-filter> filtro <action android:name= "android.hardware.usb. action.USB_ACCESSORY_ATTACHED" /> </intent-filter> <meta-data android:name="android.hardware.usb. action.USB_ACCESSORY_ATTACHED" android:resource=" @xml/accessory_filter" /> ...
  17. 17. Passo 2: Faça o Android Responder accessory_filter.xml1. Intent filter2. Especificação do <?xml version="1.0" encoding="UTF-8"> <resources> filtro <usb-accessory model="Hello" manufacturer="Robolivre.org" version="1.0" /> </resources> Mesmos dados utilizados no Arduino!
  18. 18. Passo 3: Conexão HelloArduinoActivity.java1. Encontrar acessório public void onResume() { ... Intent intent = getIntent(); UsbAccessory acc = intent. getParcelableExtra(UsbManager. EXTRA_ACCESSORY); ... }
  19. 19. Passo 3: Conexão HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório public void onResume() { ... UsbAccessory acc = intent. getParcelableExtra(UsbManager. EXTRA_ACCESSORY); if (acc != null) { openAccessory(acc); } ... } Se aplicação não iniciar devido ao filtro, não haverá acessório na intent!
  20. 20. Passo 3: Conexão HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório private void openAccessory(UsbAccessory acc) { UsbManager man = (UsbManager) getSystemService(Context.USB_SERVICE); ParcelFileDescriptor fd = man. openAccessory(acc); if (fd != null) { // Opened } }
  21. 21. Passo 3: Conexão HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório public void onPause() { ...3. Fechar acessório closeAccessory(); ... }
  22. 22. Passo 3: Conexão HelloArduinoActivity.java1. Encontrar acessório2. Abrir acessório private void closeAccessory() { try {3. Fechar acessório if (fd != null) { fd.close(); } ... } fd é o file descriptor aberto em openAccessory()
  23. 23. Passo 4: ComunicaçãoAndroid ArduinoFileInputStream acc.write()FileOutputStream acc.read()Streams do file descriptor
  24. 24. Demo
  25. 25. Dicas● É possível conectar a um acessório não informado no AndroidManifest.xml a. Enumerar acessórios b. Pedir permissão para acessar● Android é Java (Unicode), Arduino é C (ASCII)
  26. 26. Links úteis● Android Open Accessory Development Kit● USB Accessory● Arduino● Open Accessories for Android
  27. 27. Hello, Arduino! Whats up, Android? Extensões com Android Open Accessory Thiago Figueredo Cardoso tfcardoso [at] gmail [dot] com

×