AN0007 Arduino vers Platinum COMM
“
Informations sur le produit
Caractéristiques
- Nom du produit : DOCUMENT D'AIDE AUX COMMUNICATIONS ARDUINO VERS PLATINUM
- Fabricant : Dynament Limited
- Adresse : HermitagZone industrielle e Lane, Kings Mill Way,
Mansfield, Nottinghamshire, NG18 5ER, Royaume-Uni - Contact : Tél. : 44 (0)1623 663636, E-mail : sales@dynament.com,
Website : www.dynament.com - Numéro : 1.2, Date : 09/04/2025
Instructions d'utilisation du produit
Connexion du capteur
Cette fiche technique utilise l'Arduino Mega comme example. Connectez-vous en tant que
suit:
- Broche Arduino 5v -> 5v
- 0v -> Arduino GND
- Tx -> Arduino RX1
- Rx -> Va à la sortie du diviseur de potentiel. L'entrée
va à Arduino Tx
Voltage Compatibilité
L'Arduino utilise une logique haute de 5 V tandis que le capteur Platinum utilise
3.3 V. Utilisez un voltage diviseur avec les valeurs suggérées pour R1 et R2 comme
4K7 pour éviter d'endommager le capteur.
Configuration de l'IDE Arduino
- Téléchargez la dernière version du logiciel Arduino IDE depuis
l'Arduino website. - Sélectionnez la carte Arduino, le processeur et le port dans les outils
menu déroulant.
Téléchargement de code
- Copiez l'ex fourniample code dans l'IDE Arduino.
- Téléchargez le code sur l'Arduino en cliquant sur la flèche.
- Ouvrez le moniteur série pour view transmission de données.
FAQ
Q : Que dois-je faire si j'ai un Arduino Uno avec une seule communication ?
port?
A : Connectez le capteur Platinum à ce port. Lorsque vous utilisez le
moniteur série, il affichera également l'hexadécimal transmis.
« `
Note d'application AN0007
Document d'aide aux communications Arduino vers Platinum
Dynament Limitée
HermitagZone industrielle e Lane, Kings Mill Way, Mansfield, Nottinghamshire NG18 5ER, Royaume-Uni. Tél. : 44 (0)1623 663636
Courriel : sales@dynament.com www.dynament.com
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 1 sur 14
Contenu
Dynament Limited ……………………………………………………………………………………………………….1 Connexion du capteur ……………………………………………………………………………………………………..3 Arduino IDE …………………………………………………………………………………………………………………5 Explication du code …………………………………………………………………………………………………………..9 Décomposition des paquets ……………………………………………………………………………………………………….11 Utilisation de Serial.read() ………………………………………………………………………………………………………….13
Notes de conversion avancées… ...
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 2 sur 14
Connexion du capteur Cette fiche technique utilise l'Arduino Mega comme example. L'Ardunio Mega fournit plus d'un port de communication, donc le port de communication 1 est utilisé pour communiquer avec le capteur et le port de communication 0 est utilisé pour imprimer sur le PC.
L'Arduino utilise une logique haute de 5 V tandis que le capteur Platinum utilise 3.3 V, donc pour éviter d'endommager le capteur, un voltagUn diviseur doit être utilisé. Les valeurs suggérées pour R1 et R2 sont 4K7.
Figure 1 : Réduit le volumetage au niveau utilisable
La ligne de transmission du capteur allant à la réception Arduino n'a pas besoin de diviseur car 3.3 V est une entrée acceptable pour l'Arduino.
Pour alimenter le capteur, il doit être connecté à 5 V et 0 V. Pour ce faire, vous pouvez utiliser les broches de l'Arduino.
Une fois cette opération terminée, le capteur devrait maintenant avoir les broches suivantes connectées :
Broche Arduino 5v -> 5v
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> Va à la sortie du diviseur de potentiel. L'entrée va à l'émetteur Arduino.
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 3 sur 14
Une fois cette opération terminée, votre capteur Platinum doit être connecté comme indiqué :
Figure 2 : Le capteur est représenté à l'envers avec un adaptateur à souder
Si vous utilisez un Arduino avec un seul port de communication (comme l'Arduino Uno), vous devrez le connecter à celui-ci, mais lorsque vous utilisez le moniteur série (illustré plus tard), il affichera également l'hexadécimal transmis.
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 4 sur 14
IDE Arduino Accéder à l'Arduino webVisitez le site et téléchargez la dernière version de l'IDE Arduino. Une fois l'installation terminée, l'écran suivant devrait s'afficher :
Figure 3 : Écran d'accueil d'Arduino
Dans le menu déroulant des outils, sélectionnez la carte Arduino, le processeur et le port que vous utilisez :
Figure 4 : Sélectionnez les options de carte, de processeur et de port
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 5 sur 14
Copie dans cet example code: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);
}
void loop() { send_read_live_data_simple(); receive_read_live_data_simple(); delay(5000);
}
void send_read_live_data_simple(){ // 0x10, 0x13, 0x06, 0x10, 0x1F, 0x00, 0x58 Serial1.write(0x10); Serial1.write(0x13); Serial1.write(0x06); Serial1.write(0x10); Serial1.write(0x1F); Serial1.write(0x00); Serial1.write(0x58);
}
void receive_read_live_data_simple(){ while (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 6 sur 14
Figure 5 : Code prêt à être téléchargé
Cliquez sur la flèche pour télécharger le code sur l'Arduino. Une fois l'Arduino programmé, ouvrez le moniteur série.
AN0007
Figure 6 : Ouvrir le moniteur série
Numéro 1.2
09/04/2025
Note de modification 805
Page 7 sur 14
Figure 7 : Le moniteur série affiche le paquet qui a été reçu
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 8 sur 14
Explication du code L'IDE Arduino utilise C++ pour programmer l'Arduino.
Cette ligne est une déclaration anticipée. Elle indique au microcontrôleur que les fonctions « send_read_live_data_simple » et « receive_read_live_data_simple » seront appelées plus loin dans le programme.
Vient ensuite la fonction de configuration. Ce code est exécuté une seule fois au démarrage. Il active les ports Serial0 et Serial1. Serial0 est le port affiché sur l'écran du moniteur série. Serial1 est le port de communication avec le capteur.
Il s'agit de la boucle principale. Ce code est exécuté en boucle. En lisant les noms des fonctions, vous pouvez constater qu'une requête est envoyée pour lire une version simplifiée de la structure de données active. Ensuite, il lit le port de réception pour lire la réponse. Le microcontrôleur attend ensuite 5000 XNUMX ms.
Cette fonction écrit la requête pour obtenir la structure simple des données en temps réel sur le port série 1. Comme indiqué précédemment, si vous n'avez qu'un seul port série, remplacez Serial1 par Serial. Pour consulter la liste complète des commandes, consultez le document du protocole de communication du capteur Premier. Voici la partie du document qui explique comment écrire cette commande :
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 9 sur 14
Cette fonction boucle la lecture tant qu'il reste des données à recevoir du capteur Platinum. Serial1.read() lit les données de Serial1, connecté au capteur, et les affiche sur Serial0 afin qu'elles soient visibles sur le moniteur série. Le caractère « | » est ensuite affiché pour fractionner chaque octet reçu et le rendre plus lisible sur le moniteur série.
Une fois cette opération terminée, il écrit une nouvelle ligne sur le moniteur série.
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 10 sur 14
Décomposition des paquets Les figures 8 et 9 montrent la sortie d'un décodeur série connecté aux lignes de réception et de transmission.
Figure 8 : Paquet sortant
Figure 9 : Paquet entrant
Les figures 10 et 11 montrent respectivement l'hexagone sortant et entrant avec une colonne indiquant de quelle commande il s'agit.
Figure 10 : Description du paquet sortant
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 11 sur 14
Figure 11 : Description du paquet entrant
Veuillez noter que la valeur de gaz est un nombre décimal et non un entier. Ce nombre décimal est au format IEEE-754 ; vous pouvez utiliser un convertisseur en ligne comme celui-ci pour le convertir. Dans ce cas, la valeur de gaz est de -250 (car elle était en mode erreur à ce moment-là).
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 12 sur 14
Utilisation de Serial.read()
Le code précédent affichait uniquement les données reçues sur le moniteur série. Si vous souhaitez les enregistrer dans des variables, un traitement supplémentaire sera nécessaire. Le paquet reçu est divisé en octets ; vous devrez donc concaténer certaines de ces données dans des variables. Serial1.Read() renvoie un int (16 bits pour Arduino), mais seuls les 8 premiers bits sont utilisés. Nous pouvons donc le copier dans un type de données plus petit, de seulement 8 bits ; dans ce cas, j'utiliserai char.
pour les paquets qui ne font qu'un octet de long, cela fonctionne bien :
Pour les paquets de 2 ou 4 octets de long, vous devrez concaténer les données.
Vous pouvez le faire de différentes manières. Ici, ce que je vais faire est de décaler les données vers la gauche, puis de les utiliser comme OU.
En utilisant ce code, si readByte1 est 0x34 et readByte2 est 0x12.
(int)readByte2
// cela convertit le 0x12 en 0x0012.
(int)readByte2 << 8
// cela décale les bits d'un octet, ce qui donne 0x1200.
(int)readByte2 << 8 | readByte1 // ceci est ensuite OU, avec 0x34 donnant 0x1234.
Une autre façon de procéder serait de placer les valeurs dans un tableau, puis de convertir le tableau dans le type souhaité :
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 13 sur 14
Les caractères ont une longueur d'un octet, tandis que les nombres à virgule flottante ont une longueur de quatre octets. Pour cette raison, si nous créons un tableau de quatre caractères contenant nos valeurs et que nous changeons le type en nombre à virgule flottante,
Dans ce cas, readArray est un pointeur vers un tableau de caractères. (float*)readArray cette partie le convertit en un pointeur vers un float, puis un * est ajouté au début pour obtenir la valeur du float.
Notes de conversion avancées
1. Serial.read() renvoie int au lieu de char, car les erreurs renvoient des valeurs négatives. Votre programme doit vérifier ce point.
2. uint8_t et uint16_t doivent être utilisés à la place de char et int respectivement, car ces types n'ont pas de taille standard (sur mon PC, int est de 32 bits alors que sur l'Arduino, il est de 16 bits).
3. Le protocole de communication contient des caractères de remplissage d'octets (également appelés caractères de contrôle). Ceci est expliqué plus en détail dans le document du protocole de communication du capteur Premier tds0045. De ce fait, le paquet de données lues en temps réel peut parfois être plus volumineux que prévu.
AN0007
Numéro 1.2
09/04/2025
Note de modification 805
Page 14 sur 14
Documents / Ressources
![]() |
DYNAMENT AN0007 Arduino vers Platinum COMM [pdf] Guide de l'utilisateur AN0007 Arduino vers Platinum COMM, AN0007, Arduino vers Platinum COMM, vers Platinum COMM, Platinum COMM |