AN0007 Arduino v Platinum COMM
“
Informacije o izdelku
Specifikacije
- Ime izdelka: ARDUINO v PLATINUM COMMS POMOČNI DOKUMENT
- Proizvajalec: Dynament Limited
- Naslov: HermitagIndustrijska cona e Lane, Kings Mill Way,
Mansfield, Nottinghamshire, NG18 5ER, Združeno kraljestvo - Kontakt: Tel.: 44 (0)1623 663636, E-pošta: sales@dynament.com,
Webspletna stran: www.dynament.com - Izdaja: 1.2, Datum: 09
Navodila za uporabo izdelka
Priključitev senzorja
Ta podatkovni list uporablja Arduino Mega kot primerampPovežite se kot
sledi:
- 5v -> 5v Arduino pin
- 0v -> Arduino GND
- Oddajnik -> Arduino RX1
- Rx -> Gre na izhod delilnika napetosti. Vhod
gre na Arduino v Teksasu
voltage Združljivost
Arduino uporablja 5V logično visoko napetost, medtem ko Platinum Sensor uporablja
3.3 V. Uporabite vol.tagdelilnik s predlaganimi vrednostmi za R1 in R2 kot
4K7, da preprečite poškodbe senzorja.
Nastavitev Arduino IDE
- Prenesite najnovejšo različico programske opreme Arduino IDE z
Arduino webmesto. - V orodjih izberite ploščo Arduino, procesor in vrata
spustni meni.
Nalaganje kode
- Kopirajte priloženo datoteko exampvnesite kodo v Arduino IDE.
- Kodo naložite na Arduino s klikom na puščico.
- Odprite serijski monitor za view prenos podatkov.
pogosta vprašanja
V: Kaj naj storim, če imam Arduino Uno samo z eno komunikacijsko kartico?
pristanišče?
A: Priključite platinasti senzor na ta vrata. Pri uporabi
serijski monitor, bo prikazal tudi poslano šestnajstiško kodo.
“`
Opomba o uporabi AN0007
DOKUMENT POMOČI ZA KOMUNIKACIJO ARDUINO V PLATINUM
Dynament Limited
HermitagIndustrijska cona e Lane, Kings Mill Way, Mansfield, Nottinghamshire, NG18 5ER, Združeno kraljestvo. Tel.: +44 (0)1623 663636
e-pošta: sales@dynament.com www.dynament.com
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 1 od 14
Vsebina
Dynament Limited …………………………………………………………………………………………………….1 Priključitev senzorja……………………………………………………………………………………..3 Arduino IDE …… ...5 Razlaga kode……………………………………………………………………………………………………..9 Razčlenitev paketov ……………………………………………………………………………………………………………….11 Uporaba Serial.read() ……………………………………………………………………………………………………….13
Napredne opombe o pretvorbi… ....14
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 2 od 14
Priključitev senzorja Ta podatkovni list uporablja Arduino Mega kot npr.ampArdunio Mega ponuja več kot en komunikacijski vhod, zato se komunikacijski vhod 1 uporablja za komunikacijo s senzorjem, komunikacijski vhod 0 pa za tiskanje na računalnik.
Arduino uporablja 5V logično visoko napetost, medtem ko Platinum senzor uporablja 3.3V, zato da preprečite poškodbe senzorja, je potrebna napetost.tagUporabiti je treba delilnik. Predlagane vrednosti za R1 in R2 so 4K7.
Slika 1: Znižuje volumentagdo uporabne ravni
Oddajna linija senzorja, ki gre do sprejemnika Arduino, ne potrebuje delilnika, saj je 3.3 V sprejemljiv vhod za Arduino.
Za napajanje senzorja mora biti priključen na 5 V in 0 V. Za to lahko uporabite pine na Arduinu.
Ko je to končano, bi moral imeti senzor priključene naslednje pine:
5v -> 5v Arduino pin
0v -> Arduino GND
Oddajnik -> Arduino RX1
Rx -> Gre na izhod delilnika napetosti. Vhod gre na Arduino Tx.
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 3 od 14
Ko je to končano, je treba vaš Platinum Sensor priključiti, kot je prikazano:
Slika 2: Senzor je prikazan obrnjen navzdol z adapterjem za spajkanje
Če uporabljate Arduino samo z enim komunikacijskim vhodom (kot je Arduino Uno), ga boste morali povezati z njim, ko pa uporabite serijski monitor (prikazan kasneje), bo prikazal tudi poslano šestnajstiško kodo.
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 4 od 14
Arduino IDE Pojdite na Arduino webin prenesite najnovejšo različico programske opreme Arduino IDE. Ko je nameščena, bi morali videti naslednji zaslon:
Slika 3: Začetni zaslon Arduina
V spustnem meniju orodij izberite ploščo Arduino, procesor in vrata, ki jih uporabljate:
Slika 4: Izbira možnosti plošče, procesorja in vrat
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 5 od 14
Kopiraj v tem primeruampkoda: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);
}
void loop() { pošlji_preberi_v živo_data_simple(); prejmi_preberi_v živo_data_simple(); zakasnitev(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() { medtem ko (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 6 od 14
Slika 5: Koda je pripravljena za nalaganje
Kliknite puščico, da naložite kodo v Arduino. Ko je Arduino programiran, odprite serijski monitor.
AN0007
Slika 6: Odprite serijski monitor
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 7 od 14
Slika 7: Serijski monitor prikazuje prejeti paket
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 8 od 14
Razlaga kode Arduino IDE uporablja C++ za programiranje Arduina.
Ta vrstica je deklaracija naprej. Uporablja se za sporočanje mikrokrmilniku, da se bosta v nadaljevanju programa poklicali funkciji `send_read_live_data_simple' in `receive_read_live_data_simple'.
Sledi funkcija za nastavitev. Ta koda se zažene samo enkrat ob zagonu. Zažene vrata Serial0 in Serial1. Serial0 je tisto, kar je prikazano na zaslonu serijskega monitorja. Serial1 so vrata za komunikacijo s senzorjem.
To je glavna zanka, ta koda se ponavlja. Iz imen funkcij lahko vidite, da pošlje zahtevo za branje poenostavljene različice strukture živih podatkov. Nato prebere sprejemna vrata, da prebere odgovor. Po tem mikrokrmilnik čaka 5000 ms.
Ta funkcija zapiše zahtevo za pridobitev preproste strukture podatkov v živo na serijska vrata 1. Kot smo že omenili, če imate samo ena serijska vrata, morate spremeniti Serial1 v Serial. Celoten seznam ukazov si oglejte v dokumentu o komunikacijskem protokolu Premier sensor. Tukaj je del dokumenta, ki vam pove, kaj morate napisati za ta ukaz:
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 9 od 14
Ta funkcija ponovi funkcijo branja, medtem ko so še podatki, ki jih je treba prejeti iz Platinum senzorja. Serial1.read() prebere podatke iz Serial1, ki je priključen na senzor, in jih izpiše na Serial0, tako da jih je mogoče videti na serijskem monitorju. Nato se izpiše znak `|', ki razdeli vsak prejeti bajt, da bo bolj jasen na serijskem monitorju.
Ko je to končano, zapiše novo vrstico v serijski monitor.
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 10 od 14
Razčlenitev paketov Sliki 8 in 9 prikazujeta izhod serijskega dekoderja, priključenega na sprejemno in oddajno linijo.
Slika 8: Odhodni paket
Slika 9: Dohodni paket
Slika 10 in 11 prikazujeta odhodno in vhodno šestnajstiško kodo s stolpcem, ki prikazuje, za kateri ukaz gre.
Slika 10: Opis odhodnega paketa
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 11 od 14
Slika 11: Opis dohodnega paketa
Upoštevajte, da je odčitek plina decimalno število, ne celo število. To decimalno število je v formatu IEEE-754, za pretvorbo pa lahko uporabite spletni pretvornik, kot je ta. Vrednost plina v tem primeru kaže -250 (saj je bila takrat v načinu napake).
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 12 od 14
Uporaba funkcije Serial.read()
Prejšnja koda je prejete podatke samo izpisala na serijski monitor. Če želite podatke shraniti v spremenljivke, boste morali izvesti nadaljnjo obdelavo. Prejeti paket je razdeljen na bajte, zato boste morali nekatere od teh podatkov združiti v spremenljivke. Serial1.Read() vrne celo število (ki je za Arduino 16-bitno), vendar se uporabi le prvih 8 bitov. Zaradi tega ga lahko kopiramo v manjši podatkovni tip, ki ima le 8 bitov, v tem primeru bom uporabil char.
Za pakete, ki so dolgi le en bajt, to deluje brezhibno:
Za pakete, ki so dolgi 2 ali 4 bajte, boste morali podatke združiti.
To lahko storite na veliko različnih načinov, tukaj bom podatke premaknil v levo in jih nato uporabil z operacijo ALI.
Z uporabo te kode, če je readByte1 0x34 in readByte2 0x12.
(int)readByte2
// to pretvori 0x12 v 0x0012.
(int)readByte2 << 8
// to premakne bite za en bajt, tako da bo vrednost 0x1200.
(int)readByte2 << 8 | readByte1 // to se nato obdela z operacijo ALI, pri čemer 0x34 naredi 0x1234.
Drug način za to bi bil, da vrednosti vnesete v tabelo in nato tabelo pretvorite v želeni tip:
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 13 od 14
Znaki (chars) so dolgi en bajt, medtem ko je float dolg 4 bajte. Zaradi tega, če ustvarimo polje s 4 znaki z našimi vrednostmi v njem in spremenimo tip v float.
V tem primeru je readArray kazalec na polje znakov. (float*)readArray ga pretvori v kazalec na število s plavajočo vejo, nato pa se na začetek doda *, da se dobi vrednost števila s plavajočo vejo.
Napredne opombe o pretvorbi
1. Serial.read() vrne celo število namesto znaka, ker bodo napake vrnile negativne vrednosti. Vaš program bi moral to preveriti.
2. Namesto char in int je treba uporabiti uint8_t in uint16_t, saj ti dve vrsti nimata standardne velikosti (na mojem računalniku je int 32 bitov, medtem ko je na Arduinu 16 bitov).
3. Komunikacijski protokol vsebuje znake, polnjene z bajti (znane tudi kot kontrolni znaki), kar je podrobneje pojasnjeno v dokumentu o komunikacijskem protokolu Premier sensor tds0045. Zaradi tega bo preprost paket prebranih podatkov v živo občasno večji od pričakovanega.
AN0007
Številka 1.2
09/04/2025
Sprememba opombe 805
Stran 14 od 14
Dokumenti / Viri
![]() |
DYNAMENT AN0007 Arduino v Platinum COMM [pdf] Uporabniški priročnik AN0007 Arduino v Platinum COMM, AN0007, Arduino v Platinum COMM, v Platinum COMM, Platinum COMM |