Блог Дмитрия Сошникова

про технологии и человеческое счастье

От погодной станции к взрослому интернету вещей. Проект Connect the Dots

Я уже раньше писал про создания простейшей погодной станции на NetDuino. У рассмотренного решения есть ряд недостатков:

  • Используется достаточно редкий контроллер NetDuino 2 Plus – было бы здорово перейти с него на более классический и недорогой Arduino
  • Передача данных в сеть идет по незащищенному каналу связи HTTP – в реальных задачах разумнее использовать HTTPS, чтобы а значит для отправки данных необходим более мощный процессор, чем в Arduino
  • Предложенный подход с веб-сервисом не всегда способен принять большой поток данных, поэтому если мы хотим поддерживать множество аналогичных погодных станций – необходимо использовать специальные облачные механизмы для интернета вещей, такие как концентраторы событий (Event Hub).

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

Аппаратная сторона

Итак, для отправки HTTPS-запросов и для работы с продвинутыми сервисами Azure нам необходим более мощный процессор, чем в Arduino – при этом Arduino по-прежнему остаётся стандартом де-факто для подключения различных датчиков. Поэтому обычно используют в том или ином виде комбинацию Arduino с более мощным микрокомпьютером, обычно работающим под управлением какой-то операционной системы:

  • Связка Raspberry Pi + Arduino. Raspberry Pi представляет собой недорогой одноплатный контроллер стоимостью около $35, на котором могут работать как разные версии UNIX, так и Windows 10. В случае простых датчиков – их можно подключить прямо к Raspberry Pi, но обычно используют Arduino, которое может быть связано с Raspberry Pi по последовательному каналу либо через USB (самый простой способ), либо напрямую или по интерфейсу I2C. Преимуществом Raspberry Pi является то, что можно использовать достаточно мощную операционную систему и производить на плате не только передачу данных, но и осмысленную пред-обработку и принятие решений.
  • Arduino Yun представляет собой одну плату, на которой по сути совмещена функциональность классического Arduino Uno и микрокомпьютера под управлением специальной версии Linux – OpenWrt. С точки зрения программирования такая связка очень похожа на рассмотренный выше вариант с Raspberry Pi, но при этом мы имеем одну плату (правда, с чуть менее функциональной ОС).
  • Intel Gallileo или Edison – это компактные платы на основе процессоров x86, которые аппаратно совместимы с Arduino, при этом работают под управлением полноценной ОС типа Unix (или даже Windows). Можно работать со всеми аппаратными возможностями этих плат непосредственно из уровня ОС (например, используя Python и библиотеку Wiring x86 – пример такого скрипта смотрите тут, при этом такой же скрипт может отправлять данные в облако), либо с помощью эмулятора Arduino – в этом случае аппаратная часть программируется стандартным способом как Arduino Sketch в Arduino IDE, и затем связывается с базовой ОС через вызов system для отправки данных (пример смотрите тут).
  • Конечно, можно еще использовать полноценный персональный компьютер с подключенным Arduino, но такой способ мы не будем рассматривать ввиду его простоты и экономической неэффективности.

Программная часть

Для отправки потоковых данных с датчиков в облако рекомендуется использовать технологию концентраторов событий. Если вы используете в качестве базового микрокомпьютера Raspberry Pi, Arduino Yun или Intel Galileo, то удобнее всего будет разрабатывать на Python. Для этого установите свежую версию Azure SDK for Python, в котором есть API для работы с Event Hub. Более подробный пример работы (с использованием более старого API) приведен тут, документация по функциям работы с Event Hub – тут, а я постараюсь в ближайшее время также описать этот процесс на русском языке.

Проект Connect-the-Dots

Проект Connect-the-Dots – это проект Microsoft Open Technologies с открытым исходным кодом, который показывает разные сценарии использования сенсоров для сбора данных в облаке с использованием Event Hub. Он по сути дела представляет собой реализацию тех принципов, о которых я написал выше – использование достаточно производительных контроллеров для отправки потоковых данных в Azure Event Hub.

image

