Memoria Permanente para Propiedades

Existe una memoria en la que se pueden guardar de forma permanente los ajustes que deben conservarse en la tarjeta después de la instalación de un nuevo croquis. Por ejemplo, es útil para guardar ajustes como datos de acceso WiFi o similares.

El ejemplo “PropertyEditor” de la biblioteca “Arduino-mbed-APIs” es un pequeño programa que puede editar estas propiedades. La aplicación muestra “PropertyTest” explica cómo utilizar estas propiedades. Las propiedades pueden ser cadenas o números. Varios aplicaciones de muestra incluidos ya utilizan propiedades

Algunas propiedades como el ID del dispositivo LoRa, la tensión de referencia del ADC y la calibración RTC ya están guardadas permanentemente en las tarjetas ECO Power, Eagle, LongRa (comenzando con la rev. 7.5) y Turtle durante la producción.

Hay tres lugares donde se guardan las propiedades:

  • Memoria OTP – sólo se puede programar una vez
    Por lo general, la memoria OTP es muy pequeña, por lo que sólo se puede guardar una pequeña cantidad de datos aquí. A menudo este tipo de memoria sólo la utilizan los fabricantes de hardware. El OTP sólo está disponible actualmente para las tarjetas ECO Power y Eagle
  • Memoria Flash – guarda datos que deben preservarse (permanentes)
    La memoria flash también tiene un tamaño limitado; normalmente sólo se reservan unos pocos kilobytes; 16 kB con el ESP32, 1-64 kB con el D21 (por defecto 16 kB). Es posible que la memoria flash no se escriba tantas veces como se desee. Sin embargo, son posibles varios miles de accesos de escritura
  • Memoria RAM – permite guardar valores de propiedades mientras se está ejecutando el programa
    Los valores de propiedad guardados en la memoria RAM no se conservan después de reiniciar la aplicación

Cuando se carga una propiedad, se busca primero en la memoria RAM, luego en la memoria flash y finalmente en la memoria OTP. Por lo tanto, una propiedad flash puede anular la propiedad OTP o la propiedad flash se encuentra primero.

Existen propiedades que ya están reservadas internamente por el sistema y otras que pueden ser añadidas por el usuario.

Propiedades ya reservadas

Muchas de las propiedades reservadas aún no están configuradas y pueden ser configuradas por un programa o por el uso de “PropertyEditor”, si es necesario.

También puede definir y utilizar sus propias propiedades (comenzando con #128). Todas las propiedades están listadas internamente como “enum” y están compuestas por un número y un nombre.

Puede encontrar una descripción de la API en el archivo “NVProperty.h”, en la biblioteca “Arduino-mbed-APIs” (ECO Power, Eagle y LongRa) y “Turtle_RadioShuttle/NVProperty” (Turtle). La aplicación muestra “PropertyTest” puede ser útil para aprender a establecer propiedades.

Actualmente, las API de propiedad están disponibles para las tarjetas ECO Power, Eagle, LongRa y Turtle.

PropiedadIDTipoDefecto
RTC_AGING_CAL1T_8BITpredefinida
ADC_VREF2T_8BITpredefinida
HARDWARE_REV3T_8BIT0
LORA_DEVICE_ID10T_32BITpredefinida
LORA_CODE_ID11T_32BITpredefinida
LORA_REMOTE_ID12T_32BITno definida
LORA_REMOTE_ID_ALT13T_32BITno definida
LORA_RADIO_TYPE14T_32BITno definida
LORA_FREQUENCY15T_32BITno definida
LORA_BANDWIDTH16T_32BITno definida
LORA_SPREADING_FACTOR17T_8BITno definida
LORA_TXPOWER18T_8BITno definida
LORA_FREQUENCY_OFFSET19T_32BITno definida
LORA_APP_PWD20T_STRno definida
LORA_APP_PWD_ALT21T_STRno definida
LOC_LONGITUDE25T_STRno definida
LOC_LATITUDE26T_STRno definida
LOC_NAME27T_STRno definida
HOSTNAME28T_STRno definida
WIFI_SSID30T_STRno definida
WIFI_PASSWORD31T_STRno definida
WIFI_SSID_ALT32T_STRno definida
WIFI_PASSWORD_ALT33T_STRno definida
USE_DHCP34T_STRno definida
MAC_ADDR35T_BITno definida
NET_IP_ADDR36T_STRno definida
NET_IP_ROUTER37T_STRno definida
NET_IP_DNS_SERVER38T_STRno definida
NET_IP_DNS_SERVER_ALT39T_STRno definida
NET_NTP_SERVER50T_32BITno definida
NET_NTP_SERVER_ALT51T_32BITno definida
NET_NTP_GMTOFFSET52T_32BITno definida
NET_NTP_DAYLIGHTOFFSET53T_32BITno definida
MQTT_SERVER40T_STRno definida
MQTT_SERVER_ALT41T_STRno definida
MQTT_TOPIC_INFO42T_STRno definida
MQTT_TOPIC_ALARM43T_STRno definida
MQTT_TOPIC_CONTROL44T_STRno definida
MQTT_TOPIC_445T_STRno definida
MQTT_TOPIC_546T_STRno definida
ALARM_STATUS60T_32BITno definida
VOIP_SERVER70T_STRno definida
VOIP_USER71T_STRno definida
VOIP_PASSWORD72T_STRno definida
VOIP_DEVNAME73T_STRno definida
VOIP_DIALNO74T_32BITno definida
VOIP_DIALNO_ALT75T_32BITno definida
PROG_CMDLINE80T_STRno definida
MY_CITY129T_STRno definida

Ejemplos

RTC_AGING_CAL = -10
ADC_VREF = 1121
NET_IP_ADDR = 192.168.1.1
MQTT_SERVER = «mqtt://username:password@domain:port»

Vídeo de formación: “NV Property”

RadioShuttle NVProperty API für Arduino und Mbed OS