Table des matières:

Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp : 10 étapes (avec photos)
Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp : 10 étapes (avec photos)

Vidéo: Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp : 10 étapes (avec photos)

Vidéo: Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp : 10 étapes (avec photos)
Vidéo: Comment voir sa consommation ou sa production électrique avec Linky ? 2024, Décembre
Anonim
Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp
Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp
Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp
Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp
Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp
Enregistrement de données à distance de haute précision à l'aide d'un multimètre/Arduino/pfodApp

Mise à jour le 26 avril 2017 Circuit et carte révisés pour une utilisation avec les compteurs USB 4000ZC.

Aucun codage Android requis

Cette instructable vous montre comment accéder à une large gamme de mesures de haute précision à partir de votre Arduino et également les envoyer à distance pour l'enregistrement et le traçage. Pour l'enregistrement de données à haute vitesse (2000 échantillons/s), consultez cette instruction, Enregistrement de données à haute vitesse à distance à l'aide d'Arduino/GL AR150/Android/pfodApp

Le convertisseur AtoD intégré à l'Arduino a une faible précision, généralement +/-10% et une plage très limitée, généralement de 0 à 5V CC uniquement. À l'aide d'un circuit et d'une bibliothèque simples, vous pouvez alimenter votre Arduino avec des mesures de plage automatique de haute précision à partir d'un multimètre avec une connexion RS232 optiquement isolée. Avoir les mesures disponibles pour votre esquisse vous permet de contrôler les sorties en fonction des valeurs. Ce tutoriel couvre également l'envoi de la mesure à distance, via WiFi, Bluetooth, Bluetooth Low Energy ou SMS, vers un mobile Android pour l'affichage, la journalisation et le tracé à l'aide de pfodApp.

Cette instructable utilise une carte Arduino Mega2560 5V que vous pouvez coupler avec une grande variété de boucliers de communication, Ethernet, WiFi, Bluetooth V2 (classique), Bluetooth LE ou SMS. Le matériel d'interface et la bibliothèque présentés ici peuvent également être utilisés avec des cartes compatibles Arduino 3,3 V. En plus du Mega2560, vous pouvez utiliser une grande variété d'autres cartes telles que UNO avec et Ethernet shield, une carte de base ESP8266 (autonome), une carte avec Bluetooth Low Energy intégré, comme Arduino 101, ou des cartes qui se connectent à la communication sous-système utilisant SPI tel que le bouclier RedBear BLE et les cartes Bluefruit SPI d'Adafrut. pfodDesignerV2 prend en charge toutes ces combinaisons de cartes et générera le code correspondant. La condition limitative est que vous devez disposer d'une série matérielle gratuite pour vous connecter au blindage RS232 de ce multimètre.

Le circuit et le code présentés ici fonctionnent avec un certain nombre de multimètres. Un modèle facilement disponible et peu coûteux est un Tekpower TP4000ZC, également connu sous le nom de Digitek TD-4000ZC. Les multimètres qui fonctionnent avec ce circuit et cette bibliothèque incluent Digitek DT-4000ZC, Digitech QM1538, Digitech QM1537, Digitek DT-9062, Digitek INO2513, Digitech QM1462, PeakTech 3330, Tenma 72-7745, Uni-Trend UT30A, Uni-Trend UT30E, Uni -Tendance UT60E, Voltcraft VC 820, Voltcraft VC 840

Étape 1:

Ce tutoriel comporte deux parties:

La première partie couvre l'interface matérielle avec le multimètre et la bibliothèque de codes à l'aide d'un Arduino Mega. Si vous souhaitez uniquement obtenir la mesure dans votre Arduino, c'est tout ce dont vous avez besoin.

La deuxième partie couvre l'envoi de la mesure à un mobile Android distant pour l'affichage, la journalisation et le traçage. Dans cet exemple, nous allons utiliser un shield Bluetooth et générer le croquis de base à l'aide de pfodDesignerV2, mais vous pouvez également générer du code pour les connexions WiFi, Ethernet, Bluetooth Low Energy et SMS à l'aide de pfodDesignerV2. La bibliothèque multimètre est ensuite ajoutée à l'esquisse de base pour compléter le code. Aucun codage Android n'est requis pour afficher, enregistrer et tracer la lecture. Tout est contrôlé à partir de votre code Arduino.

Ce projet est également disponible en ligne sur www.pfod.com.au

Pour un affichage tête haute à distance du multimètre, voir cette instructable, lunettes de données Arduino pour mon multimètre par Alain.

Étape 2: Le multimètre

Le multimètre
Le multimètre

Les multimètres utilisés dans ce tutoriel sont le Tekpower TP4000ZC bon marché (~US40) (également connu sous le nom de Digitek DT-4000ZC) et l'ancien Digitech QM1538, qu'il n'est plus vendu. Ces deux compteurs sont visuellement identiques et utilisent le même codage RS232 de la mesure.

Voici les spécifications du Tekpower TP4000ZC:-Tension DC: 400mV/4/40/400V ±0,5%+5, 600V ±0,8%Tension AC: 4/40/400V ±0,8%+5, 400mV/600V ±1,2%+ 5Courant CC: 400/4000μA ±2,0%+5, 40/400mA ±1,5%+5, 4/10A ±2%+5Courant CA: 400/4000μA ±2,5%+3, 40/400mA ±2%+5, 4 /10A ±2,5%+5Résistance: 400Ω/4/40/400kΩ/4MΩ ±1%+5, 40MΩ ±2%+5Capacité: 40nF ±3,5%+10, 400nF/4/40μF ±3%+5, 100μF ± 3,5%+5Fréquence: 10Hz-10MHz ±0,1%+5Fonctionnement: 0,1%-99,9% ±2,5%+5Température: 0oC - +40oC ±3oC, -50oC - +200oC±0,75% ±3oC, +200oC - +750oC ± 1,5% ±3oC, résolution 0,1oC via la sonde thermocouple incluse.

La connexion RS232 du multimètre est à sens unique et vous ne pouvez pas modifier les paramètres du multimètre à distance, vous devez donc sélectionner manuellement le type de mesure. Cependant, le compteur est à gamme automatique et les paramètres de tension et de courant gèrent à la fois le courant alternatif et le courant continu.

Étape 3: Le matériel d'interface RS232

Le matériel d'interface RS232
Le matériel d'interface RS232
Le matériel d'interface RS232
Le matériel d'interface RS232
Le matériel d'interface RS232
Le matériel d'interface RS232

Il y a deux interfaces. Les nouveaux compteurs Digitek DT-4000ZC et Tekpower TP40000ZC sont livrés avec un câble USB. Alors que l'ancien Digitek QM1538 était fourni avec un câble de connecteur RS232 9 broches D. Le circuit ci-dessus (version pdf) montre comment connecter l'optocoupleur du multimètre pour piloter une broche série Arduino RX. Remarque: ce circuit a été mis à jour pour ajouter une autre résistance de protection, R2, pour les compteurs Digitek DT-4000ZC et Tekpower TP40000ZC. Cette résistance n'était pas incluse sur la carte de connecteur D à 9 broches illustrée ci-dessus.

Digitek DT-4000ZC et Tekpower TP40000ZC

Pour les Digitek DT-4000ZC et Tekpower TP40000ZC, vous avez besoin d'un câble audio 3,5 mm mâle à mâle, stéréo ou mono fera l'affaire, et d'une prise 3,5 mm.

Digitek QM1538

Pour l'ancien Digitek QM1538, vous avez besoin d'une prise D à 9 broches. Le connecteur D à 9 broches a des broches décalées qui ne se branchent pas sur le prototype de blindage. Il suffit de couper la rangée de 4 broches pour pouvoir souder le connecteur à la carte, car le circuit n'utilise que les broches de la deuxième rangée de 5 broches. Les pieds de montage se sont pliés pour laisser le connecteur reposer à plat et le connecteur a été fixé au blindage prototype à l'aide de colle époxy en 2 parties ("Araldite"). La disposition des broches du connecteur illustrée ci-dessus provient de ce site. La résistance 10K qui est montée à l'intérieur du connecteur des câbles RS232 fournis (connectés entre les broches 2 et 3) n'est pas requise pour ce projet.

Connexion du signal à une broche Arduino RX

Ce circuit fonctionnera pour les cartes Arduino 5V et 3,3V. Ici, nous utilisons un Arduino Mega2560 (5V) et avons monté le circuit sur un prototype de blindage comme indiqué ci-dessus.

Un fil volant est utilisé pour connecter le TP1 sur le blindage à un Serial1 RX, broche D19, sur le Mega2560.

Remarque à propos de la série logicielle: Initialement, ce shield était associé à un UNO à l'aide de Software Serial sur les broches 10, 11. Cependant, lorsqu'il est couplé avec le Bluetooth Shield sur Serial à 9600 bauds, certains octets de réception ont été perdus. Le déplacement du RS232 vers une connexion série matérielle a résolu ce problème. Donc, pour un affichage et une journalisation à distance fiables, si vous utilisez un bouclier de communication qui se connecte via série, vous avez besoin d'une carte avec deux ou plusieurs numéros de série matériels tels que le Mega2560. D'autres alternatives sont un UNO avec et Ethernet shield, une carte de base ESP8266 (autonome), une carte avec Bluetooth Low Energy intégré comme Anduino 101 ou des cartes qui se connectent au sous-système de communication à l'aide de SPI comme RedBear BLE shield et Adafrut's Bluefruit SPI planches. pfodDesignerV2 prend en charge toutes ces cartes et générera le code correspondant.

Étape 4: La bibliothèque PfodVC820MultimeterParser

Le Tekpower TP4000ZC et un certain nombre d'autres multimètres n'envoient pas la mesure via RS232 sous forme de texte ASCII, mais plutôt 14 octets avec des bits définis en fonction des segments de l'écran LCD qui sont illuminés. L'encodage des 14 octets est expliqué dans ce pdf. La bibliothèque pfodVC820MeterParser.zip décode ces octets en chaînes de texte et en flottants. (Le VC820 fait référence à l'un des compteurs qui utilise ce codage.) Voir également le logiciel QtDMM pour Windows, Mac et Linux qui gère une large gamme de multimètres.

Il existe un exemple minimal, MeterParserExample.ino, d'utilisation de la bibliothèque pfodVC820MeterParser. Connectez le compteur à une connexion série à 2400 bauds, puis appelez haveReading() à chaque boucle pour traiter les octets. haveReading() retournera true lorsqu'une nouvelle lecture complète est analysée. Ensuite, vous pouvez appeler getAsFloat() pour obtenir la valeur (mise à l'échelle) sous forme de flottant ou getAtStr() pour obtenir la lecture avec mise à l'échelle pour l'impression et la journalisation. Il existe d'autres méthodes disponibles pour accéder au type de mesure, getTypeAsStr() et getTypeAsUnicode(), ainsi que d'autres méthodes utilitaires.

#include "pfodVC820MeterParser.h" compteur pfodVC820MeterParser; //void setup() { Serial.begin(74880); Serial1.begin(2400); meter.connect(&Serial1); } lecture flottante; void loop() { if (meter.haveReading()) { lecture = meter.getAsFloat(); // utilisez ceci pour les calculs Arduino Serial.print("Lecture avec unités: "); Serial.print(meter.getDigits()); Serial.print(meter.getScalingAsStr()); Serial.print(meter.getTypeAsStr()); Serial.print(F(" = comme float imprimé (6 chiffres):")); Serial.println(lecture, 6); Serial.println("Time(sec) and Reading as string for logging"); Serial.print(((float)millis())/1000.0); Serial.print(", sec, "); Serial.print(meter.getAsStr()); Serial.print(', '); Serial.println(meter.getTypeAsStr()); } }

Avec le compteur réglé sur Deg C et en utilisant la sonde thermocouple, l'exemple de croquis donne cette sortie sur le moniteur série Arduino IDE

Lecture avec unités: 25.7C = en tant qu'imprimé flottant (6 chiffres):25.700000Time(sec) et lecture en tant que chaîne pour l'enregistrement 2.40, sec, 25.7, C

Étape 5: Partie 2 - Affichage à distance, journalisation et tracé

Cette partie du didacticiel explique comment afficher, enregistrer et tracer à distance la lecture du compteur sur votre mobile Android. pfodApp est utilisé pour gérer l'affichage, la journalisation et le traçage sur votre mobile Android. Aucune programmation Android n'est requise. Tous les affichages, la journalisation et le traçage sont entièrement contrôlés par votre croquis Arduino. L'application gratuite pfodDesignerV2 vous permet de concevoir votre menu et votre graphique Android, puis de générer un croquis Arduino pour vous.

pfodApp prend en charge un certain nombre de types de connexion, Ethernet, WiFi, Bluetooth V2 (classique), Bluetooth LE ou SMS. Ce didacticiel utilise Arduino 101 (Bluetooth Low Energy) pour l'enregistrement et le traçage des données. D'autres cartes Bluetooth Low Energy sont également prises en charge. Ce tutoriel utilise SMS pour se connecter à pfodApp. Vous pouvez utiliser pfodDesignerV2 pour ajouter un enregistrement de données et des graphiques à cet exemple SMS. pfodDesignerV2 a également des options pour générer du code Arduino vers un shield Bluetooth V2 (classique) pour se connecter à pfodApp.

Pour cet exemple, nous utiliserons un Iteadstudio Bluetooth Shield V2.2 qui se connecte à l'Arduino Mega2560 via une connexion série à 9600 bauds. En utilisant l'application gratuite pfodDesignerV2, nous avons mis en place un menu simple qui a juste une étiquette pour afficher la lecture du compteur et un bouton pour ouvrir le graphique. Cette page contient un certain nombre de tutoriels pfodDesignerV2. Une fois que nous aurons un croquis de base, nous le modifierons pour ajouter l'analyseur de compteur et pour envoyer la lecture du compteur et les données pour l'enregistrement et la cartographie.

Conception du menu

Dans cette section, nous allons concevoir un menu Android/pfodApp qui affichera la lecture du compteur et un bouton pour ouvrir un graphique des lectures. Les lectures sont également enregistrées dans un fichier sur le mobile Android

Étape 6: Ajout d'une étiquette

Ajouter une étiquette
Ajouter une étiquette
Ajouter une étiquette
Ajouter une étiquette
Ajouter une étiquette
Ajouter une étiquette

Installez le pfodDesignerV2 gratuit et démarrez un nouveau menu.

La cible par défaut est Serial à 9600baud, ce qui est nécessaire pour Iteadstudio Bluetooth Shield V2.2. Si vous vous connectez à l'aide d'un appareil Bluetooth Low Energy ou Wifi ou SMS, cliquez sur Cible pour modifier la sélection.

Pour ajouter une étiquette pour afficher la lecture du compteur, cliquez sur Ajouter un élément de menu et sélectionnez défiler vers le bas pour sélectionner Étiquette.

Choisissez une taille de police et des couleurs appropriées. Laissez le texte comme étiquette car nous modifierons le code généré pour le remplacer par la mesure du compteur plus tard. Ici, nous avons défini la taille de la police sur +7, la couleur de la police sur Rouge et l'arrière-plan sur Argent.

Revenez à l'écran Editing Menu_1 et définissez un intervalle de rafraîchissement de 1 seconde. Le fera que pfodApp redemandera le menu environ une fois par seconde pour afficher la dernière lecture dans l'étiquette.

Étape 7: Ajout d'un bouton de graphique

Ajout d'un bouton de graphique
Ajout d'un bouton de graphique
Ajout d'un bouton de graphique
Ajout d'un bouton de graphique
Ajout d'un bouton de graphique
Ajout d'un bouton de graphique
Ajout d'un bouton de graphique
Ajout d'un bouton de graphique

Cliquez à nouveau sur Ajouter un élément de menu pour ajouter un bouton de graphique.

Modifiez le texte du bouton de graphique en quelque chose d'approprié, par ex. juste "Graphique" et choisissez une taille de police et des couleurs.

Cliquez ensuite sur le bouton « Graphique » pour ouvrir l'écran d'édition du tracé. Il n'y aura qu'un seul tracé, alors cliquez sur les boutons Modifier le tracé 2 et Modifier le tracé 3 et faites défiler vers le bas et cliquez sur Masquer le tracé pour chacun d'eux.

Modifiez l'étiquette du graphique en quelque chose d'approprié, par ex. « Multimètre ». Pas besoin de modifier les autres paramètres de tracé car nous modifierons l'esquisse pour envoyer une étiquette d'axe y différente en fonction du réglage du multimètre.

Enfin, revenez au menu d'édition_1 et à l'invite d'édition, cela définit le texte en bas du menu et la couleur d'arrière-plan du menu général. Ici, nous avons défini l'invite sur « Multimètre à distance » avec une taille de police +3 et une couleur d'arrière-plan Argent.

Vous pouvez maintenant revenir au Menu d'édition_1 et cliquer sur Aperçu du menu pour prévisualiser la conception du menu.

Si vous n'aimez pas le design, vous pouvez le modifier avant de générer le code. Si vous souhaitez espacer l'étiquette du bouton, vous pouvez ajouter des étiquettes vierges comme décrit ici. Ajouter un graphique et enregistrer des données sur la façon d'afficher / tracer des données Arduino sur Android est un autre didacticiel sur l'enregistrement et la création de graphiques pfodDesignerV2/pfodApp.

Étape 8: Génération de l'esquisse Arduino

Génération de l'esquisse Arduino
Génération de l'esquisse Arduino
Génération de l'esquisse Arduino
Génération de l'esquisse Arduino

Pour générer le code Arduino qui affichera ce menu dans pfodApp, revenez à l'écran Editing Menu_1 et faites défiler vers le bas et cliquez sur le bouton Générer le code.

Cliquez sur le bouton « Écrire le code dans un fichier » pour exporter le croquis Arduino dans le fichier /pfodAppRawData/pfodDesignerV2.txt sur votre mobile. Quittez ensuite pfodDesignerV2. Transférez le fichier pfodDesignerV2.txt sur votre PC à l'aide d'une connexion USB ou d'une application de transfert de fichiers, comme wifi file transfer pro. Une copie du croquis généré est ici, pfodDesignerV2_meter.txt

Chargez le croquis dans votre IDE Arduino et programmez votre carte Uno (ou Mega). Ajoutez ensuite le Bluetooth Shield V2.2 d'Iteadstudio. Installez pfodApp sur votre mobile Android et créez une nouvelle connexion Bluetooth nommée, par exemple, Multimeter. Voir pfodAppForAndroidGettingStarted.pdf pour savoir comment créer de nouvelles connexions. Ensuite, lorsque vous utilisez pfodApp pour ouvrir la connexion multimètre, vous verrez votre menu conçu.

L'ouverture du graphique n'affiche rien d'intéressant car nous n'avons pas ajouté de matériel/logiciel dans le multimètre.

Étape 9: Ajout du multimètre

Ajout du multimètre
Ajout du multimètre
Ajout du multimètre
Ajout du multimètre
Ajout du multimètre
Ajout du multimètre

Nous allons modifier le sketch généré pour ajouter l'analyseur multimètre et envoyer ses données à votre mobile Android. Le croquis modifié complet est ici, pfod_meter.ino

Ces modifications ajoutent l'analyseur multimètre et une minuterie de 5 secondes. S'il n'y a pas de nouvelle lecture valide dans ce laps de temps, l'esquisse arrête d'envoyer des données et met à jour l'affichage Android/pfodApp sur « - - - ». Au fur et à mesure que la sélection manuelle du compteur est modifiée, les étiquettes du graphique sont mises à jour, mais vous devez quitter le graphique et le resélectionner pour voir les nouvelles étiquettes. D'autre part, la lecture du compteur est automatiquement mise à jour toutes les secondes. Enfin, pfodApp gère l'Unicode par défaut. Ainsi, lors de l'affichage de la lecture du compteur, la méthode getTypeAsUnicode() est utilisée pour renvoyer l'Unicode pour les ohms, et degsC, ℃ pour l'affichage du compteur.

Le bouton graphique affiche un graphique de mise à jour des lectures:-

Les données du graphique, au format CSV, sont également enregistrées dans un fichier sur votre mobile Android sous /pfodAppRawData/Mulitmeter.txt pour un transfert ultérieur sur votre ordinateur et une importation dans une feuille de calcul pour d'autres calculs et graphiques.

Étape 10: Les modifications de l'esquisse en détail

  1. Téléchargez la bibliothèque pfodVC820MeterParser.zip, puis ouvrez l'IDE Arduino et cliquez sur Sketch → Inclure la bibliothèque → Ajouter.zip pour ajouter cette bibliothèque à votre IDE.
  2. Ajoutez la bibliothèque pfodVC820MeterParser à l'esquisse. Cliquez sur Sketch → Inclure la bibliothèque → pfodVC820MeterParser. Cela ajoutera les instructions d'inclusion en haut de l'esquisse.
  3. Editer pfodParser_codeGenerated parser("V1"); vers pfodParser_codeGenerated parser(""); Cela désactive la mise en cache du menu dans pfodApp afin que vos modifications de menu soient affichées. Vous pouvez revenir à « V3 » lorsque vous avez terminé toutes vos modifications pour réactiver la mise en cache du menu.
  4. Ajoutez ces lignes pour créer les objets pour la série logicielle et le multimètre. pfodVC820MeterParser compteur;
  5. À la fin de setup(), ajoutez Serial1.begin(2400); meter.connect(&Serial1);
  6. Au-dessus de loop(), ajoutez un validReadingTimer long non signé = 0; const non signé long VALID_READINGS_TIMEOUT = 5000; // 5secs bool haveValidReadings = true; // défini sur true lorsque les lectures sont valides int measureType = meter. NO_READING; et en haut de la boucle() ajoutez if (meter.haveReading()) { if (meter.isValid()) { validReadingTimer = millis(); haveValidReadings = true; } int newType = meter.getType(); if (measurementType != newType) { // afficher de nouveaux titres d'enregistrement de données parser.print(F("sec, ")); parser.println(meter.getTypeAsStr()); } TypeMesure = nouveauType; } if ((millis() - validReadingTimer) > VALID_READINGS_TIMEOUT) { haveValidReadings = false; // aucune nouvelle lecture valide dans les 5 dernières secondes }
  7. Plus bas dans la boucle, remplacez parser.print(F("{=Multimeter|time (secs)|Plot_1~~~||}")); avec parser.print(F("{=Multimeter|time (secs)|Meter Reading~~~")); parser.print(meter.getTypeAsStr()); parser.print(F("||}"));
  8. Au bas de loop() remplacer sendData(); avec if (haveValidReadings) { sendData(); }
  9. Dans sendData(), remplacez parser.print(', '); parser.print(((float)(plot_1_var-plot_1_varMin)) * plot_1_scaling + plot_1_varDisplayMin); avec parser.print(', '); parser.print(meter.getAsStr);
  10. Dans sendMainMenu(), remplacez parser.print(F("~Label")); avec parser.print('~'); if (haveValidReadings) { parser.print(meter.getDigits()); parser.print(meter.getScalingAsStr()); parser.print(meter.getTypeAsUnicode ()); } else { parser.print(F("- - -")); }
  11. Dans sendMainMenuUpdate() ajoutez parser.print(F("|!A"));parser.print('~'); if (haveValidReadings) { parser.print(meter.getDigits()); parser.print(meter.getScalingAsStr()); parser.print(meter.getTypeAsUnicode ()); } else { parser.print(F("- - -")); } Pour mettre à jour la lecture lors de l'utilisation de la mise en cache du menu.

Conclusion

Ce tutoriel a montré comment connecter un multimètre bon marché à un Arduino Mega2560 via RS232. De nombreuses autres cartes sont également prises en charge. La pfodVC820MeterParserlibrary analyse les données du multimètre en flottants pour les calculs Arduino et les chaînes pour l'affichage et la journalisation. pfodDesignerV2 a été utilisé pour générer un croquis de base pour afficher la lecture du multimètre et afficher un tracé des valeurs dans un mobile Android à l'aide de pfodApp. Aucune programmation Android n'est requise. À cette esquisse de base, la manipulation du multimètre a été ajoutée et l'esquisse finale affiche la lecture actuelle du multimètre sur votre mobile Android, trace les lectures et les enregistre dans un fichier sur votre mobile pour une utilisation ultérieure.

Conseillé: