Control desde su telefono usando Mit App Inventor


Marcelo Ávila de Oliveira es un ingeniero electrónico que desarrolla software para teléfonos móviles en Brasil . Recientemente Marcelo decidió usar una placa Arduino  con un modulo bluetooth  y el fantastico software en la nube del MIT  , Mit App Inventor, para automatizar un muñeco articulado de vinilo Android.

Este « DroidBot » Android Robot es impulsado por los componentes de Arduino y se controla a través de Bluetooth con una aplicación de teléfono móvil desarrollado con App Inventor . Haga clic en el botón Reproducir para ver un bonito video de la DroidBot responder a los comandos del teléfono, con la música «Yo puedo leer tu mente . »

Tuvo un montón de diversión y el resultado final era genial, pero le molestaba   el mando a distancia . Era difícil recordar las funciones de todas las teclas del mando a distancia , y siempre tenía que apuntar el control remoto directamente hacia el robot y el problema más importante : era imposible recibir información / datos del robot. Entonces  decidió » retirarse » del mando a distancia y empezó con el uso de una aplicación para Android que se ejecuta en un teléfono inteligente para controlar el robot.

En 2011  ya había utilizado el Google App Inventor para crear una aplicación de Android ( «El discurso sin fin» , un generador de voz aleatoria automática, disponible en Google Play) así que decidió que era una gran oportunidad para comprobar el «nuevo» Inventor MIT App . Iinicialmente pensó que  App Inventor no sería capaz de controlar el robot , pero cuando registró las funciones de Bluetooth   estaba muy sorprendido pues era capaz de enviar correctamente los datos de Bluetooth desde el robot al teléfono y viceversa con bastante facilidad.

Como podemos  intuir ,la base de este proyecto es  una placa Arduino con un modulo bluetooth  y una app realizada con el Mit App Inventor, como por ejemplo el siguiente  proyecto:

Instalación eléctrica 

Imagen de la Instalación eléctrica y parte lista
A continuación se muestra un código de Arduino que se ha usado. Siéntase libre para modificarlo.

El aspecto importante aquí es la velocidad de transmisión – asegurarse de que coincida con la velocidad de transmisión del módulo – comprobar la hoja de datos o utilizar los comandos AT para hacerlo.

const int ledPin = 2;      // the pin that the LED is attached to
byte serialA;
void setup()
{
// initialize the serial communication:
Serial.begin(19200); //baud rate – make sure it matches that of the module you got:
// initialize the ledPin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {

if (Serial.available() > 0) {serialA = Serial.read();Serial.println(serialA);}

switch (serialA) {
case 1:
digitalWrite(ledPin, HIGH);
break;
case 2:
digitalWrite(ledPin, LOW);
break;
case 3:digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
default:

break;
}

}

 

La aplicación en sí y el MIT App inventor

Foto de La aplicación en sí y App inventor
Si lo que quiere es conseguir la aplicación y verlo correr a continuación, descargue la aplicación y luego súbalo a su teléfono.
Descarga en -> https://drive.google.com/folderview?id=0B_PfPoEotOF8N2JwT3RSX011SjQ&usp=sharing

El teléfono tiene que estar configurado para permitir aplicaciones de fuera del Android Market / google play para poder descargarlos – a fin de comprobar los ajustes en tu móvil.

Ahora bien, si desea modificar la aplicación ir a  http://appinventor.mit.edu/explore/learn.html   para averiguar cómo preparar el equipo e instalar el software de la aplicación Inventor. Una vez que haya que correr le sugiero que siga  por lo menos uno o dos de sus tutoriales básicos.

BTserialModule.JPG
El circuito es tan simple como parece, así que probablemente ya tiene la mayoría de ellos.

Usted necesitará:

  1. – Placa Arduino
  2. – Módulo Bluetooth de serie (he usado un módulo btm222 en un tablero del desbloqueo con un regulador incorporado)
  3. – Un LED
  4. – Resistencia (100 ohmios)
  5. – cables
  6. – Breadboard

La única parte problemática aquí es el módulo bluetooth. Existen diferentes módulos en todo el Internet, así que asegúrese de comprobar el pinout en la hoja informativa de la que se obtiene, ya que puede variar.

Observe también que hay dos clases generales de los módulos de bluetooth:

  • Clase 1 tiene un rango de alrededor de 100 metros (300 pies)
  • Clase 2 tiene un rango de alrededor de 10 metros (30 pies)

En caso de que usted se está preguntando que son totalmente compatibles y sólo se puede llegar gama 100 metros si ambos dispositivos (es decir, el móvil y el módulo de serie) son de clase uno. Si uno de ellos es de clase 1 el rango máximo es menor.

