lunes, 26 de noviembre de 2018

Sensor de parking con JSN-SR04T y display de 4 dígitos TM1637


Hoy os traigo una versión mejorada del sensor de parking que ya os mostré en un POST anterior, pero esta vez para obtener la distancia vamos a utilizar un sensor ultrasónico impermeable JSN-SR04T. Además vamos a trabajar con dos librerías diferentes, “NewPing.h” y “Ultrasonic.h”, que se pueden descargar desde este enlace y de esta manera obtener dos códigos idénticamente funcionales.

Sensor ultrasónico impermeable JSN-SR04T

El sensor JSN-SR04T es un sensor de distancia que utiliza ultrasonidos (sonar) para determinar la distancia a la que se encuentra de un objeto. Destaca por su pequeño tamaño, bajo consumo energético, buena precisión y especialmente por su resistencia al agua. Contiene toda la electrónica necesaria para realizar la medición. A continuación os dejo una tabla con las especificaciones técnicas más relevantes de este sensor.
Especificaciones técnicas sensor ultrasónico impermeable JSN-SR04T

El sensor tiene un funcionamiento muy simple, es decir, emite un pulso de sonido (TRIG), después mide la anchura del pulso de retorno (ECHO), y por último se calcula la distancia a partir de las diferencias de tiempos entre el TRIG y ECHO, aunque no debemos de preocuparnos de esto en exceso puesto que las dos librerías anteriormente mencionadas se van a encargar directamente de esta tarea, facilitándonos en gran medida el uso del sensor ultrasónico impermeable JSN-SR04T. El funcionamiento no se ve afectado por la luz solar o material negro, aunque los materiales blandos acústicamente como tela o lana pueden ser difíciles de detectar. Es perfecto para aplicaciones donde el sensor va a estar expuesto a la intemperie, como es nuestro caso.

Conexiones del sensor ultrasónico impermeable JSN-SR04T

Cualquiera de los dos códigos que os dejo más abajo, funcionan de una manera idéntica. El sistema va a activar un "Zumbador" cuando el objeto se encuentra a una distancia inferior o igual a la distancia configurada dentro de la variable “distancia_Alarma", que en nuestro caso es de 30 cm. Cuando la distancia supere dicho valor (distancia_Alarma), el zumbador permanecerá desactivado. El sistema está dotado de un pulsador y de un LED indicador para controlar el modo parking, es decir, que la funcionalidad del modo parking se active únicamente cuando nosotros lo necesitemos, además de encenderse un LED indicador de modo. Además, se incluye un display de 4 dígitos y 7 segmentos con controlador TM1637 que nos va a mostrar la distancia en centímetros cuando el modo parking está activado y en caso contrario nos muestra "----" a través del display. Es necesario revisar la cabecera del código para conocer la conexión de los componentes auxiliares del sistema como son el LED indicador y el Pulsador de modo.


Lista de Materiales:

  • Arduino UNO Rev.3.
  • Cable USB tipo A-B.
  • Sensor ultrasónico impermeable JSN-SR04T.
  • Display de 4 dígitos y 7 segmentos con controlador TM1637.
  • LED 3mm (De cualquier color).
  • Resistencia de 220Ω.
  • Buzzer activo (Zumbador).
  • Pulsador.
  • Protoboard.
  • Cables de conexión.


Programa:

                    Programa con librería “NewPing.h”





                    Programa con librería “Ultrasonic.h”



viernes, 23 de noviembre de 2018

Display de 4 dígitos y 7 segmentos con controlador TM1637


Hoy os traigo un fantástico POST en el que os voy a enseñar como poder visualizar datos a través de un display de 4 dígitos y 7 segmentos con controlador TM1637 utilizando la librería “TM1637.h”, que se encuentra dentro de la carpeta “TM1637_DigitalTube” que se puede descargar del siguiente enlace, dotada de los recursos y funciones suficientes para simplificar nuestro trabajo de manera importante y poder así mostrar a través del display números tanto positivos como negativos y algunas letras como A, b, C, d, E y F. En el mercado existen displays de este tipo en diferentes colores (blanco, azul, verde, rojo y amarillo), por un precio entorno a los 2-3€.

Display de 4 dígitos y 7 segmentos con controlador TM1637

Un display de 7 segmentos de 4 dígitos tradicional tiene 12 pines. Este módulo incluye un chip TM1637 para reducir a 2 los pines para controlar los 4 dígitos. Esto quiere decir que, con solo 2 pines digitales se controla tanto el valor mostrado en el display como la iluminación del mismo.

Este display 7 segmentos tiene dos hilos para alimentación, GND y VCC (que puede ser 5V o 3.3V), y dos pines de datos (CLK y DIO) que podemos conectar a los pines digitales de Arduino que queramos. En este POST vamos a conectar el display según se muestra a continuación:

Tabla de conexiones display de 4 dígitos TM1637

Lista de Materiales:

  •          Arduino UNO Rev.3.
  •          Cable USB tipo A-B.
  •          Un display de 4 dígitos y 7 segmentos con controlador TM1637.
  •          Cables de conexión.


Programa:

Video:

miércoles, 19 de septiembre de 2018

Medida de la humedad del terreno con sensor de humedad capacitivo


Después de estar un largo periodo sin publicar nada en el BLOG, ya que he estado realizando proyectos mucho más ambiciosos que ya iré publicando, hoy os traigo un POST donde voy a explicar cómo utilizar un sensor de humedad capacitivo para medir el porcentaje de humedad relativa de un terreno a tiempo real.  La ventaja de este tipo de sensores frente a otros modelos como los “resistivos”, es que aguantan la corrosión de manera eficiente al no tener partes metálicas en contacto directo con la humedad del terreno, con lo que evitamos falsas medidas  o incluso el deterioro del sensor a lo largo del tiempo.  El código utilizado lo podemos modificar para activar bombas o electroválvulas que den paso al riego de un terreno dependiendo de la humedad relativa que este tenga en el momento deseado por ejemplo.

Sensor de humedad capacitivo

Para comenzar, tenemos que alimentar nuestro sensor de humedad directamente desde el Arduino UNO, es decir,  debemos de conectar el pin “VCC” del sensor de humedad al pin “+5V” de Arduino, y por otro lado, el pin “GND” del sensor al pin “GND” de Arduino. Por último, tenemos que conectar el pin “AOUT” del sensor de humedad a uno de los pines analógicos de nuestro Arduino UNO para poder realizar las oportunas mediciones de humedad, que en este caso corresponde con el pin analógico “A0”. En la siguiente tabla os muestro la correspondencia de pines:

Tabla de conexiones

Como la salida máxima del sensor de humedad capacitivo son 3VDC, el rango de valores teóricos que podemos obtener con la lectura del pin analógico “A0” se sitúa entre 0 y 615, puesto que el ADC interno del Arduino UNO tiene una resolución de 10 bits y utiliza una referencia interna de 5VDC, obteniéndose un rango entre 0 y 1024 como ya deberíamos de conocer. A continuación se muestran las principales características de este sensor:


Características del sensor de humedad capacitivo


Como este tipo de sensor va a estar en contacto permanente con el terreno, siempre va a tener una humedad relativa en su superficie y en sus componentes electrónicos. Para que dicha humedad no afecte al comportamiento del dispositivo debemos de respetar unos límites de profundidad a la hora de instalar el sensor en el terreno, que a continuación os muestro:


Instalación del sensor de humedad capacitivo


Como la fabricación de estos sensores de humedad capacitivos no es una ciencia exacta, ni mucho menos si nos encontramos con múltiples fabricantes de este tipo de dispositivos, debemos de calibrar mediante programación el dispositivo antes de poder utilizar el programa de adquisición de la humedad relativa del terreno, es decir, una vez realizadas las oportunas conexiones y mediante el programa “Calibracion_sensor_humedad_capacitivo.ino” vamos a obtener los valores de lectura del pin analógico “A0” cuando el sensor está totalmente seco (Valor_Sensor_Aire) y cuando el sensor está sumergido en agua (Valor_Sensor_Agua), siendo importante realizar varias lecturas de la salida analógica del sensor de humedad capacitivo a través del pin analógico "A0", para cada uno de los casos límite, hasta que el valor se estabilice. Por último, hay que modificar dichos valores límite dentro del programa “Sensor_humedad_capacitivo_final.ino” para poder medir correctamente el porcentaje de humedad relativa que hay en un terreno a tiempo real.




Lista de Materiales:

  •         Arduino UNO Rev.3.
  •         Cable USB tipo A-B.
  •         Capacitive Soil Moisure Sensor V1.2 (Sensor de humedad capacitivo).
  •         Cables de conexión.


Código del programa:

  •           Calibracion_sensor_humedad_capacitivo







  •           Sensor_humedad_capacitivo_final









Video:




lunes, 12 de junio de 2017

Programación de un Arduino UNO a través de ICSP


En este POST voy a explicar cómo programar un Arduino UNO a través de ICSP, que no es más que un método de programación serie en circuito que se realiza mediante un conector de 6 pines (MOSI, MISO, SCK, RESET, VCC y GND ) que nuestra placa Arduino tiene para tal fin, teniendo acceso a la memoria de programa (Flash) del microcontrolador AVR (Atmega328) y poderle grabar directamente desde el PC el Bootloader, que es un gestor de arranque interno necesario para que nuestro Arduino se pueda comunicar correctamente con el IDE, o cargarle cualquiera de los programas (Sketchs) que nos interesen, sin necesidad de utilizar el puerto USB de nuestro Arduino.


Conector ICSP en un Arduino UNO

Para poder hacer uso de este método de programación va a ser necesario un hardware adicional denominado programador. En nuestro caso vamos a utilizar como programador ICSP un Arduino UNO, un USBTinty y un USBasp, aunque también existan otros métodos alternativos a los citados.
 

1º MÉTODO ICSP: Arduino UNO como programador ICSP.

Para este método de programación ICSP vamos a necesitar inicialmente un Arduino UNO configurado como programador ICSP. Para ello le debemos de cargarle un “Sketch” especial que viene en el IDE de Arduino, dirigiéndonos hacia el menú “Archivo à Ejemplos à ArduinoISP”, como se muestra en la siguiente imagen:


Ruta del programa “ArduinoISP” que incluye el IDE de Arduino

A continuación se nos abrirá el programa que debemos de cargar en el Arduino UNO que vamos a utilizar como programador ICSP, como si de cualquier programa se tratara, es decir, conectando el Arduino UNO al PC a través del puerto USB, seleccionando la placa Arduino UNO y el puerto COM en el que conectamos el Arduino UNO, y por último, presionando el icono subir (Ctrl + U).
 

Programa “ArduinoISP” que incluye el IDE de Arduino

Una vez cargado el programa correctamente en el Arduino UNO que vamos a utilizar como programador ICSP, debemos de realizar la conexión ICSP entre los dos Arduinos como se muestra en la siguiente tabla:

Conexiones para la programación ICSP entre los dos Arduinos UNO

Una vez conectados los dos Arduinos mediante ICSP, conectamos el Arduino UNO programador ICSP al USB de nuestro PC y abrimos el IDE de Arduino para cargar el Bootloader o el programa que queramos al otro Arduino a través de él. Para ello debemos de tener configurado el IDE de Arduino como se muestra a continuación, teniendo muy presente que tenemos que seleccionar el puerto COM en el que tengamos conectado nuestro Arduino programador ICSP.

Configuración del IDE de Arduino para programación con Arduino ICSP

Para finalizar debemos de abrir el programa que deseamos cargar en nuestro Arduino y dirigirnos hacia el menú ”Archivo à Subir Usando Programador” para poder subir el programa correctamente a la placa. Si deseamos cargar el “Bootloader” en la placa, simplemente pulsamos la opción “Quemar Bootloader” en el menú de Herramientas.


