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 Lâmpada 127V com bocal e tomada
- Aplicativo Android:
- Lista de Softwares:
Eclipse + Ferramentas Para Desenvolvimento Android
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...
Comentar
E se ao invés de usar o miniPC, eu usasse o raspberry Pi? Muda muita coisa?
Galera, alguem já testou rodar o ubunto nesse mini-pc e fazer o php ler/escrever direto via serial no arduino?
Verifiquei que foi ligado o negativo ao VCC e o positivo ao GND, não é ao contrario?
Vou testar, qualquer novidade aviso aqui =)
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.
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?
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.
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.
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.
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)