Tutorial: Controlando Arduino com o Android Mini PC

Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial mostraremos como utilizar um aplicativo para fazer com que seu Android Mini PC envie comandos para o Arduino via serial.

Faremos como demonstração de aplicação, um acionamento de lâmpada com um Arduino UNO + Módulo Relé feito pela serial do Android Mini PC, a partir do aplicativo.

 

CUIDADO: Evite manusear o Módulo Rele enquanto o mesmo estiver conectado à rede elétrica e remova qualquer tipo de objeto condutivo ou inflamável de perto. Você pode causar um acidente.

 

- Lista de Materiais:

1x Android Mini PC   

1x Arduino Uno   

1x Módulo Relé   

1x Lâmpada 127V com bocal e tomada   

1x Protoboard   

Alguns Jumpers

 

- Aplicativo Android:

lablampada.apk

 

- Lista de Softwares:

Projeto do Aplicativo

Eclipse + Ferramentas Para Desenvolvimento Android

Java JDK

 

OBS:   

 - Após o Download do Java JDK, siga as Instruções desse Vídeo de como configurar o seu PC para rodar o java. Esse vídeo é um entre 116 Aulas sobre Java, fornecido pelo Ricardo Lopes Costa da Universidade XTI.

- SDK: Dentro da pasta descompactada do SDK, execute o SDK Manager para atualizar as ferramentas de desenvolvimento.

1. O Aplicativo

 

O aplicativo foi desenvolvido usando o Eclipse ADT, que é um Eclipse com o plugin Android Development Tools (Ferramentas de Desenvolvimento Android).

 

Abaixo, esta o código do aplicativo onde oferecemos uma breve explicação do funcionamento do App, que foi feito em linguagem java, lembrando que esse não é todo o projeto:

/*Aplicativo criado pelo LDG
para controlar seu Arduino via
Android Mini PC*/


package com.example.lablampada;

///+++Bibliotecas+++
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.Menu;
import android.widget.Toast;
import android.widget.ToggleButton;
import jp.ksksue.driver.serial.FTDriver;
///=================

public class MainActivity extends Activity
{

///+++PERMISSÃO PARA ACESSAR SERIAL+++
FTDriver mSerial;
private static final String ACTION_USB_PERMISSION = "jp.ksksue.tutorial.USB_PERMISSION";
///===================================

///+++CRIADO AUTOMATICAMENTE PELO ADT+++
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
///=====================================

///+++INICIANDO SERIAL+++
mSerial = new FTDriver((UsbManager) getSystemService(Context.USB_SERVICE));
PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
mSerial.setPermissionIntent(permissionIntent);
while (!mSerial.begin(FTDriver.BAUD9600)) //Fica em loop de conexão até o Arduino ser conectado
{
}
Toast.makeText(this, "Conectado", Toast.LENGTH_SHORT).show(); //Exibe mensagem "Conectado" quando reconhecer o Arduino
///=======================

///+++BOTÃO LIGADO/DESLIGADO+++
final ToggleButton bToggle = (ToggleButton) findViewById(R.id.toggleButton1); //Cria uma varíavel para controle do botão
bToggle.setOnClickListener(new View.OnClickListener() //Monitora o botão Ligado/Desligado
{
public void onClick(View v)
{
boolean botao; //Cria uma variável boleana
botao = bToggle.isChecked(); //Quando o botão for clicado guarda o estado dele na variável botao
if(botao == true) //Se o botão estiver no estado "Ligado"
{
Toast.makeText(MainActivity.this, "Lâmpada Acesa", Toast.LENGTH_SHORT).show(); //Exibe mensagem "Lâmpada Acesa"
String wbuf = "l"; //Armazena "l" (Liga) na variável wbuf de escrita
mSerial.write(wbuf.getBytes()); //Envia o valor de wbuf para a serial
}
else //Se o botão estiver no estado "Desligado"
{
Toast.makeText(MainActivity.this, "Lâmpada Apagada", Toast.LENGTH_SHORT).show(); //Exibe mensagem "Lâmpada Apagada"
String wbuf = "d"; //Armazena "d" (Desliga) na variável wbuf de escrita
mSerial.write(wbuf.getBytes()); //Envia o valor de wbuf para a serial
}
}
});
}
///============================

///+++CRIADO AUTOMATICAMENTE PELO ADT+++
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
///======================================

///+++ ENCERRA SERIAL QUANDO O APP EH FECHADO+++
@Override
public void onDestroy()
{
String wbuf = "d"; //Armazena "d" (Desliga) na variável wbuf de escrita
mSerial.write(wbuf.getBytes()); //Envia o valor de wbuf para a serial
mSerial.end(); //Encerra serial
super.onDestroy();
}
///=============================================

}

Se você possuir um breve conhecimento em Java, poderá modificar o programa como quiser, alterando-o no projeto fornecido no início desse tutorial.

2. O Sketch do Arduino

 

/* Sketch para programar o arduino e

ler a serial, onde os comandos são enviados

pelo aplicativo android lablampada.apk

*/

 