Menú ”Archivo” del IDE de Arduino



Lista de Materiales:


·         2 Arduino UNO Rev.3.

·         IDE 1.6.4 de Arduino (vale cualquier otra versión).

·         Cable USB tipo A-B.

·         Cables de conexiones.

 

2º MÉTODO ICSP: Programador ICSP “USBTinty”

Para poder utilizar este método de programación ICSP vamos a necesitar un programador ICSP denominado comercialmente como “USBTinty”.

Programador ICSP “USBTiny”

Lo primero que tendremos que hacer es conectarlo al puerto USB de nuestro PC y posteriormente cargarle los driver como si de cualquier otro HARDWARE se tratase, es decir, entrando en el administrador de dispositivos si estamos trabajando con un sistema operativo Windows. En el siguiente enlace podéis obtener los drivers actualizados.

Una vez que nuestro PC haya reconocido y configurado para su uso el programador “USBTinty”, tendremos que conectar el bus de 6 pines que trae el programador a nuestro Arduino como se muestra a continuación y no de cualquier otra manera, aunque podemos realizar la conexión ICSP entre el programador y el Arduino “pin a pin” siempre que respetemos el orden de conexiones ICSP que el “USBTinty” trae serigrafiado en su parte posterior.

Conexión entre el “USBTinty” y nuestro Arduino UNO

A continuación tenemos que conectar el “USBTiny” al puerto USB de nuestro PC y abrir el IDE de Arduino para configurarlo como se muestra en la siguiente imagen.

Configuración del IDE de Arduino para programación ICSP con “USBTiny”


Como podemos observar,  tenemos que seleccionar el puerto COM donde está conectado el USBTiny, el tipo de placa a programar, que en nuestro caso es un Arduino UNO y  además debemos de seleccionar el USBTinyISP como programador. Para quemar el Bootloader, que es el Firmware de arranque de la placa, simplemente presionaríamos la opción realizándose el proceso automáticamente.
Por último, para cargar un programa a la placa a través del USBTiny, presionaríamos la opción “Subir usando Programador” del menú “Archivo” del IDE de la misma manera que lo hemos hecho para el primer método ICSP.

 

Lista de Materiales:


·         Arduino UNO Rev.3.

·         Programador ICSP “USBTinty”.

·         Drivers “USBTinty”.

·         IDE 1.6.4 de Arduino (vale cualquier otra versión).

·         Cable USB tipo A-B.

·         Cables de conexiones (Cable de 6 pines opcional)

 

3º MÉTODO ICSP: Programador ICSP “USBasp”

Para poder trabajar con este último método de programación ICSP vamos a necesitar un programador ICSP llamado “USBasp”.

Programador ICSP “USBasp”

Antes de comenzar os tengo que avisar de que este método es el más tedioso y complicado de configurar por lo que no os lo recomiendo si podemos utilizar alguno de los dos anteriores, puesto que además de instalar los drivers correspondientes es necesario actualizar el firmware del “USBasp” para que pueda ser reconocido por el IDE de Arduino. Para ello vamos a seguir una serie de pasos que a continuación os detallo.
Para comenzar vamos a conectar el “USBasp” a nuestro PC a través del puerto USB para que lo reconozca y podamos instalar los drivers correspondientes como si de cualquier otro dispositivo “Hardware” se tratara. En este enlace os dejo los drivers actualizados y funcionando correctamente.
Una vez que tengamos los drivers instalados, vamos a pasar a actualizar el firmware del “USBasp”, para ello, vamos a necesitar un Arduino UNO configurado como programador ICSP, como os he explicado en el primer método de este POST, además de tener instalado el software “AVRDUDESS 2.4” que podéis descargar desde aquí. Antes de continuar con la conexión entre el “USBasp” y el Arduino UNO configurado como programador ICSP, debemos de abrir el “USBasp” y puentear mediante un Jumper o cablecito los dos orificios que trae en su parte posterior, para que pueda ser programado (una vez programado hay que retirarlo para que “USBasp” funcione correctamente).

Jumper de programación en el “USBasp”

Las conexiones a realizar entre el Arduino UNO configurado como programador ICSP y el “USBasp” son las que se muestran en la siguiente tabla:
 
Tabla de conexiones entre el Arduino Uno configurado como programador ICSP y el USBasp
 
 
 
Configuración de los pines en el programador “USBasp”
 
Por último, una vez realizadas las oportunas conexiones, vamos a descargar de aquí  el nuevo firmware para poder cargárselo al “USBasp” a través del software “AVRDUDESS 2.4” que hemos instalado anteriormente, para ello, una vez abierto el software tenemos que realizar las siguientes operaciones: 

A.      Programador à Arduino. 

B.      Atmega8 MCU (suponiendo que el USBasp tiene un atmega8). 

C.      Puerto COM à Elegimos el puerto donde está conectado el Arduino Uno configurado como programador ICSP.  

D.     Velocidad en baudios de la comunicación à19200.  

E.      Seleccionamos el archivo firmware que hemos descargado anteriormente. 

F.       Presionar el botón “Program!”.



 
Configuración del software “AVRDUDESS 2.4”



Una vez actualizado el “USBasp” ya podrá ser reconocido por el IDE de Arduino para poder programar un Arduino Uno a través de él. Para ello debemos de conectar los pines ICSP del Arduino a programar a los pines del “USBasp”, respetando las conexiones “pin a pin”, para posteriormente conectar el “USBasp” al puerto USB de nuestro PC,  abrir el IDE de Arduino y configurarlo como a continuación se muestra.
 
Configuración del IDE de Arduino para programación ICSP con “USBasp”


Para ello abrimos el programa que queremos cargar en el Arduino UNO, seleccionamos la placa Arduino UNO y el puerto “COM” donde conectamos el “USBasp”, y por último, tenemos que seleccionar el “USBasp” como programador. Si queremos “Quemar el Bootloader” simplemente pulsaríamos en la opción y se realizaría automáticamente en pocos segundos. Para cargar el programa nos tenemos que ir al menú “Archivo à Subir Usando Programador” como se ha venido haciendo en los métodos ICSP anteriormente explicados.




Lista de Materiales:



·         Arduino UNO Rev.3.

·         Programador ICSP “USBasp”.

·         Drivers “USBasp”.

·         IDE 1.6.4 de Arduino (vale cualquier otra versión).

·         Software “AVRDUDESS 2.4”.

·         Firmware “USBasp”.

·         Cable USB tipo A-B.

·         Cables de conexiones (Cable de 10 pines opcional).

 

miércoles, 22 de febrero de 2017

Composición de colores RGB con potenciómetros a través de Bluetooth


Con este POST vamos a ser capaces de realizar la composición de cualquier color en un LED RGB mediante 3 potenciómetros, uno para cada color (Rojo, Verde y Azul), tal y como se analizó en un POST anterior, pero esta vez, lo haremos a través de comunicación bluetooth entre dos Arduinos, es decir, en vez de conectar tanto el LED RGB como los tres potenciómetros de control del color RGB al mismo Arduino, conectaremos el LED RGB al “Arduino Esclavo”, que va a ser el encargado de recibir a través de bluetooth los valores R, G y B necesarios para componer el color, además de aplicárselos al LED RGB para que los ejecute,  y por otra parte conectaremos los tres potenciómetros al “Arduino Maestro” que va a ser el encargado de leer el valor analógico de los mismos y de transformarlos para poder enviarlos a través de bluetooth hacia el “Arduino Esclavo”.
 
  Comunicación Bluetooth “Maestro-Esclavo” entre dos Arduinos

Para poder realizar la comunicación bluetooth entre los dos Arduinos, necesitaremos conectar un módulo bluetooth HC-06 al “Arduino Esclavo” para que pueda recibir los valores R, G y B de la composición del color y además necesitaremos conectar un módulo bluetooth HC-05 al “Arduino Maestro” configurándolo como maestro para que pueda enviar los valores R, G y B a través de bluetooth. Debemos de tener en cuenta que para que ambos Arduinos se sincronicen vía bluetooth deben de tener configurado mediante “comandos AT” el mismo pin de conexión, que en mi caso es “1234” en ambos Arduinos y también la misma velocidad de transmisión (os recomiendo 38400 Baudios para no tener que modificar los programas que cargamos en los Arduinos),  para ello,  tenemos el siguiente POST, donde se explica con detenimiento cómo configurar estos módulos bluetooth con éxito.

  Tabla de conexiones

Cabe aclarar que tanto la masa (GND) como la alimentación (VCC) de los módulos bluetooth HC-05 y HC-06 van conectadas respectivamente a los pines “GND” y “+5V” de Arduino. Los potenciómetros lineales de 10KΩ tienen un mando de control  y tres terminales de conexión que denominaremos P1, P2 y P3, donde P2 es el terminal central del potenciómetro. Como necesitamos tres potenciómetros en este proyecto, vamos a utilizar la matriz de enteros “const int Pot[3] = {0, 1, 2}” para definir a que pines analógicos de Arduino van a ir conectados los terminales centrales de los potenciómetros para poder realizar la lectura de sus valores, lo que significa que el terminal central del potenciómetro que regula el color rojo del LED RGB (P2_Pot[0]) va conectado a la entrada analógica “A0” de Arduino, el que regula el color verde (P2_Pot[1]) le conectaremos a la entrada analógica “A1” y el que regula el color azul (P2_Pot[2]) le conectaremos a la entrada analógica “A2”. Los otros dos terminales, P1 y P3, de cada uno de los tres potenciómetros van conectados respectivamente a los pines +5V y GND de Arduino. Por último, tengo que explicar, que el módulo RGB consta de cuatro pines de conexión, tres de ellos para los valores de entrada R, G y B que van conectados a los pines digitales 9, 10 y 11 respectivamente, y el restante que va conectado al pin “GND” de Arduino.
Para finalizar tengo añadir que para que todo esto funcione correctamente simplemente debemos de realizar correctamente la conexión de todos los componentes, a la vez que cargar el código correspondiente en cada uno de los Arduinos para que se comporten de manera adecuada. Una vez realizado esto, debemos de tener alimentados los dos Arduinos y esperar a que sincronicen los módulos bluetooth entre sí para comenzar a operar. Esto es un proceso automático y no es necesario realizar ninguna tarea adicional para que ocurra, sabiendo que están sincronizados cuando el LED de conexión de los módulos bluetooth HC-06 y HC-05 deje de parpadear para permanecer en un estado fijo. A partir de aquí podremos ir moviendo el mando de control de los 3 potenciómetros (R, G y B) para ir componiendo los colores en el LED RGB. Si abrimos el monitor serie del “Arduino Maestro” cuando lo tenemos conectado al PC a través del cable USB, podremos ver el valor de R, G y B (de 0 a 255) que estamos enviando a través de Bluetooth en cada momento cuando movemos los mandos de los tres potenciómetros.

Monitor serie


Lista de Materiales:


·         Arduino UNO Rev.3.

·         Cable USB tipo A-B.

·         Módulo Bluetooth HC-05 (Maestro).

·         Módulo Bluetooth HC-06 (Esclavo).

·         LED RGB de  5mm (cátodo común).

·         3 Resistencias de 220Ω.

·         3 Potenciómetros lineales de 10KΩ.

·         Protoboard.

·         Cables de conexión.

NOTA: Si utilizamos un módulo RGB, no nos hace falta utilizar ni el LED RGB ni las resistencias, puesto que ya viene todo integrado en una pequeña placa.
 

Código del programa:

·         Arduino Esclavo
 

 
 
 
·         Arduino Maestro
 

 
 
  
Video: