|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

App inventor 2 en español
Cómo programar los teléfonos móviles con Android.
Bluetooth, Arduino y App inventor 2 - Juan Antonio Villalpando

-- Tutorial de iniciación de App Inventor 2 en español --

Volver al índice del tutorial

___________________________

10A.- Conexión con Arduino con cable USB OTG. Conexión Serie. Extensión. Pantalla LCD. FTDI.

- Mediante un cable OTG podemos conectar a nuestro móvil un ratón USB, una memoria USB,...

- En estos tutoriales vamos a conectar un Arduino.

- El móvil y el dispositivo que le conectemos deben reconocerse correctamente, eso dependerá de los códigos empleados, en nuestro caso utilizaremos una extensión que reconoce al Arduino UNO tanto el original como los de fabricación china que suelen tener el chip CH340 para la conexión USB. Además la extensión que vamos a utilizar funciona con tarjetas que contienen el ESP8266 y el ESP32, así como los que disponen de chips FTDI.

- La extensión que vamos a utilizar la encontramos en este envío de la Comunidad de App Inventor:

https://community.appinventor.mit.edu/t/using-serial-with-ftdi/14136

- Se denomina: com.SerialOTG.aix, está realizado por el usuario rkl099. El autor indica que funciona en los dispositivos que utilizan CdcAcm, PL2303, PL2303HX, FTDI, CP210x, CH341,...

- Vamos a ver algunos ejemplos, se trata de conectar Arduino UNO con chip CH340 al móvil por el conector USB, para ello necesitamos un cable OTG.

- Conectamos la parte microUSB al móvil y en el otro extremo conectamos el cable USB que irá al Arduino.

- IMPORTANTE:

En Ajustes del móvil, concretamente en Ajustes adicionales / OTG. Debemos activar la conexión USB On-The-Go.

_______________________________________________

1.- Bloque PRINT. App Inventor envía un texto al Arduino mediante cable OTG, Arduino devuelve el mismo texto. Pantalla LCD.

p10A_OTG_print_LCD.aia

- Realizamos la conexión indicada en la imagen. He utilizado una pantalla LCD-I2C para ver los datos en el Arduino, si no tiene esta pantalla puedes continuar el ejemplo, ya que además de presentarse los datos en la pantalla se devolverá al móvil.

- Mediante el bloque PrintSerial enviaremos un texto, se mostrarán en la pantalla LCD-I2C y se devolverá al móvil.

- He utilizado un Arduino UNO con el chip CH340, una pantalla LCD-I2C y los cables.

- Un cable, el OTG lo conecto al móvil y el otro cable, el OTG lo conecto al Arduino y al cable anterior

- En este código, Arduino recibe el texto enviado mediante el bloque PrintSerial, llegará caracter a caracter al Arduino. Arduino irá devolviendo caracter a caracter según la van llegando mediante Serial.print(caracter). Cuando Arduino recibe fin de línea, esto es el caracter 10 (\n), se muestran la acumulación de todos los caracteres recibido en palabra, en la pantalla LCD.

- Para ejecutarlo debemos pulsar dos veces el Botón "Open Serial".

OTG_print_LCD.ino


// Juan A. Villalpando
// kio4.com

#include <Wire.h>
// Pantalla LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

char caracter;
String palabra;

 void setup(){  
  Serial.begin(9600);  
  lcd.begin(16,2);// Columnas y filas de LCD.
  lcd.clear();
 } 
  
 void loop() { 
 if(Serial.available()) {
  caracter = Serial.read();
  Serial.print(caracter);
  palabra = palabra + caracter;
    if(caracter == 10) {
      palabra = palabra.substring(0, palabra.length() - 1); // Quita último caracter 
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(palabra);
      palabra="";
    }
    delay(10); 
  }
}  

_______________________________________________

- Diseño.

 

_______________________________________________

- Bloques.

_______________________________________________
_______________________________________________
_______________________________________________

2.- Bloques WRITE. App Inventor envía un datos al Arduino, Arduino devuelve esos datos. Pantalla LCD.

p10A_OTG_write LCD.aia

- La misma conexión que la del ejemplo anterior.

- En este caso iremos enviando distintos tipos de datos mediante WRITE: texto, string hexadecimal, lista y byte.

- Observa que añadimos el caracter *, es el 2A y el 42 en ASCII, para indicar fin de mensaje.

- Cuando mediante el asterisco se recibe el fin de mensaje se reenvía la palabra obtenida mediante Serial.print(palabra) y se escribe en la pantalla LCD.

- Código:

OTG_write_LCD.ino


// Juan A. Villalpando
// kio4.com

#include <Wire.h>
// Pantalla LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

char caracter;
String palabra;

 void setup(){  
  Serial.begin(9600);  
  lcd.begin(16,2);// Columnas y filas de LCD.
  lcd.clear();
 } 
  
 void loop() { 
 if(Serial.available()) {
  caracter = Serial.read();
  palabra = palabra + caracter;
    if(caracter == '*') {    
      palabra = palabra.substring(0, palabra.length() - 1); // Quita último caracter * 
      // Serial.println(palabra.toInt()* 2); // Si es un número, devuelve el doble.
      Serial.print(palabra);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(palabra);
      palabra="";
    }
    delay(10); 
  }
} 

_______________________________________________

- Diseño.

_______________________________________________

- Bloques.

_______________________________________________
_______________________________________________
_______________________________________________

3.- App Inventor envía texto mediante PRINT. Arduino envía texto mediante teclado.

p10A_OTG_LCD_Teclado.aia

- A este Keypad 4x4 le he añadido un módulo I2C, para poder conectarlo con solo dos terminales de datos al Arduino como indico en la imagen.

- Keypad.zip

OTG_LCD_3.ino


// Juan A. Villalpando
// kio4.com

#include <Wire.h>
// Pantalla LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

char caracter;
String palabra;

 void setup(){  
  Serial.begin(9600);  
  lcd.begin(16,2);// Columnas y filas de LCD.
  lcd.clear();
 } 
  
 void loop() { 
 if(Serial.available()) {
  caracter = Serial.read();
  palabra = palabra + caracter;
    if(caracter == '*') {    
      palabra = palabra.substring(0, palabra.length() - 1); // Quita último caracter * 
      // Serial.println(palabra.toInt()* 2); // Si es un número, devuelve el doble.
      Serial.print(palabra);
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(palabra);
      palabra="";
    }
    delay(10); 
  }
} 

_______________________________________________

- Diseño.

_______________________________________________

- Bloques.

_______________________________________________
_______________________________________________
_______________________________________________

4.- Arduino genera dos números aleatorios y los envía a la aplicación.

p10A_OTG__LCD_Temperatura.aia

- Arduino crea dos números aleatorios:

temperatura: 20...40

humedad: 50...90

Lo envía en forma de String, por ejemplo: 48,79

_______________________________________________

- Diseño.

 

_______________________________________________

- Bloques.

 

OTG_Temperatura.ino


// Juan A. Villalpando
// kio4.com

int temperatura;
int humedad;
String todo;

void setup() {
 Serial.begin(9600); 
}

void loop() {
  temperatura = random(20,40);
  humedad = random(50,90);
  todo = (String) temperatura + "," + (String) humedad;
  Serial.print(todo);
  delay(2000);
}

_______________________________________________
_______________________________________________
_______________________________________________

5.- FTDI. Arduino envía caracter a Monitor Serie. Android envía texto a Arduino.

p10A_OTG_FTDI.aia

- En los ejemplos anteriores hemos visto que si conectamos el cable USB del Arduino al móvil mediante el cable OTG, no podemos ver la información en el Monitor Serie.

- En este ejemplo vamos a utilizar el Monitor Serie como lo hacemos normalmente, es decir conectando el Arduino al ordenador mediante su correspondiente cable USB

- Para conectar el móvil al Arduino, utilizaremos un módulo con un Chip de FTDI. Este chip convierte la información en formato USB a información en formato RX/TX.

- Es decir, lo utilizamos para conectar un USB a unos terminales RX/TX.

- Esto lo hace este Arduino con el chip CH340, conecta USB con los terminales RX/TX que están en los conectores 0 y 1 del Arduino. Mediante esta conexión el ordenador y el Arduino intercambian datos.

- Es este caso utilizaremos el módulo con el chip de FTDI para conectar el USB del móvil con el Arduino.

- Utilizaremos los terminales 10 y 11, ya que 0 y 1, está conectado al chip CH340.

- En el código de Arduino, debemos cargar la librería "SoftwareSerial" que puede configurar los terminales 10 y 11 como terminales Serie RX/TX.

- Podremos comunicar el Arduino con el ordenador mediante un cable USB, como lo hacemos normalmente y utilizar el Monitor Serie, y además podemos comunicar el Arduno con el móvil mediante el módulo FTDI y el cable OTG.

 

OTG_FTDI.ino


// Juan A. Villalpando
// kio4.com


#include <SoftwareSerial.h>
SoftwareSerial FTDI(10,11);
// El TX del módulo FTDI va al pin 10 del Arduino
// El RX del módulo FTDI va al pin 11 del Arduino
// El GND del módulo FTDI va al GND del Arduino

char caracter;
int aleatorio;

void setup(){
  FTDI.begin(9600);
  Serial.begin(9600);
}

void loop (){
// Lee del Android y escribe Monitor Serie.
  if (FTDI.available() > 0) {
    caracter = FTDI.read();
    Serial.print(caracter);
  }
  
// Crea un número aleatorio y lo envía a Android
      aleatorio = random(33,126);
      FTDI.write(aleatorio);
      
  delay(500);   
}

_______________________________________________

- Diseño.

_______________________________________________

- Bloques.

_____________________________________________________________
- Esquemas del Arduino UNO.

 

Arduino_Uno_Rev3.jpg (Arduino original)

 

Arduino_ch340.jpg (Arduino con CH340)

____________________________________________________

- Conversores USB <--> RX/TX

- Aquí tenemos otros tres tipos de conversores, observa el tipo de conector. También se denominan conversor USB a TTL.

- ¿Qué es FTDI?

- Es una empresa del Reino Unido que se dedica a fabrica módulos, chips, cables... es muy conocida porque sus chips conversores USB <> Tx/Rx son muy populares, hasta tal punto que hay quien a esos tipos de chips los llaman FTDI, como esa empresa.

__________________________________

 
- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información