Приветствую всех читателей Habr. Сегодня хочу поделиться с вами своим очередным проектом по доработке датчика качества воздуха ИКЕА ВИНДРИКТНИНГ. Хаков этого датчика на основе esp на просторах интернета достаточно много, мой проект по модернизации датчика ИКЕА работает на протоколе Zigbee. Сейчас проект поддерживает помимо сенсора PM1006 (PM2.5, PM1, PM10) так же и дополнительные сенсоры, такие как SGP40, SCD40 (VOC, СO2, температура, влажность воздуха).




ИКЕА ВИНДРИКТНИНГ это датчик качества воздуха, который измеряет концентрацию PM2.5.

Что такое РМ2.5

Это воздушный загрязнитель, мелкодисперсные взвешенные частицы, в состав которого входят как твердые микрочастицы, так и мельчайшие капельки жидкостей. И те, и другие размером примерно от 10 нм до 2,5 мкм.

Все эти частицы и капельки размером меньше 2,5 мкм находятся в воздухе во взвешенном состоянии. Они есть и в лесу, и на море, но именно в городе представляют наибольшую опасность. Во-первых, обычно их в городе намного больше, а во-вторых, химический состав мелкодисперсного аэрозоля в городе опаснее, чем на природе.

По типу источника частицы РМ2.5 делятся на:
Искусственные (антропогенные)
Главный антропогенный источник частиц — транспорт. Двигатели внутреннего сгорания и промышленные процессы со сжиганием твердых видов топлива (уголь, бурый уголь, нефть), строительство, добыча полезных ископаемых, многие виды производства (особенно производство цемента, керамики, кирпича, плавильное производство), в городах источником может быть эрозия дорожного покрытия и стирание тормозных колодок и шин. Даже сельское хозяйство – источник аммиака, из которого могут образоваться вторичные РМ2.5.

Природные (неантропогенные)
Источники: эрозия почвы в засушливых районах и органические испарения.

источник: https://airkaz.org/pm25.php


Я спроектировал небольшой адаптер zigbee, который подключается к питанию 5в, от самого датчика ИКЕА ВИНДРИКТНИНГ, и одной ножкой подключившись к serial слушает линию tx. Получив данные, отправляет их в сеть zigbee.



В начале статьи хочу сразу объявить о розыгрыше в моей телеграм группе DIYDEV пяти готовых zigbee адаптеров.

Добавляйтесь в мою группу, через неделю, 20 ноября будет проведен розыгрыш между новыми участниками, случайным образом будут выбраны 5 победителей, которым будут высланы zigbee адаптеры для ИКЕА ВИНДРИКТНИНГ.

Так же приглашаю читателей обсудить это и любые другие устройства, прошивки и прочий софт, работающий с Zigbee, в самое большое русскоязычное сообщество в Телеграм — Вокруг да около Zigbee.

История с этим проектом началась неожиданно в конце октября 2023 года, на Яндекс Маркете были замечены датчики ИКЕА ВИНДРИКТНИНГ по очень привлекательной цене, что-то в районе 500 рублей.



Мысль его модернизировать появилась сразу, в памяти всплыли старые статьи о хаках этого датчика на ESP.

Пока датчик ехал, я собрал немного информации в интернете, статьи, даташиты на сенсор PM, посмотрел проекты на гитхаб. Так что когда мне доставили датчик, я уже хорошо представлял, что находится внутри корпуса и что мне нужно делать.

Начал проект с софта, так как разнообразных платок от своих проектов на cc2530 у меня много, то решил разработку платы оставить на потом. С zigbee частью особых проблем не было, разве что пришлось под данные pm1 и pm10 добавить пользовательские атрибуты 0x00C8 и 0x00C9 в кластер PM2.5 measurement.

Что касается данных pm1 и pm10, то их наличие для меня оказалось полной неожиданностью. Во время сбора информации о сенсоре используемом в датчике ИКЕА ВИНДРИКТНИНГ нигде из доступных источников не упоминалось об этом, да и в даташите который я нашел так же не было информации об этом.

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



После этого я пошел в интернет и начал снова искать документацию на этот сенсор PM1006. На сайте производителя нашел версию даташита четвертой ревизии, и там уже я нашел информацию о данных pm1 и pm 10.



Скачать даташит на сайте производителя нельзя, они отдают документацию только по запросу от компании. Пришлось сохранить каждую страничку даташита и через онлайн-сервис конвертации в pdf собрать их все в единый файлик, он выложен на моем github, в репо проекта. И еще мне показалось странным, что ни в одном проекте которые я смотрел ни pm1 ни pm10 не реализовывались.

Подключение к материнской плате датчика очень простое. Нужно подпаяться к контактным площадкам 5в, GND и Rest (линия tx). После этого весьма простого действия нужно просто собрать корпус и подключить кабель usb.



Датчик не имеет кнопок, поэтому реализацию входа в сеть и выхода из сети, я сделал как в лампочках или любых других устройствах с установкой в трудно обслуживаемых местах. Для джойна необходимо открыть сеть для приема новых устройств и подать питание на датчик. Он сделает сканирование всех zigbee каналов и найдя открытую для входа сеть сделает попытку входа. Для выхода из сети нужно 4 раза сбросить питание у датчика (отключить от кабеля) с интервалами между отключениями в 8 секунд.

Из дополнительного функционала решил добавить работу с кластером OnOff и биндингом. На основе этого добавил датчику функционал контроллера уровня PM (не знаю как назвать коротко, то же самое что и термостат, только опирается на данные об уровне PM2.5). Датчик можно привязать к абсолютно любому реле, розетке или любому другому исполнительному устройству работающем с кластером OnOff. После привязки установить верхний и нижние уровни PM. После привязки и настройки уровней датчик начнет управлять реле, оправляя на реле команды включения и отключения. Этот функционал будет работать даже без координатора сети и сервера умного дома, так как команды отправляются напрямую.



После того как с софтом было всё сделано, сел за разводку платы для этого проекта. Плата получилась совсем маленькая, радиомодуль, стабилизатор напряжения на 3.3в и светодиод. Гербер файлы для заказа плат доступны на моем github. Платы хотелось получить быстро, поэтому заказ на производство плат разместил в Резоните суперcрочным заказом, через 3 дня курьер доставил посылку с заказом. Плат пришлось заказать больше чем мне нужно, так как цена что на 5, что на 20 плат практически одинаковая. На плате дополнительно вывел i2c и 3в на будущее.





Впрочем, будущее наступило примерно через 2 недели после того как я собрал себе этот датчик. Решил добавить в проект сенсор VOC. Кандидатом стал сенсор sgp40. Так через 2 недели появилась вторая версия с pm2.5, pm1, pm10 и VOC.



Прошивки для обеих версий доступны на моем github. Собраны прошивки для энд девайса, для энд девайса с усилителем, для роутера и для роутера с усилителем.



Для прошивки платы необходимо подключить ее к SmartRF04EB и прошить через программу SmartRF Flash Programmer.



На данный момент проект поддерживается в zigbee2mqtt, zha, spruthub (на гитхаб готовый шаблон, но фидбека пока нет), вероятно будет в sls и homed… или не будет. C яндекс хабом всё печально.

Еще не знаю закончен ли этот проект или будет продолжение.





Почти готов DIY ИКЕА ВИНДРИКТНИНГ III, это теперь точно каша из топора :)





Спасибо за внимание, всем добра!

Комментарии (21)


  1. NutsUnderline
    13.11.2023 12:10
    +1

    что то я так и не понял - на чем сделан датчик в оригинале? не хватает фотки с подписью "это оригинальная материнская плата датчика...". zigbee я так понимаю тут своей платой добавлено?


    1. Berkseo Автор
      13.11.2023 12:10
      +1

      В оригинале, датчик просто индикатор, без какой либо передачи куда либо.


      1. foxyrus
        13.11.2023 12:10
        +3

        А какой датчик? и точность

        Понравилась такая картинка из отзывов


        1. Berkseo Автор
          13.11.2023 12:10
          +2

          Там стоит pm1006k


        1. Alfair
          13.11.2023 12:10

          Это он сразу после включения может показать и красный и оранжевый. Потом стабилизируется.


          1. Tirarex
            13.11.2023 12:10

            Не может а показывает, зеленый, оранжевый, красный, потом уже переходит на реальные показатели воздуха.


      1. WondeRu
        13.11.2023 12:10

        Если он сделан на esp, то по дефолту же в вайфай умеет?


        1. Berkseo Автор
          13.11.2023 12:10
          +3

          В оригинале только микра которая читает сенсор pm1006k и выводит цветовую индикацию.


  1. Kill_Voice
    13.11.2023 12:10

    Занятно, но в большей части ради фана, у Икеи же есть датчик который уже из коробки работает с зигби, понятно дело, что в России он не продается, но это не проблема


  1. belokobylskiy
    13.11.2023 12:10
    +4

    Предлагаю ваш PDF на гитхабе заменить на исходный отсюда https://en.gassensor.com.cn/Product_files/Specifications/LED Particle Sensor PM1006K Specification.pdf

    (погуглил просто по словам на заглавной странице)


  1. Anonym
    13.11.2023 12:10
    +2

    Для PM1006 в даташите указан запрос 11 02 0B 01 E1

    Такой используется например в коде esphome и работает

    Для PM1006K указан запрос 11 01 02 EC

    Не нашел у вас на гитхабе исходников. Вы уверены, что во всех икеевких датчиках используется один и тот же модуль?


    1. Berkseo Автор
      13.11.2023 12:10

      Если будет понятно что в икеи ставят и старые сенсоры, то добавлю


  1. Anonym
    13.11.2023 12:10

    Ну и странно, что вы не нашли поддержку pm1.0 и pm10 например в тасмоте


    1. Berkseo Автор
      13.11.2023 12:10

      Значит плохо искал :), но в целом мне понравилось пройти этот путь самому.


  1. 13werwolf13
    13.11.2023 12:10

    никогда не рассматривал IKEA VINDRIKTNING к покупке, но натыкался на него в сети несколько раз и почему-то мне запомнилось что он из коробки умеет zigbee (или ble, чем дольше пытаюсь вспомнить тем больше сомневаюсь).. может быть были разные версии?


    1. Kill_Voice
      13.11.2023 12:10

      Есть 2 версии, новая как раз таки с дисплеем и zigbee, но её в России только через форвардеров можно купить


      1. 13werwolf13
        13.11.2023 12:10

        да, уже после того как написал комментарий со второй попытки нагуглил эту информацию, а так же нагуглил кучу отзывов на разных ресурсах о том что эта балалайка показывает погоду на юпитере а не реальные данные.. интересно насколько именно всё плохо конечно, но в целом желание рассмотреть к покупке уже отбито.


        1. Kill_Voice
          13.11.2023 12:10

          Сложно верить в чудо, при стоимости хорошего датчика 40-50 долларов, а тут за все устройство 5-10 долларов. Аналогичная история и с устройствами измерения CO2


  1. AlexHighTower
    13.11.2023 12:10

    А варианта с BLE нет?


  1. tklim
    13.11.2023 12:10

    Главный вопрос, что этот датчик даёт?

    У меня во всех комнатах есть датчики со2 - там понятно, нужно или окно открыть или ещё что-то думать глобально с вентиляцией и ее автоматизацией. Есть VOC, есть HCHO - эти ловят химию или глинтвейн через две закрытых двери.

    Датчики частиц есть тоже. Один работает постоянно. Ну он показывал превышения в новогоднюю ночь из-за фейерверков и ещё пару раз когда дым от каминного "отопления" стелился по земле. Но это все визуально понятно или нос чувствует.


    1. Berkseo Автор
      13.11.2023 12:10

      А вы попробуйте и думаю поймете, что может дать вам мой апгрейд этого датчика.
      А вы попробуйте и думаю поймете, что может дать вам мой апгрейд этого датчика.