From 203e1e63b17bc957ebf63d30e04bba4d9c6ff525 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Fri, 23 Dec 2022 10:38:23 +0100 Subject: [PATCH] hs3003: Add new relative humidity and temperature sensor driver. Renesas HS3003 Humidity and Temperature sensor driver. --- micropython/drivers/sensor/hs3003/hs3003.py | 64 +++++++++++++++++++ micropython/drivers/sensor/hs3003/manifest.py | 2 + 2 files changed, 66 insertions(+) create mode 100644 micropython/drivers/sensor/hs3003/hs3003.py create mode 100644 micropython/drivers/sensor/hs3003/manifest.py diff --git a/micropython/drivers/sensor/hs3003/hs3003.py b/micropython/drivers/sensor/hs3003/hs3003.py new file mode 100644 index 00000000..00350164 --- /dev/null +++ b/micropython/drivers/sensor/hs3003/hs3003.py @@ -0,0 +1,64 @@ +""" +The MIT License (MIT) + +Copyright (c) 2023 Arduino SA + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +HS3003 driver for MicroPython. + +Example usage: + +import time +from hs3003 import HS3003 +from machine import Pin, I2C + +bus = I2C(1, scl=Pin(15), sda=Pin(14)) +hts = HS3003(bus) + +while True: + rH = hts.humidity() + temp = hts.temperature() + print ("rH: %.2f%% T: %.2fC" %(rH, temp)) + time.sleep_ms(100) +""" + +import struct + + +class HS3003: + def __init__(self, bus, address=0x44): + self.bus = bus + self.address = address + + def _read_data(self): + # Init measurement mode + self.bus.writeto(self.address, b"") + # Data fetch + return struct.unpack(">HH", self.bus.readfrom(self.address, 4)) + + def humidity(self): + """Returns the relative humidity in percent.""" + h, t = self._read_data() + return ((h & 0x3FFF) / 16383) * 100 + + def temperature(self): + """Returns the temperature in degrees Celsius.""" + h, t = self._read_data() + return ((t >> 2) / 16383) * 165 - 40 diff --git a/micropython/drivers/sensor/hs3003/manifest.py b/micropython/drivers/sensor/hs3003/manifest.py new file mode 100644 index 00000000..8409c76d --- /dev/null +++ b/micropython/drivers/sensor/hs3003/manifest.py @@ -0,0 +1,2 @@ +metadata(description="Renesas HS3003 Humidity and Temperature sensor driver.", version="1.0.0") +module("hs3003.py", opt=3)