PCB bloque maestro

Comprobado el funcionamiento del módulo maestro en la placa de prototipos, he procedido a la realización de la placa de circuito impreso o PCB. Como requisitos, se intentará trazar todas las pistas por una sola capa y se intentará compactar para permitir el encapsulado en una caja si se desease.

Esquemático

El esquemático se ha modificado ligeramente, el final es el siguiente:

Se han cambiado algunos pines de conexión entre el transceptor y el microcontrolador para facilitar el trazado de pistas. Estos cambios se han verificado en la placa de prototipado previamente.

Layout

Para realizar el layout se ha tenido que crear el footprint para el cristal de cuarzo (Y1) y se han reutilizado los footprints de los condensadores de 1µF cerámicos, de los LED y del transceptor diseñados previamente.

La distribución de elementos se ha realizado de forma que el conector del USB, el transceptor y el conector del programador no estén en el mismo lado del rectángulo que forma la PCB (que no compartan lado). De este modo se facilita la conexión y el acceso a los conectores desde los lados. El transceptor se ha situado con la antena hacia el exterior para poder emplear un zócalo en el microcontrolador, pues el microcontrolador con el zócalo es más alto que el transceptor. Los indicadores luminosos LED se han situado dependiendo de su finción; los indicadores del estado de la conexión USB se ha situado próximos al conector (comparten lado con él) y los de notificaciones se han situado en el lado libre de la PCB. El cristal de cuarzo se ha aproximado lo máximo posible al microcontrolador al igual que los condensadores de desacoplo a sus respectivos. En cuanto al regulador, se ha aproximado al conector USB y a los condensadores de 1µF.

Respecto a las pistas y conexiones, dado que la corriente que circulará por ellas no es elevada, se han diseñado con un ancho de 0.8mm; tamaño cómodo para la soldadura. El cobre sobrante se ha utilizado como plano de masa, de este modo se reduce su impedancia. También hay que destacar que ha sido necesario el empleo de 3 puentes para asegurar el trazado por una sola cara.

A continuación se muestra una captura del layout.

Fabricación y montaje

Tras la fabricación, la PCB resultante se muestra a continuación:

Se puede observar que durante la fabricación los PAD del conector del transceptor han desaparecido. Esto es debido a la tolerancia del taladro pero no suponen ningún obstáculo para su soldado.

También se puede observar que el plano de masa parece interrumpido al pasar entre el footprint del regulador. Se ha comprobado la conectividad entre ambos puntos y es correcta.

Una vez ensamblados y soldados todos los componentes, la PCB resultante se muestra a continuación.

Comprobación

Para verificar el diseño de la PCB realizada, se han realizado distintas comprobaciones.

Se ha comprobado que las soldaduras realizadas no puedan producir errores. Una vez comprobado esto, se ha programado el microcontrolador.Verificada la programación, se ha conectado al PC mediante el cable USB. Se han verificado las tenisones de 5V en el conector del USB y de 3.3V en el resto del dispositivo. Se ha verificado el funcionamiento del pulsador de reset y de la comunicación con el PC. Por último, se ha conectado el transceptor y se ha verificado la comunicación con el sensor.

Comunicación: El protocolo

Para la comunicación inalámbrica, el objetivo principal es el bajo consumo por lo que el protocolo se debe adaptar a él además las interferencias del canal hacen necesario incluir elementos de varificación de datos.

Configuración de la comunicación

El transceptor permite configurar diversos aspectos de la comunicación.

Se trabajará en modo ShockBurst dadas sus ventajas (ver la entrada del transceptor). En este modo, la velocidad de la comunicación se puede configurar de 1Mbps o de 250Kbps. Puesto que la velocidad no es crítica en la aplicación, se ha decidido establecerla a 250Kbps dado que su consumo en transmisión y en recepción es algo menor y la sensibilidad es -10dBm mayor.

Protocolo de comunicación

El protocolo se puede dividir en dos partes, el inicio de conexión y la comunicación.

El inicio de conexión es la parte del protocolo que define el mecanismo de la unión de un sensor a la red. Se parte de que cada nodo sensor dispone de una dirección única establecida durante la programación. Este mecanismo se inicia cuando el sensor envía un paquete de inicio de conexión al nodo de adquisición. Una vez el paquete es enviado, el sensor entra en modo de recepción, escucha del canal, esperando un paquete de confirmación de la conexión por parte del nodo de adquisición. Una vez el nodo sensor ha recibido este paquete, se considera que está conectado.

Puesto que los nodos sensores son autónomos y requieren un bajo consumo son los que fijan el protocolo de comunicación. El transceptor es el componente que supone un mayor consumo, es por esto que se debe intentar que esté activo el menor tiempo posible.

Tal y como se ha descrito en entradas anteriores, la comunicación la fija el funcionamiento del nodo sensor; el nodo de adquisición se encuentra siempre a la escucha y es tras una medida del nodo sensor cuando el nodo de adquisición tiene un breve espacio de tiempo para enviarle un comando al sensor. Este funcionamiento supone que el nodo de adquisición no podrá enviar un comando al nodo sensor hasta que este le envíe una medida. Hay que tener en cuenta que el tiempo entre medidas es configurable entre 5 segundos y 21 minutos.

Topología de los paquetes o tramas

Tal y como se ha comentado, el paquete en el modo Shockburst se puede dividir en tres partes; la dirección, los datos y el CRC. En total el tamaño del paquete no debe superar los 256 bits (32 bytes) puediendo tener la dirección un tamaño de hasta 40 bits (5 bytes) y el CRC un tamaño de 8 o 16 bits (1 o 2 bytes).

Actualmente la banda ISM es muy utilizada, es por esto que el sistema se encontrará con multitud de interferencias. Para hacer más robusta la comunicación y evitar la recepción de paquetes erróneos, se ha tomado una dirección y un CRC de 2 bytes, 65536 combinaciones posibles.

Para definir la longitud de los datos se debe tener en cuenta los elementos que forman la trama de datos. Estos elementos son la identificación, los comandos y los argumentos.

  • La identificación

    Cuando el sensor se comunica con el nodo de adquisición, el sensor debe indicar su dirección o algún dato que lo identifique ya que el paquete no incluye ninguna información acerca del origen del mismo. Se podría pensar en incluir la totalidad de la dirección del enviante pero esto supondría incluir 2 bytes a los datos con el consiguiente aumento del tiempo en el aire, y por tanto consumo, que esto supone. Por ello se emplea el siguiente modo que reduce la información de la dirección a un único byte al que he nombrado identificación o ID.

    Básicamente lo que se hace es repetir la información; se divide la dirección en dos, obteniéndose un byte de mayor peso (MSB, most significative byte) y un byte menor peso (LSB, least significative byte). Se establece que el byte de mayor peso es el byte de menor peso negado, la figura siguiente muestra un ejemplo.

    De este modo, con un solo byte se puede obtener la dirección completa negándolo bit a bit. Al haber un solo byte único, el de menor peso, el sistema permitiría introducir hasta 256 sensores lo cual es excesivo para el propósito del proyecto.Por ello, este byte de menor peso a su vez se divide en dos, teniéndose por un lado los 4 bits más significativos (MSb) y los 4 bits menos significativos (LSb). De este modo son los cuatro bits menos significativos los que realmente contienen un número único que identifica cada sensor. Los 4 bits más significativos pueden contener cualquier valor y se utilizan para evitar direcciones poco robustas como por ejemplo 0xFF00. Se deduce entonces que la red podrá disponer de hasta 16 sensores (24), valor óptimo para el propósito del proyecto.

    Se concluye entonces que el tamaño de la identificación es de un byte.

  • Los comandos y los argumentos

    Los comandos son identificadores únicos que indican una acción a realizar al nodo destino. Algunos comandos pueden necesitar de argumentos que son datos que lo complementan.

    Los comandos se han diseñado de modo que se pueda realizar una verificación del mismo rápida. De este modo al recibir un comando incorrecto se detendrá el procesado y se continuará con el funcionamiento normal.

    Dado que las necesidades de comunicación no son extensas, se ha decidido que se puedan definir hasta 16 comandos. Esto es debido a que el mecanismo de verificación empleado consiste en que los comandos son de un byte y que los cuatro bits más significativos son los cuatro bits menos significativos negados. Por lo tanto, para comprobar el comando se ha implementado la función siguiente.

       
    unsigned char verify_cmd(unsigned char command)
    {
            return((command&0x0F)==((~command)&0xF0)>>4);
    }

Los comandos y los argumentos establecen en gran medida la trama de los datos, se pueden distinguir las siguientes tramas.

  • Trama de envío de medidas.

    Esta trama la utilizan únicamente los nodos sensores. Es la trama más importante al ser la más utilizada. Es por esto que es la que fija la longitud máxima de la trama de datos. A máxima resolución, las medidas suponen 12 bits para la HR y 14 bits para la temperatura que, para simplificar el procesado, se envían en 16 bits de modo que ambas medidas suponen 4 bytes.

  • Trama de inicio de conexión.

    Esta trama la utilizan únicamente los nodos sensores. Se puede observar que la trama incluye toda la información posible acerca del sensor para que el nodo de adquisición conozca el estado del sensor. Es decir, se incluye la dirección completa del nodo sensor (de este modo se verifica la trama), los dos bytes de configuración del transceptor (uno contiene el canal y el otro la potencia de transmisión) y el byte de configuración del sensor (contiene la resolución a la que opera, el estado del calentador y el estado de la batería). Esta trama no contiene identificación ya que esta la fija el nodo de adquisición.

  • Trama de confirmación de la conexión.

    Esta trama la utiliza únicamente el nodo de adquisición. Mediante esta trama se confirma la conexión a la red y se establece la identificación.

  • Trama de configuración

    Esta trama puede ser utilizada por ambos tipos de nodos y permite el envío de dos comandos a la vez. Se observa que la longitud máxima de cada argumento es de un byte. Esto es así debido a que los argumentos de la mayoría de los comandos, que precisan de argumentos, son de este tamaño.

Las necesidades de comunicación entre el nodo sensor y el nodo de adquisición no son las mismas que entre el nodo de adquisición y el sensor, es por esto que se definen dos listados de comandos.

  • Nodo sensor → nodo de adquisición

    • CMD_MEAS_DATA 0xF0. Indica que los argumentos son las medidas realizadas.
    • CMD_MY_NAME_IS 0xE1. Pide la
  • Nodo de adquisición → nodo sensor