APDS 9930 это широко распространенный датчик приближения и освещенности. Данный датчик широко распространен на площадке алиэкспресс. Представлен в виде модуля для Arduino. Мы же рассмотрим как подключить ADPDS 9930 к ESP32 C3 mini.
Расcпиновка APDS 9930

| Пин | Имя | Тип | Описание |
| 1 | SDA | I/O | Пин ввода\вывода данных I2C |
| 2 | INT | O | Пин прерывания, настроен как открытый сток |
| 3 | LDR | I | Драйвер светодиода для датчика приближения – до 100 мА, открытый сток. |
| 4 | LEDK | O | Катод светодиода, подключается к LDR |
| 5 | LEDA | I | Анод светодиода, подключается к Vbat |
| 6 | GND | Земля | |
| 7 | SCL | I | Тактовый сигнал синхронизации I2C |
| 8 | Vdd | Питание, MAX 3.8V |
Подключение датчика приближения
Когда вы используете датчик APDS9930 в исполнении модуля для ардуины, то подключить датчик освещенности и приближения достаточно просто. Необходимо задействовать ножки I2C, землю, и подать питание 3.3. Прерывание использовать не обязательно. Работать с датчиком можно и без него.
ВНИМАНИЕ! У чипа ESP32 C3 mini нет определенных пинов для I2C. По этому для подключения I2C используйте любые понравившиеся нам пины ввода-вывода.
Библиотека APDS 9930 для ESP32
Данная библиотека поддерживает минимальный набор функций, для получения расстояния до приближающегося объекта. Так же обратите внимание на то, что по работе с освещением библиотека не дописана. На все вопросы ответим в комментариях.
Для использования библиотеки необходимо проинициализировать модуль I2C:
esp_err_t i2c_master_init(void)
{
int i2c_master_port = I2C_MASTER_NUM;
i2c_config_t conf = {
.clk_flags = I2C_SCLK_SRC_FLAG_FOR_NOMAL,
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_SDA, // select GPIO specific to your project
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_io_num = I2C_SCL, // select GPIO specific to your project
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = I2C_MASTER_FREQ_HZ,
};
i2c_param_config(i2c_master_port, &conf);
return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0);
}
В файле APDS_9930.h в дефайнах настроить константы линии I2C
#define I2C_MASTER_NUM 0 #define I2C_MASTER_FREQ_HZ 100000 #define I2C_SCL GPIO_NUM_1 #define I2C_SDA GPIO_NUM_0 #define I2C_MASTER_TX_BUF_DISABLE 0 #define I2C_MASTER_RX_BUF_DISABLE 0 #define I2C_MASTER_TIMEOUT_MS 1000


