Přeskočit na hlavní obsah

Modbus RTU Registry - GEOSNAKE C6 Firmware

📡 Přehled komunikace

  • Protokol: Modbus RTU
  • Rychlost: 9600, 19200, 38400, 57600, 115200 bps (nastavitelné)
  • Formát: 8 dat, 1 stop, bez parity
  • Slave ID: 1-247 (nastavitelné, výchozí: 1)
  • Podporované funkce: FC03 (Read Holding Registers), FC06 (Write Single Register), FC05 (Write Single Coil)

🔢 Formát dat se znaménkem (signed values)

Mnoho registrů obsahuje záporné hodnoty (teplota, akcelerace, magnetické pole, úhly). Tyto hodnoty jsou uloženy ve formátu two's complement:

Signed 32-bit hodnoty (2 registry)

Většina měřených hodnot (akcelerace, magnetické pole, úhly) je uložena jako signed int32 rozdělená do 2 registrů:

  • High word (horních 16 bitů): první registr
  • Low word (dolních 16 bitů): druhý registr

Rekonstrukce signed int32:

FUNCTION read_signed_int32(high_reg, low_reg):
value = (high_reg << 16) | low_reg

// Konverze na signed (two's complement)
IF value > 0x7FFFFFFF THEN // pokud je bit 31 = 1 (záporné číslo)
value = value - 0x100000000
END IF

RETURN value
END FUNCTION

Příklad:

  • high=0xFFFF, low=0xFFFE → 0xFFFFFFFE → -2 (signed)
  • high=0x0000, low=0x0064 → 0x00000064 → +100 (signed)

Signed 16-bit hodnoty (1 registr)

Některé hodnoty (např. teplota 0x066E) jsou signed int16 v jednom registru:

Konverze signed int16:

FUNCTION read_signed_int16(reg):
IF reg > 32767 THEN // pokud je bit 15 = 1 (záporné číslo)
RETURN reg - 65536
END IF

RETURN reg
END FUNCTION

Příklad:

  • 0x09F6 (2550) → +2550 → +25.50°C (děleno 100)
  • 0xFBFF (64511) → -1025 → -10.25°C (děleno 100)

🗺️ Mapa registrů

📊 Základní registry (0x0000-0x000F)

AdresaRegistrPopisTypR/W
0x0000StatusStatus registruint16R
0x0001FW VersionVerze firmwareuint16R
0x0002HW VersionVerze hardwareuint16R

🔧 Alternativní baudrate a adresa (0x0080-0x0082)

AdresaRegistrPopisTypR/WJednotka
0x0080Baudrate HighBaudrate vysoký word (32-bit baudrate)uint16R/Wbps
0x0081Baudrate LowBaudrate nízký word (32-bit baudrate)uint16R/Wbps
0x0082Device AddressModbus adresa zařízení (alternativní)uint16R/W1-255

Poznámka: Registry 0x0080-0x0082 jsou alternativní způsob nastavení baudrate a adresy. Baudrate je uložen jako 32-bit hodnota rozdělená do 2 registrů. Podporované hodnoty: 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 bps.

📊 ADXL355 Akcelerometr

⚙️ Konfigurace ADXL355 (0x0600-0x0603)

AdresaRegistrPopisTypR/WJednotka
0x0600ADXL StatusStatus měření ADXL355uint16R/W0=idle, 1=start, 2=done
0x0601ADXL PointsPočet vzorků pro měřeníuint16R/W24-1024
0x0602ADXL RangeRozsah akcelerometruuint16R/W0=±2g, 1=±4g, 2=±8g
0x0603ADXL ODROutput Data Rateuint16R/WHz
0x0609ADXL Temp RawSurová teplota ADXL355uint16Rraw ADC

Vysvětlení parametrů ADXL355

ADXL Status (0x0600):

  • 0 = Idle - žádné měření neprobíhá
  • 1 = Start - spustí nové měření
  • 2 = Done - měření dokončeno, data jsou k dispozici

