AN0007 Arduino a Platinum COMM
“
Informazioni sul prodotto
Specifiche
- Nome prodotto: DOCUMENTO DI AIUTO PER LE COMUNICAZIONI DA ARDUINO A PLATINUM
- Produttore: Dynament Limited
- Indirizzo: HermitagZona industriale di e Lane, Kings Mill Way,
Mansfield, Nottinghamshire, NG18 5ER, Regno Unito - Contatto: Tel: 44 (0)1623 663636, Email: sales@dynament.com,
Websito: www.dynament.com - Edizione: 1.2, Data: 09/04/2025
Istruzioni per l'uso del prodotto
Collegamento del sensore
Questa scheda tecnica utilizza l'Arduino Mega come esempioample. Connetti come
segue:
- 5v -> pin Arduino 5v
- 0v -> Massa Arduino
- Tx -> Arduino RX1
- Rx -> Va all'uscita del partitore di potenziale. L'ingresso
va ad Arduino Tx
Voltage Compatibilità
L'Arduino utilizza la logica 5v alta mentre il sensore Platinum utilizza
3.3 V. Utilizzare un volumetage divisore con valori suggeriti per R1 e R2 come
4K7 per evitare danni al sensore.
Configurazione IDE Arduino
- Scarica la versione più recente del software Arduino IDE da
l'Arduino websito. - Seleziona la scheda Arduino, il processore e la porta negli strumenti
menu a discesa.
Caricamento del codice
- Copia l'esempio fornitoampil codice nell'IDE Arduino.
- Carica il codice su Arduino cliccando sulla freccia.
- Aprire il monitor seriale per view trasmissione dati.
Domande frequenti
D: Cosa dovrei fare se ho un Arduino Uno con una sola scheda di comunicazione?
porta?
A: Collegare il sensore Platinum a quella porta. Quando si utilizza il
monitor seriale, mostrerà anche il valore esadecimale trasmesso.
“`
Nota applicativa AN0007
DOCUMENTO DI AIUTO PER LE COMUNICAZIONI DA ARDUINO A PLATINUM
Dinamento limitato
ErminiatagZona industriale e Lane Kings Mill Way Mansfield Nottinghamshire NG18 5ER Regno Unito. Tel: +44 (0)1623 663636
e-mail: sales@dynament.com www.dynament.com
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 1 di 14
Contenuto
Dynament Limited ………………………………………………………………………………………………………………….1 Collegamento del sensore………………………………………………………………………………………………..3 Arduino IDE …………………………………………………………………………………………………………………5 Spiegazione del codice…………………………………………………………………………………………………………..9 Suddivisione dei pacchetti ……………………………………………………………………………………………………….11 Utilizzo di Serial.read() ……………………………………………………………………………………………………….13
Note di conversione avanzate…………………………………………………………………………………….14
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 2 di 14
Collegamento del sensore Questa scheda tecnica utilizza Arduino Mega come esempioample. Ardunio Mega fornisce più di una porta di comunicazione, quindi la porta di comunicazione 1 viene utilizzata per comunicare con il sensore e la porta di comunicazione 0 viene utilizzata per stampare sul PC.
L'Arduino utilizza una logica alta a 5 V mentre il sensore Platinum utilizza 3.3 V, quindi per evitare danni al sensore, un voltagÈ necessario utilizzare il divisore. I valori suggeriti per R1 e R2 sono 4K7.
Figura 1: Abbassa il volumetage al livello utilizzabile
La linea di trasmissione del sensore che va alla ricezione dell'Arduino non necessita di un partitore, poiché 3.3 V è un input accettabile per l'Arduino.
Per alimentare il sensore, è necessario collegarlo a 5 V e 0 V. Per farlo, è possibile utilizzare i pin dell'Arduino.
Una volta completata questa operazione, il sensore dovrebbe avere i seguenti pin collegati:
5v -> pin Arduino 5v
0v -> Massa Arduino
Tx -> Arduino RX1
Rx -> Va all'uscita del partitore di potenziale. L'ingresso va al trasmettitore Arduino.
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 3 di 14
Una volta completata questa operazione, il sensore Platinum dovrebbe essere collegato come mostrato:
Figura 2: Il sensore è mostrato capovolto con un adattatore per saldatura
Se si utilizza un Arduino con una sola porta di comunicazione (come l'Arduino Uno), sarà necessario collegarlo a quella; tuttavia, quando si utilizza il monitor seriale (mostrato più avanti), verrà visualizzato anche il valore esadecimale trasmesso.
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 4 di 14
Arduino IDE Vai ad Arduino webVisita il sito e scarica la versione più recente del software Arduino IDE. Una volta installato, dovresti vedere la seguente schermata:
Figura 3: Schermata iniziale di Arduino
Nel menu a discesa degli strumenti seleziona la scheda Arduino, il processore e la porta che stai utilizzando:
Figura 4: Selezionare le opzioni di scheda, processore e porta
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 5 di 14
Copia in questo esempioampil codice: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);
}
void loop() { invia_lettura_dati_live_semplice(); ricevi_lettura_dati_live_semplice(); ritardo(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
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 6 di 14
Figura 5: Codice pronto per il caricamento
Clicca sulla freccia per caricare il codice su Arduino. Dopo aver programmato Arduino, apri il monitor seriale.
AN0007
Figura 6: Aprire il monitor seriale
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 7 di 14
Figura 7: Il Serial Montor mostra il pacchetto che è stato ricevuto
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 8 di 14
Spiegazione del codice L'IDE Arduino utilizza C++ per programmare Arduino.
Questa riga è una dichiarazione anticipata. Serve a indicare al microcontrollore che più avanti nel programma verranno chiamate le funzioni `send_read_live_data_simple' e `receive_read_live_data_simple'.
La prossima è la funzione di configurazione. Questo codice viene eseguito una sola volta all'avvio. Avvia le porte Serial0 e Serial1. Serial0 è la porta visualizzata nella schermata del monitor seriale. Serial1 è la porta per comunicare con il sensore.
Questo è il ciclo principale, il codice viene ripetuto più volte. Leggendo i nomi delle funzioni, si può vedere che invia una richiesta per leggere una versione semplificata della struttura dati live. Quindi legge la porta di ricezione per leggere la risposta. Dopodiché, il microcontrollore attende 5000 ms.
Questa funzione scrive la richiesta per ottenere la struttura semplice dei dati live sulla porta seriale 1. Come accennato in precedenza, se si dispone di una sola porta seriale, è necessario modificare Serial1 in Serial. Per visualizzare l'elenco completo dei comandi, fare riferimento al documento sul protocollo di comunicazione del sensore Premier. Ecco la parte del documento che indica cosa scrivere per questo comando:
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 9 di 14
Questa funzione esegue un ciclo della funzione di lettura mentre ci sono ancora dati da ricevere dal sensore Platinum. Serial1.read() legge i dati dalla porta Serial1, collegata al sensore, e li stampa sulla porta Serial0 in modo che possano essere visualizzati sul monitor seriale. Il carattere `|' viene quindi stampato per suddividere ogni byte ricevuto e renderlo più chiaro sul monitor seriale.
Una volta completata questa operazione, scrive una nuova riga sul monitor seriale.
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 10 di 14
Suddivisione dei pacchetti Le figure 8 e 9 mostrano l'uscita di un decodificatore seriale collegato alle linee di ricezione e trasmissione.
Figura 8: Pacchetto in uscita
Figura 9: Pacchetto in arrivo
Le figure 10 e 11 mostrano rispettivamente i dati esadecimali in uscita e in entrata, con una colonna che indica di quale comando si tratta.
Figura 10: Descrizione del pacchetto in uscita
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 11 di 14
Figura 11: Descrizione del pacchetto in arrivo
Si prega di notare che la lettura del gas è un numero decimale, non un numero intero. Questo decimale è in formato IEEE-754; è possibile utilizzare un convertitore online come questo per convertirlo. Il valore del gas in questo caso mostra -250 (poiché era in modalità errore al momento).
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 12 di 14
Utilizzo di Serial.read()
Il codice precedente visualizzava solo i dati ricevuti sul monitor seriale; se si desidera salvare i dati in variabili, sarà necessario eseguire un'ulteriore elaborazione. Il pacchetto ricevuto è suddiviso in byte, per questo motivo sarà necessario concatenare alcuni di questi dati in variabili. Serial1.Read() restituisce un int (che per Arduino è di 16 bit), tuttavia, vengono utilizzati solo i primi 8 bit. Per questo motivo, possiamo copiarlo in un tipo di dato più piccolo, di soli 8 bit, in questo caso userò char.
per i pacchetti lunghi solo un byte, questo funziona bene:
Per i pacchetti lunghi 2 o 4 byte sarà necessario concatenare i dati.
Puoi farlo in molti modi diversi, qui quello che farò è spostare a sinistra i dati e poi eseguirne l'operazione OR.
Utilizzando questo codice, se readByte1 è 0x34 e readByte2 è 0x12.
(int)readByte2
// questo converte 0x12 in 0x0012.
(int)readByte2 << 8
// questo sposta i bit di un byte, rendendolo 0x1200.
(int)readByte2 << 8 | readByte1 // questo viene quindi OR, con 0x34 che diventa 0x1234.
Un altro modo per farlo sarebbe quello di inserire i valori in un array e poi convertire l'array nel tipo desiderato:
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 13 di 14
I caratteri sono lunghi un byte, mentre i float sono lunghi 4 byte. Per questo motivo, se creiamo un array di 4 caratteri con i nostri valori al suo interno e cambiamo il tipo in float.
In questo caso readArray è un puntatore a un array di caratteri. (float*)readArray questa parte lo converte in un puntatore a un float e quindi viene aggiunto un * all'inizio per ottenere il valore del float.
Note di conversione avanzate
1. Serial.read() restituisce int invece di char perché gli errori restituiscono valori negativi. Il programma dovrebbe verificare questo aspetto.
2. Al posto di char e int dovrebbero essere usati uint8_t e uint16_t, rispettivamente, poiché questi tipi non hanno una dimensione standard (sul mio PC int è a 32 bit, mentre su Arduino è a 16 bit).
3. Il protocollo di comunicazione contiene caratteri di byte riempiti (noti anche come caratteri di controllo), come spiegato più dettagliatamente nel documento tds0045 Premier Sensor Communications Protocol. Per questo motivo, il pacchetto semplice di dati in tempo reale letto può occasionalmente essere più grande del previsto.
AN0007
Numero 1.2
09/04/2025
Nota di modifica 805
Pagina 14 di 14
Documenti / Risorse
![]() |
DYNAMENT AN0007 Arduino a Platinum COMM [pdf] Guida utente AN0007 Arduino a Platinum COMM, AN0007, Arduino a Platinum COMM, a Platinum COMM, Platinum COMM |