En la primera entrega de este tutorial, os conté en qué consistía este proyecto DIY, qué materiales había usado para construirlo, y finalmente abordé toda la parte referente al código y os expliqué cómo cargar ese código en el nodemcu.
En este nuevo post, como os adelanté, vamos a hablar del montaje propiamente dicho y de todo lo que tiene que ver con el control del dispositivo, la calibración, etc.
Veamos…
Conexiones
El esquema de conexiones es el siguiente:
Aquí tenéis unas fotos para ilustrar estas conexiones:
Ensamblaje
Para explicar el montaje de las piezas impresas en 3D, el nodemcu y el servo y teniendo en cuenta que una imagen vale más que mil palabras, os dejo varias fotografías.
Control del dedo
Cambiar la posición del servo es tan fácil como enviar esta url a través de cualquier navegador web:
- http://ip_nodemcu/0
- http://ip_nodemcu/90
etc… y así con todas las posiciones configuradas en el código del archivo NODEMCU.ino (0º, 90º, 120º y 180º).
En mi caso, el control lo hago por eedomus. ¿Cómo?
Creé un periférico, concretamente, un “HTTP actuador” y le puse tantos valores como posiciones del servo (0º, 90º, 120º, etc..).
Para crear el actuador http en eedomus, tenéis que ir a Configuración / Añadir o eliminar un periférico / Añadir otro tipo de periférico / HTTP actuador / Crear. En esa ventana, tenéis que completar los distintos campos, como para cualquier periférico nuevo en eedomus:
Luego, en la pestaña “Valores” tenéis que crear los distintos valores con su llamada http correspondiente:
Calibración del mecanismo
Una vez que esté todo ensamblado y el código compilado en el nodemcu, es el momento de calibrar la posición de la barra y rueda dentadas.
Voy a explicar cómo lo hice yo:
- En primer lugar, con el nodemcu sin conectar a la red eléctrica, coloqué en el soporte del servo la barra dentada más o menos en la posición de la foto de la izquierda. La rueda dentada la coloqué en el eje del servo y la fijé con un tornillito (viene incluido en el paquete del servo). Puse el servo con la rueda en el soporte, ajustando los dientes de la rueda con los dientes de la barrita.
- En segundo lugar, conecté el nodemcu, tal como se ha explicado más arriba, al cargador del móvil y éste a la red eléctrica. Al hacer esto, el servo adopta una posición de inicio.
- En tercer lugar, envié la orden al servo para que se pusiera en la posición 0º. Vi como se quedaba la barra dentada dentro del soporte. Seguidamente envié la orden al servo de posición a 90º. La barra se desplazó hacia la derecha, pero no lo suficiente, por lo que probé con una posición de 120º y la barra se desplazó más a la derecha hasta alcanzar la posición que se ve en la imagen de arriba de la derecha. Con esto se consigue que la barra salga lo suficiente como para poder pulsar el botón que sea.
Como todo este proceso depende del sitio dónde lo coloquéis, tendréis que ir probando vosotros para conseguir las posiciones adecuadas de inicio y fin del desplazamiento de la barra. Por este motivo, en el código os he dejado varias posiciones en las que poder poner el servo (0º, 90º, 120º y 180º). No obstante, si necesitáis más es tan fácil como añadir otra posición copiando y pegando esta línea de código del archivo NODEMCU.ino y cambiar el ángulo al deseado:
if (request.indexOf("/90") != -1) //Si el cliente ha enviado "90" { pos= 90; // La variable "pos" toma el valor "90" { myservo.write(pos); //Y le decimos al servo que se ponga en la posición "90" delay(15); // esperamos 15ms para que el servo lea la posición. } }
Por último, tal como he mencionado más arriba, el control lo hago a través de Eedomus.
Cuando logré calibrar bien el desplazamiento de la barra dentada, configuré una macro en el periférico “http actuador” que contiene los valores de las posiciones de los servos.
En mi caso, la macro hace lo siguiente: 1 segundo→Posición 120º; 2 segundos→Posición 0º.
Con esta macro, la barra se desplaza a la posición 120º y luego se retrae y de esta forma pulsa el botón.
Nota: si el nodemcu se reinicia, como he dicho antes, el servo adopta la posición de inicio. Para controlar esto, lo que hago es crear una regla que ponga el servo en su posición 0º cuando el nodemcu pierde conexión a la red wifi (por ejemplo), cosa que controlo por el ping a la ip del node. O bien, si lo reinicio con el enchufe Z-Wave dónde tengo conectado el cargador de 5v que alimenta el nodemcu.
Tal como he dicho, todo este proceso depende de cómo lo calibréis que, a su vez, depende del lugar y posición dónde coloquéis el artilugio.
Espero que este tutorial os sea útil.
Estupendo tutorial, ¡te felicito! Me ha animado a trastear este campo de los automatismos usando Ardunio.
Yo también estoy en tu situación de aire por conductos (también Mitsubishi) pero con la complicación de que no puedo actuar sobre el termostato de Mitsubishi, ya que tengo cada reja motorizada con su propio termostato. Así que es cada estancia, según temperatura y apertura o cierre de la reja, la que controla la unidad central. Pero eso ya es otra historia.
Comentabas que tenías problemas al usar una batería para alimentar el circuito. Voy a hacer pruebas ya que en mi caso si que voy a querer utilizar baterías. Quizá una “powerbank” no es estable y tiene pequeñas caídas de tensión, que para un móvil no supone un problema durante su carga pero si para un aparato que requiere constantemente electricidad. Es como cuando intenté alimentar un PC con un generador de gasolina, que servirá para un martillo eléctrico, pero el PC fue imposible mantenerlo encendido de manera estable.
¡Un saludo!
Gracias Beast.
Quizá podrías usar una batería de 5V de ion litio con un regulador de tensión.
No dejes de comentarnos.
Un saludo.
Muy chulo el domoDedo!.
En estos momentos no tengo impresora 3D pero estoy a la espera de que me llegue una, cuando tenga un poco de tiempo me lo fabrico.
Por si os interesa los AA Mitshubishi tienen en la placa central un conector marcado como “CN51” de 4 pines, con el puedes apaga/encender la unidad y detectar el estado On/oFF y Alarma.
Yo me he fabricado un controlador por WiFi para un par de unidades que tengo en la oficina. Si os interesa enviarme un mail.
Hola Linkey, sí que me interesa, pero … ¿por qué no compartes la forma en que lo has hecho?.
Un manual o algo…
Gracias por tus comentarios, siempre animan.
BS.
Hola, con esta cuarentena me he animado a hacerlo y es fantástico.
El problema que me encuentro es que sin darle una orden de ningún tipo, al día siguiente me encuentro que el servo amanece pulsando el botón. No es por caída de corriente, ni por ordenes atrasadas. Simplemente de estar en reposo, en un momento dado se pulsa sólo el botón,
Alguna sugerencia?¿
Muchas Gracias
Buenos días, Andrián.
Salvo error por mi parte, únicamente cuando el nodemcu se reinicia porque lo hayas desconectado y vuelto a conectar bien a la red eléctrica o a una batería, es cuando pasa éso. Es decir, el servo arranca en su posición de reposo, pero solo cuando arduino no se ha reiniciado.
Mira que tengas bien hechas las conexiones y que no haya reinicios por cualquier motivo.
No obstante, pues jugar con la posición de la barra dentada dentro del carril de tal manera que aunque el nodemcu se reinicie por el motivo que sea, aunque el servo vuelva a su posición de reposo, en dicha posición sea imposible que toque el botón. Desplaza la barra dentada por el carril dejando más distancia del botón. A ver si con ésto, al menos no te pulsa el botón.
Ya me cuentas qué tal.
Saludos.