Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cómo crear una aplicación de Android personalizada para su proyecto Arduino utilizando MIT App Inventor

En este tutorial de Arduino, aprenderemos cómo crear aplicaciones de Android personalizadas para controlar Arduino utilizando la aplicación en línea MIT App Inventor. Puede ver el siguiente video o leer el tutorial escrito a continuación.

Resumen

Para este tutorial tenemos dos ejemplos. El primer ejemplo es controlar un LED simple y el segundo es controlar un motor paso a paso usando un teléfono inteligente. En mi tutorial anterior ya aprendimos cómo hacer la comunicación Bluetooth entre la placa Arduino y el teléfono inteligente usando el módulo Bluetooth HC-05 y explicamos el código Arduino necesario para el primer ejemplo.

Código Arduino

Aquí hay una descripción general rápida de ese código. Entonces, a través del puerto serie, recibimos los datos entrantes del teléfono inteligente y los almacenamos en la variable 'estado'. Si recibimos el carácter '0' que se envía desde el teléfono inteligente cuando se presiona el botón 'LED:APAGADO', apagaremos el LED y enviaremos de regreso al teléfono inteligente la Cadena "LED:APAGADO". Por otro lado, si recibimos el carácter '1' encenderemos el LED y devolveremos el String "LED:ON".

/* Arduino and HC-05 Bluetooth Module Tutorial
 * 
 * by Dejan Nedelkovski, www.HowToMechatronics.com
 * 
 */
 
#define ledPin 7
int state = 0;

void setup() {
 pinMode(ledPin, OUTPUT);
 digitalWrite(ledPin, LOW);
 Serial.begin(38400); // Default communication rate of the Bluetooth module
}

void loop() {
 if(Serial.available() > 0){ // Checks whether data is comming from the serial port
 state = Serial.read(); // Reads the data from the serial port
 }

 if (state == '0') {
 digitalWrite(ledPin, LOW); // Turn LED OFF
 Serial.println("LED: OFF"); // Send back, to the phone, the String "LED: ON"
 state = 0;
 }
 else if (state == '1') {
 digitalWrite(ledPin, HIGH);
 Serial.println("LED: ON");;
 state = 0;
 } 
}Code language: Arduino (arduino)

Así que ahora necesitamos construir nuestra aplicación de Android personalizada que enviará esos caracteres '0' y '1' cuando se presione un botón en particular, así como también recibirá las cadenas entrantes del Arduino.

Inventor de aplicaciones MIT

Desde el sitio web de MIT App Inventor, debemos iniciar sesión en la aplicación de construcción en línea haciendo clic en "¡Crear aplicaciones!" botón. Para iniciar sesión necesitamos tener una cuenta de Gmail. Una vez que hayamos iniciado sesión ahora podemos crear nuestro primer proyecto. Así es como se ve la ventana de diseño y ahora podemos comenzar a construir nuestra aplicación.

Pero antes, podemos conectar nuestro smartphone a este proyecto para que podamos ver cómo va tomando forma la aplicación directamente en nuestro smartphone en tiempo real. Para hacerlo, primero debemos descargar la aplicación MIT AI2 Companion de Play Store e instalarla en nuestro teléfono inteligente. Luego, desde el menú Conectar del editor en línea, seleccionaremos AI Companion y aparecerá un código de barras que solo necesitamos escanear o insertar el código en la aplicación del teléfono inteligente y se establecerá la conexión entre el editor en línea y la aplicación del teléfono inteligente.

Ahora, por ejemplo, si insertamos un botón en la pantalla del editor en línea, el botón también aparecerá en tiempo real en el teléfono inteligente. Similar a esto, si no desea usar su teléfono inteligente mientras crea la aplicación, puede instalar el emulador de Android en su computadora y usarlo de la misma manera. Puede encontrar más detalles sobre cómo configurar el emulador en su sitio web.

Creación de la aplicación:ejemplo 1

Ahora estamos listos para construir el primer ejemplo. Comenzaremos con el diseño del programa. Primero agregaremos algunos arreglos horizontales de la paleta de diseño y estableceremos sus propiedades como la altura, el ancho y la alineación para que coincidan con el aspecto deseado de nuestro programa. Luego, desde la Paleta de interfaz de usuario, agregaremos un ListPicker y le adjuntaremos una imagen. El ListPicker se utilizará para seleccionar el dispositivo Bluetooth al que se conectará nuestro teléfono inteligente.

A continuación añadiremos otros Arreglos Horizontales en los que colocaremos una Etiqueta. Esta etiqueta indicará si el smartphone está conectado o no al módulo Bluetooth y por eso pondremos el texto inicial de esta etiqueta en “No conectado”. La siguiente etiqueta se utilizará para mostrar el estado del LED, ya sea que esté apagado o encendido. El estado inicial será “LED:APAGADO”. A continuación, agregaremos los dos botones, 'Encender' y 'Apagar' para controlar el LED. En este punto, es bueno cambiar el nombre de los componentes para que podamos reconocerlos más fácilmente y usarlos en el editor de bloques más adelante. Lo que queda ahora es agregar BluetoothClient, que es un componente no visible, así como un reloj que se utilizará para la indicación en tiempo real del estado de la conexión.

Editor de Bloques

Ahora en el editor de Bloques estamos listos para darle vida a nuestro programa. Del lado izquierdo obtuvimos todos los bloques y funciones relacionadas con los componentes agregados anteriormente.

Comenzaremos con BluetoothList ListPicker. A partir de ahí, primero agregaremos el bloque 'BeforePicking' y le adjuntaremos el bloque 'set Bluetooth Elements'. Luego, desde los bloques de BluetoothClient agregaremos el bloque 'BluetoothClient AddressesAndNames'. Lo que hará este conjunto de bloques es configurar una lista de dispositivos Bluetooth que ya están emparejados con nuestro teléfono, de modo que cuando hagamos clic en el botón "Conectar" de ListPicker, aparecerá la lista de todos los dispositivos emparejados.

A continuación, tenemos que configurar lo que sucederá después de que elijamos o seleccionemos nuestro módulo Bluetooth en particular. Desde el bloque BluetoothClient añadiremos el bloque ‘llamar a BluetoothClient .Connect address’ y le añadiremos el bloque ‘BluetoothList Selection’, lo que significa que nuestro teléfono se conectará a la dirección Bluetooth que hayamos seleccionado previamente.

A continuación de los bloques Reloj, agregaremos el bloque ".Temporizador". Dentro de este bloque haremos la indicación en tiempo real de si el teléfono está conectado o no al módulo Bluetooth usando el bloque “set Text” de la etiqueta denominada “Connected”.

A continuación, debemos dar vida a los dos botones. Entonces, cuando se haga clic en "TurnOn_Button", usaremos la función de cliente Bluetooth "Send1ByteNumber" para enviar un número al módulo Arduino Bluetooth. En nuestro caso ese es el número 49 que corresponde al carácter '1' según la tabla ASCII y que encenderá el LED. Inmediatamente después de eso, usaremos la función BluetoothClient "ReceiveText" para recibir la cadena entrante que se envía desde el Arduino al teléfono. Esta cadena se establece en la etiqueta "LED_Status".

El mismo procedimiento se aplica al "TurnOff_Button", donde el número de envío debe cambiarse a 48, que corresponde al carácter '0'. Lo que queda ahora es descargar e instalar el programa en nuestro smartphone. Podemos hacerlo desde el menú "Crear" guardándolo en nuestra computadora y luego transfiriéndolo a nuestro teléfono o escaneando un código QR para descargar el programa en línea. Aquí está la demostración del ejemplo.

Aquí hay un archivo de descarga del proyecto MIT App Inventor anterior:

Prueba de Bluetooth.aia

1 archivo(s) 5.16 KB Descargar

Ejemplo de control de motor paso a paso


Ahora echemos un vistazo al segundo ejemplo, controlando un motor paso a paso. En la parte superior de la pantalla tenemos los mismos componentes para la conexión Bluetooth que el ejemplo anterior. A continuación tenemos un componente Canvas que se usa para dibujar e insertar imágenes. Inserté dos imágenes transparentes que dibujé previamente. El primero es una imagen de un indicador que se fijará en su lugar y el segundo es una imagen de un puntero que girará. A continuación, tenemos un botón de verificación para cambiar entre manual y automático o el modo de ejecución continua y un botón para cambiar la dirección de rotación. En el botón tenemos un control deslizante para cambiar la velocidad de rotación del motor paso a paso.

Aquí están los bloques y el código Arduino detrás de este ejemplo. Entonces, en el editor de bloques nuevamente tenemos los mismos bloques para la conexión Bluetooth que en el ejemplo anterior.

Ahora, para rotar la imagen del puntero, usamos la función ImageSprite ".PointInDirection", que rota la imagen desde la posición 0° a las coordenadas X e Y donde se ha tocado el lienzo. Al mismo tiempo, configuramos el encabezado ImageSprite rotado en la etiqueta de texto de arriba. Después de eso, llamamos a un procedimiento o función personalizada que en realidad es un retraso de 10 m segundos.

Por último, enviamos el valor del encabezado como un texto al Arduino utilizando la función Bluetooth "SendText". Arduino aceptará este valor y hará girar el motor paso a paso en consecuencia.

El siguiente es el bloque CheckBox. Entonces, si la casilla de verificación está marcada, enviaremos el texto "Auto" al Arduino, que activará el motor paso a paso para que gire continuamente. Mientras estamos en este modo, si presionamos el botón "Reverse", enviaremos el texto "Reverse" al Arduino, que cambiará la dirección de rotación del motor. Además, mientras estemos en este modo, podremos cambiar la velocidad de giro. Si cambiamos la posición del control deslizante, el valor actual de la posición del control deslizante se enviará al Arduino, que cambiará la velocidad de rotación del paso a paso. Si desmarcamos el CheckBox volveremos al modo manual. Aquí está la demostración del ejemplo.

Aquí hay un archivo de descarga del proyecto MIT App Inventor anterior, así como las dos imágenes utilizadas en el proyecto:

Prueba de motor paso a paso.aia

1 archivo(s) 60.96 KB Descargar

Imágenes de indicador y puntero de motor paso a paso

1 archivo(s) 27.34 KB Descargar

Aquí está el código Arduino del segundo ejemplo:

/*  Stepper Motor Control via HC-05 Bluetooth Module
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */

// Defining variables
const int stepPin = 7; 
const int dirPin = 6;
String state = ""; 
int currentHeading=0;
int currentAngle=0;
int lastAngle=0;
int angle=0;
int rotate=0;
int runContinuously=0;
String mode = "Manual";
boolean dirRotation = HIGH;
int rotSpeed = 1500;
 
void setup() {
  // Sets the two pins as Outputs
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
  Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
  delayMicroseconds(1);
  if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.readString(); // Reads the data from the serial port
 }
 // When Auto Button is pressed
 if (mode == "Auto") {
  if (state == "Reverse") {
    delay(10);
    if (dirRotation == HIGH) {
      dirRotation = LOW;
    }
    else {
      dirRotation = HIGH;
    }  
    digitalWrite(dirPin,dirRotation);
    delay(10);
    state = "";
  }
  rotSpeed = state.toInt();
  if (rotSpeed >= 300 && rotSpeed <= 3000) {
  digitalWrite(stepPin,HIGH); 
  delayMicroseconds(rotSpeed); 
  digitalWrite(stepPin,LOW); 
  delayMicroseconds(rotSpeed);
  }
  else {
  digitalWrite(stepPin,HIGH); 
  delayMicroseconds(1500); 
  digitalWrite(stepPin,LOW); 
  delayMicroseconds(1500);
  }
  
  if (state == "Manual"){
    mode = state;
  }
 }
 // When Program is in Manual mode
 else if (mode == "Manual"){ 
 currentHeading = state.toInt();
 //Serial.println(angle);
 //Serial.println(state);
 if (currentHeading < 0 ){
  currentHeading = 360+currentHeading;
 }
 currentAngle = map(currentHeading,0,359,0,200);
 digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  if (currentAngle != lastAngle){
    if(currentAngle > lastAngle){  
      rotate = currentAngle - lastAngle;  
      for(int x = 0; x < rotate; x++) {
      digitalWrite(stepPin,HIGH); 
      delayMicroseconds(500); 
      digitalWrite(stepPin,LOW); 
      delayMicroseconds(500); 
      }
    }

    if(currentAngle < lastAngle){  
      rotate = lastAngle - currentAngle; 
      digitalWrite(dirPin,LOW); //Changes the rotations direction
      for(int x = 0; x < rotate; x++) {
      digitalWrite(stepPin,HIGH); 
      delayMicroseconds(500); 
      digitalWrite(stepPin,LOW); 
      delayMicroseconds(500); 
      }
    }
  }
  lastAngle = currentAngle;
  if (state == "Auto"){
    mode = state;
  }
 }
}
Code language: Arduino (arduino)

Proceso de manufactura

  1. Construye un sistema de recuperación de paracaídas balístico para tu dron
  2. ¿Cómo elegir el material adecuado para su proyecto?
  3. Hacer Monitor Ambilight usando Arduino
  4. Control remoto universal usando Arduino, 1Sheeld y Android
  5. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  6. Cómo construir su hoja de ruta de automatización en 7 pasos
  7. Magnesio vs. Aluminio:cómo elegir una aleación para su proyecto de fundición personalizado
  8. Cómo elegir la grúa adecuada para su proyecto
  9. Mecanizado personalizado:así es como prepararse para la cotización de su proyecto
  10. Cómo estimar los requisitos de acero para su proyecto
  11. Los beneficios del arenado para su proyecto de fabricación de metal personalizado