# ESP32 GP2Y Dust Sensor ## Install Designed to be used as an `esp-idf component`. Suggested usage is with `git submodule` ``` git submodule add https://git.oit.cloud/morgan/esp32-gp2y.git components/esp32-gp2y/ git submodule update --init ``` ## API ### `typedef gp2y_cfg_t` `float K` Sensitivity. Default: 0.5 `float offset_voltage` Voltage level at 0ug/m3 dust. Defaults to 0.6v, dynamically lowers. `int8_t pin_led` Pin to pulse LED on. `adc1_channel_t adc_channel` ADC channel to read on. See IDF Guide to get pin to channel reference. `adc_unit_t adc_unit` ADC unit to read on. ### `int32_t gp2y_read(gp2y_cfg_t *cfg, uint8_t samples)` Passing a pointer to `gp2y_cfg_t` and number of samples to take. 100 is a good starting point. ## Example ``` #include #include #include "driver/gpio.h" #include "driver/adc.h" #include "esp32-gp2y.h" #define PIN_LED 5 void app_main() { gp2y_cfg_t gp2y_cfg = GP2Y_DEFAULT_CFG; gp2y_cfg.adc_channel = channel; gp2y_cfg.pin_led = PIN_LED; gpio_config_t io_conf; io_conf.intr_type = GPIO_INTR_DISABLE; io_conf.mode = GPIO_MODE_OUTPUT; io_conf.pin_bit_mask = (1ULL<