hello, arduino! what's up, android? (android rec 2012)
DESCRIPTION
Lightning Talk apresentado na Android Rec 2012 (28/04/2012) mostrando como integrar Android e Arduino com o Android Open Accessory.TRANSCRIPT
![Page 1: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/1.jpg)
Hello, Arduino! What's up, Android?
Extensões com Android Open Accessory
Thiago Figueredo Cardosotfcardoso [at] gmail [dot] com
![Page 2: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/2.jpg)
Extensões?
![Page 3: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/3.jpg)
Android Open Accessory
Hardware
![Page 4: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/4.jpg)
Android Open Accessory
Hardware USB Host: devices são USB client até agora!
![Page 5: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/5.jpg)
Android Open Accessory
Software (Arduino) Implementação do Android Accessory protocol
![Page 6: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/6.jpg)
Android Open Accessory
Software (Android) Google API● com.hardware.usb: 3.1+● com.android.future.usb: 2.3.4+
![Page 7: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/7.jpg)
Android Open Accessory
Software (Android) Google API● com.hardware.usb: 3.1+● com.android.future.usb: 2.3.4+ Fabricante decide se suporta!
![Page 8: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/8.jpg)
Hands-on
![Page 9: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/9.jpg)
Software:● Google API● Arduino libs:
○ Android Accessory○ USB Host Shield
Componentes
Hardware:● Arduino Mega ADK● Google Device
![Page 10: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/10.jpg)
Passo 1: Faça o Arduino Falar
1. Estrutura mínima void setup() {} void loop() {}
![Page 11: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/11.jpg)
Passo 1: Faça o Arduino Falar
1. Estrutura mínima2. Incluir bibliotecas
#include <Max3421e.h>#include <Usb.h>#include <AndroidAccessory.h> void setup() {} void loop() {}
![Page 12: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/12.jpg)
Passo 1: Faça o Arduino Falar
1. Estrutura mínima2. Incluir bibliotecas3. Definir acessório
#include <Max3421e.h>#include <Usb.h>#include <AndroidAccessory.h> AndroidAccessory acc(
"Robolivre.org","Hello","Hello, Android!","http://www.robolivre.
org","0000000000000001");
void setup() {...
![Page 13: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/13.jpg)
Passo 1: Faça o Arduino Falar
1. Estrutura mínima2. Incluir bibliotecas3. Definir acessório4. Inicializar
... AndroidAccessory acc(
"Robolivre.org","Hello","Hello, Android!","http://www.robolivre.
org","0000000000000001");
void setup() {
acc.powerOn();} ...
![Page 14: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/14.jpg)
Passo 1: Faça o Arduino Falar
1. Estrutura mínima2. Incluir bibliotecas3. Definir acessório4. Inicializar5. Esperar conexão
... void setup() {
acc.powerOn();} void loop() {
if (acc.isConnected()) {// Connected
} else {// Not connected
}}
![Page 15: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/15.jpg)
![Page 16: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/16.jpg)
Passo 2: Faça o Android Responder
1. Intent filter AndroidManifest.xml
<activity
android:name=".HelloArduinoActivity"
...
<intent-filter> <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" /> </intent-filter>
...
![Page 17: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/17.jpg)
Passo 2: Faça o Android Responder
1. Intent filter2. Especificação do
filtro
AndroidManifest.xml
...
<intent-filter>
<action
android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
<meta-dataandroid:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"android:resource="@xml/accessory_filter"/>
...
![Page 18: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/18.jpg)
Passo 2: Faça o Android Responder
1. Intent filter2. Especificação do
filtro
accessory_filter.xml
<?xml version="1.0" encoding="UTF-8"><resources> <usb-accessory model="Hello" manufacturer="Robolivre.org" version="1.0" /></resources>
Mesmos dados utilizados no Arduino!
![Page 19: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/19.jpg)
![Page 20: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/20.jpg)
Passo 3: Conexão
1. Encontrar acessório HelloArduinoActivity.java
public void onResume() {
...
Intent intent = getIntent();
UsbAccessory acc = intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);...
}
![Page 21: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/21.jpg)
Passo 3: Conexão
1. Encontrar acessório2. Abrir acessório
HelloArduinoActivity.java
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!
![Page 22: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/22.jpg)
Passo 3: Conexão
1. Encontrar acessório2. Abrir acessório
HelloArduinoActivity.java
private void openAccessory(UsbAccessory acc) { UsbManager man = (UsbManager) getSystemService(Context.USB_SERVICE); ParcelFileDescriptor fd = man.openAccessory(acc); if (fd != null) { // Opened }}
![Page 23: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/23.jpg)
Passo 3: Conexão
1. Encontrar acessório2. Abrir acessório3. Fechar acessório
HelloArduinoActivity.java
public void onPause() {
...
closeAccessory();...
}
![Page 24: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/24.jpg)
Passo 3: Conexão
1. Encontrar acessório2. Abrir acessório3. Fechar acessório
HelloArduinoActivity.java
private void closeAccessory() { try { if (fd != null) { fd.close(); } ...}
fd é o file descriptor aberto em openAccessory()
![Page 25: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/25.jpg)
Passo 4: Comunicação
Android FileInputStreamFileOutputStream Streams do file descriptor
Arduino acc.write()acc.read()
![Page 26: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/26.jpg)
![Page 27: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/27.jpg)
Demo
![Page 28: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/28.jpg)
Dicas
● É possível conectar a um acessório não informado no AndroidManifest.xmla. Enumerar acessóriosb. Pedir permissão para acessar
● Android é Java (Unicode), Arduino é C (ASCII)
![Page 29: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/29.jpg)
Links úteis
● Android Open Accessory Development Kit● USB Accessory● Arduino● Open Accessories for Android
![Page 30: Hello, Arduino! What's Up, Android? (Android Rec 2012)](https://reader034.vdocuments.us/reader034/viewer/2022042713/5465dd3eb4af9fdf3f8b4d85/html5/thumbnails/30.jpg)
Hello, Arduino! What's up, Android?
Extensões com Android Open Accessory
Thiago Figueredo Cardosotfcardoso [at] gmail [dot] com