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