Что общего между Имперским маршем, Windows Phone 8, Netduino, Bluetooth и сонаром?

 

Грэг Дункан

Сегодняшний проект возвращает нас к недавнему сообщению «Windows Phone 8, Netduino и Bluetooth...», очень классной разработке Мэта Каванага (Matt Cavanagh). Крис Уолкер (Chris Walker) известный в сообществе Netduino был настолько впечатлен, что связался с нами и отметил замечательную работу Мэта, которую он выполняет сейчас.

Я имею в виду, как вы не нарыли проект, объединяющий Windows Phone 8, Netduino, сонар and the Имперский марш из Звездных войн!?

Но сначала...

Еще Netduino + WP8 + Bluetoothразвлечение – 3D-реконструкция

Продолжая свой предыдущий пост Bluetooth с Netduino, я решил немного расширить его.

Цель проекта следующая: Netduino посылает данные об ориентации (XYZ) через Bluetooth к WP8, который отображает трехмерное его представление (конечно, под правильным углом), и, в качестве бонуса, подсоединенный потенциометр управляет увеличением.

Как и на предыдущем видео Netduino питается от USB -разъема? Поскольку у меня под рукой не оказалось 9-вольтовой батареи. И можно заметить запаздывание на несколько мс из-за сглаживающих фильтров. Можно получить движение практически в реальном времени ( Bluetooth очень быстрый), но тогда вы также получите всевозможные флуктуации от акселерометра.

...

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

Итак, как мы показываем трехмерную модель? По моему мнению, самый простой путь – это XNA. Однако Microsoft ликвидировала XNA в WP8 (и W8), оставив лишь неуправляемый код. Выход – MonoGame. MonoGame – это инфраструктура, позволяющая разработчикам написать единую базу кода и заставить ее работать на множестве разных платформ. Так что даже хотя XNA официально не поддерживается на WP8, по-прежнему можно использовать MonoGame, которая достаточно актуальна (по крайней мере, в том, что мы собираемся сделать). Вот объяснение этому:

...

Да, да, я знаю, «Звездные войны!...», приступаем…

Netduino + Sonar + WP8 + Bluetooth = управление звуком с помощью мысли

О’кей, может не с помощью мысли, но, по крайней мере, с помощью руки.

Цель – добавить ультразвуковой сонар к Netduino, определяющий насколько близко находится рука, и передать эту информацию через Bluetooth к Windows Phone 8, чтобы последний отобразил ее. В качестве награды можно сделать что-то полезное с данными (например, управление громкостью Имперского марша очень полезно!)

Для этого нужно:

  • Netduino или его вариант
  • Ультразвуковой датчик
  • Модуль Bluetooth
  • Windows Phone 8

...

Несколько месяцев назад я приобрел такой ультразвуковой датчик: HC-SR04 (http://lightake.com/detail.do/sku.UltrasonicSensorHCSR04DistanceMeasuringModuleBlueSilver-58594). Я купил его в случайном маленьком онлайновом китайском магазине за 4 долл. Я приобрел его, чтобы увидеть действительно ли его доставят (бесплатно по всему миру) так как там был большой набор датчиков для Arduino и Netduino, а у нас сложно получить их. Удивительно, но заказ пришел.

Так что я вечером я распаковал их, твитнул и подключил к Netduino.

VCC – 5v
Trig – D6
Echo – D7
GND – GND

На этом сайте прекрасно объясняется как они работают: http://arduino-info.wikispaces.com/UltraSonicDistance

Сонар имеет два датчика: динамик и микрофон. Ультразвук – это высокочастотный звук (обычно 40 КГц ). Короткий цуг звуковых волн (обычно лишь восемь периодов) посылается через излучатель (на рисунке слева). Затем приемник слушает эхо. Таким образом, принцип ультразвукового измерения расстояний аналогичен радиорадару.

Разобравшись с принципом действия, я приступил к написанию кода, привлекши на помощь математику и понимая, что до меня этим кто-то обязательно занимался – поиски увенчались успехом, я нашел прекрасный небольшой класс Дж. Вильсона в форумах Netduino http://forums.netduino.com/index.php?/topic/3256-library-for-hc-sr04-ultrasonic-rangefinder/.

Скачайте этот класс и добавьте к проекту Netduino.

...

Создайте проект WP8 так же как и в прошлый раз и добавьте часть по Bluetooth, подобно прошлому проекту. У меня очень простой пользовательский интерфейс. Он состоит из элемента ProgressBar для визуализации уровня громкости, MediaElement для проигрывания песни и TextBlocks для отображения текущих значений.

Пожалуй, сейчас самое время, чтобы продемонстрировать основы использования MVVM, но я отложу это на будущее.

Кроме кода Bluetooth, реально только один метод тянет всю работу, и он действительно прост. Этот метод вызывается, когда приходит сообщение от BT. Сообщение в этом случае будет значением расстояния от датчика сонара, выраженное в см.:

...

И, конечно, исходники доступны для обоих проектов…