Documentación Técnica

Fuente de alimentación de la tarjeta Turtle

La tarjeta Turtle puede ser alimentado por medio de baterías (pilas AAA normales o baterías recargables de Ni-MH). Como segunda opción, puede ser alimentado a través del conector micro-USB. La tarjeta cambia automáticamente entre USB y la fuente de alimentación de la batería, la alimentación USB tiene la preferencia.

La tarjeta Turtle: asignación de pines e interrupciones

Interfaz del depurador

El paquete de la tarjeta incluye un cabezal de pines (2×4) para ser usado con un depurador externo. Para ello, el cabezal debe estar soldado e la tarjeta y conectado a un depurador remoto, véase los detalles en la página Interfaz de Nucleo ST-Link. Por defecto, el software Turtle se inicia e intenta conectar una consola al depurador UART (cables TX/RX, 230400 baudios). Si no se detecta ningún depurador UART, éste intenta conectarse a través de un puerto USB virtual COM durante 30 segundos. Si ninguno de ellos está disponible, no hay salida de consola.

Nota:
Los mensajes de fallo de bajo nivel sólo se imprimirán en el depurador externo o en la interfaz UART externa porque los servicios USB se detendrán en caso de fallo. Todos los mensajes regulares funcionarán bien con un puerto COM virtual USB o con un depurador UART. En lugar de un depurador UART, también es posible conectar un UART externo normal a los pines RX/TX para la impresión de mensajes en la consola.

Installar la antena

Hay tres opciones de antena:

  • La antena SMA incluida se puede conectar al conector SMA
  • Un conector U.FL está disponible para antenas U.FL externas
  • Se puede usar un trozo de alambre, para esto el conector SMA debe ser desoldado y el cable debe ser soldado al pin central de la almohadilla SMA en la parte superior de la tarjeta

Una antena de alambre básica debe ser acortada a 8,2 cm. La antena está adaptada a λ/4 para 868,1 MHz.

La fórmula exacta para calcular la longitud de la antena es:
Longitud de onda = velocidad de la luz / frecuencia

Para λ/4, este valor debe dividirse de nuevo por 4.

Nota:
La tarjeta Turtle se envía ajustado para una sola frecuencia de RF (433 o 470 MHz, o 868 o 915 MHz). La frecuencia está marcada en la tarjeta. La frecuencia de la tarjeta y la frecuencia de la antena deben coincidir, de lo contrario la tarjeta no funcionará correctamente.

Encender/apagar el voltaje “VDD-SW” para cargas externas

Un interruptor de voltaje interno permite encender y apagar los consumidores externos para que no consuman energía permanentemente. El pin de E/S “EXT_POWER_SW” se define en el archivo “xPinMap.h” del software RadioShuttle para la conmutación. Se puede cambiar a “EXT_POWER_ON” o “EXT_POWER_OFF”. La medición de la tensión de la batería, que se mide a través de los pines ADC “BAT_POWER_ADC”, se fija al cable “VDD-EXT”. Para asegurar que la tarjeta requiere la menor energía posible, el “VDD-EXT” suele estar apagado.

Medición de la tensión de la batería

Para medir la tensión de alimentación VDD (aprox. 3,3 voltios cuando se alimenta a través de USB, aprox. 3,0 voltios con funcionamiento por batería) se incluye un dispositivo de medición en la tarjeta. La tensión de la batería se muestra con una precisión de unos 100 mV. La tensión se mide y se muestra al arrancar o reiniciar. La función BatteryVoltage() en el archivo “RTCUtil.cpp” mide y devuelve el valor de la tensión.

Turtle “deepsleep” y despertar

El software de muestra RadioShuttle para la tarjeta Turtle tiene un bucle principal en el que procesa las tareas y entra en la función Mbed sleep(), es decir, en deepsleep para obtener el menor consumo de energía.

Cuando se utiliza una consola USB, no se puede llamar a sleep() porque esto desconectaría la consola USB. Además, no se introducirá el modo “deepsleep” cuando se registren funciones de temporizador. La función MCU “LowPowerTimer” soporta el modo “deepsleep” y puede utilizarse en su lugar.

Cualquier manipulador de interrupción de entrada registrado, o un manipulador RTC o «LowPowerTimer», despertará a la MCU del modo “deepsleep” y continuará el proceso inmediatamente. Una vez finalizado el procesamiento, la función sleep() se llamará de nuevo y entrará en el modo deepsleep. Cuando la MCU está dormida o en “deepsleep”, el led verde se apaga.

Nota al diseñar las rutinas de interrupción

Básicamente, las rutinas de interrupción deben ser lo más cortas posible y nunca deben esperar a que ocurra algo, para evitar bloqueos. Además, la impresión en una consola USB no funciona en rutinas de interrupción, y la impresión en un UART también tiene sus limitaciones.

El código de ejemplo de la tarjeta Turtle tiene una gran solución para ello: La rutina de interrupción publica un evento, el bucle principal recoge el evento de interrupción y realiza el tratamiento en un código de nivel de usuario (sin interrupción). Esto permite la impresión en consola, la espera de algo y un fácil procesamiento:

  • Añada un nuevo bit de interrupción único en el archivo «main.h», por ejemplo MY_INT = 0x20
  • En la función de interrupción, envíe el evento mediante InterruptMSG(MY_INT);
  • En el bucle principal, compruebe los eventos de interrupción mediante if (pendirqs & MY_INT)

Esto hace que la programación sea mucho más fácil y permite la depuración de impresión dprintf(). Un ejemplo de ello es la función timerUpdate() en «main.cpp».

Sensor de temperatura y humedad (opcional)

El sensor ofrece la posibilidad de medir la temperatura y la humedad exacta de una manera que ahorra mucha energía. No se debe quitar el fieltro blanco del sensor, ya que tiene una función protectora para que el sensor funcione correctamente. Se utiliza un sensor “Si7021-A20-GM1” de Silicon Labs, el controlador está incluido en el software RadioShuttle.

Conectar el sensor

El sensor se conecta a través del bus I2C y requiere cuatro líneas (GND, VDD, SCL, SDA). Las siguientes opciones de instalación están disponibles:

  • Conecte el sensor superior a la tarjeta
  • Conecte el sensor a la tarjeta en la parte superior de la parte posterior
  • El sensor puede instalarse externamente utilizando un cable alargador (no incluido), por ejemplo, fuera de la carcasa o directamente en un calentador, etc.

Por favor, preste atención al orden de los pines (“GND” está fuera); el sensor tiene dos lados de conexión y puede girarse según la instalación (superior o inferior).

Nota:
Dos componentes (resistencias opcionales) en el sensor no están equipados intencionalmente, son resistencias pull-up I2C, que ya están incluidas como 10 kΩ en la tarjeta principal. Para un sensor externo con cables largos, puede ser útil soldar dos resistencias de 1 kΩ (incluidas) para obtener señales estables. Una opción adicional es reducir la velocidad del I2C. Compartiremos nuestra experiencia aquí más adelante.

Uso del software del sensor

Si está conectado, el sensor está permanentemente activo, pero sólo necesita aprox. 1 μA mientras no se lean los valores del sensor. Cuando la tarjeta Turtle está conectada (fuente de alimentación conectada o reiniciada), el sensor se inicializa una sola vez y se emite la temperatura con los mensajes de inicio. Al arrancar la tarjeta, los valores de los sensores se miden y visualizan automáticamente. El código para ello se encuentra en el archivo “Turtle_RadioShuttle/Utils/utils.cpp” file:

if (sensorSI7021->hasSensor()) {
    dprintf("%s: Rev(%d)  %.2f°C  Humidity: %.2f%%", sensorSI7021->getModelName(), sensorSI7021->getRevision(), sensorSI7021->readTemperature(), sensorSI7021->readHumidity());
}

Nota:
Para ello, se debe definir “FEATURE_SI7021” en el archivo “xPinMap.h”.

Se recomienda no leer innecesariamente el sensor permanentemente, ya que cada lectura de los valores toma tiempo y consume energía durante este tiempo. La lectura de la temperatura tarda unos 13 ms, la de la humedad del aire unos 20 ms. Durante este tiempo, la MCU NUCLEOL432 está activo.

Funcionamiento con pilas

La tarjeta Turtle soporta voltajes de batería desde 2,1 V hasta 3,6 V. Por lo general, los clientes utilizan 2 pilas AAA que proporcionan 3 V cuando están llenas o 2 pilas recargables de Ni-MH que proporcionan 2,4 V cuando están llenas. El portapilas AAA también se puede cambiar por un AA porque su conector es compatible.

En ambientes más fríos, las pilas normales y las baterías recargables de Ni-MH no funcionan bien. En este caso se pueden utilizar baterías de litio de alta calidad (2 x 1,5 V).

Sólo las pilas colocadas en el portapilas (+/- pines) pueden alimentar eficientemente la tarjeta durante muchos años en modo de espera con mensajes regulares de LoRa RadioShuttle.

Las tarjetas alimentadas a través de USB o VIN utilizarán un LDO (low-dropout regulator) para reducir el voltaje de entrada a 3,3 V. El LDO consume permanentemente una pequeña cantidad de energía que no sería un problema para una fuente de alimentación USB pero que no califica para una operación de batería de larga duración.

Nota:
Las baterías recargables de Li-ion (ión-litio) o LiPo (polímero de litio) no se pueden utilizar para alimentar la tarjeta a través de las clavijas de entrada de la batería, ya que su voltaje es superior a 3,6 V, lo que destruiría los chips MCU y LoRa de la tarjeta. Sin embargo, la alimentación de la tarjeta con baterías de Li-ion o LiPo a través de VIN funciona.

La tarjeta Turtle no tiene un cargador de baterías incorporado porque las tarjetas duran muchos años y el cambio de baterías se hace rápidamente.