AN0007 Arduino to Platinum COMM
“
Информације о производу
Спецификације
- Назив производа: ARDUINO to PLATINUM COMMS ПОМОЋНИ ДОКУМЕНТ
- Произвођач: Динамент Лимитед
- Адреса: ХермиtagИндустријска зона „e Lane“, Кингс Мил Веј,
Менсфилд, Нотингемшир, NG18 5ER, Велика Британија - Контакт: Тел: 44 (0)1623 663636, Е-пошта: sales@dynament.com
Webсајт: www.dynament.com - Број: 1.2, Датум: 09.
Упутства за употребу производа
Повезивање сензора
Овај технички лист користи Ардуино Мега као примерampле. Повежите се као
следи:
- 5v -> 5v Ардуино пин
- 0v -> Ардуино GND
- Трансмисија -> Ардуино RX1
- Rx -> Иде на излаз делитеља потенцијала. Улаз
иде на Ардуино у Тексасу
Волtagе Компатибилност
Ардуино користи логички висок напон од 5 В, док Платинум сензор користи
3.3 V. Користите вол.tagделилац са предложеним вредностима за R1 и R2 као
4K7 да би се спречило оштећење сензора.
Ардуино ИДЕ подешавање
- Преузмите најновију верзију Arduino IDE софтвера са
Ардуино webсајту. - Изаберите Ардуино плочу, процесор и порт у алатима
падајући мени.
Отпремање кода
- Копирајте дати примерampубаците код у Ардуино IDE.
- Отпремите код на Ардуино кликом на стрелицу.
- Отворите серијски монитор да бисте view пренос података.
ФАК
П: Шта да радим ако имам Ардуино Уно са само једном комуникацијом?
порт?
A: Повежите платинасти сензор са тим портом. Када користите
серијски монитор, такође ће приказивати пренесени хексадецимални код.
“`
Напомена о примени АН0007
ДОКУМЕНТ ПОМОЋИ ЗА КОМУНИКАЦИЈУ АРДУИНО-ПЛАТИНУМ
Динамент Лимитед
ХермиtagИндустријска зона „e Lane“, Кингс Мил Веј, Менсфилд, Нотингемшир, NG18 5ER, Велика Британија. Тел: +44 (0)1623 663636
имејл: sales@dynament.com www.dynament.com
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 1 од 14
Садржај
Dynament Limited …………………………………………………………………………………………………….1 Повезивање сензора……………………………………………………………………………………..3 Arduino IDE …… ...5 Објашњење кода………………………………………………………………………………………………………..9 Расподела пакета ………………………………………………………………………………………………………….11 Коришћење Serial.read() …………………………………………………………………………………………………….13
Напредне напомене о конверзији… ....14
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 2 од 14
Повезивање сензора Овај технички лист користи Ардуино Мега као примерampАрдунио Мега има више од једног комуникационог порта, стога се комуникациони порт 1 користи за комуникацију са сензором, а комуникациони порт 0 се користи за штампање на рачунар.
Ардуино користи логички висок напон од 5 V, док Платинум сензор користи 3.3 V, тако да би се спречило оштећење сензора, потребан је додатни напон.tagМора се користити делитељ. Препоручене вредности за R1 и R2 су 4K7.
Слика 1: Смањује запреминуtagдо употребљивог нивоа
Сензорска линија за предају која иде до Ардуина пријемника не захтева разделник јер је 3.3 V прихватљив улаз за Ардуино.
Да би се сензор напајао, мора бити повезан на 5v и 0v. Да бисте то урадили, можете користити пинове на Ардуину.
Након што је ово завршено, сензор би сада требало да има следеће повезане пинове:
5v -> 5v Ардуино пин
0v -> Ардуино GND
Трансмисија -> Ардуино RX1
Rx -> Иде на излаз делитеља напона. Улаз иде на Arduino Tx.
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 3 од 14
Након што је ово завршено, ваш Платинум сензор треба да буде повезан као што је приказано:
Слика 2: Сензор је приказан наопачке са адаптером за лемљење
Ако користите Ардуино са само једним комуникационим портом (као што је Ардуино Уно), мораћете да га повежете на њега, међутим, када користите серијски монитор (приказан касније), он ће такође приказивати хексадецимални код који се преноси.
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 4 од 14
Ардуино ИДЕ Идите на Ардуино webсајт и преузмите најновију верзију Arduino IDE софтвера. Након инсталације требало би да видите следећи екран:
Слика 3: Почетни екран Ардуина
У падајућем менију алата изаберите Ардуино плочу, процесор и порт који користите:
Слика 4: Изаберите опције плоче, процесора и порта
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 5 од 14
Копирајте у овом примеруampкод: void send_read_live_data_simple(); void receive_read_live_data_simple();
воид сетуп() { Серијал.бегин(38400); Серијал1.бегин(38400);
}
воид петља() { сенд_читај_ливе_дата_симпле(); пријем_читај_ливе_дата_симпле(); кашњење(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);
}
воид прима_читање_живих_дата_симпле(){ док (Сериал1.аваилабле()) { Сериал.принт(Сериал1.читање(), ХЕКС); Сериал.принт(“|”); } Сериал.принтлн();
}
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 6 од 14
Слика 5: Код је спреман за отпремање
Кликните на стрелицу да бисте отпремили код на Ардуино. Након што је Ардуино програмиран, отворите серијски монитор.
АН0007
Слика 6: Отворите серијски монитор
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 7 од 14
Слика 7: Серијски монитор приказује пакет који је примљен
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 8 од 14
Објашњење кода Arduino IDE користи C++ за програмирање Arduina.
Ова линија је декларација унапред. Користи се да се микроконтролеру каже да ће се даље у програму позивати функције `send_read_live_data_simple' и `receive_read_live_data_simple'.
Следећа је функција подешавања. Овај код се покреће само једном при покретању. Покреће портове Serial0 и Serial1. Serial0 је оно што се приказује на екрану серијског монитора. Serial1 је порт за комуникацију са сензором.
Ово је главна петља, овај код се више пута понавља. Читајући имена функција, можете видети да шаље захтев за читање поједностављене верзије структуре података уживо. Затим чита пријемни порт да би прочитао одговор. Након тога, микроконтролер чека 5000 ms.
Ова функција уписује захтев за добијање једноставне структуре података уживо на серијски порт 1. Као што је претходно поменуто, ако имате само један серијски порт, требало би да промените Serial1 у Serial. Да бисте видели комплетну листу команди, погледајте документ о протоколу комуникације Premier sensor-а. Ево дела документа који вам говори шта да напишете за ову команду:
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 9 од 14
Ова функција покреће функцију читања док још увек има података које треба примити са Платинум сензора. Функција Serial1.read() чита податке са Serial1 који је повезан са сензором и штампа их на Serial0 тако да се могу видети на серијском монитору. Знак `|' се затим штампа да би се разбио сваки примљени бајт и био јаснији на серијском монитору.
Након што се ово заврши, уписује нову линију у серијски монитор.
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 10 од 14
Расподела пакета Слике 8 и 9 приказују излаз серијског декодера повезаног на пријемну и предајну линију.
Слика 8: Одлазни пакет
Слика 9: Долазни пакет
Слике 10 и 11 приказују одлазни и долазни хексадецимални код, респективно, са колоном која показује која је то команда.
Слика 10: Опис одлазног пакета
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 11 од 14
Слика 11: Опис долазног пакета
Имајте у виду да је очитавање гаса децимални број, а не цео број. Овај децимални број је у IEEE-754 формату, можете користити онлајн конвертор као што је овај да бисте га конвертовали. Вредност гаса у овом случају показује -250 (јер је у том тренутку била у режиму грешке).
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 12 од 14
Коришћење Serial.read() функције
Претходни код је само исписао примљене податке на серијски монитор, ако желите да сачувате податке у променљивим, мораћете да извршите даљу обраду. Пакет који примите је подељен на бајтове, због тога ћете морати да спојите неке од ових података у променљиве. Serial1.Read() враћа цео број (који за Ардуино има 16 бита), међутим, користи се само првих 8 битова. Због тога можемо да га копирамо у мањи тип података који има само 8 бита, у овом случају ћу користити char.
за пакете који су дугачки само један бајт, ово функционише добро:
За пакете дужине 2 или 4 бајта, потребно је да спојите податке.
Ово можете урадити на много различитих начина, овде ћу померити податке улево, а затим извршити ИЛИ операцију.
Користећи овај код, ако је readByte1 0x34, а readByte2 0x12.
(int)readByte2
// ово конвертује 0x12 у 0x0012.
(int)readByte2 << 8
// ово помера битове за један бајт, чинећи га 0x1200.
(int)readByte2 << 8 | readByte1 // ово се затим комбинује помоћу ИЛИ операције, где 0x34 прави 0x1234.
Други начин да се ово уради је да се вредности ставе у низ, а затим низ конвертује у жељени тип:
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 13 од 14
Тип char је дугачак један бајт, док је float дугачак 4 бајта. Због тога, ако направимо низ од 4 карактера са нашим вредностима у њему и променимо тип у float.
У овом случају, readArray је показивач на низ карактера. (float*)readArray овај део га конвертује у показивач на број са покретним флоат-ом, а затим се на почетак додаје * да би се добила вредност броја са покретним флоат-ом.
Напредне напомене о конверзији
1. Serial.read() враћа int уместо char јер ће грешке вратити негативне вредности. Ваш програм би требало да ово провери.
2. uint8_t и uint16_t треба користити уместо char и int респективно, јер ови типови немају стандардну величину (на мом рачунару int је 32 бита, док је на Ардуину 16 бита).
3. Комуникациони протокол садржи бајтне карактере (познате и као контролни карактери), ово је детаљније објашњено у документу tds0045 Premier sensor Communications Protocol. Због тога ће једноставан пакет података за читање уживо повремено бити већи од очекиваног.
АН0007
Издање 1.2
09/04/2025
Белешка о промени 805
Страна 14 од 14
Документи / Ресурси
![]() |
DYNAMENT AN0007 Arduino to Platinum COMM [пдф] Упутство за кориснике AN0007 Ардуино на Платинум КОМУНИКАЦИЈА, AN0007, Ардуино на Платинум КОМУНИКАЦИЈА, на Платинум КОМУНИКАЦИЈА, Платинум КОМУНИКАЦИЈА |