Professional Documents
Culture Documents
4
Revised 8/13/19
EZO-CO2
Embedded NDIR CO2 Sensor
™
UART I2C
UART mode 14 I2C mode 39
Receiving data from device 15 Sending commands 40
Sending commands to device 16 Requesting data 41
LED color definition 17 Response codes 42
UART quick command page 18 Processing delay 42
LED control 19 LED color definition 43
Find 20 I2C quick command page 44
Continuous mode 21 LED control 45
Single reading mode 22 Find 46
Alarm 23 Taking reading 47
Custom calibration 24 Alarm 48
Export calibration 25 Custom calibration 49
Import calibration 26 Export calibration 50
Enable/disable internal temp 27 Import calibration 51
Naming device 28 Enable/disable internal temp 52
Device information 29 Device information 53
Response codes 30 Reading device status 54
Reading device status 31 Sleep mode/low power 55
Sleep mode/low power 32 Protocol lock 56
Change baud rate 33 I2C address change 57
Protocol lock 34 Factory reset 58
Factory reset 35 Change to UART mode 59
Change to I2C mode 36 Manual switching to UART 60
Manual switching to I2C 37
Inlet
Active
detector
CO 2
CO2
CO 2
CO
CO 2
2
CO2 CO2
CO
CO2 2
CO2
CO 2
CO 2 CO2 CO
CO 2
2
CO
2
CO2
CO
2
Outlet
Gaseous CO2 has a prominent absorption band centered at 4.2μm. CO2 content is
derived by quantifying how much light energy has been lost when it travels through
a gaseous matrix over a fixed distance.
IR blub
source
Optical
Parabloic path
reflector
Outside Inside
66.2mm (2.6”)
10.9mm
(0.4”) 19.3mm 27
15.8mm mm
(0.7”) (1”
19.8mm (0.6”) )
(0.7”)
1/2”
NPT
20mm
(0.7”)
Cable Length
1m (3.2’)
50.4mm (1.9”)
Weight 133g
Sensor properties
Mirror Filters Detector
PCB
Bulb
The interrupt pin will go high when a set CO2 level has been crossed.
800ppm
10 sec
During the first 10 seconds of operation the output will be: *warm
Once warming is finished, CO2 readings will be output. The device will continue to warm-up
over several minutes. As the internal temperature stabilizes, so will the CO2 readings.
Thermal equilibrium
Temp
CO2
*Equilibrium time may vary
depending on envirmonent.
To see the internal temperature of the sensor and watch as it stabilizes, use the ‘O’
command found on page 24.
UART mode
Baud 9,600
Readings continuous
Speed 1 second
LED on
1 second
Green Cyan
Standby Taking reading Transmitting
default
r 0.2
UART mode
8 data bits no parity
1 stop bit no flow control
Baud 300
1,200
2,400
9,600 default
19,200
38,400
RX
TX
57,600
115,200
RX
Data in
TX RX RX TX
TX
Data out
RX TX
Vcc 3.3V – 5V
VCC
CPU
0V 0V
Data format
Units PPM Data type unsigned int
Encoding ASCII Decimal places 0
Format string Smallest string 2 characters
Terminator carriage return Largest string 12 characters
9,600 baud
(default)
RX TX
TX
RX
TX
TX RX
CPU
RX
Sender
Receiver
6500 <cr>
Advanced
ASCII: 6 5 0 0 <cr>
Hex: 36 35 30 30 0D
Dec: 54 53 48 48 13
RX TX
TX
CPU
RX
TX
TX RX
RX
Receiver
Sender
Sleep <cr>
Advanced
ASCII: S l e e p <cr>
Hex: 53 6C 65 65 70 0D
Dec: 83 108 101 101 112 13
LED ON
5V +2.5 mA
3.3V +1 mA
Example Response
L,1 <cr> *OK <cr>
L,1 L,0
Find <cr> LED rapidly blinks white, used to help find device
Example Response
Find <cr> *OK <cr>
Example Response
C,1 <cr> *OK <cr>
CO2 (1 sec) <cr>
CO2 (2 sec) <cr>
CO2 (n sec) <cr>
Example
Green ResponseCyan
R <cr> Standby 6500 <cr>
Taking reading Transmitting
*OK <cr>
Green Cyan
Standby Taking reading Transmitting
1 second
Example Response
Alarm,en,1 <cr> *OK <cr> Enable alarm
Alarm
(1200) Tolerence
(100)
1100
CO2
Example Response
Cal,3900 <cr> *OK <cr>
Example Response
Export,? <cr> 10,120 <cr> Response breakdown
10, 120
# of strings to export # of bytes to export
Export <cr> 1
2 TX RX
3
4
RX
MCU
5
TX
6
7
8
9
10
[10,120]
*DONE
Example Response
Import, 59 6F 75 20 61 72 <cr> (1 of 10) *OK <cr>
1
4
RX
MCU
5
TX
6
7
8
Import,n <cr>
1
2 TX RX
3
RX
4 1
TX RX MCU
5
TX 2
6
7
8
3
9
4
RX
MCU
10
[10,120] 5
TX
6
7
8
9
1
TX RX 2 10
3
[10,120]
*OK <cr>
4
RX
MCU
5
TX
6
7
[10,120]
TX RX
1
2
3
TX RX 2
3
* If one of the imported strings is not
RX
RX
correctly entered, the
TX device will not
4
TX 4
MCU
5
MCU
6
5
7
8
9
10
6
7
accept the import, respond with *ER
[10,120]
*ER
8 <cr>
and reboot.
9
10
[10,120]
Example Response
O,t,1 <cr> *OK <cr> enable temperature
Example Response
Name,zzt <cr> *OK <cr>
Example Response
i <cr> ?i,CO2,1.0 <cr>
*OK <cr>
Response breakdown
?i, CO2, 1.0
Device Firmware
Example Response
R <cr> 6,500 <cr>
*OK <cr>
Example Response
Status <cr> ?Status,P,5.038 <cr>
*OK <cr>
Response breakdown
?Status, P, 5.038
Reason for restart Voltage at Vcc
Restart codes
P powered off
S software reset
B brown out
W watchdog
U unknown
Example Response
Sleep <cr> *OK <cr>
*SL <cr>
MAX SLEEP
5V 45 mA 3.4 mA
3.3V 42 mA 3.0 mA
Sleep <cr>
Example Response
Baud,38400 <cr> *OK <cr>
300
1200
2400
n= 9600 default
19200
38400
57600
115200
Green
Green
Standby Cyan
Cyan Purple
Purple
Changing Red
Red Green
White
White
Standby
UART
UARTstandby
standby Taking
Takingreading
reading baud rate
Changing
Changing Command
Command UART Find
standby
Find T
baud
baud
*OK rate
rate
<cr> not
notunderstood
understood
Example Response
Plock,1 <cr> *OK <cr>
Plock,1 I2C,100
ALM
TX
an Green
Purple
*OK <cr>
Cyan Red
cannot change to I2C
PurpleWhite
cannot change to I2C
Red
UART standby
reading ChangingTaking reading
Command Changing Find
*ER <cr>
Command
baud rate not understood baud rate not understood
Example Response
Factory <cr> *OK <cr>
Factory <cr>
(reboot)
I2C,n <cr> sets I2C address and reboots into I2C mode
1 second
1 second
n = any number 1 – 127
Example Response
I2C,100 <cr> *OK (reboot in I2C mode)
I2C,100
(reboot)
Green Green Cyan Cyan
Green TakingBlue
Standby Standby Taking reading readingTransmitting
Transm
*OK <cr> now in I2C mode
Manually switching to I2C will set the I2C address to 105 (0x69)
Example
Short
ALM
TX
Settings that are retained if power is cut Settings that are NOT retained if power is cut
Calibration Sleep mode
Change I2C address
Hardware switch to UART mode
LED control
Protocol lock
Software switch to UART mode
r 0.1
I2C mode
I2C address (0x01 – 0x7F)
105 (0x69) default
SDA
SCL
SDA
0V 0V
CPU
Data format
Reading CO2 Data type unsigned int
Units PPM Decimal places 0
Encoding ASCII Smallest string 2 characters
Format string Largest string 12 characters
Example
Start 105 (0x69) Write Sleep Stop
I C address
2
Command
SDA SDA
SDA
SCL
SDA
CPU
SCL
SCL SCL
Advanced
Address bits The entire command as ASCII with all arguments
SDA
A6 A5 A4 A3 A2 A1 A0 W ACK First letter of command ACK Last letter of command ACK
SCL
Start I2C address Read Response code Data string Null Stop
105 (0x69) 1 byte "413" Terminator
(Dec 0)
SDA
SCL
SDA
CPU
SCL
SCL SCL
Advanced
All bytes
Address bits N bytes of data after data are Null R = High
SDA
A6 − A0 R ACK Response code ACK Data ACK Data N ACK Null ACK Null
SCL
1 52 49 51 0 = 413
Dec Dec
ASCII
Send
command
CPU
Processing delay
Receiving
data
LED ON
5V +2.5 mA
3.3V +1 mA
Command Function
Example Response
L,1 1 0
Wait 300ms Dec Null
L,0 1 0
Wait 300ms Dec Null
L,1 L,0
Command syntax
Find LED rapidly blinks white, used to help find device
Example Response
Find 1 0
Wait 300ms Dec Null
R return 1 reading
Example Response
R 1 800 0
Wait 900ms Dec ASCII Null
Wait 900ms
GreenGreenGreen Cyan Cyan Cyan
Taking reading
Taking Taking
readingreading
Transmitting
Transmitting StandbyStandby
Transmitting Standby
The alarm pin will = 1 when CO2 levels are > alarm set point.
Command syntax Alarm tolerance sets how far below the set point CO2 levels
need to drop before the pin will = 0 again.
Example Response
Alarm,en,1 1 0 Enable alarm
Wait 300ms Dec Null
Alarm,1200 1 0
Wait 300ms Dec Null
Alarm
(1200) Tolerence
(100)
1100
CO2
Example Response
Cal,3900 1 0
Wait 900ms Dec Null
Cal,0 1 0
Wait 900ms Dec Null
Cal,clear 1 0
Wait 300ms Dec Null
or 1 ?Cal,2 0 or 1 ?Cal,3 0
Dec ASCII Null Dec ASCII Null
only high point calibration zero and high point calibration
Example Response
Export 1 59 6F 75 20 61 72 0 (1 of 10)
Wait 300ms Dec ASCII Null
Export 1 65 20 61 20 63 6F 0 (2 of 10)
Wait 300ms Dec ASCII Null
(7 more)
Export
1 *DONE 0
Wait 300ms Dec ASCII Null
Example Response
Import, 59 6F 75 20 61 72 (1 of 10) 1 0
Wait 300ms Dec Null
Import, 65 20 61 20 63 6F (2 of 10)
1
2
1 0 TX RX
3 Wait 300ms Dec Null
4
RX
MCU
5
TX
6
7
Import, 6F 6C 20 67 75 79 0
8
(10 of 10)
9
10 Wait 300ms Dec
1
Null
[10,120]
Import,n
1
2 TX RX
3
RX
4 1
SCL SDA MCU
5
TX 2
6
7
8
3
9
4
SCL
MCU
10
[10,120] 5
SDA
6
7
8
9
1
SCL SDA 2 10
3
4
SCL [10,120]
MCU
5
0
SDA
6
7 1 *Pending
8
9
10
Dec ASCII Null
1
1 SCL SDA 2
[10,120]
Example Response
i device information
Example Response
i 1 ?i,CO2,1.00 0
Wait 300ms Dec ASCII Null
Response breakdown
?i, CO2, 1.00
Device Firmware
Example Response
Status 1 ?Status,P,5.038 0
Wait 300ms Dec ASCII Null
Response breakdown
?Status, P, 5.038
Reason for restart Voltage at Vcc
Restart codes
P powered off
S software reset
B brown out
W watchdog
U unknown
Example Response
Do not read status byte after
Sleep no response issuing sleep command.
STANDBY SLEEP
5V 45 mA 3.4 mA
3.3V 42 mA 3.0 mA
Sleep
Standby Sleep
Example Response
Plock,1 1 0
Wait 300ms Dec Null
Plock,0 1 0
Wait 300ms Dec Null
Green
Green Cyan
Cyan
Plock,?
Taking
Takingreading
reading ?Plock,1 0
Transmitting
Transmitting
1 Standby
Standby
Wait 300ms Dec ASCII Null
TX
Example Response
I2C,101 device reboot
I2C,101
(reboot)
Example Response
Factory device reboot
Green Green
Taking reading
Clears custom calibration Taking reading
Transmitting
LED on
Response codes enabled
Factory
(reboot)
Example Response
Baud,9600 reboot in UART mode
Baud,9600 (reboot)
Changing to
Blue Blue GreenGreen Purple
Purple
UART mode GreenWhit
Blue Red Red
C standby
I2C standby readingreadingChanging
Taking Taking Changing
I2C standby
CommandCommand Find
Taking reading
I2C address
I2C addressnot understood
not understood
Example
Short
ALM
RX
Datasheet V 1.3
Added page about pointing the CO2 sensor at bright lights on pg 4.
Datasheet V 1.2
Revised response for the sleep command in UART mode on pg 29.
Datasheet V 1.1
Added more information on the Export calibration and Import calibration commands.
Datasheet V 1.0
New datasheet
Firmware updates
V1.0 – Initial release (Sept 12, 2018)
It is important for the embedded systems engineer to keep in mind that the following
activities will void the EZO-CO2™ Embedded NDIR CO2 Sensor warranty:
• Running any code, that does not exclusively drive the EZO-CO2™ Embedded
NDIR CO2 Sensor and output its data in a serial string.
• Embedding the EZO-CO2™ Embedded NDIR CO2 Sensor into a custom made
device.
2. All Atlas Scientific™ devices have been designed to run indefinitely without
failure in the field.
3. All Atlas Scientific™ devices can be soldered into place, however you do so at your
own risk.
Atlas Scientific™ is simply stating that once the device is being used in your application,
Atlas Scientific™ can no longer take responsibility for the EZO-CO2™ Embedded NDIR CO2
Sensor continued operation. This is because that would be equivalent to Atlas Scientific™
taking responsibility over the correct operation of your entire device.