338 memset(&apds9930_dev, 0, sizeof(apds9930_t)); |
338 memset(&apds9930_dev, 0, sizeof(apds9930_t)); |
339 |
339 |
340 i2c_dev_t dev = { 0 }; |
340 i2c_dev_t dev = { 0 }; |
341 dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA; |
341 dev.cfg.sda_io_num = CONFIG_I2C_MASTER_SDA; |
342 dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL; |
342 dev.cfg.scl_io_num = CONFIG_I2C_MASTER_SCL; |
343 dev.cfg.master.clk_speed = 400000; |
343 dev.cfg.master.clk_speed = 100000; |
344 |
344 |
345 dev.addr = 0x39; |
345 dev.addr = 0x39; |
346 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
346 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
347 ESP_ERROR_CHECK(apds9930_init_desc(&apds9930_dev, 0x39, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
347 ESP_ERROR_CHECK(apds9930_init_desc(&apds9930_dev, 0x39, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
348 ESP_ERROR_CHECK(apds9930_init(&apds9930_dev)); |
348 ESP_ERROR_CHECK(apds9930_init(&apds9930_dev)); |
349 ESP_LOGI(TAG, "Found APDS-9930 id: 0x%02x", apds9930_dev.id); |
349 ESP_LOGI(TAG, "Found APDS-9930 id: 0x%02x", apds9930_dev.id); |
|
350 } else { |
|
351 ESP_LOGW(TAG, "No APDS-9930 found"); |
350 } |
352 } |
351 dev.addr = 0x40; |
353 dev.addr = 0x40; |
352 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
354 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
353 ESP_ERROR_CHECK(ina219_init_desc(&ina219_b_dev, 0x40, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
355 ESP_ERROR_CHECK(ina219_init_desc(&ina219_b_dev, 0x40, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
354 ESP_ERROR_CHECK(ina219_init(&ina219_b_dev)); |
356 ESP_ERROR_CHECK(ina219_init(&ina219_b_dev)); |
355 ESP_LOGI(TAG, "Found INA219 @0x40 Battery"); |
357 ESP_LOGI(TAG, "Found INA219 @0x40 Battery"); |
|
358 } else { |
|
359 ESP_LOGW(TAG, "No INA219 @0x40 found"); |
356 } |
360 } |
357 dev.addr = 0x41; |
361 dev.addr = 0x41; |
358 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
362 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
359 ESP_ERROR_CHECK(ina219_init_desc(&ina219_s_dev, 0x41, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
363 ESP_ERROR_CHECK(ina219_init_desc(&ina219_s_dev, 0x41, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
360 ESP_ERROR_CHECK(ina219_init(&ina219_s_dev)); |
364 ESP_ERROR_CHECK(ina219_init(&ina219_s_dev)); |
361 ESP_LOGI(TAG, "Found INA219 @0x41 Solar"); |
365 ESP_LOGI(TAG, "Found INA219 @0x41 Solar"); |
|
366 } else { |
|
367 ESP_LOGW(TAG, "No INA219 @0x41 found"); |
362 } |
368 } |
363 dev.addr = 0x76; |
369 dev.addr = 0x76; |
364 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
370 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
365 ESP_ERROR_CHECK(bmp280_init_desc(&bmp280_dev, BMP280_I2C_ADDRESS_0, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
371 ESP_ERROR_CHECK(bmp280_init_desc(&bmp280_dev, BMP280_I2C_ADDRESS_0, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
366 ESP_ERROR_CHECK(bmp280_init(&bmp280_dev, &bmp280_params)); |
372 ESP_ERROR_CHECK(bmp280_init(&bmp280_dev, &bmp280_params)); |
369 dev.addr = 0x77; |
375 dev.addr = 0x77; |
370 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
376 if (i2c_dev_probe(&dev, I2C_DEV_WRITE) == 0) { |
371 ESP_ERROR_CHECK(bmp280_init_desc(&bmp280_dev, BMP280_I2C_ADDRESS_1, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
377 ESP_ERROR_CHECK(bmp280_init_desc(&bmp280_dev, BMP280_I2C_ADDRESS_1, 0, CONFIG_I2C_MASTER_SDA, CONFIG_I2C_MASTER_SCL)); |
372 ESP_ERROR_CHECK(bmp280_init(&bmp280_dev, &bmp280_params)); |
378 ESP_ERROR_CHECK(bmp280_init(&bmp280_dev, &bmp280_params)); |
373 ESP_LOGI(TAG, "Found BMP280 @ 0x77 id: 0x%02x", bmp280_dev.id); |
379 ESP_LOGI(TAG, "Found BMP280 @ 0x77 id: 0x%02x", bmp280_dev.id); |
374 } |
380 } else { |
|
381 ESP_LOGW(TAG, "No BMP280 found"); |
|
382 } |
375 } |
383 } |
376 |
384 |
377 /* |
385 /* |
378 * Create FreeRTOS tasks |
386 * Create FreeRTOS tasks |
379 */ |
387 */ |
568 nvsio_write_u8((char *)"ds_active", 0); |
576 nvsio_write_u8((char *)"ds_active", 0); |
569 |
577 |
570 // Active mode, 60 seconds loop |
578 // Active mode, 60 seconds loop |
571 ST_LOOPS = 6; |
579 ST_LOOPS = 6; |
572 gTimeNext = millis() + ST_INTERVAL; |
580 gTimeNext = millis() + ST_INTERVAL; |
573 ESP_LOGI(TAG, "Start sleeploops"); |
581 ESP_LOGD(TAG, "Start sleeploops"); |
574 State = State_Wait; |
582 State = State_Wait; |
575 } else { |
583 } else { |
576 ds_time = DS_TIME; |
584 ds_time = DS_TIME; |
577 if (solarVolts < 6) { |
585 if (solarVolts < 6) { |
578 // At night, increase the deep-sleep time. |
586 // At night, increase the deep-sleep time. |