Page 1

Internet das Coisas Arduino + ADK + Android Ricardo da Silva Ogliari Instrutor Academia Android – Globalcode @mobilidadetudo rogliariping@gmail.com

Globalcode – Open4education


Agenda Introdução a Arduino Programando para Arduino Conhecendo o ADK Integrando o ADK com uma aplicação Android Sensores em Android Internet das Coisas

Globalcode – Open4education


Eu + de 160 publicações – Revistas – ITWeb – Globalcoders

Globalcode – Open4education


Introdução a arduino

Globalcode – Open4education


Introdução ao Arduino • Plataforma baseada em Atmel da AVR (ATMega168); • Oferece um IDE e bibliotecas de programação de alto nível; • Open-source hardware e software • Ampla comunidade • Programado em C/C++ • Transferência de firmware via USB MCU com bootloader Globalcode – Open4education


Histórico do Arduino Projeto criado na Itália pelo Mássimo Banzi no Interaction Design Institute Ivrea; Nasceu para complementar o aprendizado de programação, computação física e gráfica; Nasceu do Processing e Wiring; Processing é um ambiente e linguagem de programação para criar imagens, animação e interação;

Globalcode – Open4education


Simplicidade no circuito:

Globalcode – Open4education


Muitas aplicações práticas Robôs Roupas eletrônicas Máquinas de corte e modelagem 3D de baixo custo; Segway open-source Desenvolvimento de celulares customizados Instrumentos musicais Paredes interativas Instrumentação humana Circuit bending Globalcode – Open4education


Vários tipos, vários fabricantes... Mega Lilypad Nano Uno Pro Arduino BT Freeduino Severino Program-ME Globalcode – Open4education


Atmega168 / Atmega328: coração Características do ATmega 328: RISC 20 MIPS (20 Milhões de instruções por segundo) 32Kb Flash / 1Kb EEPROM / 2Kb RAM Estática 10.000 ciclos na Flash e 100.000 na EEPROM 2 contadores / temporizadores de 8bits 1 contador / temporizador de 16bits 1 temporizador de tempo real com clock a parte 14 portas digitais 6 portas analógicas Globalcode – Open4education


Características técnicas 6 canais PWM 6 conversores analógico/digital de 10 bits 1 serial programável (USART) 1 interface SPI (Serial Peripheral Interface) 1 interface serial a 2 fios (I2C) 1 watch dog timer programável 1 comparador analógico no chip Interrupção ou wake-up na alteração de estado dos pinos Globalcode – Open4education


Resumo das conexões da placa

Globalcode – Open4education


FT232RL Conversor USB-Serial

Conector USB

Regular 7805: Recebe até 12 volts e regula para 5 volts

Alimentação externa: Até 12 volts

Globalcode – Open4education


BotĂŁo de reset

ICSP Para gravar bootloader ou programas/firmware AtMega328 /168/8

Globalcode – Open4education


AREF Referência analógica Padrão 5 volts

GND Portas digitais 0 a 13 0 RX 1 TX = usada durante transferência de sketch e comunicação serial com placa 2,4,7,8,12,13 = portas digitais convêncionais 3,5,6,9,10,11 = portas PWM

Globalcode – Open4education


Shields: arquitetura modular inteligente Arduino estabeleceu um padrão de pinagem que é respeitado por diversas placas shield:

Globalcode – Open4education


Programando para arduino

Globalcode – Open4education


Programando para Arduino IDE pode ser baixada de www.arduino.cc A IDE foi desenvolvida com Java, portanto precisaremos de um máquina virtual 1.5 ou 1.6 instalada Funciona em Windows. Mac OS X e Linux (em alguns windows e mac pode ser necessário colocar driver) A transferência para a placa é feita via USB pelo IDE;

Globalcode – Open4education


Partes básicas do programa Arduino Temos que obrigatoriamente programar dois métodos: void setup() { } void loop() { } O setup é executado úma só vez assim que a placa for ligada e o loop executa infinitamente Globalcode – Open4education


Portas digitais e analógicas Na prática ligamos componentes em portas digitais e analógicas e através do código Arduino, manipulamos as portas: pinMode(<porta>, <modo>): configura uma porta digital para ser lida ou para enviarmos dados; digitalWrite(<porta>, 0 ou 1): envia 0 ou 1 para porta digital digitalRead(<porta>): retorna um 0 ou 1 lido da porta analogRead(<porta>): retorna de 0 a 1023 com o valor da porta analógica analogWrite(<porta>, <valor>): escreve em uma porta PWM um valor de 0 a 255 Globalcode – Open4education


Exemplo “pisca led” com Arduino Esta conexão é bem simples somente para efeito de teste para piscar o led. O correto é ligar um resistor usando uma protoboard.

Globalcode – Open4education


