|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. 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

___________________________

9A.- Dónde conectar el módulo Bluetooth. RX/TX. Serial. Importante.

Nota para el NodeMCU:

- Para el NodeMCU la explicación es similar a la indicada en este tutorial. El puerto Serie "oficial" está en los terminales RX/TX del módulo NodeMCU, a veces utilizaremos los terminales D7 y D8.
- Debemos tener en cuenta que los terminales D7 y D8 se corresponden a los GPIO13 y GPIO15 respectivamente.

 

- A lo largo de este tutorial conectaremos el módulo Bluetooth al Arduino, utilizaremos sensores (humedad, temperatura, presión, potenciómetro...), pantalla LCD y el Serial Monitor para ver los datos que se están recibiendo.

- Unas veces veremos el módulo Bluetooth conectados a los terminales RX-0 y TX-1, que son los terminales "oficiales" del Serial en el Arduino y otras veces lo veremos conectado a los terminales 10 y 11.

- Vamos a ver porqué utilizamos un par de conexiones o el otro.

- Los terminales "oficiales" del puerto Serie o Serial, en el Arduino son el 0 y el 1. Donde está indicado mediante RX y TX respectivamente. Estos terminales lo utiliza el Arduino para cargar la aplicación y también lo utiliza para el Serial Monitor. Están conectado a unos pequeños LED que hay sobre la placa del Arduino, por eso cuando cargamos una aplicación o estamos observando datos en el Serial Monitor, vemos parpadear esos pequeños LED.

- El módulo Bluetooth también funciona con un puerto Serie, de tal manera que lo podemos conectar a los terminales anteriormente nombrado RX y TX del Arduino. Pero debemos tener en cuenta que, como el Arduino utiliza esos terminales para cargar la aplicación, debemos quitar el módulo Bluetooth (o quitarle la alimentación) de esos terminales cada vez que vayamos a cargar una aplicación. Cuando la aplicación esté cargada podemos volver a conectar completamente los terminales del módulo Bluetooth.

- Además no podremos utilizar el Serial Monitor(?) para ver los resultados que está obteniendo la aplicación, ya que el Serial Monitor también utilizaría los terminales RX y TX, por lo cual entran en conflicto y avisa de que no puede ser utilizado. Así que no podemos tener conectado el módulo Bluetooth y utilizar Serial.print(temperatura);

- ¿Qué podemos hacer para no tener que quitar el módulo Bluetooth cada vez que cargamos una aplicación y poder utilizar el Serial Monitor?

- Establecer además de la RX-0 y TX-1 otro par de terminales de puerto Serie para el módulo Bluetooth y dejar esos terminales "oficiales" para cargar la aplicación y poder utilizar el Serial Monitor.

- ¿Cómo lo hacemos?

- En el código hay que incluir la librería:

#include <SoftwareSerial.h>

e indicar los terminales Serie que vamos a utilizar, además de ponerle un nuevo nombre a este puerto Serie, en este caso se ha puesto I2CBT.

SoftwareSerial I2CBT(10,11);
// El TX del módulo BT va al pin 10 del Arduino
// El RX del módulo BT va al pin 11 del Arduino

También debemos iniciar este puerto y asignarle una velocidad (baudios):

I2CBT.begin(9600);

Luego a lo largo del código utilizamos ese puerto llamándolo así, según queramos leer o escribir...

serialA=I2CBT.read();

I2CBT.write(Datos[0]);

Al mismo tiempo podemos utilizar el Serial "oficial" para ver cómo van evolucionando los datos de la aplicación, paro eso utilizamos el comando Serial.

Serial.begin(9600);

Serial.print("Temperatura = ");

Serial.println(temperatura);

De esta manera pueden convivir los dos puertos Serial, el "oficial" y en creado en los terminales 10 y 11.

- Si solo queremos utilizar el Serial "oficial", no es necesario incluir la librería <SoftwareSerial.h> y utilizaríamos Serial.print o Serial.println

- En estos tutoriales una veces conectaremos el módulo Bluetooth a los terminales "oficiales" RX/TX y otras veces incluiremos la librería SoftwareSerial y lo conectaremos a los terminales 10 y 11.

_______________________________________________
- Ejemplos.

- Estos ejemplos se desarrollarán a lo largo de este tutorial, aquí vamos a aclarar lo comentado anteriormente.

- Bluetooth conectado a los puertos Serie "oficiales" RX-0 y TX-1 (Fíjate que se conectan de forma "cruzada").

- Su código sería:

- No hace falta librería SoftwareSerial

- Utilizamos el comando Serial.------

- Debemos quitar al módulo para cargar la aplicación.

potenciometro_arduino_2.ino
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com

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

void loop (){
// Se van a enviar 3 datos. El 0, el 1 y el 2.
    byte Datos[2];
    
// El terminal central del potenciómetro va a A0 del Arduino
    int i=analogRead(A0);
    serialA=Serial.read();
    Datos[0]='a';
    Datos[1]=i/256;
    Datos[2]=i%256;
// Por ejemplo, lee 876.
// Para obtener el Dato[1]= 876/256 = 3 (Número entero)
// Para obtener el Dato[2] = 876 mod 256 = 108 (El resto de esa división)

// Envío de datos.
     if (serialA == 49){
      Serial.write(Datos[0]);
      Serial.write(Datos[1]);
      Serial.write(Datos[2]);
      serialA=0; 
      }
  delay(100);    
}

- Bluetooth conectado a los terminales 10 y 11.

- Su código sería:

- Se ha de incluir la librería SotwareSerial, ponerle un nombre, por ejemplo I2CBT, sus terminales 10 y 11. Iniciarlo. Para leer y escribir lo hacemos con su nombre.

#include <SoftwareSerial.h>

SoftwareSerial I2CBT(10,11);

I2CBT.begin(9600);

serialA=I2CBT.read();

I2CBT.write(Datos[0]);

- Ventajas: No hace falta quitar el módulo al cargar la aplicación. Podemos utilizar el Serial Monitor para consultar datos.

potenciometro_arduino.ino
// Juan Antonio Villalpando
// juana1991@yahoo.com
// kio4.com

#include <SoftwareSerial.h>
SoftwareSerial I2CBT(10,11); // El TX del módulo BT va al pin 10 del Arduino // El RX del módulo BT va al pin 11 del Arduino byte serialA; void setup(){ I2CBT.begin(9600); Serial.begin(9600); } void loop (){ // Se van a enviar 3 datos. El 0, el 1 y el 2. byte Datos[2]; // El terminal central del potenciómetro va a A0 del Arduino int i=analogRead(A0); serialA=I2CBT.read(); Datos[0]='a'; Datos[1]=i/256; Datos[2]=i%256; // Por ejemplo, lee 876. // Para obtener el Dato[1]= 876/256 = 3 (Número entero) // Para obtener el Dato[2] = 876 mod 256 = 108 (El resto de esa división) // Aquí sí podemos ver los datos en el Serial Monitor. if (serialA == 49){ Serial.println(Datos[0]); Serial.println(Datos[1]); Serial.println(Datos[2]); } // Envío de datos. if (serialA == 49){ I2CBT.write(Datos[0]); I2CBT.write(Datos[1]); I2CBT.write(Datos[2]); serialA=0; } delay(100); }

_____________________________________________________

- Baudios.

- La velocidad del Bluetooth del Android es de 9600 baudios, no se puede cambiar.

- Un baudio, normalmente es un bit por segundo, aunque este concepto puede cambiar.

tiempo_bit = 1 / baudio

En 9600, el tiempo de cada bit es de 104.166666666666 microsegundos.
En19200, el tiempo de cada bit es de 52.083333333333 microsegundos.

Para calcular el tiempo de envio de una palabra hay que tener en cuenta los bits que la componen, por ejemplo una palabra puede ocupar 7 bit, más un bit de paridad, más el bit de inicio, más el bit de parada, es decir 10 bits

Por ejemplo 9600 8 N 1 utiliza 10 bits por palabra (1 bit de arranque, 7 bits de caracter, más 1 bit de paridad y un bit de parada). Cada palabra tardará 10/9600 = 1041.66666666 microsegundos, es decir 1 milisegundo. En 1 segundo puede pasar cerca de 1000 palabras.

19200 7 E 2 utiliza 11 bits por palabra (1 bit de arranque, 7 de caracter, 1 de paridad y 2 bits de parada). Cada palabra tardará = 11/19200 = 572.91666666666 microsegundos.
__________________________________

 
- 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