main/iotbalkon.c

Mon, 27 Mar 2023 22:13:21 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 27 Mar 2023 22:13:21 +0200
changeset 1
1c9894662795
parent 0
f8b0268c8d0a
child 3
e5d91caa6ab4
permissions
-rw-r--r--

Added esp-idf-lib for a lot of sensors. Added the basic design for the BMP280 task.

/**
 * @file iotbalkon.c
 * @brief iotbalkon project.
 */

#include "config.h"

static const char *TAG = "iotbalkon";


static TaskHandle_t			xTaskBMP280 = NULL;

extern BMP280_State			*bmp280_state;			///< I2C state
extern SemaphoreHandle_t		xSemaphoreBMP280;		///< I2C lock semaphore
extern bmp280_params_t			bmp280_params;
extern bmp280_t				bmp280_dev;


void app_main(void)
{
#ifdef CONFIG_CODE_PRODUCTION
    ESP_LOGI(TAG, "Starting production");
#endif
#ifdef CONFIG_CODE_TESTING
    ESP_LOGI(TAG, "Starting testing");
#endif

    ESP_ERROR_CHECK(i2cdev_init());

    bmp280_init_default_params(&bmp280_params);
    memset(&bmp280_dev, 0, sizeof(bmp280_t));

    i2c_dev_t dev = { 0 };
    dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA;
    dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL;
    dev.cfg.master.clk_speed = 1000000;

    dev.addr = 0x39;
    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
        ESP_LOGI(TAG, "Found ADPS-9930");
    }
    dev.addr = 0x40;
    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
	ESP_LOGI(TAG, "Found INA219 Battery");
    }
    dev.addr = 0x41;
    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
        ESP_LOGI(TAG, "Found INA219 Solar");
    }
    dev.addr = 0x76;
    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
	ESP_ERROR_CHECK(bmp280_init_desc(&bmp280_dev, BMP280_I2C_ADDRESS_0, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL));
	ESP_ERROR_CHECK(bmp280_init(&bmp280_dev, &bmp280_params));
	ESP_LOGI(TAG, "Found BMP280 @ 0x76 id: 0x%02x", bmp280_dev.id);
    }
    dev.addr = 0x77;
    if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) {
        ESP_LOGI(TAG, "Found BMP280 @ 0x77");
    }

    /*
     * Create FreeRTOS tasks
     */
    xSemaphoreBMP280 = xSemaphoreCreateMutex();

    xTaskCreate(&task_bmp280,     "task_bmp280",      2560, NULL, 8, &xTaskBMP280);

    /*
     * Main application loop.
     */
    while (1) {
	request_bmp280();
        vTaskDelay(2000 / portTICK_PERIOD_MS);
    }
    // Not reached.
}

mercurial