The OPT3001 is an Ambient Light Sensor (ALS) Manufactured by Texas Instruments that can measures lux values between 0.01 and 83k and also provides a highly configurable interrupt pin. I've tested the accuracy using my MT-912 Light Meter and the readings are pretty spot on.
This library abstracts a lot of the pain of configuring and monitoring the opt3001.
The esp32-opt3001.c provides you with a thorough example on how to use the library. In addition it gives you the information and sample code to create a an interrupt driven opt3001 setup, including an event thread, notify group and trigger setups.
- An ESP32 Dev Kit
- An HDC1080 i2c Sensor from Texas Instruments
- esp-idf and tools (Developed and tested on v5.1.1)
I'd recommend the espressif IDF extension for vscode, if you haven't tried it it has come a long way and makes everything easy to setup.
Open the project configuration menu (idf.py menuconfig)
Use idf.py -p PORT flash monitor to build and flash to the device
Command pallet -> ESP-IDF: SDK Configuration editor
Build the project
Command pallet -> ESP-IDF: Build your project
Flash it
Command pallet -> ESP-IDF: Flash your project
Choose UART or JTAG depenting on your setup
Choose the COM_PORT to use
Monitor the device
Command pallet -> ESP-IDF: Monitor your device
Here is the Pinout used in the example
| ESP32 | OPT3001 | 
|---|---|
| 22 | SCL | 
| 21 | SDA | 
| 33 | INT | 
| 3.3v | VCC | 
| GND | GND | 
| GND | ADDR | 
You can use the header defs which are mapped to the device addresses as
| Definition | Address | 
|---|---|
| OPT3001_ADDR_GND | 0x44 (Set in example) | 
| OPT3001_ADDR_VCC | 0x45 | 
| OPT3001_ADDR_SDA | 0x46 | 
| OPT3001_ADDR_SCL | 0x47 | 
As always your feedback and requests are always welcome! Enjoy