Найти в Дзене
Mega.Animeshnik

SparkFun Something went wrong during APDS-9960 init

Купил на с aliexpress датчик APDS-9960, подключил, для работы выбор пал на библиотеку SparkFun, прошиваю свою esp и... ошибка "Something went wrong during APDS-9960 init". Первая мысль, что прислали брак, но, с другой стороны, датчик определяется по адресу, значит, надежда ещё есть. Некоторое время гуглежа проблемы и решение было найдено. https://forum.arduino.cc/t/apds-9960-gesture-sensor-not-working/506120 Если кратко, датчик, похоже, не оригинальный, что то китайцы намудрили и его id из 0xAB вдруг превратился в 0xA8, согласитесь, похоже. Находите файл SparkFun_APDS9960.h в папке библиотеки, в строке #define APDS9960_ID_1 0xAB меняете 0xAB на 0xA8, и проверяйте, если проблема в этом, всё заработает. В той же теме встречается описание еще одной проблемы, проблема питания. У себя я заметил, интересную особенность, в момент, когда подношу руку к датчику, у меня подключенный oled дисплей заметно становится темнее, хотя, к ESP32 подключены только oled дисплей на контроллере SSD1306, датч
Оглавление
фото с карточки товара, в живую выглядит точно так же.
фото с карточки товара, в живую выглядит точно так же.

Проблема

Купил на с aliexpress датчик APDS-9960, подключил, для работы выбор пал на библиотеку SparkFun, прошиваю свою esp и... ошибка "Something went wrong during APDS-9960 init".

Первая мысль, что прислали брак, но, с другой стороны, датчик определяется по адресу, значит, надежда ещё есть.

Некоторое время гуглежа проблемы и решение было найдено. https://forum.arduino.cc/t/apds-9960-gesture-sensor-not-working/506120

Если кратко, датчик, похоже, не оригинальный, что то китайцы намудрили и его id из 0xAB вдруг превратился в 0xA8, согласитесь, похоже.

Решение

Находите файл SparkFun_APDS9960.h в папке библиотеки, в строке

#define APDS9960_ID_1 0xAB

меняете 0xAB на 0xA8, и проверяйте, если проблема в этом, всё заработает.

Еще не маловажная деталь

Проблема

В той же теме встречается описание еще одной проблемы, проблема питания. У себя я заметил, интересную особенность, в момент, когда подношу руку к датчику, у меня подключенный oled дисплей заметно становится темнее, хотя, к ESP32 подключены только oled дисплей на контроллере SSD1306, датчик HTU21D и собственно сам ADSP9960. Возможно, не хватает питания от usb компьютера, т.е. это явление я заметил во время тестирования, но разбираться не стал.

Кроме того, определение жестов у меня работало крайне печально.

Решение

В файле SparkFun_APDS9960.cpp найти

setLEDBoost(LED_BOOST_300)

где LED_BOOST_300 заменить на LED_BOOST_100 или любую другую константу(см SparkFun_APDS9960.h)

Мне сильно не помогло и я пошел дальше.

в файле SparkFun_APDS9960.h у параметров

DEFAULT_GLDRIVE - для жестов
DEFAULT_LDRIVE - для определения приближения

заменить значение на LED_DRIVE_50MA или любой другой (см SparkFun_APDS9960.h)

Что это вообще?

Это управление мощностью подсветки, подробности тут https://cdn.sparkfun.com/assets/learn_tutorials/3/2/1/Avago-APDS-9960-datasheet.pdf Если я правильно понял, то ли потому что датчик подделка, то ли подсветки все же нужна отдельная линия, которая по умолчанию отключена(но тогда мощность бы не проседала у дисплея и других элементов, хз), но что то определённо не то. Снизив мощность подсветки, распознавание жестов заработало лучше, но если честно, все еще грустно.

скрин потребления для жестов
скрин потребления для жестов
скрин потребления для датчика приближения
скрин потребления для датчика приближения