Mémoire Permanente pour les Réglages

Il existe une mémoire dans laquelle les réglages qui doivent être conservés sur la carte après une nouvelle installation d’esquisse peuvent être stockés de manière permanente. Il est, par exemple, utile d’enregistrer des paramètres tels que les données d’accès WiFi ou similaires.

L’exemple « PropertyEditor » de la bibliothèque « Arduino-mbed-API » est un petit programme qui peut éditer ces propriétés. L’exemple « PropertyTest » explique comment utiliser ces propriétés. Les propriétés peuvent être des chaînes de caractères ou des nombres. Plusieurs exemples de programmes inclus utilisent déjà des propriétés.

Certaines propriétés telles que le LoRa ID du dispositif, la tension de référence RTC et le calibrage RTC sont déjà stockées en permanence dans les cartes ECO Power, Eagle, LongRa (à partir de la version 7.5) et Turtle pendant la production.

Il y a trois endroits où les propriétés sont entreposées :

  • Mémoire OTP – ne peut être programmée qu’une seule fois
    Habituellement, la mémoire OTP est très petite, de sorte que seule une petite quantité de données peut être stockée ici. Souvent, ce type de mémoire n’est utilisé que par les fabricants de matériel. L’OTP n’est actuellement disponible que pour les cartes ECO Power et Eagle
  • Mémoire flash – stocke les données qui doivent être conservées (permanente)
    La mémoire flash est également limitée en taille ; en général, seuls quelques kilo-octets sont réservés ; 16 kB avec l’ESP32, 1-64 kB avec le D21 (16 kB par défaut). Il se peut que la mémoire flash ne soit pas écrite aussi souvent que souhaité. Cependant, plusieurs milliers d’accès en écriture sont possibles
  • Mémoire RAM – permet de stocker les valeurs des propriétés pendant l’exécution du programme
    Les valeurs des propriétés stockées dans la mémoire RAM ne sont pas conservées après le redémarrage de l’application

Lorsqu’une propriété est chargée, elle est d’abord recherchée dans la mémoire RAM, puis dans la mémoire flash, et enfin dans la mémoire OTP. Ainsi, une propriété flash peut écraser la propriété OTP ou la propriété flash est trouvée en premier.

Certaines propriétés sont déjà réservées en interne par le système et d’autres peuvent être ajoutées par l’utilisateur.

Propriétés déjà réservées

De nombreuses propriétés réservées ne sont pas encore définies et peuvent être définies par un programme ou à l’aide de l’éditeur de propriétés, si nécessaire.

Vous pouvez également définir et utiliser vos propres propriétés (commençant par #128). L’exemple « PropertyEditor » montre comment cela fonctionne : toutes les propriétés sont listées en interne comme « enum » et sont composées d’un nombre et d’un nom.

Une description de l’API se trouve dans le fichier « NVProperty.h », dans la bibliothèque « Arduino-mbed-API » (ECO Power, Eagle et LongRa) et « Turtle_RadioShuttle/NVProperty » (Turtle). L’exemple « PropertyTest » peut être utile pour apprendre à définir des propriétés.

Actuellement, les API de propriétés sont disponibles pour les cartes ECO Power, Eagle, LongRa et Turtle.

PropriétéIDTypeDéfaut
RTC_AGING_CAL1T_8BITprédéfini
ADC_VREF2T_8BITprédéfini
HARDWARE_REV3T_8BIT0
LORA_DEVICE_ID10T_32BITprédéfini
LORA_CODE_ID11T_32BITprédéfini
LORA_REMOTE_ID12T_32BITnon défini
LORA_REMOTE_ID_ALT13T_32BITnon défini
LORA_RADIO_TYPE14T_32BITnon défini
LORA_FREQUENCY15T_32BITnon défini
LORA_BANDWIDTH16T_32BITnon défini
LORA_SPREADING_FACTOR17T_8BITnon défini
LORA_TXPOWER18T_8BITnon défini
LORA_FREQUENCY_OFFSET19T_32BITnon défini
LORA_APP_PWD20T_STRnon défini
LORA_APP_PWD_ALT21T_STRnon défini
LOC_LONGITUDE25T_STRnon défini
LOC_LATITUDE26T_STRnon défini
LOC_NAME27T_STRnon défini
HOSTNAME28T_STRnon défini
WIFI_SSID30T_STRnon défini
WIFI_PASSWORD31T_STRnon défini
WIFI_SSID_ALT32T_STRnon défini
WIFI_PASSWORD_ALT33T_STRnon défini
USE_DHCP34T_STRnon défini
MAC_ADDR35T_BITnon défini
NET_IP_ADDR36T_STRnon défini
NET_IP_ROUTER37T_STRnon défini
NET_IP_DNS_SERVER38T_STRnon défini
NET_IP_DNS_SERVER_ALT39T_STRnon défini
NET_NTP_SERVER50T_32BITnon défini
NET_NTP_SERVER_ALT51T_32BITnon défini
NET_NTP_GMTOFFSET52T_32BITnon défini
NET_NTP_DAYLIGHTOFFSET53T_32BITnon défini
MQTT_SERVER40T_STRnon défini
MQTT_SERVER_ALT41T_STRnon défini
MQTT_TOPIC_INFO42T_STRnon défini
MQTT_TOPIC_ALARM43T_STRnon défini
MQTT_TOPIC_CONTROL44T_STRnon défini
MQTT_TOPIC_445T_STRnon défini
MQTT_TOPIC_546T_STRnon défini
ALARM_STATUS60T_32BITnon défini
VOIP_SERVER70T_STRnon défini
VOIP_USER71T_STRnon défini
VOIP_PASSWORD72T_STRnon défini
VOIP_DEVNAME73T_STRnon défini
VOIP_DIALNO74T_32BITnon défini
VOIP_DIALNO_ALT75T_32BITnon défini
PROG_CMDLINE80T_STRnon défini
MY_CITY129T_STRnon défini

Exemples

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

Vidéo didactique : « NV Property »

RadioShuttle NVProperty API für Arduino und Mbed OS