Bienvenido a un nuevo programa especial de preguntas y dudas sobre Arduino donde contesto a los emails enviados por los oyentes, alumnos y usuarios de Programarfacil.
El programa de hoy comenzará con una duda que nos envía Erinson desde Colombia. Pregunta cómo puede resolver un error típico en el módulo ESP-01 a la hora de subir un programa al microcontrolador.
Luego hablaré del consejo que me pide Luis Fernando con respecto a elegir una placa u otro para medir la temperatura en una nevera. También quiero compartir contigo un recurso/duda que tengo para realizar un tracker GPS y que consuma menos.
Terminaré el programa hablando de dudas que hay con respecto al curso de Arduino desde Cero que puedes encontrar en el Campus de Programarfacil.
Antes de comenzar quiero recordarte que el próximo 12 de mayo se celebra en todo el mundo el Arduino Day o Día de Arduino. Es un evento donde todos los amantes del Hardware Abierto nos juntamos para compartir, aprender y divulgar entorno a Arduino.
Yo estaré en el Arduino Day de Logroño, donde daré una charla sobre placas conectadas y Node-RED. Si estás cerca espero verte por allí.
Ahora sí, ponte cómodo que comenzamos el capítulo 139 del podcast.

Indice de contenidos
ESP8266, modos de funcionamiento
Erinson Rivera de Bogotá Colombia pregunta lo siguiente
Hola luis, me encuentro trabajando para mi proyecto de grado que se basa en un proyecto IoT en el cual debo implementar un ESP-01 para dar conexión a la nube pero cuando intento quemar el firmware me bota el siguiente error.

He intentado con el GPIO2 conectado a GND pero de ninguna de las dos maneras me sube el firmware, pero lo que se hace extraño es que el ESP-01 responde los comandos AT por el monitor serial. Espero me puedas ayudar ya que requiero de este dispositivo para mi proyecto Iot.
Gracias.
Esta es una de las preguntas típicas que me llegan con respecto al ESP-01 basado en ESP8266 y también del relé Sonoff WiFi. Lo primero, este fallo se debe a que no ha conseguido entrar en el modo de carga de programa es decir, modo UART.
Recordatorio de cómo funciona un módulo ESP-01 o el microcontrolador ESP8266. Tiene dos modos de funcionamiento:
- Modo UART: es el modo que nos permite subir un programa a la memoria del microcontrolador. Para poner este modo tenemos que poner el pin GPIO0 a nivel bajo (0 Voltios) y el GPIO2 a nivel alto (3,3 Voltios). El pin GPIO2 está a nivel alto por defecto debido a la resistencia pull-up interna que mantiene siempre en estado alto el pin. Sólo tendremos que poner el GPIO0 a nivel bajo conectando a tierra por ejemplo.
- Modo Flash: en este modo se ejecuta el programa que hay en la memoria Flash del microcontrolador. Para entrar en este modo hay que poner el GPIO0 y el GPIO2 en nivel alto (3,3 Voltios). Como por defecto estos dos pines tienen resistencia pull-up, si no tocamos nada entra en este modo por defecto.
El resumen de todo esto es que sólo tenemos que modificar el estado del pin GPIO0 para subir el código al microcontrolador. Controlando esto, podemos trabajar en el modo que nos interese.
Seguramente ahora te estés preguntando, cuando trabajamos con una placa como NodeMCU o Wemos ¿por qué lo hace de forma automática? En estos casos, la placa ya tiene su propio sistema de control para entrar en un modo u otro.
Es capaz de detectar cuando queremos cargar un programa desde el IDE de Arduino y poner el modo UART y cuando queremos ejecutar el código y poner el modo Flash.
Lo mismo ocurre con el relé Sonoff WiFi. No tenemos que olvidar que estamos programando un ESP8266 y funciona de la misma forma. En este caso ya tenemos el circuito necesario para poner el modo UART con el pulsador que hay conectado al GPIO0 dentro del dispositivo.
Con el ESP-01 podríamos hacer lo mismo. Conectar un pulsador al GPIO0 para poner el modo UART.

Una aclaración, tenemos que tener el GPIO0 en estado bajo antes de alimentar el módulo o la placa. No vale conectar al USB y luego pulsar :)
Por último quiero aclarar también un tema. En el artículo del relé Sonoff WiFi hablé de cómo cargar el firmware ESPurna. Esto no quita para que carguemos cualquier otro programa o firmware.
Al final tenemos que ver este dispositivo como si fuera un ESP-01 o un NodeMCU. Podemos hacer con él lo que queramos.
También quiero recalcar la importancia que tiene el cable USB y la velocidad de subida. Si con un cable nos da fallo tenemos que probar con otro de mejor calidad.
Respecto a la velocidad de subida hay que empezar por la más rápida y luego ir bajando hasta que consigamos subir.
Espero que haya quedado todo claro, en caso contrario recuerda que puedes hacer tus preguntas en los comentarios de este artículo.
Placa y sensor para medir temperatura en neveras
Luis Fernando Rodríguez de A Coruña, Galicia pregunta lo siguiente
Buenas noches Luis.
Me han pedido que mire la posibilidad de realizar un proyecto para controlar la temperatura de 4 neveras y 4 locales climatizados en una clínica que ya tengo informatizada con un programa de gestión de pacientes.
El tema es que no se que placa seria la mas adecuada para este trabajo. he pensado en:
- WIFI SHIELD ARDUINO
- ADFRUIT ATWINC1500 WIFI
- ESP8266 NODEMCU WIFI
Las sondas que se voy a utilizar serán del tipo NTC 10K y DS18B20 a la espera de la pruebas casi seguro que utilizare la DS18B20.
¿Tu que placa utilizarías de esta tres o me aconsejas otra?
Gracias y un saludo
Pregunta típica donde las haya. Bueno Luis Fernando, en este sentido yo siempre opino lo mismo. Si queremos algo de estar por casa, lo ideal es utilizar placas económicas que estén fabricadas en China.
Vamos a encontrar una gran variedad de placas con conexión WiFi que nos pueden resolver la papeleta. El problema es que a veces nos creemos que ahorrando unos euros estamos haciendo el negocio del año.
Sin embargo, dentro del coste nunca añadimos las horas de trabajo que nosotros mismos aportamos. Por un lado las dificultades que nos podamos encontrar a la hora configurar el IDE de Arduino y de programar el microcontrolador.
Dependiendo del adaptador USB a Serie que haya utilizado el fabricante, tendremos más o menos dificultad a la hora de simplemente conectar la placa a nuestro ordenador y que la reconozca.
Los que hayáis comprado algún Arduino UNO copia de China sabréis de lo que estoy hablando.

Pero también tenemos que tener en cuenta el tiempo que perdemos buscando documentación e información. Por ejemplo, podemos optar por comprar un módulo ESP8266 como NodeMCU que lo vamos a encontrar por unos 8€ en Amazon.
No sabemos la marca ni la procedencia aunque pongo la mano en el fuego que es de China.
Pero podríamos comprar la placa de Adafruit HUZZAH que tiene un ESP8266. El precio es el triple más o menos, unos 22€ en Amazon.

