SmartHome archivos - el blog de giltesa https://giltesa.com/tag/smarthome Sun, 04 Oct 2020 17:31:30 +0000 es hourly 1 https://wordpress.org/?v=6.3.1 79349975 Quinta edición de Arduino Day en Zaragoza (actualizado) https://giltesa.com/2018/04/03/quinta-edicion-de-arduino-day-en-zaragoza https://giltesa.com/2018/04/03/quinta-edicion-de-arduino-day-en-zaragoza#respond Tue, 03 Apr 2018 09:15:50 +0000 https://giltesa.com/?p=18834 El próximo sábado día 7  se celebra la quinta edición de Arduino Day en Zaragoza, en el centro de arte Etopia. Esta quinta edición estará enfocada en la robótica con Arduino y habrá multitud de stands, charlas y concursos de robots como coches sigue lineas o robots de sumo en un tatami, carreras de drones, […]

La entrada Quinta edición de Arduino Day en Zaragoza (actualizado) aparece primero en el blog de giltesa.

]]>

El próximo sábado día 7  se celebra la quinta edición de Arduino Day en Zaragoza, en el centro de arte Etopia. Esta quinta edición estará enfocada en la robótica con Arduino y habrá multitud de stands, charlas y concursos de robots como coches sigue lineas o robots de sumo en un tatami, carreras de drones, etc.

Pues bien, después de 5 ediciones por fin me he animado a participar como colaborador y esta vez en vez de como publico estaré en un stand mostrando las cosas que hago con Arduino, mas concretamente con el proyecto de domótica SmartHome, además también daré una charla en el auditorio sobre la misma temática.

No hace falta decir que estáis todos invitados a asistir al evento, la entrada y participación en los concursos o degustación de la tarta es gratuita, además de que en los stants hay muchas cosas chulas para ver

Actualización 2018/04/08

Podía parecer que al tratarse de una edición de robótica iba a estar aburrido en mi stand pero nada mas lejos de la realidad, la afluencia de gente fue tan grande que no me pude sentar en todo el día mas que en las horas de cierre a la hora de comer. E incluso mucha gente ya tenia, o estaba en ello, sus propias soluciones de domotica montada por ellos mismos, fue una grata sorpresa y teniendo un stand de esa temática hacia que todos esos interesados hablasen conmigo, siendo parte del publico no habría podido debatir con tanta gente y sus puntos de vista para tratar la domotica.

En cuanto a la charla, aunque algo nervioso, pude transmitir lo que quería, que es la idea de que con Arduino se puede hacer cualquier cosa, incluida la domótica, y que la forma correcta de hacerlo es dejándose ayudar por la comunidad, porque los recursos de uno son limitados pero el de muchos hace que los proyectos se puedan terminar.

La entrada Quinta edición de Arduino Day en Zaragoza (actualizado) aparece primero en el blog de giltesa.

]]>
https://giltesa.com/2018/04/03/quinta-edicion-de-arduino-day-en-zaragoza/feed 0 18834
SmartHome: Sensor multiuso inalámbrico https://giltesa.com/2018/03/31/smarthome-sensor-multiuso-inalambrico https://giltesa.com/2018/03/31/smarthome-sensor-multiuso-inalambrico#respond Sat, 31 Mar 2018 15:45:11 +0000 https://giltesa.com/?p=18788 El nodo de sensor, como su nombre indica, permite funcionar como sensor y enviar cierta información o eventos que capture. De serie incluye sensor de temperatura, humedad, luz, y pulsador magnético, cuenta también con varios conectores de expansión para otros dispositivos externos que se conecten por I2C o con pines analógico/digitales. Se alimenta por baterías, […]

La entrada SmartHome: Sensor multiuso inalámbrico aparece primero en el blog de giltesa.

]]>
El nodo de sensor, como su nombre indica, permite funcionar como sensor y enviar cierta información o eventos que capture. De serie incluye sensor de temperatura, humedad, luz, y pulsador magnético, cuenta también con varios conectores de expansión para otros dispositivos externos que se conecten por I2C o con pines analógico/digitales.

2018/04/15 – Doy por terminado este nodo, como solo es para pruebas no merece la pena hacer una segunda versión para mejorar algunos detalles sin importancia, lo que es el hardware en sí funciona correctamente.

Se alimenta por baterías, ya sea mediante dos pilas AA o por una pila CR2032, en este ultimo caso existe la posibilidad de partir la placa por la mitad para que ocupe menos espacio.

Como el resto de notos, los componentes comunes son:

  • Microcontrolador ATmega 328P a 1Mhz y 3.3V.
  • Antena inalámbrica NRF24L01 a 2.4Ghz.
  • Chip flash para programación inalámbrica W25X40CLSNIG.
  • Chip de firmado para las transmisiones de datos ATSHA204A.
  • Conector de programación JST 1.0mm de 8P con AVRISP + UART.

Y los específicos:

  • Sensor de temperatura y humedad HTU21D
  • Sensor de luz BH1750
  • Pulsador magnético de cristal.
  • Detector de carga de las baterías.
  • LED azul.
  • Tres conectores de expansión JST 1.0mm de 4P.
  • Porta pilas 2xAA
  • Porta pilas 1xCR2032

Originalmente la idea era usar este sensor para puertas y ventanas además de para otros usos, pero posiblemente termine fabricando uno especifico para esa tarea y este quede solo para pruebas o como simple termómetro y medidor de luz. Por lo pronto ya he comprado un par de carcasas para ver qué tal son y comprobar si entraría la electrónica.

El sketch de ejemplo publicado en el repositorio, junto al resto de documentación, permite al nodo estar durmiendo todo el rato para ahorrar batería, el nodo se despertara unidamente en caso de que se produzca una interrupción por el pulsador magnético debido a que una puerta/ventana se ha abierto, o también en el caso de que pasen X segundos desde que se durmió (tiempo configurado con MS_SLEEP_TIME) para enviar los datos de temperatura, humedad, luz, carga de la batería, etc.

 

El código esta programado de tal forma de que el nodo NO se dormirá si no es capaz de conectarse al Gateway, además en ese caso su LED azul parpadeara constantemente hasta que por fin pueda conectarse… dado que es un nodo cuya utilidad es nula si no tiene conexión a la red decidí programarlo así, otros nodos que permiten la interacción directa con el usuario, como el interruptor de pared, si permite su uso sin necesidad de conexión aunque también alertan de ese error.

Tal vez se podría programar para que se duerma igualmente aunque no pueda conectarse a la red y así no mermar la duración de la batería, por ahora ese es sus funcionamiento, si alguien quiere cambiarlo solo hay que eliminar el else del código.

La entrada SmartHome: Sensor multiuso inalámbrico aparece primero en el blog de giltesa.

]]>
https://giltesa.com/2018/03/31/smarthome-sensor-multiuso-inalambrico/feed 0 18788
SmartHome: Controlador LED RGBW inalámbrico https://giltesa.com/2018/03/26/smarthome-controlador-led-rgbw-inalambrico https://giltesa.com/2018/03/26/smarthome-controlador-led-rgbw-inalambrico#respond Mon, 26 Mar 2018 20:29:03 +0000 https://giltesa.com/?p=18781 El controlador LED RGBW es otro de los nodos que he diseñado para el proyecto de SmartHome, en esta ocasión se trata de una placa que permite controlar hasta 4 canales LED, pensado principalmente para tiras de LED RGBW (rojo, verde, azul, y blanco) aunque se puede usar para cualquier otro tipo de tiras de LED […]

La entrada SmartHome: Controlador LED RGBW inalámbrico aparece primero en el blog de giltesa.

]]>
El controlador LED RGBW es otro de los nodos que he diseñado para el proyecto de SmartHome, en esta ocasión se trata de una placa que permite controlar hasta 4 canales LED, pensado principalmente para tiras de LED RGBW (rojo, verde, azul, y blanco) aunque se puede usar para cualquier otro tipo de tiras de LED como RGB, CW/WW, o de un solo color.

2018/04/15 – Por ahora doy por terminado este nodo. Se podría mejorar el tema de la fuente de alimentación ya que la que tiene su máximo es de 24V y si se usa una tira de LEDs de 24V y una fuente de alimentación de mala calidad que de picos de mas de esos 24V podría quemar la placa… recomiendo usarlo solo para 12V.

