AN0007 Arduino na Platinum COMM
“
Informacije o proizvodu
Tehnički podaci
- Naziv proizvoda: ARDUINO u PLATINUM COMMS POMOĆNI DOKUMENT
- Proizvođač: Dynament Limited
- Adresa: HermitagIndustrijska zona e Lane, Kings Mill Way,
Mansfield, Nottinghamshire, NG18 5ER, UK - Kontakt: Tel: 44 (0)1623 663636, E-pošta: sales@dynament.com,
Webstranica: www.dynament.com - Broj: 1.2, Datum: 09.
Upute za uporabu proizvoda
Spajanje senzora
Ovaj podatkovni list koristi Arduino Mega kao primjerampPovežite se kao
slijedi:
- 5v -> 5v Arduino pin
- 0v -> Uzemljenje Arduina
- Odašiljač -> Arduino RX1
- Rx -> Ide na izlaz djelitelja napona. Ulaz
ide na Arduino Tx
Voltage Kompatibilnost
Arduino koristi 5V logički visoki napon, dok Platinum Sensor koristi
3.3 V. Koristite voltagdjelitelj s predloženim vrijednostima za R1 i R2 kao
4K7 kako bi se spriječilo oštećenje senzora.
Arduino IDE postavljanje
- Preuzmite najnoviju verziju Arduino IDE softvera s
Arduino webmjesto. - Odaberite Arduino ploču, procesor i port u alatima
padajući izbornik.
Prijenos koda
- Kopirajte priloženi primjerample kod u Arduino IDE.
- Prenesite kod na Arduino klikom na strelicu.
- Otvorite serijski monitor za view prijenos podataka.
FAQ
P: Što trebam učiniti ako imam Arduino Uno s samo jednom komunikacijskom karticom?
luka?
A: Spojite Platinum senzor na taj priključak. Prilikom korištenja
serijski monitor, također će prikazati poslani heksadecimalni kod.
“`
Napomena o aplikaciji AN0007
DOKUMENT POMOĆI ZA KOMUNIKACIJU S ARDUINO NA PLATINUM
Dynament Limited
HermitagIndustrijska zona e Lane, Kings Mill Way, Mansfield, Nottinghamshire, NG18 5ER, UK. Tel: +44 (0)1623 663636
e-pošta: sales@dynament.com www.dynament.com
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 1 od 14
Sadržaj
Dynament Limited ……………………………………………………………………………………………………….1 Spajanje senzora………………………………………………………………………………………..3 Arduino IDE …… ...5 Objašnjenje koda……………………………………………………………………………………………………..9 Raščlamba paketa ………………………………………………………………………………………………………….11 Korištenje Serial.read() ………………………………………………………………………………………………………….13
Napredne napomene o konverziji… ....14
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 2 od 14
Spajanje senzora Ovaj podatkovni list koristi Arduino Mega kao npr.ampArdunio Mega ima više od jednog komunikacijskog porta, stoga se komunikacijski port 1 koristi za komunikaciju sa senzorom, a komunikacijski port 0 za ispis na računalo.
Arduino koristi 5V logički visoki napon, dok Platinum senzor koristi 3.3V, pa kako bi se spriječilo oštećenje senzora, potreban je dodatni napon.tagMora se koristiti razdjelnik. Predložene vrijednosti za R1 i R2 su 4K7.
Slika 1: Smanjuje volumentagdo upotrebljive razine
Prijenosna linija senzora koja ide do prijemnog napona Arduina ne treba razdjelnik jer je 3.3 V prihvatljiv ulaz za Arduino.
Za napajanje senzora, mora biti spojen na 5 V i 0 V. Za to možete koristiti pinove na Arduinu.
Nakon što je ovo završeno, senzor bi sada trebao imati spojene sljedeće pinove:
5v -> 5v Arduino pin
0v -> Uzemljenje Arduina
Odašiljač -> Arduino RX1
Rx -> Ide na izlaz djelitelja napona. Ulaz ide na Arduino Tx.
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 3 od 14
Nakon što je ovo završeno, vaš Platinum senzor treba spojiti kao što je prikazano:
Slika 2: Senzor je prikazan naopako s adapterom za lemljenje
Ako koristite Arduino s samo jednim komunikacijskim portom (kao što je Arduino Uno), morat ćete ga spojiti na njega, međutim kada koristite serijski monitor (prikazan kasnije), on će također prikazivati heksadecimalni broj koji se prenosi.
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 4 od 14
Arduino IDE Idi na Arduino webstranicu i preuzmite najnoviju verziju Arduino IDE softvera. Nakon instalacije trebali biste vidjeti sljedeći zaslon:
Slika 3: Početni zaslon Arduina
U padajućem izborniku alata odaberite Arduino ploču, procesor i port koji koristite:
Slika 4: Odabir opcija ploče, procesora i priključka
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 5 od 14
Kopiraj u ovom primjeruampkod: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);
}
void petlja() { pošalji_čitanje_live_data_simple(); primi_čitanje_live_data_simple(); kašnjenje(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
Izdanje 1.2
09
Promjena bilješke 805
Stranica 6 od 14
Slika 5: Kod spreman za prijenos
Kliknite strelicu za prijenos koda na Arduino. Nakon što je Arduino programiran, otvorite serijski monitor.
AN0007
Slika 6: Otvorite serijski monitor
Izdanje 1.2
09
Promjena bilješke 805
Stranica 7 od 14
Slika 7: Serijski monitor prikazuje primljeni paket
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 8 od 14
Objašnjenje koda Arduino IDE koristi C++ za programiranje Arduina.
Ovaj redak je deklaracija unaprijed. Koristi se za obavještavanje mikrokontrolera da će se dalje u programu pozvati funkcije `send_read_live_data_simple' i `receive_read_live_data_simple'.
Sljedeća je funkcija postavljanja. Ovaj kod se izvršava samo jednom pri pokretanju. Pokreće portove Serial0 i Serial1. Serial0 je ono što se prikazuje na zaslonu serijskog monitora. Serial1 je port za komunikaciju sa senzorom.
Ovo je glavna petlja, ovaj se kod ponavljano ponavlja. Čitajući nazive funkcija možete vidjeti da šalje zahtjev za čitanje pojednostavljene verzije strukture podataka uživo. Zatim čita prijemni port kako bi pročitao odgovor. Nakon toga mikrokontroler čeka 5000 ms.
Ova funkcija zapisuje zahtjev za dobivanje jednostavne strukture podataka uživo na serijski port 1. Kao što je prethodno spomenuto, ako imate samo jedan serijski port, trebali biste promijeniti Serial1 u Serial. Za potpuni popis naredbi, pogledajte dokument Premier sensor Communications protocol. Evo dijela dokumenta koji vam govori što napisati za ovu naredbu:
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 9 od 14
Ova funkcija ponavlja funkciju čitanja dok još ima podataka koje treba primiti od Platinum senzora. Serial1.read() čita podatke iz Serial1 koji je spojen na senzor i ispisuje ih na Serial0 kako bi se mogli vidjeti na serijskom monitoru. Zatim se ispisuje znak `|' kako bi se svaki primljeni bajt razbio i bio jasniji na serijskom monitoru.
Nakon što je ovo završeno, zapisuje novu liniju u serijski monitor.
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 10 od 14
Raspodjela paketa Slike 8 i 9 prikazuju izlaz serijskog dekodera spojenog na prijemne i odašiljačke linije.
Slika 8: Odlazni paket
Slika 9: Dolazni paket
Slike 10 i 11 prikazuju odlazni i dolazni heksadecimalni kod sa stupcem koji pokazuje o kojoj se naredbi radi.
Slika 10: Opis odlaznog paketa
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 11 od 14
Slika 11: Opis dolaznog paketa
Imajte na umu da je očitanje plina decimalni, a ne cijeli broj. Ovaj decimalni broj je u IEEE-754 formatu, možete koristiti online pretvarač poput ovog za pretvorbu. Vrijednost plina u ovom slučaju pokazuje -250 (jer je u to vrijeme bila u načinu rada s greškom).
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 12 od 14
Korištenje Serial.read()
Prethodni kod je samo ispisao primljene podatke na serijski monitor, ako želite spremiti podatke u varijable, morat ćete izvršiti daljnju obradu. Paket koji primite podijeljen je na bajtove, zbog toga ćete morati spojiti neke od tih podataka u varijable. Serial1.Read() vraća cijeli broj (koji za Arduino ima 16 bitova), međutim, koristi se samo prvih 8 bitova. Zbog toga ga možemo kopirati u manji tip podataka koji ima samo 8 bitova, u ovom slučaju koristit ću char.
za pakete koji su dugi samo jedan bajt, ovo radi dobro:
Za pakete duljine 2 ili 4 bajta morat ćete spojiti podatke.
To možete učiniti na mnogo različitih načina, ovdje ću pomaknuti podatke ulijevo, a zatim ih izvesti operacijom ILI.
Koristeći ovaj kod, ako je readByte1 0x34, a readByte2 0x12.
(int)readByte2
// ovo pretvara 0x12 u 0x0012.
(int)readByte2 << 8
// ovo pomiče bitove za jedan bajt, čime dobivamo vrijednost 0x1200.
(int)readByte2 << 8 | readByte1 // ovo se zatim spaja ILI operatorom, gdje 0x34 daje 0x1234.
Drugi način da se to učini jest staviti vrijednosti u niz, a zatim pretvoriti niz u željeni tip:
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 13 od 14
Znakovi su dugi jedan bajt, dok je float dug 4 bajta. Zbog toga, ako napravimo niz od 4 znaka s našim vrijednostima u njemu i promijenimo tip u float.
U ovom slučaju readArray je pokazivač na niz znakova. (float*)readArray ovaj dio ga pretvara u pokazivač na broj s pomičnim zavojem, a zatim se na početak dodaje * kako bi se dobila vrijednost broja s pomičnim zavojem.
Napredne bilješke o konverziji
1. Serial.read() vraća int umjesto char jer će pogreške vratiti negativne vrijednosti. Vaš program bi to trebao provjeriti.
2. uint8_t i uint16_t trebaju se koristiti umjesto char i int, budući da ove vrste nemaju standardnu veličinu (na mom računalu int je 32 bita, dok je na Arduinu 16 bita).
3. Komunikacijski protokol sadrži znakove punjene bajtovima (također poznate kao kontrolni znakovi), što je detaljnije objašnjeno u dokumentu tds0045 Premier sensor Communications protocol. Zbog toga će jednostavni paket podataka za čitanje uživo povremeno biti veći od očekivanog.
AN0007
Izdanje 1.2
09
Promjena bilješke 805
Stranica 14 od 14
Dokumenti / Resursi
![]() |
DYNAMENT AN0007 Arduino na Platinum COMM [pdf] Korisnički priručnik AN0007 Arduino na Platinum COMM, AN0007, Arduino na Platinum COMM, na Platinum COMM, Platinum COMM |