ADXL Points (0x0601):

  • Počet vzorků pro statistické zpracování (průměr, minimum, maximum)
  • Rozsah: 24-1024 vzorků
  • Více vzorků = přesnější výsledky, ale delší měření
  • Typická hodnota: 100-500 vzorků

ADXL Range (0x0602):

  • 0 = ±2g - nejvyšší přesnost, pro malé akcelerace
  • 1 = ±4g - střední rozsah
  • 2 = ±8g - největší rozsah, pro velké akcelerace
  • Důležité: Rozsah ovlivňuje přepočet RAW hodnot (viz níže)

ADXL ODR (0x0603) - Output Data Rate:

  • Vzorkovací frekvence senzoru v Hz
  • Vyšší ODR = rychlejší měření, ale vyšší šum
  • Nižší ODR = pomalejší měření, ale nižší šum
  • Typické hodnoty: 125, 250, 500, 1000, 2000, 4000 Hz

ADXL Temp Raw (0x0609):

  • Surová hodnota z teplotního ADC senzoru ADXL355
  • Vzorec přepočtu: Temp_°C = (RAW - 1852) / (-9.05)
  • Příklad: RAW = 1852 → 0°C, RAW = 1942 → -10°C, RAW = 1762 → +10°C
  • Pro přesnější teplotu použijte registr 0x066E (již přepočítaný na °C s rozlišením 0.01°C)

📊 Data ADXL355 - Průměr (0x060A-0x060F)

AdresaRegistrPopisTypR/WJednotka
0x060AADXL Avg X HighPrůměr X-osa (vysoký byte)int32_hRraw
0x060BADXL Avg X LowPrůměr X-osa (nízký byte)int32_lRraw
0x060CADXL Avg Y HighPrůměr Y-osa (vysoký byte)int32_hRraw
0x060DADXL Avg Y LowPrůměr Y-osa (nízký byte)int32_lRraw
0x060EADXL Avg Z HighPrůměr Z-osa (vysoký byte)int32_hRraw
0x060FADXL Avg Z LowPrůměr Z-osa (nízký byte)int32_lRraw

Přepočet RAW hodnot ADXL355 na jednotky g

Signed hodnoty: Každá osa je uložena jako signed int32 v 2 registrech. Viz sekce "Formát dat se znaménkem".

Přepočet závisí na nastaveném rozsahu (registr 0x0602):

// Nejprve přečtěte rozsah z registru 0x0602
range = READ_HOLDING_REGISTER(address=0x0602, slave_id=1)

// Potom přečtěte RAW hodnotu (signed int32 ze 2 registrů)
raw_value = read_signed_int32(high_reg, low_reg)

// Přepočet podle rozsahu:
IF range == 0 THEN // ±2g rozsah
g = raw_value × 3.9e-6
ELSE IF range == 1 THEN // ±4g rozsah
g = raw_value × 7.8e-6
ELSE IF range == 2 THEN // ±8g rozsah
g = raw_value × 15.6e-6
END IF

Příklad výpočtu:

  • Range = 0 (±2g), RAW = 256410 → g = 256410 × 3.9e-6 = 1.00g
  • Range = 1 (±4g), RAW = 256410 → g = 256410 × 7.8e-6 = 2.00g
  • Range = 2 (±8g), RAW = -128205 → g = -128205 × 15.6e-6 = -2.00g

Vztah mezi rozsahem a rozlišením:

  • ±2g: 1 LSB = 3.9 µg (nejvyšší rozlišení)
  • ±4g: 1 LSB = 7.8 µg
  • ±8g: 1 LSB = 15.6 µg (nejnižší rozlišení)

📉 Data ADXL355 - Minimum (0x0610-0x0615)