Exemplo “pisca led” void setup() { pinMode(13, OUTPUT); //porta 13 em output } void loop() { digitalWrite(13, HIGH); //HIGH = 1 = TRUE delay(500); digitalWrite(13, LOW); //LOW = 0 = FALSE delay(500); } Globalcode – Open4education


LDR no Arduino sem protoboard

Globalcode â&#x20AC;&#x201C; Open4education


Exemplo “luz ambiente” void setup() { //Inicializando conexão com PC via FT232 cabo Serial.begin(9600); } void loop() { int luz = analogRead(5); //LDR ligado na 5 //envia informações para o PC Serial.println(luz); delay(500); } Globalcode – Open4education


Conhecendo o adk

Globalcode â&#x20AC;&#x201C; Open4education


Accessory Development Kit É a implementação de referência para fabricantes e hobistas usarem como ponto de partida na construção de acessórios para a plataforma Android. Exemplos de acessórios: Docks de áudio. Máquinas de exercícios. Equipamentos pessoais para testes clínicos. Estações climáticas.  Ou qualquer hardware externo que adicione funcionalidade ao seu Android. Globalcode – Open4education


Accessory Development Kit • Comunicação é feita utilizando o protocolo AOA (Android Open Accessory) e pode ser feita por cabo USB ou por Bluetooth. • Página com guia e detalhes de cada versão da implementação:  http://developer.android.com/tools/adk/index.html

Globalcode – Open4education


Demo Board

Globalcode â&#x20AC;&#x201C; Open4education


ADK Shield

Globalcode â&#x20AC;&#x201C; Open4education


Integrando o ADK com uma aplicação Android Globalcode – Open4education


Declarar biblioteca • Dentro da tag application, declarar o uso da biblioteca de USB:

<uses-library android:name="com.android.future.usb.accessory” />

Globalcode – Open4education


Intent Filter • Também é preciso configurar a Activity que vai ser chamada quando o acessório for plugado no telefone. Para isso, declarar a action abaixo: <action android:name="android.hardware.usb.action. USB_ACCESSORY_ATTACHED" />

Globalcode – Open4education


Meta data • Declarar onde as informações sobre o acessório serão declaradas. Também deve ser colocado na tag da Activity: <meta-data android:name="android.hardware.usb.action. USB_ACCESSORY_ATTACHED” android:resource="@xml/accessory_filter" />

Globalcode – Open4education


accessory_filter.xml <?xml version="1.0" encoding="utf-8"?> <resources> <usb-accessory manufacturer="Globalcode" model="DroidShootherADK" version="1.0" /> </resources>

Globalcode â&#x20AC;&#x201C; Open4education


Código ADK AndroidAccessory acc("Globalcode", "DroidShootherADK", "DroidShooter ADK", "1.0", "http://www.globalcode.com.br", "0000000012345678");

Globalcode – Open4education


Android e Sensores

Globalcode â&#x20AC;&#x201C; Open4education


Android e Sensores Funcionamento básico igual para qualquer sensor; Interface SensorEventListener – Definição dos métodos: • OnAccuracyChanged • OnSensorChanged Criar o Listener e definir qual sensor eu vou ouvir

Globalcode – Open4education


Android e Sensores class MyActivity extends Activity implements SensorEventListener{ protected void onCreate(Bundle savedInstanceState) { ... SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

}

sm.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_NORMAL);

public void onAccuracyChanged(Sensor s, int accuracy) {} }

public void onSensorChanged(SensorEvent event) {} Globalcode â&#x20AC;&#x201C; Open4education


Internet das Coisas

Globalcode â&#x20AC;&#x201C; Open4education


IoT Até 2020 serão 50 bilhões de objetos conectados

Globalcode – Open4education


IoT N Pessoas para 1 Computador = Mainframes

Globalcode â&#x20AC;&#x201C; Open4education


IoT 1 Pessoa para 1 Computador = PC´s

Globalcode – Open4education


IoT 1 Pessoa para N Computadores 2 BilhĂľes de pessoas conectadas

Globalcode â&#x20AC;&#x201C; Open4education


IoT Geladeiras Lava-louças

Globalcode – Open4education


IoT

Globalcode â&#x20AC;&#x201C; Open4education


IoT

VÍDEO DEMONSTRAÇÃO

Globalcode – Open4education


IoT

MÃO NA MASSA

Globalcode – Open4education


Things API Evolução do jHome Automation, projeto premiado Oracle Innovation Awards 1º API para IoT Abstração para hardware, meios de comunicação e protocolos! Concebida em Java com interfaces para outras linguagens

Globalcode – Open4education

Inter das Coisas + Arduino + ADK + Android  

Saiba como a união destes três tópicos super interessantes (Arduino, ADK e Android) ajuda na expansão da Internet das Coisas. Palestra apres...