char leitura;      // Cria um variável char "leitura"

#define rele 8     // Define o valor 8 à variável rele

 

void setup()

{

  Serial.begin(9600);     //Inicializa comunicação Serial

  pinMode(rele, OUTPUT);   //Seta o pino pelo valor no "#define rele" como saída

  digitalWrite(rele, LOW);   //Mantém rele desligado assim que iniciar o programa

}

void loop()

{

  while (Serial.available() > 0) //Verifica se há conexão com a serial

  {

    leitura = Serial.read(); //Lê o dado vindo da Serial e armazena na variável leitura

    if (leitura == 'l')  //Se a variável leitura for igual a 'l'(Botão "Ligado" no App)

     {

      digitalWrite(rele, HIGH);

     }

    else if (leitura == 'd') //Senão verifica se é igual a 'd' (Botão "Desligado" no App)

   {

      digitalWrite(rele, LOW);

   }

  }

}

3. A Montagem

3.1) Corte um dos fios da tomada e uma das pontas conecte aos pinos C (comum) e a outra no pino NA (Normal Aberto) do módulo Relé, conforme a imagem abaixo.

3.2)  Conecte com jumpers o Pino Vcc(+) e GND(-) do Arduino aos barramentos da Protoboard.

3.3)  Conecte o Pino 8 do Arduino na Protoboard entre Vcc e GND conectados aos barramentos, conforme a figura abaixo.

3.4) Conecte o Módulo Relé à Protoboard e ligue os pinos Vcc e GND, conecte o pino IN do módulo relé ao pino 8 do arduino, conforme a figura abaixo:

 

3.5) Faça as conexões no seu Android Mini PC, conectando também o cabo USB do arduino no USB Host do Android Mini PC.

3.6) Confira as suas conexões

Agora você pode executar seu aplicativo para acender e apagar sua lâmpada ou acionar qualquer dispositivo pelo Android Mini PC, com esse tutorial você pode começar a desenvolver aplicativo para controlar seu Android Mini PC pela serial.

Referências:

- http://labdegaragem.com/profiles/blogs/tutorial-controlando-rele-vi...

- http://github.com/ksksue/FTDriver

http://devmobilebrasil.com.br/android/trabalhando-com-mais-de-uma-t...

- http://ptandroid.com/forum/threads/tutorial-de-desenvolvimento-de-a...

Exibições: 20452

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Andre Luis Carvalho em 24 outubro 2013 às 17:51

E se ao invés de usar o miniPC, eu usasse o raspberry Pi? Muda muita coisa?

Comentário de Tiago Struck em 29 setembro 2013 às 13:08

Galera, alguem já testou rodar o ubunto nesse mini-pc e fazer o php ler/escrever direto via serial no arduino?

Comentário de Fábio Azevedo Prudêncio em 11 setembro 2013 às 14:46

Verifiquei que foi ligado o negativo ao VCC e o positivo ao GND, não é ao contrario?

Comentário de Luis Henrique em 21 agosto 2013 às 13:02

Vou testar, qualquer novidade aviso aqui =)

Comentário de Laboratório de Garagem em 21 agosto 2013 às 11:35

Olá Luis Henrique,

É provável que funcione, pois a partir da versão 3.2 você pode utilizar ele como dispositivo host USB, então há grande chance de funcionar.

Comentário de Luis Henrique em 21 agosto 2013 às 0:21

Isso funciona com qualquer dispositivo android ou apenas com o mini pc?

Se eu tentar fazer com um smartphone com android 4.1, tem chance de funcionar?

Comentário de Claudio de Medeiros Chaves Souza em 3 junho 2013 às 22:23

Olá, Estou pensando em usar o Android mini(concentrador) para um projeto de automação com arduinos utilizando o Garabee como meio de comunicação entre eles. Seria possível utilizando a lib FTDriver? Existe uma lib específica para o Garabee?

Obrigado.

Comentário de Felipe Brito em 21 abril 2013 às 18:10

Olá,

infelizmente o meu arduino não é reconhecido no meu mini pc.

A versão que tenho é o MK802 com firmware 4.0.4.

Pode me ajudar ? Obrigado e parabéns pelo tutorial.

Comentário de Laboratório de Garagem em 25 março 2013 às 16:43

Olá Marco,

É posssível sim, enviar comandos partindo Arduino para o Android, se você ler a Lib FTDriver verá que tem exemplos de leitura e escrita.

Comentário de marco em 22 março 2013 às 10:47

Obrigado pela informação.

Então estou pensando em uma aplicação que envia e recebe dados do Arduino. Sua aplicação exemplo apenas envia dados. Poderia dar um exemplo de uma aplicação que efetua o envio e leitura. Por exemplo, envio um determinado caractere pelo android e o Sketch no arduino reenvia o mesmo caractere que é lido pelo android

Gostaria de ficar seguro quanto a essa funcionalidade pois como o investimento no MiniPC é alto, gostaria de ter certeza do funcionamento.

Saudações

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço