basic_temperature_reading

Example of the component whysaputro/tmp102 v1.0.1

TMP102 Basic Temperature Reading Example

This example demonstrates how to use the TMP102 temperature sensor with the ESP32 using the ESP-IDF framework. The application initializes the TMP102 sensor, configures it, and periodically logs temperature readings along with alert pin and register states.

Features

  • Initialization: Configures the TMP102 sensor and GPIO for the ALERT pin.
  • Temperature Reading: Reads temperature in Celsius.
  • Alert Monitoring: Reads ALERT pin state and internal alert register status.
  • Power Management: Utilizes sleep and wakeup modes to conserve power.
  • Custom Settings: Configures fault tolerance, alert polarity, conversion rate, extended mode, and temperature thresholds.

Hardware Requirements

  • ESP32 Development Board
  • TMP102 Temperature Sensor
  • I2C Pins:
    • SCL connected to GPIO 14
    • SDA connected to GPIO 13
  • ALERT Pin:
    • Connected to GPIO 10 with a pull-up resistor.

Connections

TMP102 Pin ESP32 Pin Description
VCC 3.3V Power supply
GND GND Ground
SCL GPIO 14 I2C Clock Line
SDA GPIO 13 I2C Data Line
ALERT GPIO 10 Alert Output (input to ESP32)

Software Setup

Prerequisites

  • ESP-IDF v5.3 or later
  • TMP102 library integrated into your project.

Example Code Overview

C

#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "tmp102.h"

#define ALERT_PIN GPIO_NUM_10 
#define T_HIGH_C 32.0
#define T_LOW_C 30.0 

static const char *TAG = "tmp102_example";

void app_main(void)
{
    tmp102_config_t conf = {
        .addr = 0x48,
        .pin_scl = GPIO_NUM_14,
        .pin_sda = GPIO_NUM_13,
    };

    ESP_ERROR_CHECK(tmp102_init(&conf));

    gpio_config_t gpio_conf = {
        .pin_bit_mask = (1ULL << ALERT_PIN),
        .mode = GPIO_MODE_INPUT,
        .pull_up_en = GPIO_PULLUP_ENABLE,
        .pull_down_en = GPIO_PULLDOWN_DISABLE,
        .intr_type = GPIO_INTR_DISABLE,
    };

    ESP_ERROR_CHECK(gpio_config(&gpio_conf));

    ESP_ERROR_CHECK(tmp102_set_fault(0));
    ESP_ERROR_CHECK(tmp102_set_alert_polarity(1));
    ESP_ERROR_CHECK(tmp102_set_alert_mode(TMP102_COMPARATOR_MODE));
    ESP_ERROR_CHECK(tmp102_set_conversion_rate(2));
    ESP_ERROR_CHECK(tmp102_set_extended_mode(TMP102_EXTENDED_DISABLE));
    ESP_ERROR_CHECK(tmp102_set_high_temp_c(T_HIGH_C));
    ESP_ERROR_CHECK(tmp102_set_low_temp_c(T_LOW_C));

    while (1)
    {
        float temp = 0;
        bool alert_pin_state = 0;
        bool alert_register_state = 0;

        ESP_ERROR_CHECK(tmp102_wakeup());

        temp = tmp102_read_temp_c();
        alert_pin_state = gpio_get_level(ALERT_PIN);
        alert_register_state = tmp102_read_alert_status();

        ESP_ERROR_CHECK(tmp102_sleep());

        ESP_LOGI(TAG, "Temp in Celsius: %.2f", temp);
        ESP_LOGI(TAG, "Alert Pin: %d", alert_pin_state);
        ESP_LOGI(TAG, "Alert Register: %d", alert_register_state);

        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}****

To create a project from this example, run:

idf.py create-project-from-example "whysaputro/tmp102=1.0.1:basic_temperature_reading"

or download archive (~3.27 KB)