El módulo serial del bluetooth conseguí tiene los siguientes pines de izquierda a derecha (tierra, RX, TX, no conectado, VCC). Obviamente tierra y VCC pasa respectivamente a tierra y 5 V pin de la placa Arduino. Desde estaremos reciviendo ​​los datos a través del módulo y luego a su vez de enviarlo a la placa Arduino sólo tenemos que usar el pin TX del módulo. Tienda un cable desde ese pin al pin RX de la placa Arduino. El LED es controlado a través de PIN 2 en el Arduino.

 

 

AMPLIACION DE ALCANCE:SENSOR DE TEMPERATURA

Este paso se presenta un ejemplo sobre la forma de recibir los datos de la placa Arduino por mesio  un sensor de temperatura DS18B20.La placa Arduino se comunica con el sensor con un interfaz de 1 hilo  calcula la temperatura con la ayuda de la biblioteca OneWire para Arduino y envía las lecturas a través del módulo Bluetooth cada 500 ms.
La aplicación comprueba cada 500 ms si hay datos disponibles del puerto serie. Si los datos están presentes se lee y se visualiza en la pantalla. Además, hay una opción para activar la función de texto a voz y hacer que la aplicación dicen las lecturas de temperatura cada 15 segundos.
El código arduino 
Ten en cuenta que necesitas una biblioteca OneWire – usted puede encontrar un enlace a ella aquí: http://playground.arduino.cc/Learning/OneWire

arduino code >>>>>>>

#include
int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2

void setup()
{
// initialize the serial communication:
Serial.begin(19200);
// initialize the ledPin as an output:

}

void loop() {

float temperature = getTemp();
Serial.println(temperature); delay (500);

}

float getTemp(){
//returns the temperature from one DS18S20 in DEG Celsius

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {
//no more sensors on chain, reset search
ds.reset_search();
return -100;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {
Serial.println(«CRC is not valid!»);
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {
Serial.print(«Device is not recognized»);
return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1); // start conversion, with parasite power on at the end

byte present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad

for (int i = 0; i < 9; i++) {
data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB);
float TemperatureSum = tempRead / 16;

return TemperatureSum;}

 

 Recepción de datos – el lado de la aplicación

Aquí usted puede encontrar enlaces a la aplicación que recibe la lectura de la temperatura. También hay un código fuente que se pueden cargar en el MIT App inventor (cuando estás en ‘mis proyectos’ haga clic en el botón «Más acciones» – que tiene una opción «Upload Source ‘)

La aplicación >> http://speedy.sh/RMFgg/bluetoothforarduino-app-temperaturereadings.apk

El archivo de origen >> http://speedy.sh/SHpjj/bluetoothforarduino-app-temperaturereadings-3.zip

Algunos consejos que pueden resultar útiles si usted está tratando de crear su propia aplicación: Asegúrese de que entiende ‘byte delimitador’ los términos, saber cómo configurarlo de aplicación del MIT inventor y que es un byte tan cuidado qué tipo usted utiliza los datos. También parece que no hay ninguna función de tiempo de espera de serie aplicado en la app inventor lo que el envío de datos con más frecuencia que lo recibe puede causar que la aplicación se bloquee (probablemente porque no hay nada para vaciar el búfer)

Fuente aqui

9 respuestas a “Control desde su telefono usando Mit App Inventor

  1. Santi diciembre 15, 2016 / 1:05 am

    Hola.
    Muchísimas gracias por este magnífico Tutorial.
    Se podrían unir varios sckets (temperatura y bluetooth led)?
    Un saludo.
    Santi.

    Me gusta

      • Santi diciembre 15, 2016 / 7:49 pm

        Gracias por contestar.
        Pero…… Como???
        Un saludo.
        Santi.

        Me gusta

      • soloelectronicos diciembre 15, 2016 / 7:53 pm

        Estoy usaaria Cayyene y es una pasada lo sencillo que es controlar cualquier cosa con la app desde cualquier parte y eso sin escribir ni una sola linea de codigo ..

        Me gusta

      • Santi diciembre 15, 2016 / 8:35 pm

        Gracias. Pero lo que me interesa es el código.

        Me gusta

      • soloelectronicos diciembre 17, 2016 / 1:04 am

        Con Cayenne no hay código : solo hay un panel en el que se configura todo el hw que conectemosy sobre el que se definen los eventos que queremos que disparen acciones.Lo mejor es que no solo desde el navegador: también desde la app se puede controlar….

        Me gusta

      • Santi diciembre 21, 2016 / 12:11 pm

        Hola cayenne es solo para ethernet shield. Mi pregunta es para un modulo bluetooth.

        Me gusta

      • soloelectronicos diciembre 21, 2016 / 12:14 pm

        Pues me temo le va a tocar programar la app con el SDK de Google como por ejemplo con el Android Studio.Desde luego no tiene nada que ver con el App Inventor..

        Me gusta

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.