mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-09-20 00:55:58 -04:00
0.1.6 CHT8305
This commit is contained in:
parent
331a07ccdf
commit
5a4cc3f20a
@ -6,7 +6,7 @@ jobs:
|
|||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: arduino/arduino-lint-action@v1
|
- uses: arduino/arduino-lint-action@v1
|
||||||
with:
|
with:
|
||||||
library-manager: update
|
library-manager: update
|
||||||
|
@ -8,7 +8,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: ruby/setup-ruby@v1
|
- uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
ruby-version: 2.6
|
ruby-version: 2.6
|
||||||
|
@ -10,7 +10,7 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- name: json-syntax-check
|
- name: json-syntax-check
|
||||||
uses: limitusus/json-syntax-check@v1
|
uses: limitusus/json-syntax-check@v1
|
||||||
with:
|
with:
|
||||||
|
@ -5,14 +5,19 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
||||||
and this project adheres to [Semantic Versioning](http://semver.org/).
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
----
|
|
||||||
|
## [0.1.6] - 2023-02-01
|
||||||
|
- update GitHub actions
|
||||||
|
- update license 2023
|
||||||
|
- update readme.md
|
||||||
|
- minor edits
|
||||||
|
|
||||||
|
|
||||||
## [0.1.5] - 2022-10-29
|
## [0.1.5] - 2022-10-29
|
||||||
- fix changelog.md
|
- fix changelog.md
|
||||||
- add readTemperature()
|
- add readTemperature()
|
||||||
- add readHumidity()
|
- add readHumidity()
|
||||||
|
|
||||||
|
|
||||||
## [0.1.4] - 2022-10-15
|
## [0.1.4] - 2022-10-15
|
||||||
- add CHT8305_DEFAULT_ADDRESS (0x40).
|
- add CHT8305_DEFAULT_ADDRESS (0x40).
|
||||||
- add CHANGELOG.md.
|
- add CHANGELOG.md.
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// FILE: CHT8305.cpp
|
// FILE: CHT8305.cpp
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.1.5
|
// VERSION: 0.1.6
|
||||||
// PURPOSE: Arduino library for CHT8305 temperature and humidity sensor
|
// PURPOSE: Arduino library for CHT8305 temperature and humidity sensor
|
||||||
// URL: https://github.com/RobTillaart/CH8305
|
// URL: https://github.com/RobTillaart/CHT8305
|
||||||
//
|
//
|
||||||
// HISTORY: see changelog.md
|
// HISTORY: see changelog.md
|
||||||
|
|
||||||
@ -109,7 +109,10 @@ int CHT8305::readTemperature()
|
|||||||
uint16_t tmp = data[0] << 8 | data[1];
|
uint16_t tmp = data[0] << 8 | data[1];
|
||||||
_temperature = tmp * (165.0 / 65535.0) - 40.0;
|
_temperature = tmp * (165.0 / 65535.0) - 40.0;
|
||||||
|
|
||||||
if (_tempOffset != 0.0) _temperature += _tempOffset;
|
if (_tempOffset != 0.0)
|
||||||
|
{
|
||||||
|
_temperature += _tempOffset;
|
||||||
|
}
|
||||||
|
|
||||||
return CHT8305_OK;
|
return CHT8305_OK;
|
||||||
}
|
}
|
||||||
@ -130,7 +133,10 @@ int CHT8305::readHumidity()
|
|||||||
uint16_t tmp = data[0] << 8 | data[1];
|
uint16_t tmp = data[0] << 8 | data[1];
|
||||||
_humidity = tmp / 655.35; // == / 65535 * 100%
|
_humidity = tmp / 655.35; // == / 65535 * 100%
|
||||||
|
|
||||||
if (_humOffset != 0.0) _humidity += _humOffset;
|
if (_humOffset != 0.0)
|
||||||
|
{
|
||||||
|
_humidity += _humOffset;
|
||||||
|
}
|
||||||
|
|
||||||
return CHT8305_OK;
|
return CHT8305_OK;
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
//
|
//
|
||||||
// FILE: CHT8305.h
|
// FILE: CHT8305.h
|
||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// VERSION: 0.1.5
|
// VERSION: 0.1.6
|
||||||
// PURPOSE: Arduino library for CHT8305 temperature and humidity sensor
|
// PURPOSE: Arduino library for CHT8305 temperature and humidity sensor
|
||||||
// URL: https://github.com/RobTillaart/CH8305
|
// URL: https://github.com/RobTillaart/CHT8305
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
@ -12,7 +12,7 @@
|
|||||||
#include "Wire.h"
|
#include "Wire.h"
|
||||||
|
|
||||||
|
|
||||||
#define CHT8305_LIB_VERSION (F("0.1.5"))
|
#define CHT8305_LIB_VERSION (F("0.1.6"))
|
||||||
|
|
||||||
// DEFAULT ADDRESS
|
// DEFAULT ADDRESS
|
||||||
#ifndef CHT8305_DEFAULT_ADDRESS
|
#ifndef CHT8305_DEFAULT_ADDRESS
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2022-2022 Rob Tillaart
|
Copyright (c) 2022-2023 Rob Tillaart
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/CHT8305/blob/master/LICENSE)
|
[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/RobTillaart/CHT8305/blob/master/LICENSE)
|
||||||
[![GitHub release](https://img.shields.io/github/release/RobTillaart/CHT8305.svg?maxAge=3600)](https://github.com/RobTillaart/CHT8305/releases)
|
[![GitHub release](https://img.shields.io/github/release/RobTillaart/CHT8305.svg?maxAge=3600)](https://github.com/RobTillaart/CHT8305/releases)
|
||||||
|
|
||||||
|
|
||||||
# CHT8305
|
# CHT8305
|
||||||
|
|
||||||
Arduino library for CHT8305 temperature and humidity sensor.
|
Arduino library for CHT8305 temperature and humidity sensor.
|
||||||
@ -31,7 +32,7 @@ This prevents the need for continuous polling of the sensor.
|
|||||||
|
|
||||||
#### Tests
|
#### Tests
|
||||||
|
|
||||||
- Temperature() and humidity() works on AVR.
|
- Temperature and humidity functions works on AVR.
|
||||||
- default about 14 milliseconds at 14 bit resolution.
|
- default about 14 milliseconds at 14 bit resolution.
|
||||||
- offset functions work.
|
- offset functions work.
|
||||||
- getVoltage() function works on AVR but meaning unclear.
|
- getVoltage() function works on AVR but meaning unclear.
|
||||||
@ -44,7 +45,7 @@ The reason is that the sensor I have does not expose the ALERT pin.
|
|||||||
If you are able to test the ALERT functions, please let me know your experiences.
|
If you are able to test the ALERT functions, please let me know your experiences.
|
||||||
|
|
||||||
|
|
||||||
### Hardware
|
## Hardware
|
||||||
|
|
||||||
Always check datasheet for connections.
|
Always check datasheet for connections.
|
||||||
|
|
||||||
@ -67,23 +68,10 @@ Always check datasheet for connections.
|
|||||||
// SCL WHITE
|
// SCL WHITE
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Pull ups are needed on SDA, SCL and optional to ALERT.
|
||||||
### Register map
|
|
||||||
|
|
||||||
See datasheet page 10 for details
|
|
||||||
|
|
||||||
| Address | Register name |
|
|
||||||
|:---------:|:---------------------------|
|
|
||||||
| 0x00 | CHT8305_REG_TEMPERATURE |
|
|
||||||
| 0x01 | CHT8305_REG_HUMIDITY |
|
|
||||||
| 0x02 | CHT8305_REG_CONFIG |
|
|
||||||
| 0x03 | CHT8305_REG_ALERT |
|
|
||||||
| 0x04 | CHT8305_REG_VOLTAGE |
|
|
||||||
| 0xFE | CHT8305_REG_MANUFACTURER |
|
|
||||||
| 0xFF | CHT8305_REG_VERSION |
|
|
||||||
|
|
||||||
|
|
||||||
### Alert
|
#### Alert
|
||||||
|
|
||||||
The CHT8305 has an ALERT logic output pin with an open drain structure.
|
The CHT8305 has an ALERT logic output pin with an open drain structure.
|
||||||
This output is active low. (if the breakout supports this.)
|
This output is active low. (if the breakout supports this.)
|
||||||
@ -91,7 +79,12 @@ This output is active low. (if the breakout supports this.)
|
|||||||
|
|
||||||
## I2C
|
## I2C
|
||||||
|
|
||||||
I2C bus speeds supported up to 400 KHz.
|
#### performance
|
||||||
|
|
||||||
|
I2C bus speeds is supported up to 400 KHz.
|
||||||
|
|
||||||
|
|
||||||
|
#### Addresses
|
||||||
|
|
||||||
| AD0 | Address | Notes |
|
| AD0 | Address | Notes |
|
||||||
|:-----:|:----------:|:--------|
|
|:-----:|:----------:|:--------|
|
||||||
@ -105,25 +98,36 @@ Pull ups are needed on SDA, SCL and optional to ALERT.
|
|||||||
|
|
||||||
## Interface
|
## Interface
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include "CHT8305.h"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Constructor
|
||||||
|
|
||||||
- **CHT8305(TwoWire \*wire = &Wire)** Constructor with default I2C bus.
|
- **CHT8305(TwoWire \*wire = &Wire)** Constructor with default I2C bus.
|
||||||
- **int begin(const uint8_t address = CHT8305_DEFAULT_ADDRESS)** sets address, default = 0x40.
|
- **int begin(const uint8_t address = CHT8305_DEFAULT_ADDRESS)** sets address, default = 0x40.
|
||||||
- **int begin(int sda, int scl, const uint8_t address = CHT8305_DEFAULT_ADDRESS)** idem ESP32 et. al.
|
- **int begin(int sda, int scl, const uint8_t address = CHT8305_DEFAULT_ADDRESS)** idem for ESP32 et. al.
|
||||||
- **bool isConnected()** checks if address can be seen on the I2C bus.
|
- **bool isConnected()** checks if address (default 0x40) can be seen on the I2C bus.
|
||||||
|
|
||||||
|
|
||||||
|
#### Core
|
||||||
|
|
||||||
- **int read()** reads both the temperature and humidity.
|
- **int read()** reads both the temperature and humidity.
|
||||||
Can be called once per second.
|
Can be called once per second.
|
||||||
- **int readTemperature()** read only temperature (slightly faster than read)
|
- **int readTemperature()** read only temperature (slightly faster than read)
|
||||||
- **int readHumidity()** read only humidity (slightly faster than read)
|
- **int readHumidity()** read only humidity (slightly faster than read)
|
||||||
- **uint32_t lastRead()** returns lastRead in MilliSeconds since start sketch.
|
- **uint32_t lastRead()** returns lastRead in MilliSeconds since start sketch.
|
||||||
|
Useful to check when it is time to call **read()** again, or for logging.
|
||||||
- **float getHumidity()** returns last humidity read.
|
- **float getHumidity()** returns last humidity read.
|
||||||
Will return the same value until **read()** is called again.
|
Will return the same value until **read()** or **readTemperature()** is called again.
|
||||||
- **float getTemperature()** returns last temperature read.
|
- **float getTemperature()** returns last temperature read.
|
||||||
Will return the same value until **read()** is called again.
|
Will return the same value until **read()** or **readHumidity()** is called again.
|
||||||
|
|
||||||
Note: read(), readTemperature() and readHumidity() blocks each other,
|
Note: read(), readTemperature() and readHumidity() blocks each other,
|
||||||
so you can call one of them every second.
|
so you can call only one of them every second.
|
||||||
|
|
||||||
|
|
||||||
### Conversion delay
|
#### Conversion delay
|
||||||
|
|
||||||
- **void setConversionDelay(uint8_t cd = 14)** default is 14 milliseconds (datasheet).
|
- **void setConversionDelay(uint8_t cd = 14)** default is 14 milliseconds (datasheet).
|
||||||
7 ms failed. 8 ms worked, so values below 8 are mapped to 8 in the library.
|
7 ms failed. 8 ms worked, so values below 8 are mapped to 8 in the library.
|
||||||
@ -132,10 +136,11 @@ It might be that lower resolutions allow shorter delays. This is not tested.
|
|||||||
- **uint8_t getConversionDelay()** returns set value.
|
- **uint8_t getConversionDelay()** returns set value.
|
||||||
|
|
||||||
|
|
||||||
### Offset
|
#### Offset
|
||||||
|
|
||||||
Adding offsets works well in the "normal range" but might introduce
|
Adding offsets works well in the "normal range" but might introduce
|
||||||
under- or overflow at the ends of the sensor range.
|
under- or overflow at the ends of the sensor range.
|
||||||
|
These are not handled by the library (yet).
|
||||||
|
|
||||||
- **void setHumOffset(float offset)** idem.
|
- **void setHumOffset(float offset)** idem.
|
||||||
- **void setTempOffset(float offset)** idem.
|
- **void setTempOffset(float offset)** idem.
|
||||||
@ -144,9 +149,10 @@ under- or overflow at the ends of the sensor range.
|
|||||||
|
|
||||||
If the offset is not the same over the operational range,
|
If the offset is not the same over the operational range,
|
||||||
consider a mapping function for temperature and humidity.
|
consider a mapping function for temperature and humidity.
|
||||||
|
e.g. https://github.com/RobTillaart/MultiMap
|
||||||
|
|
||||||
|
|
||||||
### Configuration register
|
#### Configuration register
|
||||||
|
|
||||||
Check the datasheet for details of the register bits.
|
Check the datasheet for details of the register bits.
|
||||||
|
|
||||||
@ -170,7 +176,7 @@ Check the datasheet for details of the register bits.
|
|||||||
| 1-0 | 0x0003 | reserved. | do not change.
|
| 1-0 | 0x0003 | reserved. | do not change.
|
||||||
|
|
||||||
|
|
||||||
#### Getters / setters config register
|
#### Getters / setters configuration register
|
||||||
|
|
||||||
Note: setting **setConfigRegister(bitmask)** can be faster.
|
Note: setting **setConfigRegister(bitmask)** can be faster.
|
||||||
|
|
||||||
@ -178,7 +184,7 @@ Wrapper functions for easy configuration.
|
|||||||
|
|
||||||
- **void softReset()** sets the soft reset bit in the configuration, causing the sensor to reset.
|
- **void softReset()** sets the soft reset bit in the configuration, causing the sensor to reset.
|
||||||
- **void setI2CClockStretch(bool on = false)** check datasheet.
|
- **void setI2CClockStretch(bool on = false)** check datasheet.
|
||||||
- **bool getI2CClockStretch()**
|
- **bool getI2CClockStretch()** check datasheet.
|
||||||
- **void setHeaterOn(bool on = false)** switch on internal heater.
|
- **void setHeaterOn(bool on = false)** switch on internal heater.
|
||||||
Can improve humidity readings.
|
Can improve humidity readings.
|
||||||
See datasheet for (limited) details.
|
See datasheet for (limited) details.
|
||||||
@ -195,7 +201,7 @@ See datasheet for (limited) details.
|
|||||||
- **bool getVCCenable()** idem.
|
- **bool getVCCenable()** idem.
|
||||||
|
|
||||||
|
|
||||||
### Alert
|
#### Alert
|
||||||
|
|
||||||
See register 3 datasheet page 12 for details.
|
See register 3 datasheet page 12 for details.
|
||||||
|
|
||||||
@ -223,7 +229,7 @@ See register 3 datasheet page 12 for details.
|
|||||||
The ALERT pin triggers with a falling edge (from HIGH to LOW).
|
The ALERT pin triggers with a falling edge (from HIGH to LOW).
|
||||||
|
|
||||||
|
|
||||||
### Voltage
|
#### Voltage
|
||||||
|
|
||||||
VCC measurement should be enabled by means of **void setVCCenable(true)**
|
VCC measurement should be enabled by means of **void setVCCenable(true)**
|
||||||
or by **setConfigRegister(0x0004)**.
|
or by **setConfigRegister(0x0004)**.
|
||||||
@ -236,19 +242,37 @@ Varied slightly 5.000 - 4.999 also for 3V3 power supply.
|
|||||||
Conclusion: it is unclear how to interpret this register.
|
Conclusion: it is unclear how to interpret this register.
|
||||||
|
|
||||||
|
|
||||||
### Meta data
|
#### Meta data
|
||||||
|
|
||||||
- **uint16_t getManufacturer()** returns 0x5959.
|
- **uint16_t getManufacturer()** returns 0x5959.
|
||||||
- **uint16_t getVersionID()** return value may differ.
|
- **uint16_t getVersionID()** return value may differ.
|
||||||
Test returned 0x8305.
|
Test returned 0x8305.
|
||||||
|
|
||||||
|
|
||||||
|
#### Register map
|
||||||
|
|
||||||
|
See datasheet page 10 for details
|
||||||
|
|
||||||
|
| Address | Register name |
|
||||||
|
|:---------:|:---------------------------|
|
||||||
|
| 0x00 | CHT8305_REG_TEMPERATURE |
|
||||||
|
| 0x01 | CHT8305_REG_HUMIDITY |
|
||||||
|
| 0x02 | CHT8305_REG_CONFIG |
|
||||||
|
| 0x03 | CHT8305_REG_ALERT |
|
||||||
|
| 0x04 | CHT8305_REG_VOLTAGE |
|
||||||
|
| 0xFE | CHT8305_REG_MANUFACTURER |
|
||||||
|
| 0xFF | CHT8305_REG_VERSION |
|
||||||
|
|
||||||
|
|
||||||
## Future
|
## Future
|
||||||
|
|
||||||
- test (see below)
|
#### Must
|
||||||
- elaborate documentation.
|
|
||||||
|
|
||||||
#### test
|
- elaborate documentation.
|
||||||
|
- more testing (platforms)
|
||||||
|
|
||||||
|
|
||||||
|
#### Should
|
||||||
|
|
||||||
- test ESP32, other platforms?
|
- test ESP32, other platforms?
|
||||||
- test performance.
|
- test performance.
|
||||||
@ -258,6 +282,14 @@ Test returned 0x8305.
|
|||||||
- test ALERT functions.
|
- test ALERT functions.
|
||||||
- test write / readRegister with a single uint16_t to simplify code.
|
- test write / readRegister with a single uint16_t to simplify code.
|
||||||
|
|
||||||
|
|
||||||
#### Could
|
#### Could
|
||||||
|
|
||||||
|
- make offset functions "full name" e.g. **setHumidityOffset()** (0.2,0)
|
||||||
|
- fix offset over- underflow for humidity (can never exceed 0..100%)
|
||||||
|
- parameter testing
|
||||||
|
- parameter defaults?
|
||||||
|
|
||||||
|
#### Wont
|
||||||
|
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/RobTillaart/CHT8305.git"
|
"url": "https://github.com/RobTillaart/CHT8305.git"
|
||||||
},
|
},
|
||||||
"version": "0.1.5",
|
"version": "0.1.6",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"frameworks": "arduino",
|
"frameworks": "arduino",
|
||||||
"platforms": "*",
|
"platforms": "*",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=CHT8305
|
name=CHT8305
|
||||||
version=0.1.5
|
version=0.1.6
|
||||||
author=Rob Tillaart <rob.tillaart@gmail.com>
|
author=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
maintainer=Rob Tillaart <rob.tillaart@gmail.com>
|
||||||
sentence=Arduino library for CHT8305 temperature and humidity sensor.
|
sentence=Arduino library for CHT8305 temperature and humidity sensor.
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// AUTHOR: Rob Tillaart
|
// AUTHOR: Rob Tillaart
|
||||||
// DATE: 2022-10-06
|
// DATE: 2022-10-06
|
||||||
// PURPOSE: unit tests for the CHT8305 temperature and humidity sensor
|
// PURPOSE: unit tests for the CHT8305 temperature and humidity sensor
|
||||||
// https://github.com/RobTillaart/CH8305
|
// https://github.com/RobTillaart/CHT8305
|
||||||
// https://github.com/Arduino-CI/arduino_ci/blob/master/REFERENCE.md
|
// https://github.com/Arduino-CI/arduino_ci/blob/master/REFERENCE.md
|
||||||
//
|
//
|
||||||
|
|
||||||
@ -31,6 +31,7 @@ unittest_setup()
|
|||||||
fprintf(stderr, "CHT8305_LIB_VERSION: %s\n", (char *) CHT8305_LIB_VERSION);
|
fprintf(stderr, "CHT8305_LIB_VERSION: %s\n", (char *) CHT8305_LIB_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unittest_teardown()
|
unittest_teardown()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -138,4 +139,4 @@ unittest(test_setAlertLevels)
|
|||||||
unittest_main()
|
unittest_main()
|
||||||
|
|
||||||
|
|
||||||
// -- END OF FILE --
|
// -- END OF FILE --
|
||||||
|
Loading…
Reference in New Issue
Block a user