
I. Übersicht über die Kommunikationsvereinbarung
Standardkommunikationsparameter
- Baudrate:
9600 - Datenbit:
8 - Checkbit: Keine
- Stoppbit:
1(d. h.9600/8/N/1) - Standardgeräteadresse:
0x01 - Reaktionszeit: < 100 ms
2. CRC-Check
- Algorithmus: CRC - 16 / Modbus (Polynomial
0x8005) - Checkcode Format: 2 Bytes, die höchsten Stellen voran (z. B.
CRC_H CRC_L)。 - Berechnungstools: Verwenden SieCRCTooloder den Code des Kapitels IX des Spezifikationsbuchs.
II. Funktion des Abkommens
1. Gerätadresse und Firmware-Version lesen
Funktion: Erhält die aktuelle Gerätadresse und Firmware-Versionsnummer.
Anforderungsformat (Host → Sensor)
| Byte-Position | Daten | Beschreibung |
|---|---|---|
| 0 | 0xFE | Broadcast-Adresse (alle Geräte antworten) |
| 1 | 0x11 | Funktionscode (Leseadresse) |
| 2-5 | 0x00 | Feste Füllung |
| 6-7 | CRC | CRC-Prüfcode |
Beispiel Befehl:
FE 11 00 00 00 01 28 06Antwortformat (Sensor → Host)
| Byte-Position | Daten | Beschreibung |
|---|---|---|
| 0 | 0x01 | Geräteadresse |
| 1 | 0x11 | Funktionscode |
| 2 | 0x02 | Datenlänge (2 Byte) |
| 3 | 0x12 | Firmware-Version (z. B.0x12=V1.2) |
| 4 | 0x01 | Aktuelle Adresse |
| 5-6 | CRC | CRC-Prüfcode |
Beispiel-Antwort:
01 11 02 12 01 70 5C
Auflösung:
- Firmware-Version:
V1.2 - Geräte-Adresse:
0x01
2.Ändern der Geräteadresse
Funktion: Ändern der Modbus-Adresse des Geräts (Bereich1~247)
Anforderungsformat (Host → Sensor)
| Byte-Position | Daten | Beschreibung |
|---|---|---|
| 0 | Aktuelle Adresse | Original-Adresse (z. B.0x01) |
| 1 | 0x06 | Funktionscode (Adresse ändern) |
| 2-4 | 0x00 | Feste Ausfüllung |
| 5 | Neue Adresse | Ziel-Adresse (z. B.0x02) |
| 6-7 | CRC | CRC-Prüfcode |
Beispielbefehl(Adresse ändern als0x02):
01 06 00 00 00 02 08 0BAntwortformat (Sensor → Host)
Entspricht dem Anforderungsformat und gibt eine modifizierte Adressbestätigung zurück.
Beispiel-Antwort:
01 06 00 00 00 02 08 0B
BeschreibungDie Antwortdaten sind identisch mit der Anforderung, um eine erfolgreiche Änderung anzuzeigen.
3. Lesen von Sensordaten
Funktion: Lesen Sie Sensordaten des angegebenen Registers (Unterstützung für mehrere Sensoren gleichzeitig).
Anforderungsformat (Host → Sensor)
| Byte-Position | Daten | Beschreibung |
|---|---|---|
| 0 | Geräte-Adresse | 如 0x01 |
| 1 | 0x03 | Funktionscode (Lese-Daten) |
| 2-3 | Start-Adresse | Register-Start - Adresse (vor oben) |
| 4-5 | Anzahl der Register | Anzahl der zu lesen Registers |
| 6-7 | CRC | CRC-Prüfcode |
Beispielbefehl(alle 11 Sensordaten lesen):
01 03 00 00 00 0B C5 CDAntwortformat (Sensor → Host)
| Bytesposition | Daten | Beschreibung |
|---|---|---|
| 0 | Geräteadresse | 如 0x01 |
| 1 | 0x03 | Funktionscode |
| 2 | Datenlänge | Bytes (Registerzahl × 2) |
| 3 ~ N | Sensordaten | 2 Byte pro Register (HIGH WITH VORST) |
| N + 1 ~ N + 2 | CRC | CRC-Prüfcode |
Beispiel-Antwort(Teilweise Daten):
01 03 16 00 96 00 64 00 32 00 30 00 28 00 1E 01 2C 00 0A 00 14 70 5C
Auflösung:
00 96→ eCO2 = 150 ppm00 64→ TVOC = 100 ppb00 32→ CH2O = 50 μ g / m3- Temperatur-Feuchtigkeit - Daten:
- Luftfeuchtigkeit:
0x012C→ 300 → 300 / 100 = 30.0% RH - Temperatur:
0x000A→ 10 → 10 / 100 = 0.10 ° C
4. Konfiguration der Systemparameter (Erweiterte Funktionen)
4.1 Lesen / Einstellen der Baudrate
Registeradresse:0x0103(siehe Anhangtabelle für den Code der Baudrate).
Leseanforderung für die Baudrate:
01 03 01 03 00 01 CRC
Festlegen der Baudrate(Einstellung auf 115200):
01 06 01 03 00 07 CRC4.2 Kalibrierung von Sensordaten
Registeradresse:
- Temperaturkalibrierung:
0x011D - Feuchtekalibrierung:
0x011C
Beispielbefehl(Temperaturkalibrierung +2,5 ° C):
01 06 01 1D 00 FA 98 73
Beschreibung:
00 FA→ 250 (d. h. 250 / 100 = 2,5 ° C)- Negative Werte müssen in Ergänzungswerte umgewandelt werden (z. B.
0xFF9C-100 °C) und -1,00 °C).
III. Methoden der Datenanalyse
1. Berechnung der Formel
| 传感器类型 | 公式 | 示例 |
|---|---|---|
| eCO₂ | CO₂ = (CO₂_H << 8) + CO₂_L | 0x0096→ 150 ppm |
| 温度 | 温度 = 有符号值 / 100 | 0xFF9C→ -100 → -1.00℃ |
| Beleuchtung | Lux = (Lux_H << 8) + Lux_L | 0x01F4→ 500 Lux |
2. Verarbeitung von symbolisierten Zahlen
- Methode 1: Direkt in eine symbolisierte Ganzzahl umgewandelt (z. B.
0xFF9Cund -100). - Methode 2: Wenn der Wert > 32767, dann
真实值 = (原始值 - 65536) / 100。
IV. Aufmerksamkeit
- VorwärmzeitDas VOC-Modul muss für ≥ 3 Minuten vorwärmt werden, bevor die anderen Sensoren angeschaltet werden.
- Installation Anforderungen:
- Installationshöhe ≥ 15 cm, um Staubverschmutzung zu vermeiden.
- Vermeiden Sie hohen Staub (> 300 μ g / m3), Rauch oder hohe Luftfeuchtigkeit.
- Kalibrierung Warnung:
- Erweiterte Funktionen sind mit Vorsicht zu bedienen, da fehlerhafte Änderungen zu Datenanomalien führen können.
- Der Kalibrierungswert muss nach der tatsächlichen Umgebung angepasst werden, und es wird empfohlen, den Werkstandardwert aufzuzeichnen.
- CRC-Test: Alle Befehle müssen die richtige CRC enthalten, sonst reagiert das Gerät nicht.
V. Anhang
1. Sensor-Register - Adresstabelle
| Register-Adresse | Sensor-Typ | Datenformat |
|---|---|---|
0x0000 | ECO2 | 2 Byte unsignierte ganze Zahl (ppm) |
0x0001 | TVOC | 2 Byte unsignierte ganze Zahl (ppb) |
0x0002 | CH2O | 2 Byte unsignierte ganze Zahl (μ g / m3) |
0x0003 | PM2.5 | 2 Byte unsignierte ganze Zahl (μ g / m3) |
0x0004 | Feuchtigkeit | 2 Byte (echte Wert × 100) |
0x0005 | Temperatur | 2 Byte (echte Wert × 100) |
0x0006 | PM10 | 2 Byte unsignierte Ganzzahl (μ g / m3) |
0x0007 | PM1.0 | 2 Byte unsignierte Ganzzahl (μ g / m3) |
0x0008 | Beleuchtung | 2 Byte unsignierte Ganzzahl (Lux) |
0x0009 | MCU-Temperatur | 2 Byte (echter Wert × 100) |
0x000A | Rauschen | 2 Byte unsignierte Ganzzahl (dB) |
2. Baudrate-Code - Tabelle
| Code | Baudrate |
|---|---|
0 | 1200 |
1 | 2400 |
2 | 4800 |
3 | 9600 |
4 | 19200 |
5 | 38400 |
6 | 57600 |
7 | 115200 |
3. CRC-Berechnungscode (C-Beispiel)
uint16_t CRC16_Check(const uint8_t *pushMsg, uint8_t usDataLen) {
uint8_t uchCRCHi = 0xFF, uchCRCLo = 0xFF;
uint8_t uIndex;
while (usDataLen--) {
uIndex = uchCRCLo ^ *pushMsg++;
uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex];
uchCRCHi = auchCRCLo[uIndex];
}
return (uint16_t)(uchCRCHi << 8 | uchCRCLo);
}Produkte kaufen:https://item.taobao.com/item.htm? = t&id=675637355531
Antwort veröffentlichen