<span data-mce-type=»bookmark» style=»display: inline-block; width: 0px; overflow: hidden; line-height: 0;» class=»mce_SELRES_start»></span><span data-mce-type=»bookmark» style=»display: inline-block; width: 0px; overflow: hidden; line-height: 0;» class=»mce_SELRES_start»></span>
Otra semana más estoy aquí con vosotros donde voy a resolver preguntas como la optimizar el consumo en proyectos del IoT con Arduino MKRFOX1200 o si un ESP8266 vale para sector industrial.
Poco a poco se va acercando el final de temporada, en el mes de julio y agosto estaremos de vacaciones. Pero antes de terminar quiero tratar dos temas importantes.
Por un lado, la próxima semana haré un capítulo continuación de este donde siga hablando del consumo de Arduino y cómo podemos controlarlo gracias al sensor LTC4150.
Y el último capítulo de esta temporada estará dedicado a Node-RED. Será un monográfico muy completo que irá acompañado de su artículo y su podcast.
Hechas las presentaciones, vamos a empezar con otro programa de preguntas de los oyentes.

Indice de contenidos
Solución al ruido en señales analógicas
En el pasado capítulo, daba solución a un problema de ruido que tenía un oyente. En esta ocasión, un oyente dejó un comentario en iVoox en el capítulo 89 donde, precisamente, también hablaba del ruido.
Leamsi decía lo siguiente en iVoox
Hola Luis
Lo estás haciendo muy bien, gracias por tu trabajo.
Respecto al ruido en Arduino, muchas veces tenemos muchos problemas de ruido y sobre todo si compras todo made in China: cables, placas, sensores, etc… Me pasó con un detector de nivel de agua el cual, como ya sabemos, va conectado a un pin análogico y por lo tanto te envía señales de 0 a 1023.
Me quedé muy decepcionado viendo en la consola como estando el nivel de agua parado, el sensor no paraba de mandar valores entre 450 y 480 sin mover nada. Yo lo solucioné usando la función map, muestreando la señal.
Como no necesitaba tanta precisión muestreé de 0 a 1023 en un rango de 0 a 10 y efectivamente conseguí un mismo valor continuo. Con esto quiero decir que a veces disponemos de demasiada precisión y simplemente hay que sacrificarla para que nuestro proyecto vaya mejor.
Espero que esta solución os sirva a algunos, un saludo.
Lo primero gracias por los comentarios Leamsi y gracias por comentar en iVoox.
Es una muy buena solución si, como dice Leamsi, no necesitamos tanta precisión. Es algo parecido a lo que sucede con la radiación UV y Arduino MKRFOX1200. La radiación que incide en la Tierra se mide en mw/cm².
Sin embargo, nosotros estamos acostumbrados al índice de radiación UV que se mide en una escala de 1 a 11.

Es exactamente el mismo caso, se podría utilizar la función map() para obtener este índice. Muy buena aportación Leamsi, muchas gracias.
ESP8266 para el uso industrial
Daniel Rodríguez preguntaba esto en un artículo del blog.
¿Es recomendable el uso del módulo ESP8266 para uso rudo industrial de 24 horas los 365 días?
Lo que pasa es que necesito un monitoreo en todo momento de unas cisternas que están lejos pero tengo una red wifi que cubre toda la planta donde trabajo y quiero monitorearlas para saber su nivel y prender o apagar las bombas y enviar los valores a una CPU que está en mi oficina pero no sé muy bien qué módulo utilizar.
Por supuesto que es recomendable. Lo primero es que el coste del ESP8266 te permite tener 1, 2, 3 o más microcontroladores de reserva sin que esto tenga que suponer un incremento excesivo en el proyecto. Así que si falla, podrás sustituirlo inmediatamente.
La electrónica aguanta sin ningún problema. Siempre tenemos que llevar ojo dónde compramos las placas y componentes. No es lo mismo una placa comprada directamente a un fabricante desconocido que comprar a Adafruit o Sparkfun.
Mi consejo es que si se va a utilizar de forma intensiva y en casos como este, se compre una placa de calidad. La única manera de comprar así es teniendo confianza en la tienda donde compras. Una de mis favoritas es BricoGeek, no cabe duda.

Es el distribuidor oficial en España de Sparkfun, Adafruit, DFRobot, Pololu y Arduino entre otras. Oscar da un soporte excepcional y la calidad del material no se puede comparar con otros portales chinos.
Lo único que debemos tener en cuenta en estos casos es proteger la placa ante las inclemencias del tiempo (mucho frío o mucho calor) o el polvo que se pueda generar en la máquina. Pero esto lo podemos resolver fácilmente con una impresora 3D.
Espero haya quedado claro mi visión y adelante con el proyecto David.
Consumo de Arduino MKRFOX1200
Alex Martín me enviaba el siguiente email
Buenos días Luis,
Antes de todo me gustaría felicitarte por el trabajo que haces y su divulgación a través de tu web. Lo cierto es que es de gran ayuda y novatos como yo lo agradecemos muchísimo.
Te escribo este mensaje para consultarte un tema sobre el mkrfox. Acabo de adentrarme con la placa y estaba interesado en los temas de consumo.
Mediante el comando «LowPower.sleep» he medido con el multímetro y cuando está dormido consigo un consumo aproximado de 0.54 mAh. En tu post «#114 Sigfox, Arduino MKRFOX1200 y un medidor de radiación UV» leí que tratarás de realizar otro post sobre el consumo de la placa y por ello me gustaría saber si has podido conseguir reducir aún más el consumo. En tal caso y si fuera posible, te agradecería enormemente si me pudieras echar un cable con ello.
Muchas gracias por todo
Un saludo
Lo primero gracias Alex por enviar el email y por tus palabras. El tema del consumo de las placas es algo complicado, sobre todo porque no hay una fórmula concreta que nos diga cuánto consume un Arduino o un ESP8266.
En este artículo voy a exponer una solución teórica, pero quiero dejar claro que muchas veces está solución teórica está muy lejos de la realidad.
Lo primero que tenemos que hacer es buscar la famosa hoja de características técnicas o datasheet del microcontrolador que utiliza el Arduino MKRFOX1200. Es el famoso SAM D21 que no sólo lo utiliza esta placa, también lo utiliza toda la gama MKR de Arduino y el Arduino Zero.

Existen dos versiones del datasheet. Una versión reducida y otra versión ampliada. Siempre elegir la que mayor información nos proporciona.
Lo primero que comprobamos cuando abrimos la hoja de características técnicas del SAM D21 es que hay diferentes modelos del SAM D21. En concreto hay 3, el SAM D21E, SAM D21G y SAM D21J.
Se diferencian en el número de pines.

¿Pero cuál es el que lleva la placa de Arduino MKRFOX1200? Aquí es donde la magia del Open Hardware empieza a surgir. Con otro tipo de dispositivo, lo tendríamos complicado.
Te animo a buscar los esquemas eléctricos de la placa del último Samsung o iPhone ¿eres capaz de encontrarlos? Pues yo tampoco. Sin embargo, Arduino es una placa electrónica de código abierto pero ¿qué significa esto?
A parte de que podamos pensar que se trata de un hardware muy barato y gratuito, el Open Hardware o Hardware Abierto nos permite conocer cómo ha sido fabricado, los componentes e incluso poder modificarlo a nuestro gusto.
Si entras en la web oficial del Arduino MKRFOX1200, verás un enlace en la parte de documentación que pone SCHEMATICS IN .PDF. Se trata del esquema eléctrico de la placa en formato PDF.

En este archivo, puedes ver el microcontrolador que utiliza. Bueno, en este caso utiliza dos microcontroladores, el SAM D21 para gestionar todos los GPIO, comunicaciones y alimentación, y el ATA8520 que es el módulo para la comunicación con SigFox.
En la segunda página del documento en PDF puedes ver el microcontrolador concreto que utiliza el Arduino MKRFOX1200.

Utiliza el ATSAMD21G18A-48. Así de fácil es saber el modelo concreto. Ya sabemos que se trata de un microcontrolador del tipo SAM D21G pero lo importante son los demás números y letras que acompañan al modelo.
En concreto nos vamos a fijar en la letra A antes del guión. Si miras en la página 15 de la versión extendida de la hoja de características técnicas, verás el significado de esta letra.

Existen 3 variantes A, B y C. A nosotros nos interesa la variante A que es lo que indica el esquemático de la placa.
El microcontrolador puede trabajar en dos modos. En modo normal, cuando está ejecutando el programa que hemos cargado, o en modo dormido o sleep, cuando queremos que ahorre energía.
En el modo normal dependerá, sobre todo, del código que estemos ejecutando. En el modo dormido, tenemos 2 posibilidades de funcionamiento: modo IDLE y modo STANDBY.
Si queremos que nuestra batería o pila dure mucho, tenemos que poner el microcontrolador el mayor tiempo posible en modo dormido. Ahora viene la gran pregunta ¿cuánto consume en cada modo?
Antes de ver los datos analíticos, te voy a comentar la diferencia que existe entre el modo IDLE y STANDBY. La diferencia entre estos dos modos es que el modo IDLE permite despertar más rápido al microcontrolador que el modo STANDBY.
Sin embargo, el consumo de energía es mayor como es de suponer. Dentro de los modos IDLE podemos trabajar de 3 formas: IDLE0, IDLE1 e IDLE2. La diferencia entre ellos es el reloj interno o externo que tiene habilitado.
Los diferentes relojes que vienen integrados dentro del SAM D21 se utilizan para diferentes tareas. Por ejemplo, está el reloj de la CPU que se utiliza para tareas internas, el reloj AHB o el reloj APB que se utilizan para diferentes protocolos de comunicación.

Página 135 de la hoja de características técnicas
Elegir un modo u otro de poner en estado dormido el microcontrolador dependerá de los componentes que tengamos conectados a la placa. Debemos trabajar con el mínimo de relojes posibles para consumir la menor energía posible cuando esté dormido.
Dicho esto, nos vamos a la página 789 a la sección Power Consumption (significa consumo de energía).
La primera tabla que nos encontramos es la 37-7 donde pone Current Consumption (Device Variant A) que viene a decirnos el consumo de corriente del dispositivo variante A, el nuestro.
La primera parte nos indica el consumo de energía en diferentes situaciones en modo normal. Por ejemplo, ejecutando un bucle while(1) infinito. Además, podemos ver cuánto consume dependiendo de la temperatura.

Se trata de una buena aproximación para diferentes casos. Comprobamos en la tabla que podemos tener consumos de hasta 7 mA. Ahora vamos a ver el consumo en estado dormido.

Como podemos comprobar en la tabla anterior, depende mucho el modo dormido que elijamos. Por ejemplo, el modo IDLE0 es el que más consume con 2,2 mA. En el modo STANDBY podemos llegar a consumir 12,8 µA.
Hay una gran diferencia y esto puede ser el factor determinante de que nuestra batería nos dure 6 meses o un año por ejemplo.
Sin embargo, esto es sólo el consumo que tendría el SAM D21. Ahora tendríamos que hacer lo mismo con el módulo para SigFox ATA8520. Además, no estamos teniendo en cuenta todos los componentes que rodean a estos dos chips.
Resistencias, condensadores, reguladores, cables, pistas, etc… Deberíamos hacer lo mismo con cada componente y hacer un estudio muy fino de cuánto va a consumir.
Existen alternativas para hacer este estudio como los analizadores de corriente continua. Estos son realmente caros sobre todo si queremos bastante precisión.
Pero al final tenemos que ser ágiles y tener nuestro prototipo listo lo antes posible. Recuerda que no debemos entrar en el estado de parálisis por análisis. Y aquí entra en juego un sensor que es capaz de medir la corriente continua a muy bajo coste, el LTC4150.
Pero de este sensor te hablaré la próxima semana.
Conclusiones consumo de Arduino MKRFOX1200
No cabe duda que la teoría es muy importante. Nos ayuda a entender las cosas y a saber qué hay detrás de las placas y componentes con las que trabajamos día a día.
Sin embargo, no podemos caer en la tentación de dedicar mucho tiempo a entender cómo funciona cada cosa al más mínimo detalle. Eso nos llevaría a perder mucho tiempo y no obtener resultados.
Salvo que tengamos el tiempo suficiente, tenemos que ser muy ágiles a la hora de crear proyectos con Arduino.
Otra cosa importante es la experiencia. Nadie nace sabiendo. Según vamos avanzando en nuestro aprendizaje, vamos adquiriendo experiencia y eso nos hace ir cada vez más rápidos.
Al principio, no sabes ni que buscar en Internet. Pero poco a poco, ese mar de dudas se va a aclarando y con el tiempo, ves las cosas con otra perspectiva.
¿Qué crees que es lo más importante para adquirir esa experiencia? La constancia, dedicar tiempo y tener mucha pasión por lo que haces.