Uživatelská příručka DYNAMENT AN0007 pro komunikaci mezi Arduinem a Platinum

AN0007 Arduino-Platinum COMM

Informace o produktu

Specifikace

  • Název produktu: NÁPOVĚDA K KOMUNIKACÍM PŘEVODCŮM ARDUINO DO PLATINUM
  • Výrobce: Dynament Limited
  • Adresa: HermitagPrůmyslová zóna e Lane, Kings Mill Way,
    Mansfield, Nottinghamshire, NG18 5ER, Spojené království
  • Kontakt: Tel.: +44 (0)1623 663636, E-mail: sales@dynament.com
    Webstránky: www.dynament.com
  • Vydání: 1.2, Datum: 09

Návod k použití produktu

Připojení senzoru

Tento datový list používá Arduino Mega jako příklad.ampnapř. Připojte se jako
následuje:

  • 5V -> 5V pin Arduina
  • 0V -> Uzemnění Arduina
  • Vysílač -> Arduino RX1
  • Rx -> Jde na výstup děliče napětí. Vstup
    jde do Arduina v Texasu

svtage Kompatibilita

Arduino používá 5V logickou úroveň, zatímco Platinum Sensor ji používá...
3.3 V. Použijte volttagdělič s navrhovanými hodnotami pro R1 a R2 jako
4K7, aby se zabránilo poškození senzoru.

Nastavení Arduino IDE

  1. Stáhněte si nejnovější verzi softwaru Arduino IDE z
    Arduino webmísto.
  2. V nástrojích vyberte desku Arduino, procesor a port
    rozbalovací nabídka.

Nahrávání kódu

  1. Zkopírujte poskytnutý exampkód do Arduino IDE.
  2. Nahrajte kód do Arduina kliknutím na šipku.
  3. Otevřete sériový monitor pro view přenos dat.

FAQ

Otázka: Co mám dělat, když mám Arduino Uno pouze s jedním komunikační modulem?
přístav?

A: Připojte platinový senzor k tomuto portu. Při použití
sériový monitor, zobrazí se také přenášený hexadecimální kód.

“`

Aplikační poznámka AN0007
NÁPOVĚDNÁ DOKUMENTACE PRO PŘEVOD Z ARDUINO NA PLATINUM

Dynament Limited
HermitagPrůmyslová zóna e Lane, Kings Mill Way, Mansfield, Nottinghamshire, NG18 5ER, Spojené království. Tel.: +44 (0)1623 663636
e-mail: sales@dynament.com www.dynament.com

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 1 z 14

Obsah
Dynament Limited ……………………………………………………………………………………………………….1 Připojení senzoru………………………………………………………………………………………..3 Arduino IDE …… .....5 Vysvětlení kódu……………………………………………………………………………………………………………..9 Rozklad paketů ………………………………………………………………………………………………………………….11 Použití Serial.read() ………………………………………………………………………………………………………….13
Pokročilé poznámky k převodu… ....14

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 2 z 14

Připojení senzoru Tento datový list používá Arduino Mega jako např.ampArdunio Mega nabízí více než jeden komunikační port, proto se komunikační port 1 používá pro komunikaci se senzorem a komunikační port 0 se používá pro tisk do počítače.
Arduino používá logické napětí 5 V, zatímco Platinum Sensor používá 3.3 V, takže aby se zabránilo poškození senzoru, je nutné...tagMusí být použit dělič. Doporučené hodnoty pro R1 a R2 jsou 4K7.

Obrázek 1: Snižuje objemtage na použitelnou úroveň
Vysílací linka senzoru vedoucí k přijímači Arduina nepotřebuje dělič, protože 3.3 V je pro Arduino přijatelný vstup.
Pro napájení senzoru musí být připojen k 5V a 0V. K tomu můžete použít piny na Arduinu.
Po dokončení by měl mít senzor připojeny následující piny:
5V -> 5V pin Arduina
0V -> Uzemnění Arduina
Vysílač -> Arduino RX1
Rx -> Jde na výstup děliče napětí. Vstup jde na Arduino Tx.

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 3 z 14

Po dokončení by měl být váš Platinum Sensor připojen, jak je znázorněno:
Obrázek 2: Snímač je zobrazen vzhůru nohama s pájecím adaptérem
Pokud používáte Arduino s pouze jedním komunikačním portem (jako je Arduino Uno), budete ho muset připojit k němu. Pokud však použijete sériový monitor (viz dále), zobrazí se také přenášený hexadecimální kód.

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 4 z 14

Arduino IDE Přejít na Arduino weba stáhněte si nejnovější verzi softwaru Arduino IDE. Po instalaci byste měli vidět následující obrazovku:
Obrázek 3: Domovská obrazovka Arduina
V rozbalovací nabídce nástrojů vyberte desku Arduino, procesor a port, který používáte:

Obrázek 4: Výběr možností desky, procesoru a portu

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 5 z 14

Kopie v tomto příkladuampkód: 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

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 6 z 14

Obrázek 5: Kód připraven k nahrání
Klikněte na šipku pro nahrání kódu do Arduina. Po naprogramování Arduina otevřete monitor sériového portu.

AN0007

Obrázek 6: Otevření monitoru sériového portu

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 7 z 14

Obrázek 7: Sériový monitor zobrazuje přijatý paket

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 8 z 14

Vysvětlení kódu Arduino IDE používá k programování Arduina jazyk C++.
Tento řádek je deklarace pro dopředné zpracování. Slouží k informování mikrokontroléru, že dále v programu budou volány funkce `send_read_live_data_simple' a `receive_read_live_data_simple'.
Další je funkce nastavení. Tento kód se spustí pouze jednou při spuštění. Spouští porty Serial0 a Serial1. Serial0 je to, co se zobrazuje na obrazovce sériového monitoru. Serial1 je port pro komunikaci se senzorem.
Toto je hlavní smyčka, tento kód se opakovaně opakuje. Z názvů funkcí můžete vidět, že odesílá požadavek na čtení zjednodušené verze struktury živých dat. Poté čte přijímací port, aby si přečetl odpověď. Poté mikrokontrolér čeká 5000 ms.
Tato funkce zapíše požadavek na získání jednoduché struktury živých dat na sériový port 1. Jak již bylo zmíněno, pokud máte pouze jeden sériový port, měli byste změnit Serial1 na Serial. Úplný seznam příkazů naleznete v dokumentu Premier sensor Communications protocol. Zde je část dokumentu, která vám říká, co pro tento příkaz napsat:

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 9 z 14

Tato funkce provede smyčku čtení, dokud jsou stále k dispozici data z platinového senzoru. Funkce Serial1.read() načte data ze sériového portu Serial1, který je připojen k senzoru, a vytiskne je na Serial0, aby byla viditelná na sériovém monitoru. Poté se vytiskne znak `|', který rozdělí každý přijatý bajt a zpřehlední ho na sériovém monitoru.
Po dokončení zapíše nový řádek do sériového monitoru.

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 10 z 14

Rozklad paketů Obrázky 8 a 9 znázorňují výstup sériového dekodéru připojeného k přijímacím a vysílacím linkám.
Obrázek 8: Odchozí paket
Obrázek 9: Příchozí paket
Obrázky 10 a 11 zobrazují odchozí a příchozí hexadecimální kód se sloupcem, který ukazuje, o který příkaz se jedná.

Obrázek 10: Popis odchozího paketu

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 11 z 14

Obrázek 11: Popis příchozího paketu
Upozorňujeme, že údaj o plynu je desetinné číslo, nikoli celé číslo. Toto desetinné číslo je ve formátu IEEE-754, k jeho převodu můžete použít online převodník, jako je tento. Hodnota plynu v tomto případě ukazuje -250 (protože v dané chvíli byla v chybovém režimu).

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 12 z 14

Použití Serial.read()
Předchozí kód pouze vypisoval přijatá data do sériového monitoru. Pokud chcete data ukládat do proměnných, budete muset provést další zpracování. Přijatý paket je rozdělen na bajty, proto budete muset některá z těchto dat zřetězit do proměnných. Serial1.Read() vrací celé číslo (což je pro Arduino 16 bitů), ale používá se pouze prvních 8 bitů. Díky tomu jej můžeme zkopírovat do menšího datového typu, který má pouze 8 bitů, v tomto případě použiji char.
Pro pakety, které jsou dlouhé pouze jeden bajt, to funguje dobře:
U paketů o délce 2 nebo 4 bajty budete muset data zřetězit.

Můžete to udělat mnoha různými způsoby, tady to, co udělám, je posunout data doleva a pak je operovat operací NEBO.

Pomocí tohoto kódu, pokud je readByte1 0x34 a readByte2 0x12.

(int)readByte2

// toto převede 0x12 na 0x0012.

(int)readByte2 << 8

// toto posune bity o jeden bajt, čímž se dosáhne hodnoty 0x1200.

(int)readByte2 << 8 | readByte1 // toto se pak operací OR zkombinuje, přičemž 0x34 dává 0x1234.

Dalším způsobem, jak to udělat, je vložit hodnoty do pole a poté toto pole převést na požadovaný typ:

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 13 z 14

Typ char má délku jeden bajt, zatímco typ float má délku 4 bajty. Z tohoto důvodu, pokud vytvoříme pole 4 znaků s našimi hodnotami v něm a změníme typ na float.
V tomto případě je readArray ukazatel na pole znaků. (float*)readArray tato část jej převede na ukazatel na číslo s plovoucí čárkou a poté se na začátek přidá *, aby se získala hodnota daného čísla s plovoucí čárkou.
Pokročilé poznámky k převodu
1. Funkce Serial.read() vrací int místo char, protože chyby vracejí záporné hodnoty. Váš program by to měl zkontrolovat.
2. Místo typů char a int by se měly používat typy uint8_t a uint16_t, protože tyto typy nemají standardní velikost (na mém PC je int 32 bitů, zatímco na Arduinu je to 16 bitů).
3. Komunikační protokol obsahuje znaky vyplněné bajty (známé také jako řídicí znaky). Toto je podrobněji vysvětleno v dokumentu tds0045 Premier sensor Communications protocol. Z tohoto důvodu může být jednoduchý paket pro čtení živých dat občas větší, než se očekávalo.

AN0007

Vydání 1.2

09. 04. 2025

Změna poznámky 805

Strana 14 z 14

Dokumenty / zdroje

DYNAMENT AN0007 Komunikace mezi Arduinem a Platinum [pdfUživatelská příručka
AN0007 Arduino na Platinum COMM, AN0007, Arduino na Platinum COMM, na Platinum COMM, Platinum COMM

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *