Camilo Vanegas / Mbed 2 deprecated Programa_Sensor_Buzzer

Dependencies:   mbed

AVANCE DE PROYECTO SENSOR TCS3200 Y BUZ

A continuación, se hará una pequeña muestra de la primera parte del proyecto robot detector de colores operado por voz.

Para la creación del primer avance se necesita:

• Tarjeta STM32L476

• Plataforma virtual Mbed, https://www.mbed.com/en/

• Software Cool term (Permite crear una interfaz para recibir y enviar telecomandos)

• Jumpers

• Sensor de color TCS3200

• Buzzer

MANUAL DEL USUARIO

RECONOCIMIENTO DE COLORES Y GENERACIÓN DE TONOS

La programación que se realizó reconoce colores determinados (Rojo, azul, verde y amarillo) por medio del sensor de color TSC3200 que se encargara de identificar algún color devolver la traducción al CoolTerm, y por medio de un buzzer se escuchara un sonido ya programado (DO, RE, MI, FA, SOL) con una frecuencia especifica en el tiempo seleccionado por el usuario.

A continuación, encontrará la descripción de los componentes utilizados para la ejecución de las funciones del código.

STM32L476

La placa STM32 Núcleo proporciona una forma asequible y flexible para que los usuarios prueben nuevas ideas y construyan prototipos con cualquier línea de microcontrolador STM32, eligiendo entre las diversas combinaciones de rendimiento, consumo de energía y características. La tarjeta tiene unas especificaciones básicas que debes de tener en cuenta

• Habilitado para mbed (http://mbed.org)

• Alimentación placa Flexible

o VBUS USB o fuente externa (3,3 V, 5 V, 7-12 V)

o Punto de Acceso para gestión de potencia

• Tres LEDs

o Comunicación USB (LD1) LED de usuario (LD2) de LED (LD3)

• Dos pulsadores: usuario y reinicio

• Capacidad de reenumeración USB: tres interfaces diferentes compatibles con USB

o Puerto Com Virtual

o Almacenamiento en masa

o Puerto de depuración

/media/uploads/cami27/a20.png /media/uploads/cami27/a16.png

Como conectar la tarjeta STM32L476:

La tarjeta trae un puerto mini USB, que se conecta por medio del cable al puerto USB del computador donde se realizará la programación, de esta manera la tarjeta estará conectada. En el momento que se compila un nuevo programa se dará cuenta que uno de los led de la tarjeta titila varias veces indicando el proceso de compilado (Ver compilación en la descripción de MBED).

SENSOR DE COLOR TCS3200

• Alta resolución de conversión de luz a frecuencia.

• Frecuencia de salida Programable en color y escala completa.

• Se comunica directamente con un microcontrolador.

• Voltaje de funcionamiento: 2.7-5.5 V.

• Rango de error típicamente de 0,2% a 50 kHz.

• Coeficiente de temperatura 200 ppm/°C .

PRINCIPIO DE FUNCIONAMIENTO

/media/uploads/cami27/a17.png

El TCS3200 va detectar colores rojo, verde, azul y amarillo. en el monitor serial se mostrara la cantidad que color es de acuerdo a los rangos que definimos, estos deben ser previamente analizados desde el datasheet para poder ser definidos.

FUNCION DE TERMINALES

/media/uploads/cami27/a22.png

OPCIONES

/media/uploads/cami27/a23.png

COOLTERM

Es una sencilla aplicación que permite tener una terminal para los puertos serie, su menú de configuración está muy completo, permitiendo elegir desde una lista los puertos disponibles y seleccionar su velocidad y demás parámetros; despliega los datos recibidos tanto en ascii como en hexadecimal. Sin duda una gran aplicación para los que hacemos uso de este protocolo constantemente para conexión del ordenador con microcontroladores, módulos USB-serial, GPS, controladores de servos, etc. Lo mejor de todo está bajo una licencia freeware y es multiplataforma. Con CoolTerm se lograra generar las señales necesarias para que el programa ejecute las funciones.

Para obtener coolterm debemos ingresar a la siguiente pagina http://freeware.the-meiers.org/

/media/uploads/cami27/a9.png

La descarga se realiza de acuerdo al sistema operativo de la computadora en donde se trabaje.

/media/uploads/cami27/a10.png

El Coolterm se descarga en una carpeta comprimida en donde se debe seleccionar el ejecutable.

/media/uploads/cami27/a11.png

Seleccionar ejecutar.

/media/uploads/cami27/a12.png

Seleccionamos “Connect“

/media/uploads/cami27/a13.png

Por medio de este programa se envía la señal FE 01 para que se ejecute el programa

MANUAL TECNICO

Para la programación de la tarjeta STM32L476 se utilizo MBED, esta es una plataforma y sistema operativo para dispositivos conectados a Internet basados en microcontroladores ARM Cortex-M de 32 bits. La principal ventaja es que puede compilarse en la nube, es decir desde Internet. Mbed se desarrolló pensando en IoT – Internet of Things – El Internet de las Cosas. Además está enfocado a la programación de sistemas embebidos basados en arquitecturas ARM. Por ejemplo, existen más de 100 tarjetas de desarrollo que se puede elegir. Todas ellas con arquitectura ARM. El compilador que usa mbed está en la “nube”. En otras palabras, se requiere de un explorador web como chrome, firefox o explorer para crear tus aplicaciones y programas.

¿COMO CREAR UN NUEVO PROYECTO EN MBED?

Para iniciar a crear el código se debe acceder a la pagina https://www.mbed.com/en/ en donde encontraran lo siguiente:

/media/uploads/cami27/a1.png

Damos click sobre el usuario de allí se despliega la siguiente pagina en donde seleccionamos Sing up

/media/uploads/cami27/a2.png

Registramos los datos para crear un usuario.

/media/uploads/cami27/a3.png

Una vez creado el usuario ingresamos a la plataforma

/media/uploads/cami27/a3.png

Ventana de inicio al programa, seleccione “compiler”

/media/uploads/cami27/a5.png

Se abrirá la ventana donde se debe seleccionar la tarjeta a utilizar que en este caso es la STM32L476

/media/uploads/cami27/a6.png

Seleccionar tarjeta

/media/uploads/cami27/a7.png

Al seleccionar la tarjeta se encontraran dos ventanas, la primera da una descripción general de la tarjeta y en la segunda se encuentra el “Pinout” de la misma.

/media/uploads/cami27/a8.png

Ahora ya esta listo para crear su codigo.

/media/uploads/cami27/a21.png

DIAGRAMA DE CONEXIÓN GENERAL

/media/uploads/cami27/a19.png

CODIGO

MAIN.CPP

• Llamar librarías

  1. include "mbed.h"
  2. include "scolor_TCS3200.h"

• Creación de variables

Command variable del Periferico serial

USBTX, USRX Pines de la tarjeta

Serial command(USBTX, USBRX);

• Periferico PWM

Variable mybuzzer

Pin de la tarjeta D9

PwmOut mybuzzer(D9);

S0, S1, S2, S3, OUT

• Pines a utilizar del sensor

scolor_TCS3200 scolor(PA_8, PB_10, PB_4, PB_5, PB_3);

Pines a utilizar de la tarjeta

• Definición de telecomandos

  1. define INITCMD 0xFE
  2. define INITELE 0xFE
  3. define CMD 0x01
  4. define DO 100
  5. define RE 150
  6. define MI 200
  7. define FA 250
  8. define SO 300

• Declaración de variable tipo uint

uint8_t tono; variable almacena la frecuencia del buzzer

uint8_t tiempo; varable almacena los tiempos del buzzer leer_datos()

uint8_t cmd;

• Definición de las funciones

void setup_uart();

void buzzer_on(uint8_t tono);

void leer_datos();

void leer_color();

• Programa principal

int main() {

setup_uart();

while(1){

leer_datos();

• Condicion para señal enviada desde coolterm, si dicha condición de igualación se cumple, la acción programada se ejecutará de lo contrario no.

if (cmd==CMD){

leer_color();

}

}

}

• Inicio de board y asignación de la velocidad de comunicación

void setup_uart(){

command.baud(115200);

}

• Función leer datos: se encarga de cargar el valor recibido a la variable cmd.

void leer_datos(){

cmd=command.getc();

}

• Función leer color: se encarga de cargar el valor leído por el sensor a cada una de las variables respecto al periodo. void leer_color(){

long red = scolor.ReadRed();

long green = scolor.ReadGreen();

long blue = scolor.ReadBlue();

long clear = scolor.ReadClear();

• Inicio de buzzer en 0

mybuzzer.write(0);

• Condicionales con respecto a la lectura del sensor en este caso rojo para ejecutar una acción.

if (red <=800) lee el rojo----

{

if (green>=1200 and green <=1500)

{

if (blue>=1200 and blue <=1500)

{

• Si la condición dicha se cumple, se visualiza |FE 01| y se enciende el buzzer con un tono DO definido al inicio del programa durante 4 segundos.

printf("|FE 01|\n");

mybuzzer.period_ms(DO);

mybuzzer.write(0.5);

wait_ms(4000);

mybuzzer.write(0);

} } }

• Condicionales con respecto a la lectura del sensor en este caso verde para ejecutar una acción.

if (red <=2700) lee el verde --------

{

if (green>=900 and green <=1500)

{

if (blue>=1400 and blue <=2000)

{

• Si la condición dicha se cumple, se visualiza |FE 03| y se enciende el buzzer con un tono RE definido al inicio del programa durante 4 segundos.

printf("|FE 03|\n");

mybuzzer.period_ms(RE);

mybuzzer.write(0.5);

wait_ms(4000);

mybuzzer.write(0);

}

}

}

• Condicionales con respecto a la lectura del sensor en este caso Azul para ejecutar una acción.

if (red<=2400) lee el azul--------

{

if (green>=800 and green <=1000)

{

if (blue>=600 and blue <=800)

{

• Si la condición dicha se cumple, se visualiza |FE 02| y se enciende el buzzer con un tono MI definido al inicio del programa durante 4 segundos.

printf("|FE 02|\n");

mybuzzer.period_ms(MI);

mybuzzer.write(0.5);

wait_ms(4000);

mybuzzer.write(0);

}

}

}

• Condicionales con respecto a la lectura del sensor en este caso Amarillo para ejecutar una acción.

if (red <=700) lee el amarillo--------

{

if (green>=500 and green <=700)

{

if (blue>=500 and blue <=1500)

{

• Si la condición dicha se cumple, se visualiza |FE 04| y se enciende el buzzer con un tono FA definido al inicio del programa durante 4 segundos.

printf("|FE 04|\n");

mybuzzer.period_ms(FA);

mybuzzer.write(0.5);

wait_ms(4000);

mybuzzer.write(0);

}

}

}

• Condicionales con respecto a la lectura del sensor en este caso de ser errada para ejecutar una acción.

if (red <=200) lectura errada--------

{

if (green <=300)

{

if (blue <=300)

{

• Si la condición dicha se cumple, se visualiza |FE 00| y se enciende el buzzer con un tono SO definido al inicio del programa durante 4 segundos.

printf("|FE 00|\n");

mybuzzer.period_ms(SO);

mybuzzer.write(0.5);

wait_ms(4000);

mybuzzer.write(0);

}

}

}

• Esta parte del programa se usa para visualizar las lecturas de las cuatro variables roja, verde, azul, amarillo y clear,

printf("RED: %5d GREEN: %5d BLUE: %5d CLEAR: %5d \n ", red, green, blue, clear);

}


All wikipages