consultas@firtec.com.ar
Electrónica y programación para Microcontroladores.
Libros técnicos para electrónica programable.

Que es el CAN BUS (Controller Area Network).
Desde mediados de los años 90 en todos los vehículos los sistemas de motor y transmisión se han basado en una red de sensores que envían información a la computadora de abordo, de esta forma se ajusta la cantidad de combustible, los cambios en la transmisión y en general todo lo que hace al funcionamiento del vehículo.
Pero fue recién a mediados del 2000 que los sistemas evolucionaron para incluir el CAN BUS.
Este bus usa el método de transmisión broadcast, es decir, un elemento envía un mensaje a través del bus a todos los componentes, y estos se encargan de saber si la información del mensaje le es útil o no. Si el mensaje fuese de interés para algún nodo, este lo almacena y procesa, si no, simplemente la deshecha.
En este escenario podemos ver que la “Unidad de control 2″, envía el mensaje que tenía almacenado en memoria al bus, y todas las demás unidades ven ese mensaje a sus entradas. Sin embargo la “Unidad de control 3″ deshecha este mensaje en la etapa de “Selección”, mientras que las restantes deciden que es apropiado y lo almacenan.
El NRF24L01 es un chip de comunicación inalámbrica fabricado por Nordic Semiconductor que integra un transceptor RF a una frecuencia entre 2.4GHz a 2.5GHz. La velocidad de transmisión puede alcanzar los 2 Mbps y permite la conexión simultánea con hasta 6 dispositivos sien embargo solo puede “hablar” con uno a la vez.
El NRF24L01 también incorpora la lógica necesaria para que la comunicación sea robusta, como corrección de errores y reenvío de datos si es necesario, liberando de esta tarea al procesador. El control del módulo se realiza a través de bus SPI, por lo que es sencillo controlarlo desde un procesador como Arduino.
Dentro de la banda asignada se pueden elegir entre 125 canales espaciados a razón de 1MHz, la tensión de alimentación del NRF24L01 es de 1.9 a 3.6V, aunque los pines de datos son tolerantes a 5V y el consumo en reposo es muy bajo subiendo a unos 18 mA durante el envío y recepción.
Existen dos versiones de módulos que montan el NRF24L01, uno con antena integrada en la propia placa con un alcance máximo de 20-30 metros, y la versión de alta potencia que incorpora amplificador y antena externa, con un alcance máximo de 700-1000 metros.
El escudo para Ethernet con el chip W5100 es uno de los mas usados en el mundo Arduino sin embargo se han reportado problemas con muchas de estas placas "chinas" clones del escudo original.
Establecer conexión en la red con estas placas es toda una odisea, si estamos usando DHCP lo primero que notamos es que tarda una enormidad en conectar con el router y finalmente obtenemos una IP 0,0,0,0. Si colocamos una IP fija sin usar DHCP vemos que nunca es posible conectar con la página embebida en Arduino o lo que es mas confuso, a veces conecta y a veces no.
ZigBee es el nombre de un conjunto de protocolos de alto nivel para la comunicación inalámbrica por enlace de radio de bajo consumo basada en el estándar IEEE 802.15.4 de redes inalámbricas de área personal.
Su objetivo son las aplicaciones que requieren comunicaciones seguras con baja tasa de envío de datos y un muy bajo consumo de energía, en principio el ámbito donde esta tecnología tiene mayor presencia es en domótica y la razón de ello son las características que lo diferencian de otras tecnologías.
ZigBee es similar al Bluetooth pero con algunas diferencias y ventajas por ejemplo una red ZigBee puede constar de un máximo de 65535 nodos distribuidos en subredes de 255 nodos cada una, frente a los ocho máximos de una subred (Piconet) Bluetooth.
Menor consumo eléctrico que el Bluetooth, en términos exactos ZigBee tiene un consumo de 30 mA transmitiendo y de 3 μA en reposo frente a los 40 mA transmitiendo y 0,2 mA en reposo que tiene el Bluetooth.
Este menor consumo se debe a que el sistema ZigBee se queda la mayor parte del tiempo dormido, mientras que en una comunicación Bluetooth esto no se puede dar y siempre se está transmitiendo y/o recibiendo.
Tiene una velocidad de hasta 250 kbit/s siendo claramente mas lento que Bluetooth y es debido a esto que cada uno es más apropiado que el otro para ciertas cosas.
Por ejemplo, mientras que el Bluetooth se usa para aplicaciones como los teléfonos móviles y la informática, la velocidad del ZigBee se hace insuficiente para estas tareas, siendo mas adecuado para el control electrónico, manejo de sensores y en general los productos dependientes de baterías como sensores también juguetes en los cuales la transferencia de datos es menor.
ZigBee tiene tres categorías de nodos.
El Coordinador ZigBee es el nodo más completo y se encarga de controlar toda la red y los caminos para su comunicación.
Por debajo tenemos el Router ZigBee que conecta los nodos entre si para poder ejecutar código del usuario, es decir, ofrece un nivel de aplicación dentro de la torre de protocolos.
Por último, el Dispositivo final ZigBee sólo recibe información y se comunica únicamente con el nodo padre.
La ventaja de este dispositivo es que puede permanecer dormido y ‘despertarse’ en ciertos momentos para alargar la duración de batería.
Sin duda que ZigBee es una alternativa interesante para la comunicación entre distintos dispositivos que necesiten de un consumo energético reducido. Al contrario que el Bluetooth o el WiFi, ZigBee es una opción a tener en cuenta a la hora de domotizar una casa.
Además, el Internet de las Cosas puede recurrir a esta tecnología en lugar de a dispositivos conectados por WiFi.
Por ejemplo, creando un nodo central con conexión a Internet y con suministro energético constante se podrían verificar todos los aspectos de una vivienda manteniendo una carga de datos sobre la red ZigBee y no sobre WiFi que solo se usaría cuando hay algo relevante que informar a la red exterior.
En este vídeo se puede ver el envío de los datos obtenidos de un sensor BME280 a través de una red ZigBee. El controlador usado es una placa Arduino Uno, un sensor BME280 montado sobre un mikroBus.
En este simple ejemplo se ha definido una red ZigBee con el ID_PAN 0x40F3, este identificador es el ID de la red (similar al SSID en una red WiFi) que identifica esta red de otras que pudieran existir en el área.
Luego simplemente se envía el paquete de datos al nodo apuntado.
El siguiente es el código del transmisor.
Este el código del receptor ZigBee.
La programación completa para Arduino se puede descargar desde este link y la biblioteca para Arduino.