La diferencia, además del precio, está en la documentación. Sólo tienes que entrar en Adafruit y ver todos los tutoriales y documentación técnica que encuentras de la placa Adafruit HUZZAH.
Y que te voy a decir de Arduino. Los que ya me conocéis sabéis que siempre apuesto por Arduino original. No debemos perder el tiempo buscando información y documentación. Tenemos que focalizar todo nuestro esfuerzo en aprender.
Como siempre digo, hay que ponerse en acción y no sufrir el síndrome de parálisis por análisis. También tenemos que valorar económicamente nuestro tiempo.
Dicho esto, el consejo para Luis Fernando es que utilice una placa con conexión WiFi.
Queda descartado el Shield WiFi por que está totalmente obsoleto y además es muy caro. Por otro lado la placa de Adafruit ATWINC1500 la descarto por desconocimiento y porque hay muy poca información.
Recomiendo utilizar una placa basada en un ESP8266 de una marca conocida o un Arduino MKR1000, como no :)
Respecto al sensor, muy buena elección el DS18B20. Ya hemos hablado de este sensor y la relación calidad precio es espectacular. Intenta adquirirlo en alguna tienda de confianza.
Recurso para activar placa del IoT por movimiento
Esto es algo que estoy investigando para un proyecto que publicaré dentro de poco y del que tendréis toda la información. El tema consiste en hacer un tracker GPS.
La idea es que mientras el objeto o vehículo esté parado, esté en modo dormido. Cuando el vehículo esté en movimiento, se despierte y empiece a obtener datos del GPS para enviar a algún servidor en la nube.
Los sistemas GPS consumen bastante energía y por eso hay que optimizar al máximo. El proyecto donde va a ir montado es algo que no va a estar en continuo movimiento y por lo tanto, no debería estar comprobando la posición todo el rato.
Esto me evitará tener que poner una batería muy potente y así poder optimizar el proyecto.
La idea que he encontrado investigando ha sido utilizar un acelerómetro. Básicamente este dispositivo nos permite medir aceleraciones. Mi intención no es medir la aceleración con precisión. Lo único que quiero es saber si está parado o en movimiento.
Dicho esto he encontrado dos acelerómetros que voy a probar y analizar. La idea es que el acelerómetro esté funcionando constantemente y así determinar si está parado o en movimiento.
Estos dos componentes son el ADXL345 y el MPU-6050.

El ADXL345 lo podemos encontrar por unos 6€ en Amazon y el MPU-6050 por unos 8€ en Amazon.
A grandes rasgos y esperando poder analizar en detalle estos dos componentes, la mayor ventaja del ADXL345 es su consumo. Se puede llegar a optimizar y que consuma menos de 145 μA. Sin embargo, el MPU-6050 tiene un consumo alrededor de los 500 μA.
Por otro lado, el MPU-6050 es una IMU es decir incluye también giróscopo de 3 ejes.