В качестве сценариев поддерживается прямая отсылка данных в облако (с Intel Galileo или плат на основе .NET MicroFramework), или же использование шлюза на базе Raspberry Pi и конечных устройств на Arduino Uno, а также возможность использовать Windows Phone как прямой источник данных (освещенность, акселерометр и т.д.).

Проект Connect-the-Dots хорошо использовать как отправную точку для своих масштабных проектов, связанных с интернетом вещей. Более скромные проекты, возможно, имеет смысл делать с меньшим размахом – про это я буду писать в своих следующих заметках.

7 comments

Приглашение на #openbirthday #41–27 марта 2015 г. в антикафе Geek.Time

Приглашаю вас совместно отметить приход весны, день театра и по совместительству мой день рождения в формате #openbirthday. Это значит — могут приходить все, кто хотел со мной познакомиться и пообщаться, а также друзья и знакомые. Подробнее про формат мероприятия — читайте справа!

Подробности:

В программе:

  • 17:00-17:30 — Сбор, регистрация :)
  • 17:30-18:00 — Дегустация сидра из Франции, Испании, России.
  • 18:00-18:30Чайная дегустация шу пуэра 1985 г. рождения.
  • 18:30-19:30 - увлекательная экскурсия в F#! Мы попробуем определить характер кошек в литературе с помощью анализа текстов. Самому активному участнику — приз! Для участия не обязательно уметь программировать, у вас будет уникальный шанс этому научиться прямо на месте!
  • 19:30-21:00 — Китайская чайная церемония «гун фу ча» — будем пробовать классические улуны: те гуанинь и да хун пао (большой красный халат) — прямиком из Китая.
  • 21:00-22:00 – (если останутся силы) Просмотр философского триллера “Два капитана 2” (с участием Сергея Курёхина)
  • Параллельно с основной программой:
    • Для любителей программировать — мини-хакатон! Можно будет создать свою игру в виртуальной реальности на смартфоне или попробовать запрограммировать маленький контроллер Arduino. Приходите с компьютерами!
    • Для любителей настольных игр - будет организована увлекательная игра в подарки и в другие настольные игры от @vickievalerie.
    • Визуально-художественные и видео-аудиальные поздравления можно будет записать в любое время.

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

До скорой встречи!

Add a comment

Love2Code: программирование для девушек и не только!

Однажды, пару лет назад, ко мне подошла одна моя знакомая – ведущая авторской кулинарной программы и популярного блога – с вопросом: как я могу разработать для себя мобильное приложение? Она просила совета, с чего можно начать – и я не нашелся, что ответить. Большинство книг по созданию мобильных приложений требуют навыков программирования, а отсылать девушку к книгам по основам C# было жестоко.

clip_image001

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

Так родилась идея нового проекта – Love2Code. Его цель – помочь всем людям, а особенно девушкам, полюбить программирование и понять, как можно легко с помощью компьютера научиться создавать мобильные приложения. Вы можете обладать нулевыми начальными знаниями, но уже через пару уроков вы сможете создать свой первый мобильный каталог.

Курс построен в оригинальной форме: на протяжении 9 уроков мои прекрасные коллеги – Маша и Саша – учат программировать замечательную девушку-дизайнера Нелли. Вместе они создают сначала приложение-каталог полезных блюд, а затем – личный трекер диеты. На примере Нелли вы увидите, что научиться программированию – не так то сложно, а кроме того – увлекательно. Ведь узнавать про разные понятия: циклы, переменные, массивы – вы будете на практике, столкнувшись с этими понятиями в ходе создания своего приложения.

Помимо этого, в курсе собрано множество историй успеха от женщин-программистов: основателя стартапа Le Click, автора сайта materinstvo.ru и многих других. Мы также побеседовали с преподавателями и студентками вузов, чтобы понять, нужно ли IT-образование девушкам.

Мы обязательно приглашаем посмотреть этот курс:

  • Девушек, которые никогда не программировали, или не смогли полюбить программирование в вузе
  • Всех, кто не умеет программировать и хочет научиться создавать мобильные приложения
  • Тех, кто уже программирует, но хочет получить заряд бодрости и позитива от создателей курса, перед обаянием которых сложно устоять!

Приятного обучения!

Add a comment