|     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
T 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

___________________________

- Comunicar Android y ordenador por Bluetooth.

- En este caso vamos a comunicar a nuestro ordendor con Android mediante Bluetooth.

- Varias cosas...

1.- Voy a utilizar Windows 7.

2. Tengo instalado Visual Basic 2010 Express. Este es el primer paso que debes solventar, instalar Visual Basic. En mi caso lo he realizado con Visual Basic 2010 pero puedes intentarlo con versiones más recientes. Visual Basic es de Microsoft y se obtiene dentro de un paquete de aplicaciones llamadas Visual Studio. Bajas Visual Studio y uno de sus lenguajes de programación es el Visual Basic.

- Trata de bajar el Visual Basic e instálalo en tu ordenador, es interesante que lo instales porque con lo que sabes de App inventor puedes hacer aplicaciones parecidas para Windows. (Visual Basic 6.0 es un clásico pero está anticuado, intenta que sea el VB 2010 o mayor).

http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-basic-express

https://www.microsoft.com/es-es/download/details.aspx?id=23691

- Tal vez puedas encontrar Visual Basic 2010 express en el emule.

3.- Necesita que tu ordenador tenga Bluetooth, si es un portátil probablemente tendrá BT, pero si es de sobre-mesa deberás comprar un "dongle" Bluetooth, esto es un dispositivo parecido externamente a una memoria USB y que precisamente se inserta en un puerto USB del ordenador, de tal manera que puedes trabajar con Bluetooth desde el ordenador.

- Están muy baratos en Aliexpress, menos de 3 €:

https://es.aliexpress.com/wholesale?catId=0&initiative_id=SB_20161222124715&SearchText=dongle+usb+bluetooth

- Inserta este dongle USB Bluetooth en tu ordenador y... ya tienes Bluetooth.

- Con este dongle Bluetooth y el módulo Bluetooth del Arduino he conseguido controlarlo a unos 6 metros y dos paredes intermedias. Es posible que en sitios libres pueda llegar a los 100 metros.

4.- Por otra parte necesitamos Arduino UNO y un módulo Bluetooth como el que indico en las imágenes. Voy a utilizar el IDE 1.0.6 para trabajar con Arduino.

1.- Vamos a realizar esta conexión de Arduino y Bluetooth.

 

2.- Insertamos el "dongle" Bluetooth en nuestro ordenador, Windows lo reconocerá, instalará sus drivers y al cabo de unos minutos lo tendremos operativo.

 

Visual Basic 2010 + Bluetooth + Arduino

 

0.- Conexionado del módulo Bluetooth y el Arduino

- Lo primero es conectar nuestro módulo Bluetooth al Arduino. Debemos tener mucho cuidado de no permutar la alimentación Vcc (+) y Gnd (-), si nos equivocamos y lo conectamos en el sitio equivocado el módulo se averiará inmediatamente.

- El módulo que he comprado JY-MCU Arduino Bluetooth Wireless Serial Port Module admite tensiones comprendidas entre 3,6 V y 6 V.

En la foto muestro dos módulos Bluetooth, uno en anverso y otro en reverso. Observamos 4 pines (Vcc, Gnd, Txd y Rxd). Además hay otras dos posibles conexiones (State y Key) que no nos hacen falta y no utilizaremos.

También se nos suministra un cable para conectarlo al Arduino.

En la foto superior muestro como he conectado el módulo Bluetooty al Arduino. El cable que nos han suministrado tiene conexión hembra, el Arduino también tiene conexiones hembra, así que he utilizado cuatro cables intermedios de colores para poderlo conectar.
Es importante seguir un código de colores, rojo para el positivo, negro para el negativo, de esta manera tendremos más cuidado al conectar el + y el -., ya que si lo cambiamos, el módulo se averiará. Durante el proceso de carga del programa quitaremos y pondremos varias veces estos cables, para poder cargar el programa al Arduino.

Forma de conectarlo

Módulo Bluetooh
Arduino
VCC 5 V
GND GND
TXD RX (es la conexión 0 del Arduino)
RXD TX (es la conexión 1 del Arduino)