Teóricamente la placa admite tanto 12 como 24V, aunque con 24V no lo he probado y posiblemente no sea buena idea hacerlo salvo que se use un transformador de muy buena calidad que de 24V exactos ya que es la tensión limite del regulador de tensión que usa la placa para obtener los 5V/3.3V que necesita para funcionar, no encontré un regulador de tensión que admitiera una tensión un poco mayor y que me entrara en la caja… quizás para una segunda revisión de la placa y utilizando una caja de plástico mas grande se pueda hacer esa mejora.

La placa cuenta con unos componentes similares al resto de nodos:

  • Microcontrolador ATmega 328P a 8Mhz y 3.3V.
  • Antena inalámbrica NRF24L01 a 2.4Ghz.
  • Chip flash para programación inalámbrica W25X40CLSNIG.
  • Chip de firmado para las transmisiones de datos ATSHA204A.
  • Conector de programación JST 1.0mm de 8P con AVRISP + UART.

Mas los específicos:

  • Mosfets FDD8447L  para controlar los 4 canales.
  • Drivers para los mosfets UCC27324.
  • Sensor de temperatura DS18B20.

El código de ejemplo publicado en el repositorio, junto al resto de documentos como esquema, circuito, gerbers, documentación, etc. esta programado de tal forma que se pueda controlar la tira de LEDs como RGBW, RGB, W, y On/Off.

 

La primera versión de la placa es completamente funcional, aunque eso no quiere decir que no pueda mejorarse, por ahora la marco como «finalizada», en cualquier caso si alguien va a fabricarla por su cuenta que revise el fichero de changelog.txt para tener en cuenta posibles problemas o mejoras pendientes.

La entrada SmartHome: Controlador LED RGBW inalámbrico aparece primero en el blog de giltesa.

]]>
https://giltesa.com/2018/03/26/smarthome-controlador-led-rgbw-inalambrico/feed 0 18781
Reloj mediante la detección del cruce por cero en corriente alterna https://giltesa.com/2016/05/12/reloj-mediante-la-deteccion-del-cruce-por-cero-en-corriente-alterna https://giltesa.com/2016/05/12/reloj-mediante-la-deteccion-del-cruce-por-cero-en-corriente-alterna#comments Thu, 12 May 2016 21:14:29 +0000 https://giltesa.com/?p=17749 Para la placa de «relés» del control domótico que se encarga de regular el brillo de las lamparas LED es necesario un detector de cruce por cero de la corriente alterna, esto permite que el Arduino sepa el momento exacto en el que la tensión del enchufe es de 0V, es necesario para sincronizar la […]

La entrada Reloj mediante la detección del cruce por cero en corriente alterna aparece primero en el blog de giltesa.

]]>
Para la placa de «relés» del control domótico que se encarga de regular el brillo de las lamparas LED es necesario un detector de cruce por cero de la corriente alterna, esto permite que el Arduino sepa el momento exacto en el que la tensión del enchufe es de 0V, es necesario para sincronizar la frecuencia de la corriente alterna con la frecuencia del microcontrolador y hacer parpadear los LEDs en el momento exacto para dar un efecto de regulación de brillo… y no de flash de discoteca.

Para la detección se puede hacer de varias formas, a mi parecer la mas sencilla es usando un optoacoplador de doble LED para que se active tanto con corriente positiva como con negativa, el único momento que estará desactivado es cuando la corriente sea 0V.

Para probar el optoacoplador, un H11AA1, he usado el ejemplo de esta web: zero crossing detection, que permite contabilizar segundos y mostrar la hora en una pantalla LCD sin necesidad de un DS3231.

He retocado un poco el código, es el siguiente:


La entrada Reloj mediante la detección del cruce por cero en corriente alterna aparece primero en el blog de giltesa.

]]>
https://giltesa.com/2016/05/12/reloj-mediante-la-deteccion-del-cruce-por-cero-en-corriente-alterna/feed 2 17749
Test de comunicación entre Arduinos con estándar RS485 mediante módulos MAX485 https://giltesa.com/2016/03/04/test-de-comunicacion-entre-arduinos-con-estandar-rs485-mediante-modulos-max485 https://giltesa.com/2016/03/04/test-de-comunicacion-entre-arduinos-con-estandar-rs485-mediante-modulos-max485#comments Fri, 04 Mar 2016 21:32:59 +0000 https://giltesa.com/?p=17439 Estas últimas dos semanas he estado haciendo pruebas con el estándar de comunicación RS485, este estándar es el que a nivel de físico permitirá la interconexión de todos los módulos esclavos a su maestro en el proyecto de domótica. Hardware Podéis encontrar muchísima información sobre el RS485 en internet pues es muy usado en el […]

La entrada Test de comunicación entre Arduinos con estándar RS485 mediante módulos MAX485 aparece primero en el blog de giltesa.

]]>
Estas últimas dos semanas he estado haciendo pruebas con el estándar de comunicación RS485, este estándar es el que a nivel de físico permitirá la interconexión de todos los módulos esclavos a su maestro en el proyecto de domótica.

Hardware

MAX485_ComponentsPodéis encontrar muchísima información sobre el RS485 en internet pues es muy usado en el sector industrial, pero a modo de resumen sus características son las siguientes:

  • Permite interconectar de 32 a 254 estaciones según chip usado.
  • Permite comunicaciones a larga distancia, hasta 1200 metros.
  • Su velocidad de transmisión varia entre 35Mbit/s a 100kbit/s según distancia del cable y tipo de chip.
  • Funciona con 2 o 4 cables de datos:
    • Con 2 cables:
      • Comunicación bidireccional.
      • Todas las estaciones pueden hacer de Maestro y Esclavo.
      • Half duplex: No permite que dos estaciones envíen datos al mismo tiempo.
    • Con 4 cables:
      • Comunicacion bidirecional.
      • Solo puede haber 1 Maestro y N Esclavos.
      • Full duplex: Permite enviar datos por 2 hilos y recibir por los otros 2 al mismo tiempo.
  • Al ser un estándar de comunicación diferencial los bits se obtienen de la diferencia de tensión entre ambos hilos y no entre masa, por lo que no hace falta cable de GND.
  • Por lo mismo que el punto anterior, tampoco le afectan las interferencias usando cable trenzado, como el de ethernet.

Las primeras pruebas del estándar RS485 que realice fue con los chips Maxim MAX490 que en teoría permiten una comunicación Full duplex con 4 hilos, este chip tiene 8 patas: 2 de alimentación, 2 de datos para el Arduino, y 4 de datos para la conexión entre las estaciones. Sin embargo solo conseguí que el maestro se pudiese conectar a todos los esclavos, pero no que todos los esclavos pudieran conectarse al maestro… solo conseguí que el esclavo mas cercano al maestro pudiera enviarle datos.

En otros chips como el MAX485 o el MAX491 hay unos pines que permiten indicar si vas a usar el canal para transmitir datos o para recibirlos, alta o baja impedancia, como el MAX490 no los tiene parece que los esclavos chocaban entre sí aun programando el código para que no coincidieran en ningún momento.

Finalmente me he decidido por los Maxim MAX485 que aun que no permiten que la comunicación simultanea en ambos sentidos (solo hay 2 hilos), funcionan bien. El lado bueno es que me ahorrare una pasta en el cable de cobre ya que el de teléfono de 6 hilos es bastante mas caro y raro de encontrar que el de 4 🙂

Software

Hasta ahora tenemos el estándar de comunicación, pero también hace falta un protocolo de datos para que las estaciones se entiendan entre si. Generalmente se usa el protocolo CanBus, usado en muchos sitios incluso en los coches, el problema es que en Arduino se encuentran muchísimas librerías CanBus-Esclavo, pero pocas o ninguna CanBus-Maestro ya que están mas pensadas para conectarte a maestros de terceros: coches, sistemas industriales, etc.

Tras buscar muchas librerías he encontrado una que me ha gustado bastante, que aunque no es perfecta funciona bien y es con la que estoy haciendo pruebas. Realmente lo de la librería es secundario pues todas usaran el mismo hardware así que se puede cambiar si mas adelante se queda corta o crear una a medida.

La librería de la que hablo es la Inter-Chip Serial Communications, o ICSC, usada por ejemplo en los ChainDuinos, la comunicación se realiza mediante diferentes paquetes con los cuales incluso se comprueba que hayan llegado completos.

Una de las cosas malas que tiene la librería es que vienen solo 2 ejemplos y tampoco es que sean muy buenos, yo he creado unos cuantos para probar el funcionamiento, son los siguientes y vienen cada uno de ellos con una pequeña explicación:

Comunicación en un solo sentido: Control LED

Como primer ejemplo he intentado que el código fuese lo mas simple posible, permite que un Arduino que hace de maestro active los LEDs de los demás que hacen de esclavos. Con cada comunicación les envía una petición a los esclavos y estos cambian el estado del led al estado contrario en el que estén.

 

Comunicación en ambos sentidos: Control LEDs

En el segundo ejemplo la comunicación es bidireccional y tanto el maestro como los esclavos se comunican entre sí. Para ello el maestro solicita a cada esclavo que encienda su led y tras terminar que confirmen que han realizado la tarea, de este modo el maestro recibe esa confirmación e indica mediante otro led que todo ha ido bien.

El maestro tiene 4 leds, el del pin 13 que parpadea al mismo tiempo que el esclavo al que se le solicita que lo encienda, y otros 3 leds uno para cada esclavo para indicar quién ha devuelto la respuesta.

 

Comunicación en ambos sentidos: Envió de datos

En los dos ejemplos anteriores hemos visto como enviar paquetes de datos vacíos entre Arduinos, básicamente son pings y ya esta. Pero eso no es todo lo que nos permite la librería, también podemos enviar datos primitivos como números enteros, carácter o arrays de caracteres, concretamente los tipos: int, long, char y char*.

No esta mal pero es mejorable ya que podemos querer enviar números decimales o booleanos, o podemos querer enviar varios datos en el mismo paquete de datos. Viendo los métodos send de la librería no hay ninguno que permita enviar un array de bytes… pero si de chars que viene siendo lo mismo.

En combinación con las ya conocidas estructuras Struct y Union podemos saltarnos esta limitación, se usan como siempre con la diferencia que el array de la estructura Union es de tipo char en vez de tipo byte para que no de error de compilación por la librería.



El resultado que obtiene el Arduino maestro y que imprime por pantalla es el siguiente:

La entrada Test de comunicación entre Arduinos con estándar RS485 mediante módulos MAX485 aparece primero en el blog de giltesa.

]]>
https://giltesa.com/2016/03/04/test-de-comunicacion-entre-arduinos-con-estandar-rs485-mediante-modulos-max485/feed 7 17439
Sensor de temperatura y humedad HTU21D por I2C https://giltesa.com/2016/01/11/sensor-de-temperatura-y-humedad-htu21d-por-i2c https://giltesa.com/2016/01/11/sensor-de-temperatura-y-humedad-htu21d-por-i2c#comments Mon, 11 Jan 2016 20:22:55 +0000 https://giltesa.com/?p=17243 Para mi proyecto de domótica hay un nuevo sensor que no había usado hasta ahora y que empleare en los módulos esclavos, este es el HTU21D (datasheet). Este sensor es capaz de medir tanto la temperatura como la humedad de igual modo que hace el sensor DHT22 con la diferencia de que este se conecta […]

La entrada Sensor de temperatura y humedad HTU21D por I2C aparece primero en el blog de giltesa.

]]>
Para mi proyecto de domótica hay un nuevo sensor que no había usado hasta ahora y que empleare en los módulos esclavos, este es el HTU21D (datasheet).

Este sensor es capaz de medir tanto la temperatura como la humedad de igual modo que hace el sensor DHT22 con la diferencia de que este se conecta mediante el bus I2C. También es mucho mas pequeño y podemos encontrarlo como modulo listo para conectar al Arduino.

Mi modelo es para funcionar a 3.3V, aunque también los hay con regulador de tensión incorporado para poder así alimentarlo a 5V, el módulo cuesta sobre 3€

En cuanto al código, Sparkfun ha hecho una librería para usarlo de forma sencilla, este es el código de ejemplo:

#include <HTU21D.h>

HardwareSerial &pc = Serial;
HTU21D sensor;
float temp, humd;

void setup()
{
	pc.begin(9600);
	while(!pc);

	sensor.begin();
	pc.println("Sensor iniciado!");
}

void loop()
{
	temp = sensor.readTemperature();
	humd = sensor.readHumidity();

	pc.print("Temperatura: ");
	pc.print(temp, 1);
	pc.print(" ºC");
	pc.print(", Humedad: ");
	pc.print(humd, 1);
	pc.println(" % RH");

	delay(1000);
}

 

La entrada Sensor de temperatura y humedad HTU21D por I2C aparece primero en el blog de giltesa.

]]>
https://giltesa.com/2016/01/11/sensor-de-temperatura-y-humedad-htu21d-por-i2c/feed 1 17243