Модуль MicroPython для работы с датчиком качества окружающего воздуха SGP40/SGP41 от Sensirion.
SGP40 представляет собой цифровой датчик газа, предназначенный для контроля качества воздуха в помещениях! Его основная задача — измерение уровня летучих органических соединений (ЛОС) в воздухе.
* интерфейс I2C
* встроенный микронагреватель
* показания качества воздуха с компенсацией влажности
* устойчивость к загрязняющим веществам
- Очистители воздуха.
- Системы вентиляции с автоматическим управлением.
- Умные системы контроля микроклимата.
- Два датчика в одном корпусе.
- Возможность автоматического управления очистительными системами.
- Мониторинг потенциально опасных концентраций загрязняющих веществ.
* Диапазон измерения ЛОС: до 1000 ppm (эквивалент этанола)
* Диапазон измерения NOx: до 10 ppm (эквивалент NO2)
* Время отклика: менее 10 секунд для ЛОС, менее 250 секунд для NOx
* Профессиональные очистители воздуха
* Системы вентиляции и воздухообмена
* Кухонные вытяжки
* Умные системы контроля качества воздуха
Без дополнительной обработки, показания SGP40 и SGP41 использовать нельзя! Требуется программная обработка сырых(!) данных для получения индекса VOC/NOx, пригодного для анализа и отображения пользователю. Рекомендуется реализовать компенсацию по влажности и температуре для повышения точности.
На данный момент дополнительную обработку сырых данных от SGP40/41 в программах, использующих Micropython, сделать невозможно! Так как Sensirion Gas Index Algorithm использует полноценный Python 3.6 и выше!
https://pypi.org/project/sensirion-gas-index-algorithm/
Напряжение питания SGP4X 1,7..3,6 Вольта!
Загрузите прошивку MicroPython на плату NANO, PICO RP2040 (ESP и т. д.), а затем файлы: main.py, sgp4Xmod.py и папку sensor_pack_2 полностью. Затем откройте main.py в своей IDE и запустите его.
Просто подключите плату c SGP4X к Arduino, ESP или любой другой плате с прошивкой MicroPython.
Я использовал плату с датчиком SGP41. В ответе на команду sgp40_measure_raw_signal с датчика было считано шесть байт. Первые три байта содержат ЛОС, вторая тройка содержит NOx. С первой тройкой было все в порядке, CRC, принятый от датчика и рассчитанный CRC совпали. Вторая тройка байт была 0xFF, 0xFF, 0xFF. Естественно, код выбросил исключение о неверном CRC. Возможно мой датчик поддельный, поэтому, если у вас подобная ситуация, в конструкторе указывайте sensor_id = 0 (как будто это SGP40) а check_crc должен быть в Истина всегда!