- Fíjate que el TXD va con el RX y que el RXD va con el TX
- Cuando realizamos la conexión anterior y lo conectamos mediante el cable USB al ordenador para programarlo, el LED rojo del módulo Bluetooth parpadeará continuamente, eso significa que está en funcionamiento.

______________________________________________
- Conexión del dongle Bluetooth al ordenador.

Ahora conectamos mediante USB el dongle Bluetooth al ordenador, se instalarán los drivers, etc,... luego en el área de notificación de la barra de tareas, cerca del reloj, aparecerá el icono de configuracion Bluetooth.

_____________________________________
- Emparejamiento de los Bluetooth.

Se denomina emparejamiento al reconocimiento entre dos dispositivos Bluetooth.


- Conectamos el Bluetooth al Arduino y el Arduino, mediante el cable USB, a nuestro ordenador, como se mostró en una foto anterior. El LED rojo del módulo Bluetooth parpadeará.
- Pulsamos con el botón derecho del ratón el icono de configuración Bluetooth en nuestro ordenador.
- Agregar un dispositivo.

- Nuestro ordenador reconocerá a los dispositivos Bluetooth de la zona, entre ellos linvor, éste es el Bluetooth del Arduino.

- Pulsamos en linvor y luego en "Escribir código de emparejamiento del dispositivo"

- Escribimos la clave, es 1234

- Si todo ha ido bien, el dongle Bluetooth de nuestro ordenador ha reconocido al módulo Bluetooth del Arduino y pueden intercomunicarse.

-IMPORTANTE, de la misma manera que hemos agregado el módulo Bluetooth de Arduino a nuestro ordenador, vamos a agregar a nuestro móvil por Bluetooth, el proceso es similar. Desde Windows Pulsamos en "Agregar un dispositivo", reconocerá al módulo Bluetooth que tenemos de nuestro móvil, nos indicará la clave de conexión, la escribiremos y conectaremos.

__________________
- Puertos COM.

- Tal como tenemos conectado nuestro Arduino al ordenador, estamos utilizando dos puertos COM. Uno para la misma placa del Arduino y otro para el Bluetooth.

- Aunque estamos utilizando puertos USB y Bluetooth, el hardware utilizado hace una conversión a puerto Serie (COM), de tal manera que podemos hacer la transmisión mediante protocolo Serie. Utilizaré líneas como estas...

val = Serial.read();

Serial.println("Me llamo Juan");

- Para ver que puerto está utilizando el Arduino vamos a... Botón derecho en Equipo / Administrar / Administrador de dispositivos
En mi caso el Arduino UNO está utilizando el puerto Serie COM4

El IDE, el software para programar el Arduino tambíén debe estar habilitado en el COM4, en mi caso.

El otro puerto COM que utilizamos es el del Bluetooth, para ver cual estamos utilizando vamos al icono Bluetooth del área de notificación y pulsamos sobre:
Mostrar dispositivos Bluetooth / linvor / Propiedades

Aquí podemos ver un par de cosas interesantes, que el puerto que utiliza nuestro Bluetooth es el COM11 y en la pestaña Configuración de puerto podemos establecer la velocidad de transmisión, en mi caso la he dejado en 9600, aunque puedes aumentarla. Teniendo en cuenta que si cambias esa velocidad también deberás cambiarla en el programa del Arduino y del Visual Basic que veremos más adelante. La velocidad se mide en Baudios (bits por segundos)

- Ese es el puerto que debemos poner más adelantes en nuestro código de Visual Basic.

En resumen, estoy utilizando dos puertos COM, el COM4 (Arduino) y el COM11 (Bluetooth). No siempre las conexiones se hacen con estos números de puertos, pueden variar.

NOTA:
En el montaje que estamos haciendo el Arduino está "enganchado" al ordenador mediante el cable USB, por lo cual no tiene gracia, ya que lo que queremos es que el Arduino esté lejos del ordenador y sin conexión física de cable. Más adelante quitaremos este cable USB, que utilizamos para programar el Arduino y para alimentarlo, y le conectaremos al Arduino un portapilas para alimentarlo independientemente del ordenador.

______________________________________________________

- EMPEZAMOS CON LAS APLICACIONES
______________________________________________________

1.- Al pulsar botones de Visual Basic, el Arduino enciende y apaga el LED13

- Programas

- Vamos al Visual Basic 2010 Express
- Nuevo proyecto...
- Aplicación de Windows Forms
- Del cuadro de herramientas arrastramos al Formulario dos botones (Button1 y Button2) y un SerialPort

- Copiamos en la parte del código el siguiente programa

- Luego lo guardamos y más adelante lo ejecutamos.

- La parte de configuración del SerialPort se puede realizar en tiempo de Diseño en tiempo de Ejecución. Si podemos ciertos datos en tiempo de Diseño y luego otros en tiempo de Ejecución, valdrán estos últimos.

Visual Basic 2010



' Juan Antonio Villalpando
' juana1991@yahoo.com


Imports System.IO.Ports
Imports System.Threading

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com11" ' Cambia el Puerto, es el puerto del Bluetooth, en mi caso el COM11
SerialPort1.BaudRate = 9600 ' Esta es la velocidad de transmisión, debe ser la misma en los programas y en el Bluetooth
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
SerialPort1.Write("1")
SerialPort1.Close()
End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Open()
SerialPort1.Write("0")
SerialPort1.Close()
End Sub
End Class

 

- Vamos al IDE del Arduino y pegamos este programa. Cada programa del Arduino es conveniente que se guarde en una carpeta distinta. Lo guardamos con el nombre de arduino_VB_Bt.ino

arduino_VB_Bt.ino

// Juan Antonio Villalpando
// juana1991@yahoo.com

char val;
int ledPin = 13;

void setup() {
Serial.begin(9600); // Aqui establecemos la velocidad
pinMode(ledPin, OUTPUT);
}

void loop() {
if( Serial.available() )
val = Serial.read();

if( val == '0' )
{
digitalWrite(ledPin, LOW);
}

if( val == '1' )
{
digitalWrite(ledPin, HIGH);
}
}

 

- Este programa encenderá/apagará un diodo LED13 que existe en el Arduino. El LED está cerca de la conexión 13, es pequeño, rectangular y de color amarillo.

- Una vez guardado el programa, pulsamos sobre el icono del IDE del Arduino Upload, para cargar el programa desde nuestro ordenador al Arduino. (Uploading to I/O Board)

- NOTA:
Es posible que si está conectado el módulo Bluetooth, el programa no se carge en el Ardunio, así que cuando vayamos a cargar el programa al Arduino, quitamos los cables de la conexión de alimentación del módulo Bluetooth, cargamos el programa (Done uploading) y luego volvemos a conectar los cables de alimentación del módulo Bluetooth.

- Ya tenemos el programa cargado en el Arduino.


Ya tenemos un programa cargado en el Arduino y otro en Visual Basic. Cuando ejecutemos el programa en Visual Basic y pulsemos los Botones Button1 y Button2, el LED13 del Arduino se encenderá y se apagará. La señal se enviará mediante Bluetooth.

___________________________________________________
___________________________________________________
___________________________________________________

2.- El Arduino no conectado al ordenador mediante el cable USB

Hasta ahora, para hacer las pruebas el Arduino ha estado conectado por cable USB al ordenador para cargar el programa y para alimentarlo energéticamente..

Si ya hemos comprobado que funciona correctametne y el programa está cargado en el Arduino, podemos quitarle el cable USB al Arduino para que no esté "enchufado" al ordenador, pero claro, si quitamos el cable USB, el Arduino no tendrá alimentación y se apagará.

Así que debemos alimentar al Arduino mediante pilas.

Ya tenemos al Arduino alimentado mediante pilas, con el programa cargado y conectado mediante Bluetooth a nuestro ordenador.

¿Si no tengo el portapilas, hay alguna manera de probarlo a distancia?

Sí. Carga el programa en el Arduino. Conectas el Arduino mediante el cable USB a otro ordenador. No hace falta que ese otro ordenador cargue nada, solo que esté encendido para que alimente al Arduino. De esta manera comprobarás que verdaderametne funciona a distancia por Bluetooth.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

 

3.- Al revés, el Arduino envía un mensaje al ordenador

- Vamos hacerlo al revés, es decir, ahora el Arduino le envía una señal mediante Bluetooth al ordenador y éste cuando la recibe arranca un programa.

- Le ponemos un pulsador al Arduino, cuando lo pulsemos, enviará la señal "Hola amigo" por Bluetooth al ordenador, y al recibirla, éste escribirá un mensaje y ejecutará la calculadora.

- Conexionado del módulo Bluetooth, el Arduino y el pulsador.

 

- Debemos alimentar el módulo Bluetooth y además llevar tensión al pulsador como indica la figura superior. Utilizamos una resistencia de 10 K

- Para montarlo he utilizado una placa de experimentación, espero que los detalles de las fotos sean aclaratorias.

 

____________________________
- Código para el Visual Basic.

Visual Basic 2010



' Juan Antonio Villalpando
' juana1991@yahoo.com

Public Class Form1

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
SerialPort1.Close()
SerialPort1.PortName = "com11" ' Cambia el Puerto, es el puerto del Bluetooth, en mi caso el COM11
SerialPort1.BaudRate = 9600 ' Esta es la velocidad de transmisión, debe ser la misma en los programas y en el Bluetooth

CheckForIllegalCrossThreadCalls = False ' Esta línea no le gusta mucho a los programadores, pero aquí la ponemos para que funcione el Label1
End Sub

Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs)
SerialPort1.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
Button1.Enabled = False
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Close()
Button1.Enabled = True
Label1.Text =""
End Sub

Private Sub SerialPort1_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

Label1.Text = Label1.Text & SerialPort1.ReadLine

If SerialPort1.ReadLine = "Hola amigo" & vbCr & "" Then Process.Start("calc.exe")

End Sub

End Class


- Funcionamiento del programa en Visual Basic.

- Al pulsar el botón "Abrir puerto", se envía una señal por Bluetooth. Al recibir esa señal el módulo del Arduino queda a la escucha (el diodo LED rojo del módulo deja de parpadear y queda encendido).
- Cuando pulsamos el pulsador del Arduino se envía la señal por Bluetooth, el Visual Basic la recibe, escribe un mensaje y ejecuta la calculadora.
- Finalmente pulsamos el botón "Cerrar puerto"

_____________________________
- Código para el Arduino.

- Vamos al IDE del Arduino y pegamos este programa. Cada programa del Arduino es conveniente que se guarde en una carpeta distinta. Lo guardamos con el nombre de arduino_VB_Bt_pulsador.ino

arduino_VB_Bt_pulsador.ino

// Juan Antonio Villalpando
// juana1991@yahoo.com

const int boton2 = 2;
const int ledPin = 13;
int buttonState = 0;

void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
pinMode(boton2, INPUT);
}

void loop(){

buttonState = digitalRead(boton2);

if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
Serial.println("Hola amigo");
delay(200); // Ajustar este tiempo de retardo
}
else {
digitalWrite(ledPin, LOW);
}
}

 

- Con este programa cuando pulsemos el pulsador, se enviará el mensaje "Hola amigo" por Bluetooth al Visual Basic del ordenador. Cuando el ordenador reciba ese mensaje, lo escribirá en el Label1 y ejecutará la calculadora.

- Una vez guardado el programa, pulsamos sobre el icono del IDE del Arduino Upload, para cargar el programa desde nuestro ordenador al Arduino. (Uploading to I/O Board)

- NOTA:
Es posible que si está conectado el módulo Bluetooth, el programa no se carge en el Ardunio, así que cuando vayamos a cargar el programa al Arduino, quitamos los cables de la conexión de alimentación del módulo Bluetooth, cargamos el programa (Done uploading) y luego volvemos a conectar los cables de alimentación del módulo Bluetooth.

- Ya tenemos el programa cargado en el Arduino.

- Se puede ajustar el tiempo de retardo (delay) o mejorar el código. En mi caso solo he pretendido hacerlo sencillo y entendible. Si dejas el pulsador pulsado, se enviará mensajes contínuos.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

4.- Ahora con dos pulsadores

_____________________________
- Código para el Visual Basic.

- Cuando activamos un pulsador de la placa, se enviará el texto "Hola amigo", al recibir el VB el mensaje, lo añaditrá al Label1 y ejecutará la Calculadora.
- Cuando activamos el otro pulsador de la placa, se enviará el texto "Me llamo Juan", al recibirlo el VB, lo añaditrá al Label1 y ejecutará el Paint.

- La subrutina SerialPort1_DataReceived se encarga de gestionar el dato recibido.

Visual Basic 2010



' Juan Antonio Villalpando
' juana1991@yahoo.com

Public Class Form1

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
SerialPort1.Close()
SerialPort1.PortName = "com11" ' Cambia el Puerto, es el puerto del Bluetooth, en mi caso el COM11
SerialPort1.BaudRate = 9600 ' Esta es la velocidad de transmisión, debe ser la misma en los programas y en el Bluetooth

CheckForIllegalCrossThreadCalls = False ' Esta línea no le gusta mucho a los programadores, pero aquí la ponemos para que funcione el Label1
End Sub

Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs)
SerialPort1.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
Button1.Enabled = False
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Close()
Button1.Enabled = True
Label1.Text = ""
End Sub

Private Sub SerialPort1_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

Label1.Text = Label1.Text & SerialPort1.ReadLine.ToString

If SerialPort1.ReadLine = "Hola amigo" & vbCr & "" Then Process.Start("calc.exe")
If SerialPort1.ReadLine = "Me llamo Juan" & vbCr & "" Then Process.Start("mspaint.exe")

End Sub


End Class


_____________________________
- Código para el Arduino.

Vamos al IDE del Arduino y pegamos este programa. Cada programa del Arduino es conveniente que se guarde en una carpeta distinta. Lo guardamos con el nombre de arduino_VB_Bt_pulsador_dos.ino

arduino_VB_Bt_pulsador_dos.ino

// Juan Antonio Villalpando
// juana1991@yahoo.com

const int boton2 = 2;
const int boton3 = 3;

int buttonState2 = 0;
int buttonState3 = 0;

void setup() {
Serial.begin(9600);
pinMode(boton2, INPUT);
pinMode(boton3, INPUT);
}

void loop(){

buttonState2 = digitalRead(boton2);
buttonState3 = digitalRead(boton3);

if (buttonState2 == HIGH) {
Serial.println("Hola amigo");
delay(50);
}
if (buttonState3 == HIGH) {
Serial.println("Me llamo Juan");
delay(50);
}
}

 

- Con este programa cuando pulsemos un pulsador, se enviará el mensaje "Hola amigo" por Bluetooth al Visual Basic del ordenador. Cuando el ordenador reciba ese mensaje, lo escribirá en el Label1 y ejecutará la Calculadora.
Cuando pulsemos el otro pulsador, se enviará "Me llamo Juan", se añadirá al Label1 y se ejecutará el Paint.

- He puesto un pequeño retardo, delay(50)

- Una vez guardado el programa, pulsamos sobre el icono del IDE del Arduino Upload, para cargar el programa desde nuestro ordenador al Arduino. (Uploading to I/O Board)

- NOTA:
Es posible que si está conectado el módulo Bluetooth, el programa no se carge en el Ardunio, así que cuando vayamos a cargar el programa al Arduino, quitamos los cables de la conexión de alimentación del módulo Bluetooth, cargamos el programa (Done uploading) y luego volvemos a conectar los cables de alimentación del módulo Bluetooth.

- Ya tenemos el programa cargado en el Arduino.

- Se puede ajustar el tiempo de retardo (delay) o mejorar el código. En mi caso solo he pretendido hacerlo sencillo y entendible. Si dejas el pulsador pulsado, se enviará mensajes contínuos.

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

5.- Con una LDR

- Ahora se trata de medir la cantidad de luz con una LDR. Según la luz recibida se enviará un número mediante Bluetooth a un programa en Visual Basic
- La Resistencia fija es de 1 K
- El cable amarillo se conecta a la ANALOG IN A3 del Arduino

                        

_____________________________
- Código para el Visual Basic.

- El programa en Visual Basic es parecido al anterior, solo he modificado al Subrutina SerialPort1_DataReceived

Visual Basic 2010



' Juan Antonio Villalpando
' juana1991@yahoo.com

Public Class Form1

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
SerialPort1.Close()
SerialPort1.PortName = "com11" ' Cambia el Puerto, es el puerto del Bluetooth, en mi caso el COM11
SerialPort1.BaudRate = 9600 ' Esta es la velocidad de transmisión, debe ser la misma en los programas y en el Bluetooth

CheckForIllegalCrossThreadCalls = False ' Esta línea no le gusta mucho a los programadores, pero aquí la ponemos para que funcione el Label1
End Sub

Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs)
SerialPort1.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
Button1.Enabled = False
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Close()
Button1.Enabled = True
Label1.Text = ""
End Sub

Private Sub SerialPort1_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived

Label1.Text = SerialPort1.ReadLine.ToString

End Sub


End Class


_____________________________
- Código para el Arduino.

Vamos al IDE del Arduino y pegamos este programa. Cada programa del Arduino es conveniente que se guarde en una carpeta distinta. Lo guardamos con el nombre de arduino_VB_Bt_LDR.pde

arduino_VB_Bt_LDR.pde

// Juan Antonio Villalpando
// juana1991@yahoo.com

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

void loop() {

int sensorValue = analogRead(A3);

Serial.println(sensorValue);
delay(500);
}

 

 

- NOTA:
Es posible que si está conectado el módulo Bluetooth, el programa no se carge en el Ardunio, así que cuando vayamos a cargar el programa al Arduino, quitamos los cables de la conexión de alimentación del módulo Bluetooth, cargamos el programa (Done uploading) y luego volvemos a conectar los cables de alimentación del módulo Bluetooth.

- Ya tenemos el programa cargado en el Arduino.

Mejora, cambio de escala.

De la forma que hemos visto obtengo valores entre 12 como mínimo y 534 como máximo.
Me gustaría que el mínimo fuera 0 y que el máximo fuera 1000.

Para conseguirlo utilizo la instruccion map del Arduino de esta manera: map(value, fromLow, fromHigh, toLow, toHigh);

void loop() {

int sensorValue = analogRead(A3);

sensorValue = map(sensorValue, 12 ,534, 0, 1000) ;

Serial.println(sensorValue);
delay(500);
}

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

6.- Volvemos al principio, mediante un Scroll de Visual Basic, controlamos la luminosidad de un LED, enviando la información mediante Bluetooth.

 

- Mediante un HScroolBar1 de Visual Basic, controlamos la luminosidad de un LED del Arduino.
- Las conexiones 3~, 5~, 6~, 9~, 10~ y 11~ pueden actuar como salidas PWM. Esto es una señal cuadrada en donde podemos variar su ancho. Cuando más ancha sea la señal, más iluminará el LED. El ancho de la señal se puede establecer desde 0 a 255.

- Si el nivel de tensión máxima en la conexión 9~ es de 5 V, al mover el Scroll podemos obtener 256 niveles de tensión, cada salto de tensión será de 5 / 256 V.

Consulta el tutorial PWM de Arduino: http://arduino.cc/es/Tutorial/PWM

- En mi caso he conectado un LED a la salida 9~ del Arduino. El LED está protegido por una resistencia de 470 ohmios.

_____________________________
- Código para el Visual Basic.

Es parecido al programa 1.- visto al principio, al mover un Scroll, su Value se muestra en el Label1 y se envia al puerto Serie.

Visual Basic 2010


El HScrollBar1
Minimun: 0
Maximum: 255
LargeChange: 1


' Juan Antonio Villalpando
' juana1991@yahoo.com

Imports System.IO.Ports
Imports System.Threading

Public Class Form1
Dim valor As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com11" ' Cambia el Puerto, es el puerto del Bluetooth, en mi caso el COM11
SerialPort1.BaudRate = 9600 ' Esta es la velocidad de transmisión, debe ser la misma en los programas y en el Bluetooth
End Sub

Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs)
SerialPort1.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
Button1.Enabled = False
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Close()
Button1.Enabled = True
End Sub

Private Sub HScrollBar1_Scroll(sender As System.Object, e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll

valor = HScrollBar1.Value
Thread.Sleep(100) ' Pequeño tiempo de retardo
Label1.Text = valor
SerialPort1.Write(valor)

End Sub


End Class


_____________________________
- Código para el Arduino.

Vamos al IDE del Arduino y pegamos este programa. Cada programa del Arduino es conveniente que se guarde en una carpeta distinta. Lo guardamos con el nombre de arduino_VB_Bt_Scroll.ino

- El programa para el Arduino es más complicado que los vistos anteriormente. El puerto Serie del Arduino, recibe la información byte a byte. Debemos tomar estos bytes y unirlos en una cadena-string.
- En Internet puedes encontrar varios códigos que convierten la secuencia de caracteres a string.
- Luego debo convertir el string a número, ya que la instrucción; analogWrite(9, valor.toInt()); requiere valores numéricos.

arduino_VB_Bt_Scroll.ino

// Juan Antonio Villalpando
// juana1991@yahoo.com

char tabla[4];
String valor;

void setup() {
Serial.begin(9600);
Serial.flush(); // Limpia el buffer
}

void loop(){

if( leeCadena() ) {
Serial.println(tabla); // para verlo en el Serial Monitor
valor = tabla; // de tabla a cadena
analogWrite(9, valor.toInt()); // el string a número entero
}

}

// Función leeCadena

uint8_t leeCadena()
{
if(Serial.available()) {
delay(10);
memset( tabla, 0, 4 ); // Pone cada elemento de la tabla a 0
int i = 0;
while(Serial.available() && i<4 ) {
tabla[i] = Serial.read();
i++;
}
return i;
}
}

 

- NOTA:
Es posible que si está conectado el módulo Bluetooth, el programa no se carge en el Ardunio, así que cuando vayamos a cargar el programa al Arduino, quitamos los cables de la conexión de alimentación del módulo Bluetooth, cargamos el programa (Done uploading) y luego volvemos a conectar los cables de alimentación del módulo Bluetooth.

- Ya tenemos el programa cargado en el Arduino.

Para ver los números en el Serial Monitor. Primeros lanzamos el Visual Basic, abrimos el Puerto.
Y luego en el IDE del Arduino, abrimos el Serial Monitor
(Tools / Serial Monitor)

- Otro ejemplo de código...

arduino_VB_Bt_Scroll.pde
(Este código es más simple pero tiene errores)
(Este código no es necesario, solo está para hacer pruebas)

// Juan Antonio Villalpando
// juana1991@yahoo.com

String readString;
int valor;

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

void loop() {

while (Serial.available()) {
delay(10);
if (Serial.available() >0) {
char c = Serial.read();
readString += c;}
}

if (readString.length() >0) {
Serial.println(readString);
valor= readString.toInt();
analogWrite(9, valor );

readString="";
}
}

 

 

- NOTA:
Es posible que si está conectado el módulo Bluetooth, el programa no se carge en el Ardunio, así que cuando vayamos a cargar el programa al Arduino, quitamos los cables de la conexión de alimentación del módulo Bluetooth, cargamos el programa (Done uploading) y luego volvemos a conectar los cables de alimentación del módulo Bluetooth.

- Ya tenemos el programa cargado en el Arduino.

- Para verlo en el Serial Monitor, primero arrancamos y el programa en Visual Basic, pulsamos el botón de Abrir puerto y luego en el IDE del Arduino abrimos el Serial Monitor (Tools / Serial Monitor)

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________
___________________________________________________

7.- Imaginamos que tenemos dos motores (izquierdo y derecho) y que los queremos gobernar mediante dos scrolles y por Bluetooth.

- Para hacer las pruebas no es necesario motores.
Simplemente monta un diodo LED con su resistencia de protección de unos 470 óhmios y conéctala al terminal 9~ como ya lo tenias en el montaje anterior.
Ahora toma otro diodo LED con su resistencia de protección y conéctalo al terminal 10~

Los diodos LED van a simular los motores. Al mover los Scrolles, cambiamos independientemente la luminosidad de los dos LED.


Aquí tenemos los dos LED. Los cables negros van a GND. Un cable amarillo va a 9~ , el otro cable amarillo va a 10~
Al mover los Scroll en Visual Basic, los LED cambiaran su luminosidad independientemente.
Los LED quieren simular el motor izquierdo y el motor derecho. Al cambiar la tensión cambiaría la velocidad de los motores.

 

_____________________________
- Código para el Visual Basic.

Utilizo dos HScrollBar. Añado el carácter "i" o el "d" al principio del Value, de tal manera que el valor enviado por Bluetooth tendrá la forma "i147" o bien "d214"

Visual Basic 2010


El HScrollBar1 y HScrollBar2
Minimun: 0
Maximum: 255
LargeChange: 1


' Juan Antonio Villalpando
' juana1991@yahoo.com

Imports System.IO.Ports
Imports System.Threading

Public Class Form1
Dim valor As String

Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs)
SerialPort1.Close()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Close()
SerialPort1.PortName = "com11" ' Cambia el Puerto, es el puerto del Bluetooth, en mi caso el COM11
SerialPort1.BaudRate = 9600 ' Esta es la velocidad de transmisión, debe ser la misma en los programas y en el Bluetooth
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SerialPort1.Open()
Button1.Enabled = False
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SerialPort1.Close()
Button1.Enabled = True
End Sub

Private Sub HScrollBar1_Scroll(sender As System.Object, e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll

valor = "i" & HScrollBar1.Value
Thread.Sleep(100)
Label1.Text = valor
SerialPort1.Write(valor)

End Sub

Private Sub HScrollBar2_Scroll(sender As System.Object, e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar2.Scroll

valor = "d" & HScrollBar2.Value
Thread.Sleep(100)
Label2.Text = valor
SerialPort1.Write(valor)

End Sub


End Class


_____________________________
- Código para el Arduino.

Vamos al IDE del Arduino y pegamos este programa. Cada programa del Arduino es conveniente que se guarde en una carpeta distinta. Lo guardamos con el nombre de arduino_VB_Bt_Scroll_dos.ino

- El Arduino recibe por Bluetooth un mensaje de la forma "i147" o bien "d214", lo va recibiendo caracter a caracter y lo va almacenando en la tabla serlnStr, cuando ha recibido los caracteres los asigna a la cadena valor. La variable motor toma el primer caracter la "i" o la "d", según sea una u otra, manda un nivel al terminas del Arduino 9 o 10 (son terminales PWM). El número enviado son los caracteres a la derecha de la "i" o la "d".
- La instrucción analogWrite(9, valor.toInt()); escribe un número en el terminal 9.
valor.toInt convierte cadena a número, ya que analogWrite contiene dos números.

arduino_VB_Bt_Scroll_dos.ino

// Juan Antonio Villalpando
// juana1991@yahoo.com

char tabla[4];
String valor;
String motor;

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

void loop(){
if( leeCadena() ) {
Serial.println(tabla);
valor = tabla; // valor recibido, ejemplo "d158"
motor = valor.substring(0, 1); // Toma el primer caracter "i" o "d"

valor = valor.substring(1, 4); // Tomo el número 158
Serial.println(valor);

if (motor == 'i'){
Serial.println("izquierda");
analogWrite(9, valor.toInt()); // PWM Cadena convertida a Entero .toInt

}
if (motor == 'd'){
Serial.println("derecha");
analogWrite(10, valor.toInt());
}

}
}

// Función leeCadena

uint8_t leeCadena()
{
if(Serial.available()) {
delay(10);
memset( tabla, 0, 4 ); // Pone cada elemento de la tabla a 0
int i = 0;
while(Serial.available() && i<4 ) {
tabla[i] = Serial.read();
i++;
}
return i;
}
}

 

- NOTA:
Es posible que si está conectado el módulo Bluetooth, el programa no se carge en el Ardunio, así que cuando vayamos a cargar el programa al Arduino, quitamos los cables de la conexión de alimentación del módulo Bluetooth, cargamos el programa (Done uploading) y luego volvemos a conectar los cables de alimentación del módulo Bluetooth.

- Ya tenemos el programa cargado en el Arduino.

 

Para ver los números en el Serial Monitor. Primeros lanzamos el Visual Basic, abrimos el Puerto.
Y luego en el IDE del Arduino, abrimos el Serial Monitor
(Tools / Serial Monitor)

- Si quieres controlar potencia puedes sacar la salida a un circuito como este: http://213.97.130.124/modpot/modpot.htm

__________________________________

 

- 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