Небольшой обзор Yocto-Demo от Yoctopuce

На сообществе недавно писали о том что Yoctopuce раздает свою демоплатку в качестве демонстрации своей продукции:

Ну о том что оно такое я и хочу рассказать в топике.

Первое, платка приходит в небольшом картонном конверте и помимо самой платки (а она кстати имеет размеры не более 5 копеечной монеты) комплектуется довольно коротким USB шнурком для подключения к компьютеру. Главное отличие данной платы от многих других, это то что помимо собственно железа авторы поставляют довольно неплохое api для общения с платкой через USB (кстати никаких переходников и драйверов плата устанавливается автоматически), причем для большинства широко используемых языков. Вообщем не будем повторятся все есть на их странице и будет наверное понятно даже человеку не сильно владеющих английским.
yocto-demo
Там же на их сайте есть и другие интересные решения.
И так с общей частью закончил, и теперь поговорим о самом устройстве. Первым делом подключаем плату к любому USB порту и через парус секунд оно появляется в системе. По совету производителя скачиваем и запускаем Virtual Hub, теперь с девайсом можно общаться через веб интерфейс на порту 127.0.0.1:4444:

В этом интерфейсе можно переименовать устройство и заставить мигать YLED

Ну а теперь перейдем к тому зачем я собственно описываю такую простую вещь.
1. В обсуждении предыдущего топика писали что платка игрушка и абсолютно бесполезна.
На что можно возразить, мы ведь не ардуинщики боящиеся паяльника, так что вполне можно выпаять TestLed припаять вместо него резистор-транзистор-оптопару-реле и получаем простой модуль для управления нагрузкой.
2. И второе, главное, просматривая api модуля я наткнулся на функцию get_USBCurrent(), которая если верить мануалу возвращает в мА потребляемый модулем (и его нагрузкой ток). Так как я пишу на C#, то сразу заглянул в примеры, но в демопрограмме для данного модуля такой параметр не отображался.
Ну ничего, я применил нелинейное программирование, немного лямбда счислений и довольно сложную технику copy&paste, в результате появился следующий код (элементы label и timer предварительно добавлены на форму):

private void CurrTimer_Tick(object sender, EventArgs e)
    {
        YModule m;
        if (!comboBox1.Enabled) return;
        m = (YModule)comboBox1.Items[comboBox1.SelectedIndex];
        if (!m.isOnline()) return;
        label1.Text = (m.get_usbCurrent()).ToString() + " mA";
    }

В результате демопрограмма стала работать так (таймер забирает значения тока каждые 200мс):

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

Насчет точности не скажу, но при нормальном потреблении 24мА, и последующем подключении резистора 300 Ом, ток стал 40мА, что похоже на правду. При этом производитель обещает точность +- 5ма. Максимум же показаний как я понимаю ограничен 500мА, хотя я бы не стал через эту платку прокачивать больше 100-200ма.

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

RSS свернуть / развернуть
Небольшой пишется слитно :) Пофиксите :)
0
можно заменить синонимом без не (маленький) — русский язык 7 класс)
0
Спасибо исправил.
0
Спасибо за обзор! Кстати, а вы не выясняли, какая максимальная частота «мигания» диода? Просто если частота достаточно высокая, то можно сделать односторонний UART или SPI (DIHALT как-то писал, как передавать данные SPI по одному проводу).
0
К сожалению, такой инфы нет.Но сейчас что то попробую сделать. Кстати api позволяют управлять интенсивностью свечения диода, так что можно замутить шим.
0
У меня получилось не утешительная цифра — 50 Гц, или меньше так как мигание видно глазом, использовал следующий код. Может можно изменить в лучшую сторону делал по быстрому.
while (true)
      {
          if (led.get_power() == YLed.POWER_OFF)
              led.set_power(YLed.POWER_ON);
          else
              led.set_power(YLed.POWER_OFF);
      }

Кстати при ровном свечении на осцилле следующая картина (2Ms):
На картинке один период, при работе же верхнего кода пару периодов просто пропускаются (осцилл у меня аналоговый все дрожит, сорри за качество)
0
Модифицировал код без чтения состояния:
while (true)
      {
              led.set_power(YLed.POWER_ON);
              led.set_power(YLed.POWER_OFF);
      }

Частота увеличилась, но по прежнему видна глазом, при этом картина на осциллографе та же, разве что каждый второй период без широкого импульса в начале. Так что макс частота исходя из того что один период длится 15-20мс не более 50гц, и с возможностью шим я погорячился.
0
Из того, что я понял (поправьте если ошибаюсь)
1. Частота не очень, сгодится разве что для управления нагрузкой;
2. ШИМ (?) Там ведь есть регулировка яркости так? А у этого ШИМ-а какая несущая частота получается?
p.s. Можно поподробнее, что за точки на осциллограмме — это и есть ШИМ-импульсы?
0
1. скорее так.
2.Честно говоря сложно мне понять что то на моем осцилле. Получается, что это шим при интенсивности 50% (скорее всего светового потока а не самого шим). Увеличил до 100, и почти весь период стал заполнен импульсом (+3в), включил мигание — опять видно. Скорее частота шим равна расстоянию между этими точкам, что на осциллограмме около 1000Гц. попробую более подробнее исследовать.
Может у кого-то есть эта плата и лог. анализатор, а то на аналоговом осцилле трудно что то толком понять.
0
Короче добавил на форму ползунок управления яркостью, получилось следующие:
Основной период(частота) шим 17мс/55Гц, приблизительно. Точки на экране имеют период 1мс, когда яркость больше, то вместо точек появляется широкая полоска, по мере увеличения яркости полоска расходится на весь период. Когда же яркость минимальная наблюдается всего пару точек. Боюсь ошибиться, но возможно тут не шим, бинарная импульсная модуляция. если надо могу фотки с осцилла показать.
0
Понятно. Возможно еще осциллограф привирает. Буду ждать свою платку (кстати, а сколько ждали вы?)! Логический анализатор у меня есть, так что узнаем точно, что там за модуляция такая!
А вообще, пишут, что платка бесполезная, т.к. функций мало. На мой взгляд чем меньше функций, тем больше возникает интересных творческий решений. Сейчас детям дают компы и псп с 4-х лет, не знаю что из них выйдет… Где же радость от лепки снеговиков!? Чет меня понесло, извиняюсь…
0
Точно не помню, но около 10дней. Хотя я в Киеве, небось в область шло бы дольше.
Как разберитесь с платкой не забудьте рассказать.
0
Обязательно расскажу!
С момента заказа прошло 14 дней. Почта России мне уже 10 посылок задолжала…
0
Итак, не отвечал ибо куда-то засунул логический анализатор, уже две недели вспомнить не могу куда…
Но в моем мультиметре есть частотомер, вот что он намерил:
Свечение, Частота, Длительность импульса:
----------------------------------------
10%: 160Гц, 0.6%
20%: 370Гц, 1.3%
30%: 630Гц, 2.3%
40%: 53Гц, 5%
50%: 525Гц, 7%
60%: 370Гц, 12%
70%: 265Гц, 25%
80%: 265Гц, 57%
90%: 53Гц, 69%
100% 53Гц, 95%
Результаты на мой скромный взгляд очень странные (частота в частности).
А ели судить по длительности импульса, то видимо что ее рассчитывали именно для регулировки интенсивности свечения.
В итоге я пришел к выводу, что yoctopuce-demo можно использовать разве что для управления нагузкой, т.к. ШИМ (или не ШИМ?) слишком специфичен. Но все равно: два диода, амперметр и кнопка с возможность управления по сетке — уже неплохо :)
0
Если смотреть на осциллограму приведенную мной выше, то понятно откуда такие частоты берутся. Так как в отличие от обычного шим(когда есть некий период, и в нем меняется ширина импульса), тут есть еще эти точки. Например по осциллу при 10% всего три точки, при 50% широкий импульс и пару точек, при 100% практически один сплошной импульс. При этом частота основного периода неизменна и равна около 53Гц. И скорее всего вы правы, процент заполнения не равен проценту выставляемого программой (так как рассчитан на светодиод).
0
Ага! значит я померил частоту как вы сказали «точек». В общем продолжаем искать заветный пакет с лог. анализатором…
0
Если не найдете, то могу выложить фотки осциллограмм, для некоторых позиций. Правда наверное делать это лучше на форуме, а то фотки в каметах блого ИМХО не удобно. Алсо, немного допилил их демо пример, добавил ползунок для управления яркостью, если надо также могу куда то выложить.
0
Как-то уже обсуждалось, что форум и сообщество, места обитания разных людей, я сейчас больше в сообщество переполз. И к тому же сообщество — место для общения, а не просто сборник статей :) Что касается фоток — при высоком разрешении и большом количестве их лучше на файлообменник выкладывать.
0
Анализатор лежал на месте где должна лежать кувалда…
rghost.ru/37179156
p.s. Через месяц ссылка подохнет.
0
Да, да на осцилле тоже самое, просто отследить труднее. Интересно, что это за модуляция такая. Либо они выделяют один период 19мс, который разделен на несколько под периодов, и каждый заполняется по хитрому алгоритму. Я сначала вообще думал, что точки это баг программы. Но когда увидел, что 3 точек хватает, что бы засветить диод, понял, что они какую-то роль играют.
0
а при больше 100% что происходит?
0
Ну например при 255% коэффициент заполнения = 100%. При 110% коэффициент заполнения = 0%
p.s. при 255% результат меня удивил.
0
при 255 моргает он как то непонятно
0
Я через веб-интерфейс (под ОС Ubuntu) устанавливал все параметры, м.б. вы через программу какую-то? У меня лично горит непрерывно.
0
аа. Так вы про синий диод. Я с зеленым баловался. Ну че, все логично: 0-100% горит штатно, а далее — тухнет и видимо в каких-то точках загорается.
0
они оба ведут себя странно если поставить выше 100
0
Я понял, но это в режиме «мигания», а не непрерывного горения. Вообще как-бэ очевидно, что при >100% яркости, производитель не несет никакой ответственности за работу девайса :)
0
а я то наивно думал что неправильные параметры должны хотя бы фильтроваться
0
А я до недавнего времени полагал, что если в консоли Windows введу ошибочную команду, то буду предупрежден, оказалось что нет и конечно в самый неподходящий момент :) Мир не совершенен короче…
0
Что значит «ошибочную»? Входные параметры большинство программ контролирует (те, что нет — косые), а format c: и rm -rf / вполне корректные.
0
net user geovas times:"monday,9:00-22:00"
— я долго бился, пока не понял что слеша не хватает. Хотя Windows все сделала честно, установила ЭТО паролем. Я имел в виду, что анализ введенных данных мог бы быть и более тщательным, все же консоль — это не язык программирования.
0
Если ты полез в консоль — понимаешь, что делаешь. Команда проверяется только на корректность. Вот если бы ты в «пароле» ввел недопустимый для пароля символ — оно бы ругнулось. А так команда корректна, что заказывали — то и получите.
А так «format c:» команда правильная. Вот «format ц:» — неправильная, на нее ругнется.
0
Это уже изврат. В пределах назначения плат Yoctopuce эта бесполезна.
А если использовать не по назначению — конечно не бесполезна. Из нее, например, можно неплохой МК выпаять.
0
PIC для меня не очень интересен, а по поводу платы ничего утверждать не берусь, пока не получу :) Но UART/SPI видимо действительно плохая идея.
0
Там есть Peripheral Pin Select. На вывод светодиода и кнопки может удастся вывести SPI, I2C, ШИМ и т. д.
Получу плату, загружу бутлоадер, и буду мучить.
0
И ещё там 4 вывода, вероятно для программатора, тоже можно использовать.
0
Спасибо за обзор! Думаю, что плата найдёт не одно применение.
Отдельное спасибо за использование в примере C#.
Жду плату с ещё большим нетерпением.
0
Сделаю себе из платки подсветку с управлением от компа! Как же просто пишутся программы на шарпе))
0
какой смысл просаживать такой жирный камень на мигание светодиодом и «подсветку с компа»? Неужели Вы(господа с сообщества) так из чувства халявы заказывали эти платы? Без обид и придирок, но коменты типа «о, закажу себе и поморгая или отпаяю светодиод» это перебор. Мигать светиком можно тинькой на в-усб. Дельные бы предложения по использованию платы(камня), вот это я понимаю!
0
Самое правильное ее применение (с точки зрения авторов) — это помигать лампочкой, проникнуться API, выкинуть и заказать моар более полезных плат.
А так кроме разборки или замены СИДа не что-то более полезное ИМХО с ней особо ничего и не сделаешь. Разве что попробовать пореверсить их протокол для применения их ПО и API со своими девайсами. Хотя весьма возможно, что протокол достаточно навороченный (не зря же они туда такие камни ставят).
Лично меня в этой плате интересует PIC24 с OTG-хостом нахаляву.
0
Лично меня в этой плате интересует PIC24 с OTG-хостом нахаляву
вот это другой разговор, а то «КАК КЛЕВО ПОМОРГАТЬ СВЕТИКОМ НА С#». Халява сдесь как раз и сотоит в этом камне!
0
«КАК КЛЕВО ПОМОРГАТЬ СВЕТИКОМ НА С#»
Прямо скажем, именно на обеспечение этого и расходуются 99% ресурсов камня. Так что да, это круто.
0
Ну тогда сочувствую тем, для кого такой камень представляет интерес только для того, чтоп мигать светодиодом=(
0
Мигать светиком можно тинькой на в-усб.
Кстати нет, нельзя. Это серийное устройство, а V-USB недостаточно стабилен и совместим. Нужен таки МК с аппаратным USB. Хотя и возможно — менее жирный. Скажем, PIC18F14K50.
Хотя с нежирными USB-МК вообще напряг. В основном это навороченные девайсы вроде сабжа или STM32F103.
Ну и опять же, на поддержку потребительских фишек вроде обновления прошивки по USB и без гемора тоже ресурсы нужны.
0
Я выпускаю серийное устройство? или те, кто мигает светиком его выпускают??? Ты уж определись! Кто не сможет помигать светиком на в-усб? И не сможет потому, что его нужно изготовить или проще заказать на халяву чтоп помигать. Тов. VGA, складывается впечатление, что ты принципиально в споре хочешь быть с поледним комментом. Без обид=)
0
Его выпускают Yoctopuce. Так что вариант V-USB там не катит.
Ну а эта платка для того и предназначена, чтобы светодиодиком помигать. Легко и просто, ничего не изучая, прямо из шарпа, а то и пхп.
И в рамках такой задачи применение подобного МК оправдано.
Тов. VGA, складывается впечатление, что ты принципиально в споре хочешь быть с поледним комментом. Без обид=)
Не обязательно)
0
Хочу поинтересоваться у знающих, а есть вообще для этого камня программатор какой несложный? Купил такой кусок кремния поиграться, но не знаю как его прошить. Может запилю какуюнить статейку на тему USB-Host или USB-HDD…
0
PicKit2, но для этого камня можно PIC18F2550 без обвязки. (Статью не могу найти.)
А можно один раз влить бутлоадер.
0
PicKit2 да, но PIC18F2550 без обвязки запитанный от 3.3в, т.к. уровни сабжевого контроллера в основном 3.3
0
Я имел ввиду, упрощенный PicKit2, без преобразователя и регулятора напряжения.
Довольно простая схема, сам собрал, а статью найти не могу.
Позволяет шить PIC24 прямо из MPLAB.
0
Можно использовать, например, программатор ART2003 — один из самых простых. Возможно придется добавить +12В через транзисторный ключ, если не захочет прошиваться. Я так делал с PIC18F4550 — прошил USB bootloader, а затем уже прошивал через него.
0
Я сегодня стал счастливым обладателем этой платы
0
А есть что-нибудь подобное Yocto-Knob? Но с АЦП большей битности? Тоже какой нибудь дешовый USB ADC на четыре-пять каналов?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.