Сенсоры от Yoctopuce — погода дома

    Некоторое время назад я занимался поисками датчика давления для одного сайта. Требования были простыми — подключение по USB и минимум паяльника, т.к. опыт использования данного инструмента у меня только в криптоанализе. Оказывается, что в отличие от температуры и влажности, китайцы ещё не освоили этот рынок, и наиболее простой и дешёвый вариант: купить любой барометр, направить на него веб-камеру и анализировать показания.
    Несмотря на бредовость данной затеи, она серьёзно рассматривалась, но в конце-концов была отметена по банальной причине — ночью нужна подсветка. Т.е. работать система ночью не будет, а если будет, то потребует дополнительных усилий по настройке.

    Из других вариантов, наиболее подходящим была USB Meteo Board от Sparkfun на основе Arduino, или самодельная система на основе того же Arduino или Netduino.

    Но совершенно случайно я наткнулся на Yoctopuce, и понял, что это оно. Их сенсоры и датчики настолько меня поразили в мелочах, что я не могу молчать и хочу поделиться с хабра-сообществом про эти замечательные датчики.



    О yoctopuce

    Это швейцарская фирма, с симпатичным осьминогом на логотипе. Название как раз и образовано от осьминога (octopuce) и приставки йокто- (10-24). Все свои устройства и API они начинают с приставки Yocto. Тем не менее, для удобства я их называю ёктопуками, и мне этот вариант весьма нравится. :)

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

    Датчики

    Доступных датчиков не так уж и много:
    • Сенсор, читающий показания 5 кнопок
    • Датчик освещённости
    • Температурный датчик
    • Метео-устройство (давление, температура, влажность)
    • Устройство с двумя трёхцветными диодами
    • Реле
    • Контроллер для сервомоторов
    • micro-USB хаб для удобства работы с множеством устройств
    • Коннекторы, проводки, крепёж
    • Демо-устройство с зелёным диодом


    У меня сейчас в наличии 4 из них: Yocto-Meteo, Yocto-Temperature и Yocto-Light и Yocto-Demo.

    Общее


    Все датчики имеют общие свойства и построены на одной базе:
    • Упакованы в антистатичные пакеты с названием и датой производства (!!!)
    • Все датчики цифровые. Не требуют калибровки и специальных алгоритмов обработки результатов
    • Подключаются по micro-USB (драйверов не требуют, COM-порт не эмулируют)
    • Имеют ёкто-кнопку и ёкто-диод. Они нужны для обнаружения устройства на компьютере или наоборот. Т.е. если у вас много одинаковых устройств, то нажатием кнопки на устройстве можно увидеть как оно называется в компьютере, а вызовом соответствующей функции в API можно включить маяк на устройстве.
    • Дружно живут вместе с другими устройствами
    • Бескорпусные
    • Имеют крепёжные отверстия
    • Вместо micro-USB можно припаять провода напрямую
    • Во многих случаях плату можно разломать на 2 части
    • Прошивка устройств и API постоянно обновляется

    Вообще, в устройствах поражает именно внимание к мелочам. Сделана очень хорошая база и удобная, на которую теперь навешиваются различные датчики.

    API

    У ёктопуков отличное API (помните я говорил про простоту): оно делится на высокоуровневое и низкоуровневое. Высокоуровневое: поднимается http-сервер на 4444-ом порту, и к нему можно обращаться через JavaScript или PHP. Низкоуровневое: тут всё классически: Objective-C, Delphi, C++, C#.
    Есть версии под Windows, Mac и Linux.

    У всех устройств есть стандартные функции (имя модуля, потребляемый ток, время работы, версия прошивки) и специфичные (узнать температуру, включить лампочку и прочее).

    Можно подписываться на события подключения нового устройства или отключения. Собственно рассказывать про код как-то неправильно, лучше показать:

    
     static void Main()
            {
                string errmsg = "";
               //подключаемся к хабу
                if (yAPI.RegisterHub("usb", ref errmsg) != yAPI.SUCCESS)
                {
                    Console.WriteLine(errmsg);
                    return;
                }
                yAPI.DisableExceptions();
               //берём первые попавшиеся устройства нужных типов
                YPressure ypr = YPressure.FirstPressure();
                YHumidity yhu = YHumidity.FirstHumidity();
                YTemperature yte = YTemperature.FirstTemperature();
    
                while(true)
                {
                     //забираем текущие значения и логгируем
                    double pres = ypr.get_currentValue();
                    double hum = yhu.get_currentValue();
                    double temp = yte.get_currentValue();
                    Console.WriteLine("{0:0}\t{1:00}\t{2:0.0}", pres, hum, temp);
                    Thread.Sleep(5000);
                }
            }
    

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

    VirtualHub

    Кроме API, всегда можно обратиться на http://127.0.0.1:4444/ и посмотреть список подключённых устройств, перепрошить их, посмотреть текущие данные, и возможные функции. Т.е. даже без программирования всё можно вполне удобно использовать.


    Бонусы

    Большинство устройств могут при отсутствии подключения к компьютеру самостоятельно логгировать данные. Естественно, чудес тут нет, и питание им надо выдать, но тем не менее, такая дополнительная симпатичная возможность. При этом, по утверждению разработчиков, в случае переполнения памяти (~500,000 показаний), логгирование не остановится, не будет всё переписываться по кругу, вместо этого старые данные постепенно будут проряжаться (раз в минуту, раз в час, раз в день). Так что возможностей хватит надолго.

    Сами устройства (те, что у меня в наличии)

    Yocto-Meteo


    Меряет влажность, давление и температуру. Влажность от 0 до 100%, температуру от -40° до 125° (точность сенсора ±0.2°, показания с точность до 1/16 градуса, API округляет до 0.1), давление в миллибарах, в мм рт.ст. можно привести самостоятельно при желании.

    Плату можно разломать на 2 части — база и отдельно датчики, соединив их 4-мя проводами для передачи информации. Ломать можно в двух местах — под коннекторы или прямую пайку.
    Датчик влажности можно закрыть специальной крышкой (продаётся отдельно), чтобы защитить его от пыли. Т.к. датчик влажности не имеет смысла упаковывать герметично, в отличие от температуры и давления.
    Yocto-Temperature


    Упрощённая и более дешёвая версия Yocto-Meteo, меряет только температуру.
    Температурные датчики от метео-платы и этой, положенные вместе, показывают почти идентичную температуру ±0.2-0.4° (в пределах декларируемой погрешности).

    Плата была разрезана, припаяны проводки, получилось как-то так:

    В дальнейшем, термоусадочная трубка на датчике была обработана феном и изолентой. Сама плата была упакована с целью изоляции, а датчик упакован в свой же антистатичный пакет. Финальный результат:


    Yocto-Light


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

    Yocto-Demo


    Самое бестолковое устройство для тестирования размером 2 на 2 см. Можно управлять одним зелёным диодом, менять ему яркость, включать/выключать, различным образом мигать. Цель устройства — демонстрация возможностей и функционала. Можно разобраться с API и решить, как использовать другие, более функциональные и полезные устройства.

    Покупка

    Тут всё просто. Оплата карточкой (PayPal не поддерживается), в долларах, евро или швейцарских франках. Доставка обычной почтой (трекинг предоставляют), заняла месяц (за сутки ушла из Швейцарии посылка, дальше всё на совести нашей почты). От 100 франков доставка бесплатна.
    Стоят датчики не очень дешёво, например, Yocto-Meteo ~$67, но в принципе, удобство работы и простота того стоит.

    Аналоги

    Их не так уж и много:
    • Arduino и аналоги. Позволяет сделать более дешёвые и функциональные устройства, но нужно потратить больше времени на изготовление и настройку. Как вариант, готовый комплект USB Meteo Board, уже собранный профессиональными людьми за вас.
    • Phidgets — гораздо больший выбор сенсоров, есть наборы для развлечения с кучей сенсоров, коробки для устройств и многое другое, но чуть больше возни с подключением, если не нужно много сенсоров получается не очень приятно по цене.
    • USBTenki — на некоторых фотографиях не очень весёлое качество сборки, ограниченное API (хотя кому-то может понравится тем что OpenSource).
    • Демо-наборы от Freescale и прочих — фирмы, производящие сенсоры, предоставляют наборы для оценки сенсоров. Возможно, подобные наборы кому-то будут интересны. Проблемы — наборы в общем-то совершенно не предназначены для конечного потребителя и необходимо повозиться с настройкой и программированием.


    Share post

    Comments 47

      +1
      Так вот как оно у вас сделано :)
        +1
        вот тут статья о самодельном электронном бараметре на Arduino и датчике BMP085 от фирмы Bosch
          +5
          Да-да. Вот отличный пример, чего именно данные устройства позволяют избежать.
          0
          опыт использования данного инструмента у меня только в криптоанализе

          А вот с этого места поподробнее, пожалуйста (:
            0
            Возможно понадобится ещё один криптоаналитик, чтобы узнать подробности.)
            0
            Ну тут либо цена, либо простота. Хотя ещё возможен интерес — мне бы было куда интереснее собрать самому такой агрегат, при этом ещё и экономя
              +1
              Каждому своё. Кому-то интересен сам процесс сбора устройства (ведь можно сразу толпу датчиков навесить, bluetooth или ethernet модуль, всё собрать в красивый корпус и заняться сбором нового). Кому-то больше важен уже факт полученных данных. Т.е. устройство должно быть максимально простым, но достаточно функциональным. А кому-то важен экран с цифрами и кнопка вкл.

              В первом случае за гибкость приходится платить своим временем, в последнем сложно получить что-то кроме изначальной функциональности. Этот вариант где-то посередине, для тех кто умеет пользоваться изолентой, но пугается вида паяльника :)
                0
                синяя изолента — это классика, я в детстве в место пайки проводов скручивал их и синей изолентой)
                • UFO just landed and posted this here
                0
                Простота — тоже не гарантирует дешевизны. Мы недавно собирали подобные датчики для нашей системы. Нам нужна была температура и давление. Система простая — датчик, преобразователь напряжение-частота, делитель и ввод в компьютер через микроконтроллер. Так вот проблемой оказался датчик давления. Самый дешёвый из найденных вариантов стоил ~30$. А ещё МК. А ещё обвес…
                Возможно у китайцев можно было найти и дешевле, но т.к. платит контора, то нужно было предоставлять товарные чеки.
                0
                Не хотите сделать на базе имеющегося проекта сайт, не ограничивающийся единственным датчиком, да и вообще Ярославлем? Идея хороша, и её стоит развивать.
                  +1
                  Есть плохорешаемая техническая проблема: мало людей, готовых круглосуточно держать компьютер включённым, да ещё и с окнами, расположенными так, чтобы Солнце не попадало.
                    0
                    Насчтёт Солнца особенно актуально — у меня градусник (для бложика) болтается как раз на солнечной стороне, в итоге до обеда обычно врёт :-) Лечится элементарно — достаточно второй датчик повесить на противоположную сторону дома (у меня окна выходят на обе стороны) и выдавать минимальное значение из двух. Да что-то как-то лень руки не доходят. А насчёт держать комп включённым — зачем??? У меня ардуинка автономная, по сетке сама всё шлёт, комп нафиг не нужен.

                    А вообще таких сайтов с локальной температуры очень много. И при каждом упоминании на Хабре всегда находится хабраюзер, который предлагает всё свести на один сайт. Но результатов так до сих пор и нет :-)
                      0
                      Если вдруг понадобятся показания градусника из Москвы (САО) — так и быть, повешу второй градусник на теневую сторону и готов круглосуточно отдавать.
                        0
                        Сейчас показания для виджета отдаю вот в таком виде www.g0l.ru/service/gettemp
                          +2
                          termal.me
                          Пока я собрал только три города))
                          Тут как-то в Вопросах писал о том, что нужны добровольцы) Желающих сразу нашлась масса, но потом все куда-то слились =((
                          Если позволите, брал бы у вас как-нибудь показания, или вы мне сами отдавали бы…
                            0
                            о, а я прям недалеко от вас :-) На Ангарской, Дегунино.
                              0
                              кстати, у вас там гаджет не скачивается, нот фаунд
                                +1
                                Московский датчик больше не работает =(( Потому и гаджета нету =(
                                На ваши показания нет авторских прав? :)) Я бы как-нибудь прикрутил…
                                  0
                                  Вы это бросьте, «авторские права» какие-то :-D Берите, конечно. Но они у меня подогретые, насолнечные. Вот буквально сейчас жена подошла, пожаловалась что градусник показывает -1 а на улице реально прохладнее. Так что вот он, стимул повесить в тенёк. Сейчас этим и займусь. Если вам надо в каком-нибудь более удобном формате отдавать — давайте шаблон, сделаю.
                                    0
                                    ЭЭэ… А как так? Градусник в МСК не работает, а на сайте температура актуальная и обновляется
                                      +1
                                      Уау, сейчас глянул, оказывается работает )))
                                      Гаджет поправил ))) Кстати, делал на основе вашего) Ибо познаний в скриптах у меня очень мало ))
                              0
                              А смысл? В любом крупном городе есть метеостанции, которые каждые три часа отдают данные в коде SYNOP или METAR. И там нет проблем с расположением датчиков и регулярностью наблюдений.
                                0
                                Раз в 3 часа это нормально для прогноза погода, для архива, но текущие данные обычно хочется получать в более активном режиме. Например, сейчас вышло солнце и температура сильно рванула вверх, а показания на 10 часов с метеостанции это ещё не учитывают.
                                  0
                                  Если солнце вышло и температура рванула, значит термометр под прямыми лучами — это плохо. Нужно измерять температуру воздуха на высоте 2 метра от поверхности. А есть солнце или нет — это дополнительная информация.

                                  Я сейчас занимаюсь алгоритмами обработки метеоданных для своего сайта. Критерий качества алгоритма — процент попаданий прогноза в определенный интервал вокруг реального значения (с метеостанции). На данный момент удалось добиться попадания 88% в интервал 2 градуса для прогноза на сутки. Думаю, в итоге удастся улучшить результат еще процентов на пять. Мне кажется, это достаточно хороший результат, чтобы можно было ориентироваться на такой прогноз.

                                  Мне кажется, идеально было бы видеть прогноз (график) с отмеченными на нем значениями наблюдений (пусть и раз в три часа). Так можно одновременно оценить достоверность прогноза и предполагаемую динамику.

                                  И вообще, все так привязались к этой температуре, а это ведь далеко не единственное значение, которое воспринимается человеком. Есть еще осадки, излучение солнца, ветер, влажность. Например, влажность конвертируется в комфорт не очевидным образом.
                                    0
                                    Если солнце вышло и температура рванула, значит термометр под прямыми лучами — это плохо
                                    Я имел ввиду не это. Сейчас зима, антициклон, т.е. ночью холодно, но днём солнце уже начинает прогревать окружающий воздух весьма хорошо. Т.е. -14° пока солнце не взошло, и -9° уже после восхода. Также летом бывают очень интересные ситуации перед грозой, когда за 20 минут температура с 30° падает до 15°. Естественно, если снимать показания редко, то такие моменты проглатываются.

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

                                    Мне кажется, идеально было бы видеть прогноз (график) с отмеченными на нем значениями наблюдений (пусть и раз в три часа). Так можно одновременно оценить достоверность прогноза и предполагаемую динамику.
                                    Посмотрите у меня на сайте разноцветные облака в графике за текущие сутки. Вот это как раз прогнозы.
                                      0
                                      Графики очень крутые. Облака, конечно, загадочно выглядят, но сама суть очень правильная.

                                      А почему температура с датчика иногда резко упирается в −10 градусов? Что-то с датчиком?

                                      Кстати, для минуса есть специальный символ "−", который по ширине равен символу "+".
                                        0
                                        -10 — это проблема текущего датчика (пока используется не ёктопуковский, буду менять, чтобы подобного не было).
                                        Про знак минуса в курсе, по какой-то причине в своё время отказался от его использования. Возможно поставлю на место.
                                  0
                                  METAR? В любом крупном городе? Ну да, в аэропорту, который (как UNKL для Красноярска) в 30 км от города. И погода там бывает совершенно другая. Разница в температурах запросто доходит до 7 градусов. Потому что аэропорт продувается ветрами, а город находится в котловине. И влажность в городе тем более отличается.
                                0
                                Как вариант, есть еще система Xcomfort от Eaton. Имеет много интересных модулей, причем, в большинстве, управляемые по радиоканалу.
                                Если сообществу будет интересно, могу позже рассказать о практическом опыте реализации объектов на данной системе.
                                  –4
                                  Странно что yoctopuce а не iOctopuce :)
                                    +2
                                    Всё-таки $67 это Arduino + всё необходимое. И получим не просто метеодатчик, а очень гибкую и расширяемую систему практически без пайки/программирования.
                                      0
                                      Скажите, а влажность с какой точностью меряет?
                                        0
                                        Выдаёт с точностью до 1%, от 0 до 100. По даташиту точность где-то ±2%
                                        0
                                        Осьминог как-то подозрительно на паучка похож…
                                          0
                                          А что-то такое же маленькое, но чтобы по сети опрашивать, по snmp?
                                            0
                                            Скорее всего делать самостоятельно на ардуино + ethernet модуль к нему. Вот тут есть описание
                                            0
                                            Спасибо!
                                              0
                                              Я сейчас делаю подобный же сайт (погода для родного города), но решил юзать AVR + ds1820 для температуры, а вот для давления и влажности не нашел дешевого варианта. Видимо эти екто будут лучшим вариантом по цене :)
                                                0
                                                температура и влажность 2-в-1 — SHT21?
                                                давление что-то от Freescale Semiconductors
                                                типа MPX4250GP — с пропорциональным давлению напряжением,
                                                или MPL115А c цифрой по I2C или SPI шине
                                                  0
                                                  по цене этих датчиков, действительно проще йокты эти купить :)
                                                    0
                                                    Если не в промышленных масштабах заниматся строительством собственных метеостанций,
                                                    то донором этих датчиков могут быть фрисамплы или эволюшн борды.
                                                    Если с нуля заказывать, то долго и результат непредсказуем, но если заранее запасено, то почему б и нет?
                                                0
                                                Т.к. датчик влажности не имеет смысла упаковывать герметично, в отличие от температуры и давления.

                                                А датчик давления имеет смысл упаковывать герметично? Чтобы он всегда одинаковое давление показывал? :)
                                                  0
                                                  Герметично не значит в твёрдую тару. Это значит в герметичную. Возьмите шарик, надуйте его и завяжите. Он будет герметичный. А потом сядьте на него. Там давление повысится несмотря на его герметичность.
                                                    0
                                                    Это теоретически. А практически у этого шарика будет диффузия через стенки и ни о какой герметичности не будет и речи. Все видели, как надутые, твердые, как инструмент Рокко Сифреди, шарики через три дня становятся вялыми и дряблыми. Поэтому в реальной жизни «герметично» будет примерно равно «в стеклянной колбе». При всей формальной правоте Ваших слов.
                                                  0
                                                  А есть нечто подобное для снятия показателей человеческого тела — температура, пульс, давление и т.д.?
                                                    0
                                                    у меня на usbtenki вот что получилось www.flags8192.ru/temps

                                                    Only users with full accounts can post comments. Log in, please.