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.
Propiedad | ID | Tipo | Defecto |
---|---|---|---|
RTC_AGING_CAL | 1 | T_8BIT | predefinida |
ADC_VREF | 2 | T_8BIT | predefinida |
HARDWARE_REV | 3 | T_8BIT | 0 |
LORA_DEVICE_ID | 10 | T_32BIT | predefinida |
LORA_CODE_ID | 11 | T_32BIT | predefinida |
LORA_REMOTE_ID | 12 | T_32BIT | no definida |
LORA_REMOTE_ID_ALT | 13 | T_32BIT | no definida |
LORA_RADIO_TYPE | 14 | T_32BIT | no definida |
LORA_FREQUENCY | 15 | T_32BIT | no definida |
LORA_BANDWIDTH | 16 | T_32BIT | no definida |
LORA_SPREADING_FACTOR | 17 | T_8BIT | no definida |
LORA_TXPOWER | 18 | T_8BIT | no definida |
LORA_FREQUENCY_OFFSET | 19 | T_32BIT | no definida |
LORA_APP_PWD | 20 | T_STR | no definida |
LORA_APP_PWD_ALT | 21 | T_STR | no definida |
LOC_LONGITUDE | 25 | T_STR | no definida |
LOC_LATITUDE | 26 | T_STR | no definida |
LOC_NAME | 27 | T_STR | no definida |
HOSTNAME | 28 | T_STR | no definida |
WIFI_SSID | 30 | T_STR | no definida |
WIFI_PASSWORD | 31 | T_STR | no definida |
WIFI_SSID_ALT | 32 | T_STR | no definida |
WIFI_PASSWORD_ALT | 33 | T_STR | no definida |
USE_DHCP | 34 | T_STR | no definida |
MAC_ADDR | 35 | T_BIT | no definida |
NET_IP_ADDR | 36 | T_STR | no definida |
NET_IP_ROUTER | 37 | T_STR | no definida |
NET_IP_DNS_SERVER | 38 | T_STR | no definida |
NET_IP_DNS_SERVER_ALT | 39 | T_STR | no definida |
NET_NTP_SERVER | 50 | T_32BIT | no definida |
NET_NTP_SERVER_ALT | 51 | T_32BIT | no definida |
NET_NTP_GMTOFFSET | 52 | T_32BIT | no definida |
NET_NTP_DAYLIGHTOFFSET | 53 | T_32BIT | no definida |
MQTT_SERVER | 40 | T_STR | no definida |
MQTT_SERVER_ALT | 41 | T_STR | no definida |
MQTT_TOPIC_INFO | 42 | T_STR | no definida |
MQTT_TOPIC_ALARM | 43 | T_STR | no definida |
MQTT_TOPIC_CONTROL | 44 | T_STR | no definida |
MQTT_TOPIC_4 | 45 | T_STR | no definida |
MQTT_TOPIC_5 | 46 | T_STR | no definida |
ALARM_STATUS | 60 | T_32BIT | no definida |
VOIP_SERVER | 70 | T_STR | no definida |
VOIP_USER | 71 | T_STR | no definida |
VOIP_PASSWORD | 72 | T_STR | no definida |
VOIP_DEVNAME | 73 | T_STR | no definida |
VOIP_DIALNO | 74 | T_32BIT | no definida |
VOIP_DIALNO_ALT | 75 | T_32BIT | no definida |
PROG_CMDLINE | 80 | T_STR | no definida |
MY_CITY | 129 | T_STR | no definida |
Ejemplos
RTC_AGING_CAL = -10
ADC_VREF = 1121
NET_IP_ADDR = 192.168.1.1
MQTT_SERVER = «mqtt://username:password@domain:port»