Sensor de flujo de agua

Llegó el turno del sensor de flujo de agua, otra pieza más del rompecabezas que estoy armando para mi módulo IOT de registro de consumo de agua en mi domicilio.

Sensor-de-flujo-de-agua-parametros-de-funcionamiento-ArduinoPrimero tuve que dar caza a un sensor de consumo de agua apropiado. Hay diversas tecnologías y métricas en el mercado de venta de sensores de “water flow“.

(Lamentablemente) opté por un sensor de flujo de agua de bajo costo, debido a que los verdaderamente fiables cuestan varios cientos de dólares (o más).

Adquirí en la tienda de amazon.com un “Water Flow Sensor” de la marca DIGITEN, que mide caudales de hasta 60 litros por minuto, con un pase de rosca de 3/4 de pulgada.

En su configuración final, este sensor irá colocado después de la válvula o llave automática de la que hablé en mi post anterior.

Por otra parte, es el sensor preferido por los entusiastas de Arduino y otros microcontroladores, por lo que hay una cantidad de ejemplos de uso.

¿ Cómo funciona este sensor de flujo de agua ?

sensor de flujo de agua adentroEl sensor de flujo de agua es muy similar al  contador de agua que coloca la compañía a la entrada de nuestro domicilio:

Dentro del sensor existe un eje con una serie de paletas, convenientemente colocadas en el medio del paso del agua, que girarán con la circulación del líquido.

En la parte superior del eje se produce la medición gracias a un sensor de “hall effect” que al girar y por medio de un imán,  cierra un circuito mandando impulsos al Arduino.

El sensor de flujo de agua tiene en su etiqueta superior una serie de datos, entre los cuales se incluye la presión de trabajo (menor a 1.2MPa), capacidad (1 a 6 litros por minuto) y coeficiente para calcular litros (se multiplica la cantidad de impulsos por 5.5 para obtener los litros por minuto).

Utilizando el sensor de flujo de agua en un proyecto Arduino

De los tres cables que salen del sensor de flujo de agua, dos se utilizan para alimentarlo:

Si bien dice funcionar con 5 volts, yo lo he conectado a la salida de 3.3v de mi ESP8266 y parece funcionar perfectamente.

El tercer cable se conecta a una pata digital del Arduino compatible que pueda funcionar con interrupciones.

//El sensor de flow de agua va al gpio5 (D1)
#define aguapin 5 </code>

//Variable que va a ir sumando impulsos
unsigned long aguacont=0;
//preparo timer cada 1 segundo
unsigned long mspasadosseg = 0;
const unsigned long millisxseg = 1000;

//Inicializo el WATER FLOW METER:
pinMode(aguapin, INPUT_PULLUP);
attachInterrupt(aguapin, agua, CHANGE);

void setup()
{
	Serial.begin(115200);
	//Inicializo el WATER FLOW METER:
	pinMode(aguapin, INPUT_PULLUP);
	attachInterrupt(aguapin, agua, CHANGE);
}

void loop()
{
	yield(); //para el ESP8266
	if ((millis() - mspasadosseg) &gt; millisxseg) //Si ya pasó un segundo ...
	{
		mspasadosseg = millis();
		Serial.println((String)aguacont);
	}
}

//Cada vez que el hall sensor del molinete del medidor de agua se activa
void agua()
{
	aguacont += 1;
}

 

La idea es activar una interrupción al inicio de nuestro código, para que llame a una función que contabilice cada impulso que el sensor de flujo de agua genere.

Evidentemente el código de arriba es básico y solamente sirve para ilustrar los rudimentos de funcionamiento. En futuros artículos entraremos a pulir este sensor de flujo de agua.

Conectar la radio RFM69 HCW al ESP8266

ESP8266-y-RFW69

Voy a documentar el proceso de conectar el módulo de radio RFM69 HCW a un microcontrolador ESP8266. La historia de fondo pueden leerla en este artículo anterior.

ESP8266-y-RFW69Al adquirir un RFM69, debes considerar las variantes que existen. En particular la variante HCW implica una alta potencia de transmisión (20dBm).

También debes considerar su frecuencia de trabajo: Para América corresponden los 915 Mhz. En Europa utilizan 434 Mhz.

Por último debes evaluar la compra del radio RFM69 solamente y lidiar luego con las soldaduras necesarias en tan pequeño circuito, o aprovechar los “Breakout Boards” como es el caso del producto de Sparkfun, que expanden el módulo RFM69 en una plaqueta un poquito más grande pero de muy fácil manejo.

Continuar leyendo “Conectar la radio RFM69 HCW al ESP8266”

ESP8266 y RFM69 HCW transceptor digital

RFM69-HCW-y-SPARKFUN-Breakout

Me he propuesto conectar el microcontrolador ESP8266 con el transceptor de datos digital RFM69 HCW.

RFM69-HCW-y-SPARKFUN-BreakoutEl RFM69 es un radio digital de bajo costo y muy buenas prestaciones que opera en diversas frecuencias (los mios funcionan en los 915mhz) y cuenta con una extensa documentación y librerías para los proyectos Arduino en Internet.

El RFM69 admite encriptación de los paquetes de datos por hardware, lo que es para muchos -como yo- algo muy atractivo y necesario.

Además cada radio tiene una identificación única, pudiendo coexistir hasta 255 radios en una misma red, y hasta 255 redes en un mismo espacio. Todo esto gestionado por el hardware del RFM69 y sus librerías.

El RFM69 se conecta a tu Arduino vía el interfaz SPI. Además le debes soldar una antena -cualquier cable, observando el largo correcto para la frecuencia de radio que adquieres, funcionará.

En mi caso utilicé un cable de 78mm soldado al terminal “A” de Antenna.

En la red encontrarás suficiente documentación para integrar estos radios a los módulos “oficiales” de Arduino.  Sin embargo, no es tan fácil encontrar información con respecto a los ESP8266.

De ahí mi interés de aprovechar y contarles la historia, por si necesitan hacer lo mismo.

Continuar leyendo “ESP8266 y RFM69 HCW transceptor digital”

Conectar una pantalla LCD a Arduino

Conectar pantalla LCD a tu proyecto Arduino

Las pantallas LCD suelen ser de muy bajo costo y por lo tanto ideales para su inclusión en nuestros proyectos Arduino que requieren desplegar datos alfanuméricos.

Conectar pantalla LCD a tu proyecto ArduinoEstas pantallas LCD  se encontrarán en cualquier tienda online, tanto en su presentación de 16 caracteres y 2 renglones (1602 LCD) como de 20 caracteres y 4 renglones (2004 LCD).

Incluso les puede ocurrir que ya tengan una cantidad de pantallas LCD que respondan a esta descripción, producto de sus andanzas en electrónica de la época de los PIC de Microchip -como ha sido mi caso-. Continuar leyendo “Conectar una pantalla LCD a Arduino”

Lector RFID rc522

Lector y tags RFID proyecto Arduino

El KIT de Lector RFID rc522 que se vende genéricamente en las tiendas online incluye una tarjeta y un tag RFID para realizar tus experimentos y desarrollar tu proyecto Arduino.

Lector y tags RFID proyecto ArduinoEn el caso de los kits RFID de menor costo, si bien puedes utilizarlos igualmente para desarrollar tu aplicación, debes tomar en cuenta que la sensibilidad del lector RFID es tan baja que es prácticamente inutilizable en la realidad:

Debes PEGAR (menos de un centímetro de distancia) tanto la tarjeta como el tag RFID para que el lector pueda reconocerlo.

Esta falta de sensibilidad tornaría imposible algunos proyectos donde el lector está escondido dentro de una pared o puerta. ¡Está hecha la alerta!

Con respecto al voltaje, estos módulos utilizan 3.3volts. En cuanto a compatibilidad, pueden leer las tarjetas mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro y las mifare Desfire.

Agregando el Lector RFID rc522 a nuestro proyecto Arduino

Como ya es costumbre, hay una libreria disponible para simplificar el manejo del lector RFID en nuestros proyectos Arduino.

Debes descargar e incorporar a tu programa la libreria MFRC522. Podrás hacerlo desde el IDE oficial de Arduino, con la opción de Manage Libraries.

Funcionalidad básica del lector RFID RC522

El siguiente proyecto Arduino demostrará la funcionalidad básica del lector RFID RC522.

En esta ocasión lo he conectado a un WEMOS D1 R2, por lo que los pines declarados para su conectividad pueden ser distintos a tu caso particular:

#include <ESP8266WiFi.h>
#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN 5 // RST-PIN for RC522 - RFID - SPI - Modul GPIO5 
#define SS_PIN  4  // SDA-PIN for RC522 - RFID - SPI - Modul GPIO4

MFRC522 mfrc522(SS_PIN, RST_PIN);

void setup() {
  Serial.begin(115200);
  SPI.begin();           // Init SPI bus
  mfrc522.PCD_Init();    // Init MFRC522 
  delay(1000);
  Serial.println("TEST Lector RFID rc522!");
}
void loop() {
  // Esperar presencia de nueva tarjeta
  if (!mfrc522.PICC_IsNewCardPresent()) {
    delay(50);
    return;
  }
  // Esperar lectura de tarjeta
  if (!mfrc522.PICC_ReadCardSerial()) {
    delay(50);
    return;
  }
  // Mostrar detalles tag/tarjeta
  Serial.print(F("UID tarjeta:"));
  dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
  Serial.println();
}

// Rutina de ayuda para pasar un array de bytes a sus valores hexa
void dump_byte_array(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : " ");
    Serial.print(buffer[i], HEX);
  }
}

Este código nos permitirá testear el lector de tarjetas y tags RFID. Quedará en vuestras manos (o un nuevo proyecto Arduino en el futuro) poner el lector RFID rc522 en buen uso como parte de algún sistema más complejo.