From ac400abede45913c0f3f3f38d41e44c4da141c07 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Mon, 26 Dec 2022 23:15:10 +0300 Subject: [PATCH] Update UniTemp --- applications/plugins/unitemp/README.md | 2 +- applications/plugins/unitemp/Sensors.c | 2 + applications/plugins/unitemp/Sensors.h | 1 + applications/plugins/unitemp/sensors/SHT30.c | 90 ++++++++++++++++++ applications/plugins/unitemp/sensors/SHT30.h | 70 ++++++++++++++ .../plugins/unitemp/sensors/Sensors.xlsx | Bin 12014 -> 12265 bytes .../plugins/unitemp/views/Widgets_view.c | 2 +- 7 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 applications/plugins/unitemp/sensors/SHT30.c create mode 100644 applications/plugins/unitemp/sensors/SHT30.h diff --git a/applications/plugins/unitemp/README.md b/applications/plugins/unitemp/README.md index c40ed520a..257e8a8ae 100644 --- a/applications/plugins/unitemp/README.md +++ b/applications/plugins/unitemp/README.md @@ -4,6 +4,6 @@ [![GitHub](https://img.shields.io/github/license/quen0n/unitemp-flipperzero)](https://github.com/quen0n/unitemp-flipperzero/blob/dev/LICENSE.md) [Flipper Zero](https://flipperzero.one/) application for reading temperature, humidity and pressure sensors using Onewire, Singlewire, I2C protocols. ## List of supported sensors (supplemented) -![image](https://user-images.githubusercontent.com/10090793/208763931-d15e9883-1016-4add-bd00-14d7842fd82d.png) +![image](https://user-images.githubusercontent.com/10090793/209491886-f4c5ef6e-38b2-45b8-a8e7-4aeca9e155f2.png) ## Installation Copy the contents of the repository to the `applications/plugins/unitemp` folder and build the project. Flash FZ along with resources. [More...](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/fbt.md) diff --git a/applications/plugins/unitemp/Sensors.c b/applications/plugins/unitemp/Sensors.c index f81daa827..f202794f4 100644 --- a/applications/plugins/unitemp/Sensors.c +++ b/applications/plugins/unitemp/Sensors.c @@ -81,6 +81,8 @@ static const SensorType* sensorTypes[] = { &AM2320_SW, &AM2320_I2C, &AHT10, + &SHT30, + &GXHT30, &LM75, &BMP280, &BME280}; diff --git a/applications/plugins/unitemp/Sensors.h b/applications/plugins/unitemp/Sensors.h index cb98e1783..0643ffb1f 100644 --- a/applications/plugins/unitemp/Sensors.h +++ b/applications/plugins/unitemp/Sensors.h @@ -322,4 +322,5 @@ const GPIO* #include "./sensors/BMx280.h" #include "./sensors/AM2320.h" #include "./sensors/DHT20.h" +#include "./sensors/SHT30.h" #endif diff --git a/applications/plugins/unitemp/sensors/SHT30.c b/applications/plugins/unitemp/sensors/SHT30.c new file mode 100644 index 000000000..700a54dec --- /dev/null +++ b/applications/plugins/unitemp/sensors/SHT30.c @@ -0,0 +1,90 @@ +/* + Unitemp - Universal temperature reader + Copyright (C) 2022 Victor Nikitchuk (https://github.com/quen0n) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#include "SHT30.h" +#include "../interfaces/I2CSensor.h" + +const SensorType SHT30 = { + .typename = "SHT30", + .altname = "SHT30/31/35", + .interface = &I2C, + .datatype = UT_TEMPERATURE | UT_HUMIDITY, + .pollingInterval = 1000, + .allocator = unitemp_SHT30_I2C_alloc, + .mem_releaser = unitemp_SHT30_I2C_free, + .initializer = unitemp_SHT30_init, + .deinitializer = unitemp_SHT30_I2C_deinit, + .updater = unitemp_SHT30_I2C_update}; +const SensorType GXHT30 = { + .typename = "GXHT30", + .altname = "GXHT30/31/35", + .interface = &I2C, + .datatype = UT_TEMPERATURE | UT_HUMIDITY, + .pollingInterval = 1000, + .allocator = unitemp_SHT30_I2C_alloc, + .mem_releaser = unitemp_SHT30_I2C_free, + .initializer = unitemp_GXHT30_init, + .deinitializer = unitemp_SHT30_I2C_deinit, + .updater = unitemp_SHT30_I2C_update}; + +bool unitemp_SHT30_I2C_alloc(Sensor* sensor, char* args) { + UNUSED(args); + I2CSensor* i2c_sensor = (I2CSensor*)sensor->instance; + + //Адреса на шине I2C (7 бит) + i2c_sensor->minI2CAdr = 0x44 << 1; + i2c_sensor->maxI2CAdr = 0x45 << 1; + return true; +} + +bool unitemp_SHT30_I2C_free(Sensor* sensor) { + //Нечего высвобождать, так как ничего не было выделено + UNUSED(sensor); + return true; +} + +bool unitemp_SHT30_init(Sensor* sensor) { + UNUSED(sensor); + return true; +} + +bool unitemp_GXHT30_init(Sensor* sensor) { + I2CSensor* i2c_sensor = (I2CSensor*)sensor->instance; + //Включение режима автоматического преобразования 2 раза в сек + uint8_t data[2] = {0x22, 0x36}; + if(!unitemp_i2c_writeArray(i2c_sensor, 2, data)) return false; + return true; +} + +bool unitemp_SHT30_I2C_deinit(Sensor* sensor) { + //Нечего деинициализировать + UNUSED(sensor); + return true; +} + +UnitempStatus unitemp_SHT30_I2C_update(Sensor* sensor) { + I2CSensor* i2c_sensor = (I2CSensor*)sensor->instance; + //Получение данных + uint8_t data[6] = {0xE0, 0x00}; + if(!unitemp_i2c_writeArray(i2c_sensor, 2, data)) return UT_SENSORSTATUS_TIMEOUT; + if(!unitemp_i2c_readArray(i2c_sensor, 6, data)) return UT_SENSORSTATUS_TIMEOUT; + + sensor->temp = -45 + 175 * (((uint16_t)(data[0] << 8) | data[1]) / 65535.0f); + sensor->hum = 100 * (((uint16_t)(data[3] << 8) | data[4]) / 65535.0f); + + return UT_SENSORSTATUS_OK; +} diff --git a/applications/plugins/unitemp/sensors/SHT30.h b/applications/plugins/unitemp/sensors/SHT30.h new file mode 100644 index 000000000..93e9d05f2 --- /dev/null +++ b/applications/plugins/unitemp/sensors/SHT30.h @@ -0,0 +1,70 @@ +/* + Unitemp - Universal temperature reader + Copyright (C) 2022 Victor Nikitchuk (https://github.com/quen0n) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#ifndef UNITEMP_SHT30 +#define UNITEMP_SHT30 + +#include "../unitemp.h" +#include "../Sensors.h" +extern const SensorType SHT30; +extern const SensorType GXHT30; +/** + * @brief Выделение памяти и установка начальных значений датчика SHT30 + * + * @param sensor Указатель на создаваемый датчик + * @return Истина при успехе + */ +bool unitemp_SHT30_I2C_alloc(Sensor* sensor, char* args); + +/** + * @brief Инициализации датчика SHT30 + * + * @param sensor Указатель на датчик + * @return Истина если инициализация упспешная + */ +bool unitemp_SHT30_init(Sensor* sensor); +/** + * @brief Инициализации датчика GXHT30 + * + * @param sensor Указатель на датчик + * @return Истина если инициализация упспешная + */ +bool unitemp_GXHT30_init(Sensor* sensor); + +/** + * @brief Деинициализация датчика + * + * @param sensor Указатель на датчик + */ +bool unitemp_SHT30_I2C_deinit(Sensor* sensor); + +/** + * @brief Обновление значений из датчика + * + * @param sensor Указатель на датчик + * @return Статус обновления + */ +UnitempStatus unitemp_SHT30_I2C_update(Sensor* sensor); + +/** + * @brief Высвободить память датчика + * + * @param sensor Указатель на датчик + */ +bool unitemp_SHT30_I2C_free(Sensor* sensor); + +#endif \ No newline at end of file diff --git a/applications/plugins/unitemp/sensors/Sensors.xlsx b/applications/plugins/unitemp/sensors/Sensors.xlsx index 03522a6434f0cd0c63c2866a4601f8ebb604befc..b139b1b00722c1c505ebb46541ba194caeddd262 100644 GIT binary patch delta 5128 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 Vz((^)1HW@&d-+)K%MkzI{{w3}bu|D0 delta 4846 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 Xsk0%&c%{(yIFLQOOxPc}{to^R&Ql4r diff --git a/applications/plugins/unitemp/views/Widgets_view.c b/applications/plugins/unitemp/views/Widgets_view.c index 6d8702ca1..892b31f98 100644 --- a/applications/plugins/unitemp/views/Widgets_view.c +++ b/applications/plugins/unitemp/views/Widgets_view.c @@ -132,7 +132,7 @@ void unitemp_widget_delete_switch(Sensor* sensor) { app->buff, BUFF_SIZE, "\e#I2C addr:\e# 0x%02X", - ((I2CSensor*)current_sensor->instance)->currentI2CAdr); + ((I2CSensor*)current_sensor->instance)->currentI2CAdr >> 1); widget_add_text_box_element( app->widget, 0, 28, 128, 23, AlignLeft, AlignTop, app->buff, false); }