DYNAMENT AN0007 Arduino do Platinum COMM Instrukcja użytkownika

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

  1. Pobierz najnowszą wersję oprogramowania Arduino IDE ze strony
    Arduino webstrona.
  2. Wybierz płytkę Arduino, procesor i port w narzędziach
    menu rozwijane.

Prześlij kod

  1. Skopiuj dostarczony plik exampKod le do Arduino IDE.
  2. Prześlij kod do Arduino klikając strzałkę.
  3. 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

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *