Skip to content

Commit e45c5d4

Browse files
authored
Merge pull request #2 from smdn/devel-mhz19e
Add support for MH-Z19E
2 parents c08d86f + 3af481b commit e45c5d4

7 files changed

Lines changed: 78 additions & 4 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ void loop()
7878

7979
## Modules confirmed to work / 動作確認済みモジュール
8080
- MH-Z19C
81+
- MH-Z19E
8182

8283
> [!NOTE]
8384
> 他のセンサーモジュールでも動作する可能性はありますが、実機での動作は未検証です。

src/MHZ19X.h

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,13 @@ using Baud9600SloppySoftwareSerialStream = SloppySoftwareSerialStream<
3131
#if defined(ARDUINO_ARCH_ESP32)
3232
#include <ESP32HardwareSerialStream.hpp>
3333

34-
// MHZ19C + UART1/2
34+
// alias for MHZ19C + UART1/2
3535
using MHZ19C_UART1 = MHZ19XDriver<ESP32HardwareSerialStream<1, 9, 10>>;
3636
using MHZ19C_UART2 = MHZ19XDriver<ESP32HardwareSerialStream<2, 16, 17>>;
37+
38+
// alias for MHZ19E + UART1/2
39+
using MHZ19E_UART1 = MHZ19XDriver<ESP32HardwareSerialStream<1, 9, 10>>;
40+
using MHZ19E_UART2 = MHZ19XDriver<ESP32HardwareSerialStream<2, 16, 17>>;
3741
#endif // ARDUINO_ARCH_ESP32
3842

3943
//
@@ -42,8 +46,11 @@ using MHZ19C_UART2 = MHZ19XDriver<ESP32HardwareSerialStream<2, 16, 17>>;
4246
#if defined (__AVR_ATmega328P__)
4347
#include <DefaultSerialStream.hpp>
4448

45-
// MHZ19C
49+
// alias for MHZ19C
4650
using MHZ19C = MHZ19XDriver<DefaultSerialStream>;
51+
52+
// alias for MHZ19E
53+
using MHZ19E = MHZ19XDriver<DefaultSerialStream>;
4754
#endif
4855

4956
//
@@ -61,7 +68,11 @@ class Serial1Stream : public ArduinoHardwareSerialStream {
6168
}
6269
};
6370

71+
// alias for MHZ19C + Serial1
6472
using MHZ19C_Serial1 = MHZ19XDriver<Serial1Stream>;
73+
74+
// alias for MHZ19E + Serial1
75+
using MHZ19E_Serial1 = MHZ19XDriver<Serial1Stream>;
6576
#endif
6677

6778
#if defined(HAVE_HWSERIAL2)
@@ -73,7 +84,11 @@ class Serial2Stream : public ArduinoHardwareSerialStream {
7384
}
7485
};
7586

87+
// alias for MHZ19C + Serial2
7688
using MHZ19C_Serial2 = MHZ19XDriver<Serial2Stream>;
89+
90+
// alias for MHZ19E + Serial2
91+
using MHZ19E_Serial2 = MHZ19XDriver<Serial2Stream>;
7792
#endif
7893

7994
#if defined(HAVE_HWSERIAL3)
@@ -85,7 +100,11 @@ class Serial3Stream : public ArduinoHardwareSerialStream {
85100
}
86101
};
87102

103+
// alias for MHZ19C + Serial3
88104
using MHZ19C_Serial3 = MHZ19XDriver<Serial3Stream>;
105+
106+
// alias for MHZ19E + Serial3
107+
using MHZ19E_Serial3 = MHZ19XDriver<Serial3Stream>;
89108
#endif
90109

91110
#endif //__AVR_ATmega4809__
@@ -123,12 +142,19 @@ using TunedBaud9600SloppySoftwareSerialStream = Baud9600SloppySoftwareSerialStre
123142
#endif // F_CPU == ***
124143
> ;
125144

126-
// MHZ19C
145+
// alias for MHZ19C
127146
template <
128147
int8_t PIN_RX,
129148
int8_t PIN_TX
130149
>
131150
using MHZ19C = MHZ19XDriver<TunedBaud9600SloppySoftwareSerialStream<PIN_RX, PIN_TX>>;
151+
152+
// alias for MHZ19E
153+
template <
154+
int8_t PIN_RX,
155+
int8_t PIN_TX
156+
>
157+
using MHZ19E = MHZ19XDriver<TunedBaud9600SloppySoftwareSerialStream<PIN_RX, PIN_TX>>;
132158
#endif // __AVR_ATtinyx02__
133159

134160
#endif // MHZ19X_h

tests/test-build/ATtinyX02/main.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44
#include <MHZ19X.h>
55

66
auto mhz19c = MHZ19C<PIN_PA6, PIN_PA7>();
7+
auto mhz19e = MHZ19E<PIN_PA6, PIN_PA7>();
78

89
void setup()
910
{
1011
// begin()
1112
mhz19c.begin();
1213

14+
mhz19e.begin();
15+
1316
// switchSelfCalibration()
1417
mhz19c.switchSelfCalibration(true);
18+
19+
mhz19e.switchSelfCalibration(true);
1520
}
1621

1722
void loop()
@@ -21,4 +26,6 @@ void loop()
2126

