lunes, 25 de enero de 2021

Arduino & Gambas. Sensores y Relé

 

En un post anterior publiqué una pequeña aplicación hecha en Gambas que recogía la temperatura del CPU y GPU y las enviaba a un Arduino Uno y esté, a su vez, las mostraba en un LCD de 16x2.

En esta ocasión se me ocurrió probar lo opuesto, recibir información desde sensores conectados al Arduino (aunque también se envían comandos desde la PC).

Tal como se ve en el video se trata de una aplicación que recibe información de sensores conectados a un Arduino (en este caso utilicé un Arduino Nano, pero se puede utilizar cualquiera). Los datos que recibe la aplicación son: temperatura, humedad (ambos recogidos a través de un sensor DHT11) y nivel de luz (recogido utilizando una fotorresistencia o LDR). También hay conectado al Arduino un relé que es controlado por la aplicación, el mismo enciende/apaga una lámpara, cuando es activado/desactivado.


El programa permite también la activación/desactivación automática del relé según la cantidad de luz que el usuario establezca como límite.

Un fotorresistor o fotorresistencia es un componente electrónico cuya resistencia se modifica, (normalmente disminuye) con el aumento de intensidad de luz incidente. (de Wikipedia)
Para realizar mediciones de luz con mayor grado de precisión se utilizan otros componentes.

En un principio la conexión entre el Arduino y la PC la realicé a través de un cable USB. Pero luego me pareció más interesante que la misma se hiciera vía bluetooth para así no depender de la conexión física entre ambos. Para esto utilice un módulo bluetooth HC-06.

Esto último no es necesario, tanto el programa como el sketch de Arduino funcionan sin problema sin el módulo BT, comunicando el Arduino con la PC vía cable USB.

El único elemento que al que debemos prestar atención es al puerto de conexión que especificamos en la aplicación:
Si la conexión se realiza vía USB, el puerto será algo así:

/dev/ttyUSB0 (“0” o el número que corresponda al puerto en uso)

En cambio, al utilizar el módulo bluetooth el puerto que usaremos será algo así:

/dev/rfcomm1 (“1” o el puerto serie disponible)

En cuanto al sketch en Arduino no hay que realizar ningún cambio se use o no un módulo BT, dado que en ambos casos el envío o recepción de datos se utiliza a través de Serial().

En este link: https://www.naylampmechatronics.com/blog/15_Configuraci%C3%B3n--del-m%C3%B3dulo-bluetooth-HC-06-usa.html pueden encontrar un tutorial muy sencillo para configurar el módulo BT si es que no lo han hecho ya.

En mi caso alimenté al Arduino a través del Pin VIN con una fuente que proporciona 5V a ambos canales de la breadboard; pero puede alimentarse como se haría comúnmente, a través del puerto USB.

Un paso necesario si se utiliza el módulo BT es el de habilitarlo como Puerto Serie (Serial Port) tras emparejarlo con la PC. Esto es lo que habilitará la conexión vía /dev/rfcomm en la aplicación.


 Las conexiones realizadas son tal y como se muestran en el esquema siguiente:

Componentes Arduino
DHT11 Pin D4
Fotorresistencia Pin A7
Relé Pin D9
BT HC-06 - Pin RX Pin TX
BT HC-06 - Pin TX Pin RX
Todos los GND GND
Todos los + o VCC Línea de 5V

Espero les haya interesado este post!
Si les gustó por favor dejen un comentario y difundan!

Como siempre les dejo el link al repositorio de Github en donde pueden descargar el código fuente de la aplicación junto con el instalador para Debian y derivados y sl sketch para Arduino.

Link: https://github.com/mcattani/sensores_rele_gambas

2 comentarios: