Разработчик
0,0
рейтинг
15 февраля в 14:52

Сказ о том как MT8060 c Arduino подружились из песочницы

Эта статья посвящена монитору качества воздуха MT8060 с датчиком углекислого газа и возможности считывать его показания на PC и Arduino.

Из этой статьи Вы узнаете:

  • Как я разбирал данное устройство.
  • Как подключить датчик CO2 к arduino, не разбирая его.
  • Как считать данные, и как преобразовать к виду, в котором они отображаются на экране (и даже в большем диапазоном значений).
  • Скетч и разводка кабеля прилагаются.

Осторожно, трафик!

Суть проблемы


Однажды зайдя на Geektimes я обнаружил несколько статей про датчик углекислого MT8060 от ДАДЖЕТ. В комментариях шло активное обсуждение возможности подключения данного устройства к компьютеру для получения данных. В комментариях своим опытом по этому вопросу я тогда поделиться не мог (ещё не было R&C mode), поэтому решил написать статью, заодно раскрыв вопрос более подробно и с «картинками».

К сожалению, у этой модификации устройства нет возможности передачи данных по USB. Зато есть диагностический порт, по которому можно считывать все данные, а также произвести калибровку устройства (вероятно). В следующем разделе описано, как добраться до этого порта, и как к нему подключиться. Повторять это не обязательно – в конце следующего раздела приведены все данные, чтобы подключиться к порту не разбирая устройство.

Разборка и изучение возможности подключения


Фото сделаны на камеру телефона, временами не очень качественные, я сильно не старался т.к. не думал, что буду писать статью, а делал на всякий случай.

Итак, на задней стороне есть три резиновые заглушки, за которыми расположены три болта. Заглушки можно достать при помощи пинцета, или подцепив иголкой.



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



Теперь видна задняя сторона печатной платы устройства, диагностические выводы и разъем RJ45. Прогуглив обозначения, которые были нанесены на схему, я вышел на статью CO2MeterHacking, в которой рассматривалось похожее устройство. Подключившись, так же как описано в статье, и запустив предлагаемый там, скетч я получил заветные данные, которые частично совпадали с данными, отображаемыми на экране – главная цель была достигнута.

Кроме того, была заметна разводка этих контактов на разъем RJ45. Посмотрев на разводку, и прозвонив, на всякий случай контакты я нарисовал схему подключения.



Обозначение и назначение контактов, следующее:

  • C (Clock) – тактирующий сигнал.
  • D (Data) – сигнал данных.
  • G (Ground) – земля.
  • V (VDD) – питание +3V.

Распиновка подошла для стандартного коннектора с четырьмя жилами, и в тестовых целях был собран такой вот arduino-совместимый коннектор.



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



Считывание и декодирование параметров


Дальнейшие исследования проводились на собранном устройстве, с «открытым» портом, и они были чисто программные.
Подключаем оранжевый провод (контакт D) к пину D3 arduino, бело-зелёный (контакт C) к пину D2 arduino-совместимой платы.



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

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



Несмотря на то, что уровень влажности на устройстве отображается значением Lo, при считывании показаний через порт они вполне себе отображаются как значения меньше 20. Не понятно для чего это было сделано, вероятно, для того, чтобы не делать ещё один «светофор» по влажности, а выводить Lo, если влажность уже критически низкая.

Вот, собственно, и всё: данные поступают каждую секунду, можно строить графики в высоком разрешении, или написать любую другую логику. Я, например, сделал оповещение по Telegram о выходе показателей за пределы нормы, что избавляет от необходимости постоянно следить за показателями. Так же настроил Mi Band на соответствующие уведомления – удобно, если показания превысят предел ночью, и надо выключить увлажнитель или проветрить. Можно пойти дальше, и интегрировать эти показатели с системой автоматического проветривания, или к умной розетке, в которую подключен тот же увлажнитель – далее ограничения только по фантазии.

Мысли вслух о беспроводной передаче данных


В статье на revspace предлагается использовать беспроводную передачу данных, в ней же можно найти пример скетча для пересылки данных с использованием передатчика NRF24L01+. Кроме того, внутри корпуса имеется достаточно свободного места, как мне показалось, которого хватит на небольшой контроллер и модуль беспроводной связи. Кроме того, внутри имеется и питание 3V (контакты G и V), что избавляет от необходимости использования сторонних источников питания, ну и 5V с порта USB можно использовать, если 3V не хватит. Если надумаю реализовать какой-нибудь беспроводной метод передачи данных – сочиню ещё одну статью по этому поводу.
На этом пока всё, спасибо за внимание!

Ссылки и источники