2227
// getCO2Concentration()
2328
result = mhz19c.getCO2Concentration(co2ppm);
29+
30+
result = mhz19e.getCO2Concentration(co2ppm);
2431
}

tests/test-build/ArduinoNano/main.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44
#include <MHZ19X.h>
55

66
auto mhz19c = MHZ19C();
7+
auto mhz19e = MHZ19E();
78

89
void setup()
910
{
1011
// begin()
1112
mhz19c.begin();
1213

14+
mhz19e.begin();
15+
1316
// switchSelfCalibration()
1417
mhz19c.switchSelfCalibration(true);
18+
19+
mhz19e.switchSelfCalibration(true);
1520
}
1621

1722
void loop()
@@ -21,4 +26,6 @@ void loop()
2126

2227
// getCO2Concentration()
2328
result = mhz19c.getCO2Concentration(co2ppm);
29+
30+
result = mhz19e.getCO2Concentration(co2ppm);
2431
}

tests/test-build/ArduinoNano/platformio.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ board = nanoatmega328
99
framework = arduino
1010
lib_extra_dirs = ../../../
1111

12-
build_flags = -Wno-unused-but-set-variable # disable -Wunused-but-set-variable
12+
build_flags = -Wno-unused-but-set-variable # disable -Wunused-but-set-variable

tests/test-build/ArduinoNanoEvery/main.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,37 +4,52 @@
44
#include <MHZ19X.h>
55

66
auto mhz19c_serial1 = MHZ19C_Serial1();
7+
auto mhz19e_serial1 = MHZ19E_Serial1();
78

89
#if defined(HAVE_HWSERIAL2)
910
auto mhz19c_serial2 = MHZ19C_Serial2();
11+
auto mhz19e_serial2 = MHZ19E_Serial2();
1012
#endif
1113

1214
#if defined(HAVE_HWSERIAL3)
1315
auto mhz19c_serial3 = MHZ19C_Serial3();
16+
auto mhz19e_serial3 = MHZ19E_Serial3();
1417
#endif
1518

1619
void setup()
1720
{
1821
// begin()
1922
mhz19c_serial1.begin();
2023

24+
mhz19e_serial1.begin();
25+
2126
#if defined(HAVE_HWSERIAL2)
2227
mhz19c_serial2.begin();
28+
29+
mhz19e_serial2.begin();
2330
#endif
2431

2532
#if defined(HAVE_HWSERIAL3)
2633
mhz19c_serial3.begin();
34+
35+
mhz19e_serial3.begin();
2736
#endif
2837

2938
// switchSelfCalibration()
3039
mhz19c_serial1.switchSelfCalibration(true);
3140

41+
mhz19e_serial1.switchSelfCalibration(true);
42+
3243
#if defined(HAVE_HWSERIAL2)
3344
mhz19c_serial2.switchSelfCalibration(true);
45+
46+
mhz19e_serial2.switchSelfCalibration(true);
3447
#endif
3548

3649
#if defined(HAVE_HWSERIAL3)
3750
mhz19c_serial3.switchSelfCalibration(true);
51+
52+
mhz19e_serial3.switchSelfCalibration(true);
3853
#endif
3954
}
4055

@@ -46,11 +61,17 @@ void loop()
4661
// getCO2Concentration()
4762
result = mhz19c_serial1.getCO2Concentration(co2ppm);
4863

64+
result = mhz19e_serial1.getCO2Concentration(co2ppm);
65+
4966
#if defined(HAVE_HWSERIAL2)
5067
result = mhz19c_serial2.getCO2Concentration(co2ppm);
68+
69+
result = mhz19e_serial2.getCO2Concentration(co2ppm);
5170
#endif
5271

5372
#if defined(HAVE_HWSERIAL3)
5473
result = mhz19c_serial3.getCO2Concentration(co2ppm);
74+
75+
result = mhz19e_serial3.getCO2Concentration(co2ppm);
5576
#endif
5677
}

tests/test-build/ESP32/main.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,24 @@
66
auto mhz19c_uart1 = MHZ19C_UART1();
77
auto mhz19c_uart2 = MHZ19C_UART2();
88

9+
auto mhz19e_uart1 = MHZ19C_UART1();
10+
auto mhz19e_uart2 = MHZ19C_UART2();
11+
912
void setup()
1013
{
1114
// begin()
1215
mhz19c_uart1.begin();
1316
mhz19c_uart2.begin();
1417

18+
mhz19e_uart1.begin();
19+
mhz19e_uart2.begin();
20+
1521
// switchSelfCalibration()
1622
mhz19c_uart1.switchSelfCalibration(true);
1723
mhz19c_uart2.switchSelfCalibration(true);
24+
25+
mhz19e_uart1.switchSelfCalibration(true);
26+
mhz19e_uart2.switchSelfCalibration(true);
1827
}
1928

2029
void loop()
@@ -25,4 +34,7 @@ void loop()
2534
// getCO2Concentration()
2635
result = mhz19c_uart1.getCO2Concentration(co2ppm);
2736
result = mhz19c_uart2.getCO2Concentration(co2ppm);
37+
38+
result = mhz19e_uart1.getCO2Concentration(co2ppm);
39+
result = mhz19e_uart2.getCO2Concentration(co2ppm);
2840
}

0 commit comments

Comments
 (0)