AdresaRegistrPopisTypR/WJednotka
0x0610ADXL Min X HighMinimum X-osa (vysoký byte)int32_hRraw
0x0611ADXL Min X LowMinimum X-osa (nízký byte)int32_lRraw
0x0612ADXL Min Y HighMinimum Y-osa (vysoký byte)int32_hRraw
0x0613ADXL Min Y LowMinimum Y-osa (nízký byte)int32_lRraw
0x0614ADXL Min Z HighMinimum Z-osa (vysoký byte)int32_hRraw
0x0615ADXL Min Z LowMinimum Z-osa (nízký byte)int32_lRraw

Signed hodnoty: Viz sekce "Formát dat se znaménkem". Přepočet: Viz sekce "Přepočet RAW hodnot ADXL355 na jednotky g" výše - přepočet závisí na rozsahu (0x0602)

📈 Data ADXL355 - Maximum (0x0616-0x061B)

AdresaRegistrPopisTypR/WJednotka
0x0616ADXL Max X HighMaximum X-osa (vysoký byte)int32_hRraw
0x0617ADXL Max X LowMaximum X-osa (nízký byte)int32_lRraw
0x0618ADXL Max Y HighMaximum Y-osa (vysoký byte)int32_hRraw
0x0619ADXL Max Y LowMaximum Y-osa (nízký byte)int32_lRraw
0x061AADXL Max Z HighMaximum Z-osa (vysoký byte)int32_hRraw
0x061BADXL Max Z LowMaximum Z-osa (nízký byte)int32_lRraw

Signed hodnoty: Viz sekce "Formát dat se znaménkem". Přepočet: Viz sekce "Přepočet RAW hodnot ADXL355 na jednotky g" výše - přepočet závisí na rozsahu (0x0602)

🧲 MLX90393 Magnetometr

⚙️ Konfigurace MLX90393 (0x0604-0x0605, 0x0630-0x0632)

AdresaRegistrPopisTypR/WJednotka
0x0604MLX StatusStatus měření MLX90393uint16R/W0=idle, 1=start, 2=done
0x0605MLX PointsPočet vzorků pro MLX měřeníuint16R/W1-1024
0x0630MLX GainZesílení senzoruuint16R/W0-7
0x0631MLX OSROversamplinguint16R/W0-3
0x0632MLX FilterDigitální filtruint16R/W0-7

Vysvětlení parametrů MLX90393

MLX Status (0x0604):

  • 0 = Idle - žádné měření neprobíhá
  • 1 = Start - spustí nové měření
  • 2 = Done - měření dokončeno, data jsou k dispozici

MLX Points (0x0605):

  • Počet vzorků pro statistické zpracování (průměr)
  • Rozsah: 1-1024 vzorků
  • Více vzorků = přesnější výsledky, ale delší měření
  • Typická hodnota: 10-100 vzorků

MLX Gain (0x0630) - Zesílení:

  • 0 = 1.0x (výchozí zesílení)
  • 1 = 1.33x
  • 2 = 1.67x
  • 3 = 2.0x
  • 4 = 2.5x
  • 5 = 3.0x
  • 6 = 4.0x
  • 7 = 5.0x
  • Vyšší zesílení = vyšší citlivost pro slabá magnetická pole
  • Nižší zesílení = větší rozsah měření, méně saturace

MLX OSR (0x0631) - Oversampling Ratio:

  • 0 = OSR_0 (nejrychlejší měření, nejvyšší šum)
  • 1 = OSR_1
  • 2 = OSR_2
  • 3 = OSR_3 (nejpomalejší měření, nejnižší šum)
  • Vyšší OSR = lepší poměr signál/šum, ale pomalejší měření

MLX Filter (0x0632) - Digitální filtr:

  • 0 = FILTER_0 (žádné filtrování)
  • 1 = FILTER_1
  • 2 = FILTER_2
  • 3 = FILTER_3
  • 4 = FILTER_4
  • 5 = FILTER_5 (výchozí)
  • 6 = FILTER_6
  • 7 = FILTER_7 (maximální filtrování)
  • Vyšší filtr = plynulejší data, ale pomalejší odezva na změny

🧲 Data MLX90393 - Průměr (0x061C-0x0621)

AdresaRegistrPopisTypR/WJednotka
0x061CMLX Avg X HighPrůměr X-osa (vysoký byte)int32_hRµT
0x061DMLX Avg X LowPrůměr X-osa (nízký byte)int32_lRµT
0x061EMLX Avg Y HighPrůměr Y-osa (vysoký byte)int32_hRµT
0x061FMLX Avg Y LowPrůměr Y-osa (nízký byte)int32_lRµT
0x0620MLX Avg Z HighPrůměr Z-osa (vysoký byte)int32_hRµT
0x0621MLX Avg Z LowPrůměr Z-osa (nízký byte)int32_lRµT

Signed hodnoty: Každá osa je uložena jako signed int32 v 2 registrech. Viz sekce "Formát dat se znaménkem". Jednotky: Hodnoty jsou přímo v µT (mikrotesla), nevyžadují další přepočet.

🔧 Systémová konfigurace

⚙️ Systémové registry (0x0622-0x0628)

AdresaRegistrPopisTypR/WHodnoty
0x0622Device AddressModbus adresa zařízeníuint16R/W1-247
0x0623Baudrate IndexIndex baudrateuint16R/W1-5*
0x0624WiFi StatusStav WiFiuint16R/W0=OFF, 1=ON
0x0625BT StatusStav Bluetoothuint16R/W0=OFF, 1=ON
0x0626Restart TriggerRestart zařízeníuint16R/W0=NIC, 1=RESTART
0x0627HTTP StatusStav HTTP odesíláníuint16R/W0=OFF, 1=ON
0x0628Debug LevelÚroveň debug výpisůuint16R/W0-3*

*Baudrate indexy:

  • 1 = 9600 bps
  • 2 = 19200 bps
  • 3 = 38400 bps
  • 4 = 57600 bps
  • 5 = 115200 bps

*Debug úrovně:

  • 0 = OFF (žádné debug zprávy)
  • 1 = ERRORS (pouze chyby)
  • 2 = INFO (chyby + informace)
  • 3 = VERBOSE (vše včetně podrobností)

📈 ADXL355 Data násobené (0x0650-0x0661)

AdresaRegistrPopisTypR/WJednotka
0x0650ADXL Min Mult X HighMinimum X násobek (vysoký)int32_hR-
0x0651ADXL Min Mult X LowMinimum X násobek (nízký)int32_lR-
0x0652ADXL Min Mult Y HighMinimum Y násobek (vysoký)int32_hR-
0x0653ADXL Min Mult Y LowMinimum Y násobek (nízký)int32_lR-
0x0654ADXL Min Mult Z HighMinimum Z násobek (vysoký)int32_hR-
0x0655ADXL Min Mult Z LowMinimum Z násobek (nízký)int32_lR-
0x0656ADXL Max Mult X HighMaximum X násobek (vysoký)int32_hR-
0x0657ADXL Max Mult X LowMaximum X násobek (nízký)int32_lR-
0x0658ADXL Max Mult Y HighMaximum Y násobek (vysoký)int32_hR-
0x0659ADXL Max Mult Y LowMaximum Y násobek (nízký)int32_lR-
0x065AADXL Max Mult Z HighMaximum Z násobek (vysoký)int32_hR-
0x065BADXL Max Mult Z LowMaximum Z násobek (nízký)int32_lR-
0x065CADXL Avg Mult X HighPrůměr X násobek (vysoký)int32_hR-
0x065DADXL Avg Mult X LowPrůměr X násobek (nízký)int32_lR-
0x065EADXL Avg Mult Y HighPrůměr Y násobek (vysoký)int32_hR-
0x065FADXL Avg Mult Y LowPrůměr Y násobek (nízký)int32_lR-
0x0660ADXL Avg Mult Z HighPrůměr Z násobek (vysoký)int32_hR-
0x0661ADXL Avg Mult Z LowPrůměr Z násobek (nízký)int32_lR-

Signed hodnoty: Viz sekce "Formát dat se znaménkem". Násobené hodnoty: Tyto registry obsahují hodnoty v jednotkách g vynásobené faktorem 10000000 (10 miliónů) pro vyšší přesnost při přenosu.

  • Pro získání hodnoty v g: g = signed_int32 / 10000000
  • Příklad: signed_int32 = 10000000 → 1.0g, signed_int32 = -5000000 → -0.5g Poznámka: Tyto hodnoty jsou již ve fyzikálních jednotkách g (ne RAW), nepotřebují přepočet podle rozsahu.

🔄 OTA Firmware Update (0x0300-0x0307, 0x0400+)

AdresaRegistrPopisTypR/WHodnoty
0x0300OTA ControlOvládací příkazyuint16W0=idle, 1=start, 3=end, 4=abort
0x0301OTA StatusAktuální stavuint16R0=idle, 1=ready, 2=writing, 3=success, 4=error
0x0302OTA Size HighVelikost FW (horní word)uint16R/Wbytes
0x0303OTA Size LowVelikost FW (dolní word)uint16R/Wbytes
0x0304OTA Written HighZapsáno bytů (horní word)uint16Rbytes
0x0305OTA Written LowZapsáno bytů (dolní word)uint16Rbytes
0x0306OTA Error CodeKód chybyuint16R-
0x0307OTA Chunk SizeMax velikost chunkuuint16R240 bytes
0x0400+OTA DataData firmwaru (FC16)bytesWFirmware chunks

📐 Úhly ADXL355 (0x0662-0x066E)

AdresaRegistrPopisTypR/WJednotka
0x0662AngleX HighAngleX úhel (vysoký byte)int32_hR0.0001°
0x0663AngleX LowAngleX úhel (nízký byte)int32_lR0.0001°
0x0664AngleY HighAngleY úhel (vysoký byte)int32_hR0.0001°
0x0665AngleY LowAngleY úhel (nízký byte)int32_lR0.0001°
0x0666AngleZ HighAngleZ úhel (vysoký byte)int32_hR0.0001°
0x0667AngleZ LowAngleZ úhel (nízký byte)int32_lR0.0001°
0x0668Pitch Calc HighVypočítaný pitch (vysoký byte)int32_hR0.0001°
0x0669Pitch Calc LowVypočítaný pitch (nízký byte)int32_lR0.0001°
0x066ARoll Calc HighVypočítaný roll (vysoký byte)int32_hR0.0001°
0x066BRoll Calc LowVypočítaný roll (nízký byte)int32_lR0.0001°
0x066CTilt Calc HighVypočítaný tilt (vysoký byte)int32_hR0.0001°
0x066DTilt Calc LowVypočítaný tilt (nízký byte)int32_lR0.0001°
0x066ETemp CelsiusTeplota ADXL355int16R0.01°C

Úhly (0x0662-0x066D): Všechny úhly jsou signed int32 (2 registry). Viz sekce "Formát dat se znaménkem".

  • Registry 0x0662-0x0667: Staré úhly (angleX/Y/Z)
  • Registry 0x0668-0x066D: Nové vypočítané úhly (pitch/roll/tilt magnitude)
  • Rozlišení: 0.0001° (dělte signed int32 hodnotou 10000)
  • Příklad: signed_int32 = 450000 → 45.0000°, signed_int32 = -123456 → -12.3456°

Teplota (0x066E): Signed int16 (1 registr), rozlišení 0.01°C. Viz sekce "Formát dat se znaménkem - Signed 16-bit hodnoty".

  • Příklad: 2550 → +25.50°C, -1025 → -10.25°C

🆔 Device Identifikátory (0x0700-0x070F)

AdresaRegistrPopisTypR/WJednotka
0x0700Chip ID [63:48]Chip ID nejvyšší worduint16R-
0x0701Chip ID [47:32]Chip ID vysoký worduint16R-
0x0702Chip ID [31:16]Chip ID nízký worduint16R-
0x0703Chip ID [15:0]Chip ID nejnižší worduint16R-
0x0704MAC [47:32]MAC adresa vysoký worduint16R-
0x0705MAC [31:16]MAC adresa střední worduint16R-
0x0706MAC [15:0]MAC adresa nízký worduint16R-
0x0707CPU CoresPočet jader procesoruuint16Rcores
0x0708CPU FreqFrekvence procesoruuint16RMHz
0x0709Flash SizeVelikost flash pamětiuint16RKB
0x070AFree HeapVolná RAM paměťuint16RKB
0x070BUptime HighUptime vysoký worduint16Rs
0x070CUptime LowUptime nízký worduint16Rs
0x070DSketch SizeVelikost firmwareuint16RKB
0x070EFree SketchVolné místo pro firmwareuint16RKB
0x070FChip RevisionRevize čipu ESP32-C6uint16R-

📡 WiFi Klientská IP adresa (0x0710-0x0713)

AdresaRegistrPopisTypR/WJednotka
0x0710WiFi IP [31:24]IP adresa klienta (nejvyšší byte)uint16R-
0x0711WiFi IP [23:16]IP adresa klientauint16R-
0x0712WiFi IP [15:8]IP adresa klientauint16R-
0x0713WiFi IP [7:0]IP adresa klienta (nejnižší byte)uint16R-

Poznámka: Pokud není zařízení připojeno k WiFi jako klient (STA nebo APSTA), registry vrací 0.

🔍 Podporované Modbus funkce

FC03 - Read Holding Registers

Čtení hodnot z registrů. Všechny registry v tabulce výše.

Příklad čtení device ID:

Request: [01] [03] [07 00] [00 04] [CRC]
ID FC ADDR COUNT CRC
Response: [01] [03] [08] [12 34] [56 78] [9A BC] [DE F0] [CRC]
ID FC BC REG1 REG2 REG3 REG4 CRC

FC06 - Write Single Register

Zápis do vybraných registrů:

AdresaRegistrPopisRozsah
0x0080Baudrate HighBaudrate vysoký word32-bit value
0x0081Baudrate LowBaudrate nízký word32-bit value
0x0082Address AltModbus ID (alternativní)1-255
0x0600ADXL ControlStart měření ADXL3550=NIC, 1=START
0x0601ADXL PointsPočet vzorků ADXL35524-1024
0x0602ADXL RangeRozsah akcelerometru0-2
0x0603ADXL ODROutput Data Ratedle senzoru
0x0604MLX ControlStart měření MLX903930=NIC, 1=START
0x0605MLX PointsPočet vzorků MLX903931-1024
0x0622AddressModbus ID1-247
0x0623Baudrate IndexBaudrate index1-5
0x0624WiFiWiFi konfigurace0=OFF, 1=ON
0x0625BluetoothBluetooth konfigurace0=OFF, 1=ON
0x0626RestartRestart zařízení0=NIC, 1=RESTART
0x0627HTTPHTTP odesílání0=OFF, 1=ON
0x0628Debug LevelDebug úroveň0-3
0x0630MLX GainMLX90393 zesílení0-7
0x0631MLX OSRMLX90393 oversampling0-3
0x0632MLX FilterMLX90393 filtr0-7
0x0300OTA ControlOTA ovládání0/1/3/4
0x0302OTA Size HighOTA velikost highbytes
0x0303OTA Size LowOTA velikost lowbytes

Příklad nastavení baudrate (index):

Request: [01] [06] [06 23] [00 05] [CRC]  ; Nastavení 115200 bps (index 5)
ID FC ADDR VALUE CRC
Response: [01] [06] [06 23] [00 05] [CRC] ; Echo

Příklad start měření ADXL355:

Request: [01] [06] [06 00] [00 01] [CRC]  ; Start měření
ID FC ADDR VALUE CRC
Response: [01] [06] [06 00] [00 01] [CRC] ; Echo

FC05 - Write Single Coil

Ovládání cívek (start měření):

AdresaCoilPopisHodnoty
0x000DStart MeasurementSpustit měření ADXL + MLX0x0000=NIC, 0xFF00=START

Příklad spuštění měření:

Request: [01] [05] [00 0D] [FF 00] [CRC]  ; Spuštění měření
ID FC ADDR VALUE CRC
Response: [01] [05] [00 0D] [FF 00] [CRC] ; Echo

Poznámka: FC05 na adrese 0x0D spustí měření obou senzorů (ADXL355 i MLX90393) současně.

🔧 Řešení problémů

Typické chyby

  1. Neplatná adresa registru - Registr neexistuje nebo není implementován
  2. Timeout - Zkontrolujte baudrate a Modbus ID
  3. CRC chyba - Problémy s komunikačním kabelem nebo interference
  4. Neplatný Modbus ID - Zkontrolujte nastavení slave adresy

🔍 Diagnostika

# Test komunikace
modpoll -m rtu -b 19200 -p none -s 1 -r 1 -c 1 /dev/ttyUSB0

# Čtení device ID (4 registry)
modpoll -m rtu -b 19200 -p none -s 1 -r 0x0700 -c 4 /dev/ttyUSB0

# Čtení MAC adresy (3 registry)
modpoll -m rtu -b 19200 -p none -s 1 -r 0x0704 -c 3 /dev/ttyUSB0

# Nastavení baudrate na 115200 (přes index)
modpoll -m rtu -b 19200 -p none -s 1 -r 0x0623 -c 1 5 /dev/ttyUSB0

# Čtení debug úrovně
modpoll -m rtu -b 19200 -p none -s 1 -r 0x0628 -c 1 /dev/ttyUSB0

# Nastavení debug úrovně na VERBOSE (3)
modpoll -m rtu -b 19200 -p none -s 1 -r 0x0628 -c 1 3 /dev/ttyUSB0

# Spuštění měření ADXL355
modpoll -m rtu -b 19200 -p none -s 1 -r 0x0600 -c 1 1 /dev/ttyUSB0

# Čtení statusu měření ADXL355
modpoll -m rtu -b 19200 -p none -s 1 -r 0x0600 -c 1 /dev/ttyUSB0

# Čtení ADXL355 průměrných hodnot (6 registrů X,Y,Z)
modpoll -m rtu -b 19200 -p none -s 1 -r 0x060A -c 6 /dev/ttyUSB0

# Čtení MLX90393 průměrných hodnot (6 registrů X,Y,Z)
modpoll -m rtu -b 19200 -p none -s 1 -r 0x061C -c 6 /dev/ttyUSB0

⚠️ Bezpečnostní poznámky

  • Device identifikátory jsou pouze pro čtení
  • Změna baudrate vyžaduje restart komunikace (ne restart zařízení)
  • Změna Modbus adresy (0x0622 nebo 0x0082) se použije okamžitě
  • WiFi/BT změny vyžadují restart zařízení (registr 0x0626)
  • Používejte vhodné timeout hodnoty (min. 1000ms)
  • Před zápisem vždy ověřte aktuální hodnoty čtením
  • Registry 0x0080-0x0082 poskytují alternativní přístup k baudrate/adrese

📋 Shrnutí hlavních adres

OblastAdresaPopis
Status0x0000-0x0002Status, FW, HW verze
Baudrate Alt0x0080-0x0082Alternativní baudrate/adresa
ADXL Config0x0600-0x0603Konfigurace ADXL355
MLX Config0x0604-0x0605, 0x0630-0x0632Konfigurace MLX90393
ADXL Data0x060A-0x061BPrůměr, min, max ADXL355
MLX Data0x061C-0x0621Průměr MLX90393
System0x0622-0x0628Adresa, baudrate, WiFi, BT, HTTP, debug
ADXL Mult0x0650-0x0661ADXL násobené hodnoty
ADXL Angles0x0662-0x066EÚhly a teplota
Device ID0x0700-0x070FChip ID, MAC, CPU info
WiFi IP0x0710-0x0713Klientská IP adresa
OTA0x0300-0x0307OTA firmware update