Sistema abierto vs sistema cerrado. Liberando código
Actualmente vivimos en un mundo complicado, luchando entre el software-hardware abierto y los sistemas propietarios. En la confrontación entre una solución basada en Arduino–ESP8266 de 5 € y el Siemens S7 de 500 €. En el dilema de dar servicio a un precio adecuado y, al mismo tiempo, cumplir las directivas y el marcaje CE. Puede que aquí encontréis algo intermedio, o no. Esta fue nuestra solución durante un tiempo.
Introducción
Presentamos la primera de varias entradas en las que comentaremos la funcionalidad de un sistema que en su día desarrollamos en INGRAN. Actualmente ha quedado en desuso al migrar a sistemas de adquisición de datos basados en Modbus-TCP. Además, hay que añadir que el módulo central del sistema, el Industruino, que usamos en sus primeras versiones, nos dio algunos problemas para los niveles de calidad y servicio que buscábamos. No obstante, el fabricante ha sacado una revisión del Industruino que soluciona los problemas del primero y que, además, añade nuevas capacidades al dispositivo.
En las siguientes fotos os mostramos la versión básica del Neurtura (nombre comercial del dispositivo de monitorización). En la primera podéis ver el aspecto exterior con los conectores:

Neurtura, equipo de monitorización de bombeos
En la siguiente imagen podéis ver los componentes internos que contenía el Neurtura:

Interior de la primera versión del Neurtura, equipo de monitorización de bombeos
Podéis observar de izquierda a derecha: Un magnetotérmico, un analizador de energía eléctrica, el Industruino D21G IND I/O (la versión más reciente) con su módulo ethernet, una fuente de alimentación de 24 Voltios y un router Teltonika RUT230.
En la parte inferior tenemos conectores Harting para la alimentación, la conexión de las pinzas amperimétricas, el analizador de energía y las conexiones de los sensores, actuadores y Modbus-485.
Contexto
¿Cómo podemos monitorizar un proceso industrial, en este caso concreto una bomba de agua para regadío, de manera efectiva, eficaz y barata? Era la pregunta nos hicimos en INGRAN hace ya bastante tiempo, con la certeza de que tenía que haber una solución económica y asequible para el tipo de instalaciones a las que nos dirigíamos.
Esto era lo que necesitábamos:
- Medida de parámetros eléctricos de una bomba (entre 50 y 500 kW): potencia, voltaje, factor de potencia…
- Medidas de parámetros del acuífero: conductividad eléctrica (salinidad), nivel del agua bajo tierra…
- Medida de parámetros del agua extraída: caudal, presión…
- Registro de datos cada 10 segundos
- Mostrarlos vía Web y en el móvil
Además, por si no fuera poco, teníamos las siguientes restricciones:
- Necesidad de utilizar GSM/GPRS/3G para la comunicación.
- Marcaje CE.
- Compatibilidad con lo que había ya montado en los bombeos: diversos tipos de caudalímetros/contadores, medidores de nivel de acuífero, etc.
Aqualogy disponía de una solución hardware llamada IdroSmartWell que hacía todo eso, pero a un precio tan elevado que eran muy pocos bombeos los que se podían permitir su adquisición. Por eso, desarrollamos nuestra propia solución desarrollando un equipo propio. La solución software vino de la mano del proyecto EmonCMS de Open Energy Monitor y la solución hardware fue un desarrollo genuino de INGRAN.

Aplicaciones del Industruino. Origen: https://industruino.com
Especificaciones técnicas
Las especificaciones técnicas de Neurtura que habéis visto en las fotografías anteriores son las siguientes:
- Analizador de energía eléctrica trifásica: Conexión a pinzas amperimétricas externas de 5A o 1A. Medida de V, I, P, PF, THD y mas cosas…
- 4 Entradas analógicas de 0-20mA o 0-10 Voltios: Resolución máxima de 18 bits.
- 2 Salidas analógicas de 0-20mA o 0-10 Voltios: Resolución máxima de 12 bits.
- 8 Entradas/Salidas digitales: Con opción de usarlas como contadores de pulsos.
- Conexión de Modbus-485 para conectar más dispositivos.
- Opción de postear a EmonCMS directamente.
- Guardado de datos en la SD local.
- Guardado de parámetros de configuración el la EEPROM.
- Guardado de datos de contadores y demás datos cambiantes en la FRAM propia.
- RTC local.
- Actualización del firmware remota: Utilizando el RUT230.
Compilando y cargando el Firmware
El Industruino se programa utilizando el IDE de Arduino por USB, aunque también se puede programar por Ethernet utilizando TFTP, cosa que se comentará en próximas entradas.
En la Organización de INGRAN Engineering de Github podéis encontrar el firmware y las librerías necesarias:
Para compilarlo y subirlo al Industruino seguimos estos pasos:
- Decargamos el IDE portable de Arduino, versión 1.8.5
- Extraemos arduino-1.8.5-windows.zip
- Dentro de la carpeta de arduino-1.8.5 creamos una carpeta llamada “portable“
- Abrimos el programa arduino.exe
- Instalamos la placa del Industruino -> clicando Tools -> Boards Manager y buscando “Industruino” -> Insalar “Industruino SAMD Boards 1.01“
- Cerramos el entorno de programación de Arduino.
- Descargamos el proyecto Ikusi-Makusi de GitHub y lo extraemos.
- Descargamos el proyecto Ikusi-Makusi-libraries de GitHub y copiamos las librerías en la carpeta arduino-1.8.5\libraries
- Abrimos el programa arduino.exe de nuevo, en Herramienta->Placa seleccionamos Industruino D21G y en Herramientas->Puerto el puerto de series correspondiente.
- Abrimos el archivo Industruino_ethernet.ino del proyecto Ikusi-Makusi con el IDE de Arduino.
- Compilamos y lo subimos al Industruino.
- Conectamos el Industruino a una red con DHCP y lo encendemos.
- Con los botones, navegamos hasta la pantalla RED y miramos la IP asignada.
- Metemos la IP en cualquier navegador web y empezamos a experimentar.