Los dos componentes tienen pines de interrupciones que nos facilitan el poder gestionar el modo de ahorro de energía de la placa que vayamos a utilizar.
Por último, algo muy importante a la hora de tomar una decisión, es encontrar documentación y librerías que nos permitan trabajar de una forma rápida y óptima con estos dos componentes.
Todo esto es lo que voy a investigar en las próximas semanas y os mantendré informados.
Por cierto, si tienes alguna otra idea soy todo oídos. Estoy abierto a cualquier otra opción :)
Dudas sobre el Curso de Arduino desde Cero
Desde que lancé el Campus de Programarfacil he recibido muchos emails. Te puedo garantizar que más de 1.000 emails he contestado de todo tipo. He recibido feedback y dudas de mucha gente.
Y después de leer y contestar tantos emails, me he dado cuenta que necesitaba una solución para la demanda más generalizada que he recibido:
Preparar un curso de Arduino desde cero para aprender a programar electrónica y así poder crear tus propios proyectos.
Algo mucho más específico que la suscripción mensual. Algo que te permita aprender a tu ritmo, desde donde quieras y con una formación clara y estructurada.
Esto me llevó a desarrollar el Curso de Arduino desde Cero. Un curso con más de 11 horas de vídeo, código, artículos y lo más importante, un soporte que doy yo mismo.
La idea detrás de todo esto es que puedas aprender a programar y desarrollar tus propios proyectos con Arduino, ESP8266 o cualquier placa compatible con la plataforma.
Pero como yo no soy un experto en marketing ni en ventas, a veces no explico las cosas como debería y por eso hoy voy resolver dudas que me han ido llegando relativas al curso de Arduino.
Vamos con ellas.
No sé mucho de Arduino ¿se me hará difícil el curso?
No tienes de qué preocuparte. El curso está pensado para empezar de lo más elemental y llegar a temas muy chulos como medir la temperatura, controlar un servomotor o crear tu propia librería con Arduino.
Pero todo siempre gradualmente para que nadie se quede en el camino. Además, tienes soporte ilimitado para CUALQUIER DUDA.
A mi hijo le interesan estos temas ¿aprenderá a programar Arduino con este curso?
Me han llegado varias preguntas sobre si un niño de entre 11 años y 16 años podría hacer el curso. La verdad es que si. Si realmente le llama el tema de la programación y la electrónica, va a sacar mucho partido.
Dudo que se pueda aprender a programar electrónica de una forma más divertida que con Arduino :)
Además, si su objetivo es estudiar una carrera técnica ya sea informática, telecomunicaciones o cualquier otra ingeniería, esto le va a venir de perlas.
Te lo digo por experiencia, cuando entré en la carrera yo sabía programar. Esto me ayudó muchísimo en todos los sentidos. Pensamiento computacional, crear algoritmos, matemáticas y como no, programación :)
Hay mucha información en internet ¿De verdad lo necesito?
Esta es una duda muy recurrente, y siempre respondo lo mismo. La ventaja con un curso como este, es que todo está estructurado y avanzarás mucho más rápido y con un sistema probado para que puedas incluso tener tu proyecto en apenas dos mes.
Tampoco te voy a engañar, en Internet encontrarás muchas de las cosas que explico yo, pero no igual. Al final, lo digo por experiencia, terminarás aburrido de buscar y dejarás de lado Arduino.
Si lo compro ahora ¿puedo empezarlo más adelante?
Por supuesto, esa es la idea del nuevo modelo del Campus. Que cada uno se organice como quiera y que puedas aprender a tu ritmo, sin presiones.
El objetivo no es cuándo terminas, el objetivo es aprender y cada uno de nosotros tenemos nuestra vida, familia, trabajo y no podemos llevar todos el mismo ritmo.
Lo puedes comprar ahora y hacerlo en verano por ejemplo. Esta pregunta me la ha hecho más de uno.
¿Se actualiza el contenido? ¿Cada cuánto tiempo?
Si me sigues desde hace tiempo sabrás que suelo publicar artículos, podcast y contenido en el Campus bastante a menudo. Esto es debido a dos factores.
Primero, la tecnología avanza muy rápido, vivimos en un mundo que cambia a cada día. Eso me obliga a tener el contenido muy actualizado.
Segundo, el feedback de los alumnos manda. Si algo no queda claro, intento mejorarlo, si aún así no está claro, pongo un ejemplo práctico.
Vuelvo a repetir que el objetivo es que aprendas. De no ser así, todo esto no tiene sentido.
No tengo unas fechas fijas de actualización pero intento que sean muy a menudo.
¿Es un curso que se descarga o es todo online?
El curso es online, puedes descargar los códigos que vemos en cada lección para que los cargues en tu placa de Arduino.
Se accede desde la plataforma del Campus. Cada lección del curso tiene un vídeo donde explico con todo detalle la lección. Eso hace inviable que puedas descargar más de 11 horas de vídeo :)
También se incluye un artículo extenso con gráficos, imágenes y mucho código explicado paso a paso.
Además, al estar online, puedo actualizarlo muy rápidamente y tú ni te darás cuenta eso sí, aviso a todo el mundo :)
Espero haberte resuelto la duda si era alguna de estas, pero si es otra sólo tienes que mandarme un email a través del formulario de contacto :)
Conclusiones
Como siempre me gusta hacer un resumen de lo que hemos visto con los puntos más importantes.
Cuando programamos un microcontrolador como el ESP8266 tenemos que saber cómo funciona. Tenemos dos modos: UART y Flash.
El modo UART nos permite subir un programa a la memoria y el modo Flash nos permite ejecutar dicho programa.
Para entrar en un modo u otro tenemos que poner en un estado determinado los pines GPIO0 y GPIO2. Esto es para el ESP8266. Otro microcontrolador utilizará otros pines.
- El modo UART: pin GPIO0 a LOW y pin GPIO2 a HIGH.
- El modo Flash: pin GPIO0 a HIGH y pin GPIO2 a HIGH.
Esto también se aplica al relé Sonoff WiFi .
Por otro lado he hablado de la importancia que tiene utilizar placas de buena calidad. Esto nos ayuda a ahorrar tiempo y por lo tanto dinero. Debemos ser conscientes de ello y sobre todo, del tiempo que vamos a utilizar buscando documentación.
No sólo hay que evaluar el precio del componente.
Por último he planteado la cuestión con respecto a cómo saber si un objeto o vehículo está en movimiento a través de un acelerómetro.
Espero tus comentarios aquí abajo.
Muchas gracias ;)
Gracias a Shutterstock por la cesión de la imagen para este artículo.