AN0007 Arduino do Platinum COMM
“
Informacje o produkcie
Specyfikacje
- Nazwa produktu: ARDUINO do PLATINUM COMMS POMOC DOKUMENT
- Producent: Dynament Limited
- Adres: HermitagOsiedle przemysłowe e Lane, Kings Mill Way,
Mansfield, Nottinghamshire, NG18 5ER, Wielka Brytania - Kontakt: Tel: 44 (0)1623 663636, E-mail: sales@dynament.com,
Webstrona: www.dynament.com - Numer: 1.2, Data: 09/04/2025
Instrukcje użytkowania produktu
Podłączanie czujnika
W tej karcie danych Arduino Mega jest używane jako model example. Połącz jako
następuje:
- 5v -> pin Arduino 5v
- 0v -> Arduino GND
- Tx -> Arduino RX1
- Rx -> Idzie do wyjścia dzielnika potencjału. Wejście
idzie do Arduino Tx
Tomtage Kompatybilność
Arduino wykorzystuje 5-woltowy układ logiczny, podczas gdy czujnik Platinum wykorzystuje
3.3 V. Użyj woltomierztagDzielnik z sugerowanymi wartościami dla R1 i R2 jako
4K7 zapobiega uszkodzeniu czujnika.
Konfiguracja Arduino IDE
- Pobierz najnowszą wersję oprogramowania Arduino IDE ze strony
Arduino webstrona. - Wybierz płytkę Arduino, procesor i port w narzędziach
menu rozwijane.
Prześlij kod
- Skopiuj dostarczony plik exampKod le do Arduino IDE.
- Prześlij kod do Arduino klikając strzałkę.
- Otwórz monitor szeregowy, aby view transmisja danych.
Często zadawane pytania
P: Co powinienem zrobić, jeśli mam Arduino Uno z tylko jednym portem komunikacyjnym?
port?
A: Podłącz czujnik Platinum do tego portu. Podczas korzystania z
monitor szeregowy, pokaże również przesłany kod szesnastkowy.
„`
Nota aplikacyjna AN0007
DOKUMENT POMOCY DLA ARDUINO DO PLATINUM COMMS
Dynament Limited
Hermitage Lane Industrial Estate Kings Mill Way Mansfield Nottinghamshire NG18 5ER Wielka Brytania. Tel.: 44 (0)1623 663636
e-mail: sales@dynament.com www.dynament.com
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 1 z 14
Zawartość
Dynament Limited …………………………………………………………………………………………………….1 Podłączanie czujnika…………………………………………………………………………………………………..3 Arduino IDE………………………………………………………………………………………………………………5 Wyjaśnienie kodu…………………………………………………………………………………………………………..9 Podział pakietu………………………………………………………………………………………………………….11 Korzystanie z Serial.read() …………………………………………………………………………………………………….13
Zaawansowane notatki dotyczące konwersji…………………………………………………………………………….14
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 2 z 14
Podłączanie czujnika W tej karcie danych Arduino Mega jest używane jako czujnik zewnętrzny.ample. Ardunio Mega zapewnia więcej niż jeden port comm, dlatego port comm 1 służy do komunikacji z czujnikiem, a port comm 0 do drukowania na komputerze.
Arduino wykorzystuje 5 V logiki wysokiego napięcia, podczas gdy czujnik Platinum wykorzystuje 3.3 V, więc aby zapobiec uszkodzeniu czujnika,tagNależy użyć dzielnika. Sugerowane wartości dla R1 i R2 to 4K7.
Rysunek 1: Obniża objętośćtage do poziomu użytecznego
Linia transmisyjna czujnika biegnąca do odbiornika Arduino nie wymaga dzielnika, ponieważ 3.3 V jest akceptowalnym napięciem wejściowym dla Arduino.
Aby zasilić czujnik, należy go podłączyć do 5 V i 0 V. W tym celu można użyć pinów na Arduino.
Po zakończeniu tej czynności następujące piny czujnika powinny być podłączone:
5v -> pin Arduino 5v
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> Idzie do wyjścia dzielnika potencjału. Wejście idzie do Arduino Tx
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 3 z 14
Po zakończeniu tej czynności czujnik Platinum powinien być podłączony w sposób pokazany na rysunku:
Rysunek 2: Czujnik pokazano do góry nogami z adapterem lutowniczym
Jeśli używasz Arduino z tylko jednym portem Comm (np. Arduino Uno), będziesz musiał je do niego podłączyć. Jeśli jednak użyjesz monitora szeregowego (pokazanego później), pokaże on także przesyłany kod szesnastkowy.
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 4 z 14
Arduino IDE Przejdź do Arduino webwitrynę i pobierz najnowszą wersję oprogramowania Arduino IDE. Po zainstalowaniu powinieneś zobaczyć następujący ekran:
Rysunek 3: Ekran główny Arduino
W menu rozwijanym Narzędzia wybierz płytkę Arduino, procesor i port, którego używasz:
Rysunek 4: Wybierz opcje płyty, procesora i portu
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 5 z 14
Skopiuj w tym exampkod: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);
}
pętla void() { 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
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 6 z 14
Rysunek 5: Kod gotowy do przesłania
Kliknij strzałkę, aby przesłać kod do Arduino. Po zaprogramowaniu Arduino otwórz monitor szeregowy.
AN0007
Rysunek 6: Otwórz monitor szeregowy
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 7 z 14
Rysunek 7: Monitor szeregowy pokazuje odebrany pakiet
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 8 z 14
Wyjaśnienie kodu Arduino IDE wykorzystuje język C++ do programowania Arduino.
Ten wiersz jest deklaracją forward. Służy do poinformowania mikrokontrolera, że dalej w programie zostanie wywołana funkcja `send_read_live_data_simple' i funkcja `receive_read_live_data_simple'.
Następna jest funkcja konfiguracji. Ten kod jest uruchamiany tylko raz podczas uruchamiania. Uruchamia porty Serial0 i Serial1. Serial0 to to, co jest wyświetlane na ekranie monitora szeregowego. Serial1 to port do komunikacji z czujnikiem.
To jest główna pętla, ten kod jest wielokrotnie zapętlany. Czytając nazwy funkcji, możesz zobaczyć, że wysyła żądanie odczytu uproszczonej wersji struktury danych na żywo. Następnie odczytuje port odbioru, aby odczytać odpowiedź. Po tym mikrokontroler czeka 5000 ms.
Ta funkcja zapisuje żądanie, aby uzyskać prostą strukturę danych na żywo do portu szeregowego 1. Jak wspomniano wcześniej, jeśli masz tylko jeden port szeregowy, powinieneś zmienić Serial1 na Serial. Aby zobaczyć pełną listę poleceń, zapoznaj się z dokumentem Premier sensor Communications protocol. Oto część dokumentu, która mówi, co należy napisać dla tego polecenia:
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 9 z 14
Ta funkcja zapętla funkcję odczytu, gdy wciąż są dane do odebrania z czujnika Platinum. Serial1.read() odczytuje dane z Serial1, który jest podłączony do czujnika i drukuje je na Serial0, aby można je było zobaczyć na monitorze szeregowym. Następnie drukowany jest znak `|', aby rozbić każdy otrzymany bajt i uczynić go bardziej przejrzystym na monitorze szeregowym.
Po zakończeniu tej operacji zapisuje nowy wiersz do monitora szeregowego.
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 10 z 14
Podział pakietów Rysunki 8 i 9 przedstawiają wyjście dekodera szeregowego podłączonego do linii odbiorczej i nadawczej.
Rysunek 8: Pakiet wychodzący
Rysunek 9: Pakiet przychodzący
Rysunki 10 i 11 pokazują odpowiednio wychodzący i przychodzący kod szesnastkowy, a kolumna pokazuje, o jakie polecenie chodzi.
Rysunek 10: Opis pakietu wychodzącego
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 11 z 14
Rysunek 11: Opis pakietu przychodzącego
Należy pamiętać, że odczyt Gas jest liczbą dziesiętną, a nie całkowitą. Ta liczba dziesiętna jest w formacie IEEE-754, można użyć konwertera online, takiego jak ten, aby ją przekonwertować. Wartość Gas w tym przypadku pokazuje -250 (ponieważ w tym czasie była w trybie błędu).
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 12 z 14
Korzystanie z Serial.read()
Poprzedni kod tylko wydrukował dane otrzymane do monitora szeregowego, jeśli chcesz zapisać dane w zmiennych, będziesz musiał wykonać dalsze przetwarzanie. Otrzymany pakiet jest dzielony na bajty, dlatego będziesz musiał połączyć część tych danych w zmienne. Serial1.Read() zwraca int (który dla Arduino ma 16 bitów), jednak używane są tylko pierwsze 8 bitów. Dzięki temu możemy skopiować go do mniejszego typu danych, który ma tylko 8 bitów, w tym przypadku użyję char.
w przypadku pakietów, które mają długość tylko jednego bajtu, działa to dobrze:
W przypadku pakietów o długości 2 lub 4 bajtów konieczne będzie połączenie danych.
Można to zrobić na wiele sposobów, ja przesunę dane w lewo i użyję na nich operacji LUB.
Używając tego kodu, jeśli readByte1 wynosi 0x34, a readByte2 wynosi 0x12.
(int)odczytajBajt2
// konwertuje 0x12 na 0x0012.
(int)odczytajBajt2 << 8
// przesuwa bity o bajt i daje wynik 0x1200.
(int)readByte2 << 8 | readByte1 // to zostaje poddane operacji OR, gdzie 0x34 daje 0x1234.
Innym sposobem na zrobienie tego byłoby umieszczenie wartości w tablicy, a następnie przekonwertowanie tablicy na żądany typ:
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 13 z 14
chars ma długość bajtu, podczas gdy float ma długość 4 bajtów. Z tego powodu, jeśli utworzymy tablicę 4 chars z naszymi wartościami w niej i zmienimy typ na float.
W tym przypadku readArray jest wskaźnikiem do tablicy znaków. (float*)readArray ta część rzutuje go na wskaźnik do typu float, a następnie na początku dodawany jest znak *, aby uzyskać wartość typu float.
Zaawansowane notatki dotyczące konwersji
1. Serial.read() zwraca int zamiast char, ponieważ błędy zwrócą wartości ujemne. Twój program powinien to sprawdzić.
2. Zamiast typów char i int należy używać uint8_t i uint16_t, ponieważ typy te nie mają standardowego rozmiaru (na moim komputerze typ int ma 32 bity, natomiast na Arduino 16 bitów).
3. Protokół komunikacyjny zawiera znaki wypełnione bajtami (znane również jako znaki kontrolne), co jest wyjaśnione bardziej szczegółowo w dokumencie tds0045 Premier sensor Communications protocol. Z tego powodu prosty pakiet danych odczytanych na żywo będzie czasami większy niż oczekiwano.
AN0007
Numer 1.2
09/04/2025
Zmiana notatki 805
Strona 14 z 14
Dokumenty / Zasoby
![]() |
DYNAMENT AN0007 Arduino do Platinum COMM [plik PDF] Instrukcja użytkownika AN0007 Arduino do Platinum COMM, AN0007, Arduino do Platinum COMM, do Platinum COMM, Platinum COMM |