Mon, 27 Mar 2023 22:13:21 +0200
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. }