Автор статьи не несёт ответственность за попытки повторить или применить результаты, представленные в данном материале!
@fedorro
карма
0,0
рейтинг 0,0
Разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

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

  • +3
    Радует что все больше статей по CO2 появляется. Хоть и датчики дорогие, но по мне знать уровень CO2 важнее, чем температура и влажность.
  • 0
    у меня в голове все витает идея выпаять экран и посмотреть что там под ним.
    есть подозрения что доступ по USB можно прикрутить впаяв стандартную usb-uart микруху
    • +1
      Я пытался выдавать данные в тех форматах и виде, что описаны в документах на эти датчики и устройства так, чтобы их переварила утилита для построения графиков от ZyAura, но у меня не вышло. Посмотрел исходник утилиты для считывания данных по USB — там декодирование с "магией". Хорошо бы посмотреть что там распаяно на устройстве с поддержкой USB. Я ещё рассматриваю вариант встраивания микроконтроллера между платой и USB-портом — можно будет залить прошивку, чтобы данные выдавались в удобном виде.
      • 0
        учитывая что все схемы у ZyAura более менее одинаковые, тут отписывались люди у которых была более древняя версия монитора CO2(от того же даджета или мастеркита)
        без влажности, но с USB (ZGm05 вроде).
        если уговорить кого-нить из них раскрутить и сфотографировать, то станет понятно на каком чипе там организован USB
        • 0
          Да, я примерно это и имел ввиду. А может у кого найдется модель ZG1683RU — совсем будет хорошо.
        • 0
          Вот тут ссылку на фото внутренностей ZGm053U я нашел.
    • +1
      Кстати по коду той же утилиты там HID-устройство эмулируется.
  • 0
    двумя руками голосую за esp8266! вот только ценник в 9к слегка остужает жгучее желание приобрести такой себе
    • 0
      Как я понял 9к — это за анализатор воздуха? Это ещё дёшево, с учётом того, что один датчик CO2 у нас за 12 тыс. продается.
      • 0
        но есть и дешевле, и у меня нет понимания, чем ZG01 лучше MH-Z19 или Z14. может кто объяснит
        • 0
          Да, я тоже не понял чем лучше по характеристикам. А статья адресована скорее тем, у кого такое устройство есть (или есть желание его приобрести), и хочется его в ит-инфраструктуру интегрировать.
    • +1
      Не совсем понял, за что 9к. Кстати, если интересует оценивать СО2 и передавать при помощи esp8266, то нескромно оставлю ссылку на свою публикацию на эту тему для тех, кто пропустил.
      • 0
        я тут почти все читаю про самоделки, собственно в этой поделке корпус и индикация для домочадцев в +, но вот цена -, ИМХО
      • 0
        Сейчас MT8060 9 тыс. стоит, хотя 2 недели назад я в том же магазине его меньше чем за 7 тыс. видел. Да, Ваш вариант побюджетнее будет)
  • 0
    Интересно а с этой штукой будет работать?
    http://dadget.ru/detektor-co2
    • 0
      Этот сам может по USB данные передавать. Примерно на середине страницы, на которую Вы ссылку дали, есть спойлер "Для любознательных:
      Имеется ПО для мониторинга уровня СО2 и температуры на компьютере.", в котором даны ссылки на различное ПО для получения данных мониторинга.

      • 0
        Это знаю, делал на малине, готовая статья лежит, осталась опубликовать. но хочу беспроводную низкоуровневую передачу
        • 0
          Разобрать — посмотреть) Правда, вот тут есть фото платы, на ней я не увидел похожих контактов (хотя какие-то есть), да и разъема RJ45 не видать. Видимо предполагалось для всего использовать USB-порт. Сильно разглядеть не получилось, правда, из-за низкого разрешения. Если будете разбирать — сделайте, по возможности, фото покрупнее)

          • 0
            Недавно была статья на хабре про этот датчик https://m.habrahabr.ru/company/masterkit/blog/248403/ и человек давал ссылки на альбом с крупными планами микросхемы https://plus.google.com/photos/116668088451857322516/albums/6090571041584226849?authkey=CPSjqK3Xtvy6rQE. Сам недавно приобрел этот девайс. Очень обрадовался этой статье, потому как полагал что слелаю по аналогии, но увы выхода rj45 не нашел. Но есть три пина, которые подписаны что для калибровки. На них и надежда.
            • 0
              Отличные фото, спасибо большое! Да, подобных выводов нет, но CallPort, похоже, тоже имеет 4 контакта, жаль что они не обозначены. Возможно обозначения под экраном на другой стороне платы. Смущает то, что по тем 4м контактам, которые я описал можно только получать данные, калибровка осуществляется при помощи других контактов, видимо. Тут может получится так, что этот калибровочный порт только для установки калибровочных параметров, а считывание производится только по USB. Хотя на плате есть ещё разные неидентифицированные площадки.
      • 0
        Сегодня раскалупаю, гляну
        • 0
          Если у вас получиться подключиться на низком уровне дайте знать пожалуйста. Сегодня сам попробую подключиться к калибровочным выводам на схеме.
          • 0
            Аккуратнее с этим — можно чего лишнего "накалибровать") Я бы еще документацию попробовал глянуть.
            • 0
              Документацию искал. Не нашел. На самом деле я готов рискнуть, потому как этот девайс мне как самостоятельное устройство не нужен. Тем более есть надежда, что выводы могут быть теми что надо. С задней стороны есть подписи Rclc и Rdata. Или что то вроде этого. Пока не добрался до дома.
              • 0
                Да, возможно это они и есть. Желаю удачи в этом эксперименте, поделитесь с нами своим опытом)
                • 0
                  Попробовал сделать по аналогии. Увы. Выдает в сериал монитор «checksum validation error". Так же попробовал скетч с буржуйского сайта, который упоминается в статье. Выдает FF FF FF FF 653FF. Сообщения выдаются синхронно с миганием светодиода в корпусе устройства, но вот показывает ерунду( .
              • 0
                Да есть cali port, буду ждать ваши пробования, и если что тоже зафигачу, жалко ломать штуку, маме она очень нравится)))
                • 0
                  Эксперимент пока не получился. Смотрите чуть выше.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.