Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Умные очки для знакомств на Arduino 101 и tinyTILE BLE

Компоненты и материалы

Intel tinyTILE (или другие BLE-модули) 2
Arduino 101 (опционально) 2
Adafruit LCD Light Valve (управляемая панель затемнения) 2
Li-Ion аккумулятор 100 мАч 2
Adafruit JST-PH 2-pin SMT Right Angle Connector 4
Adafruit JST-PH Battery Extension Cable 2
Выключатель-ползунок 2
Резистор 10 кОм 3
Тактическая кнопка 12 мм 1
Светодиоды (для разработки) 2
Макетная плата (для разработки) 1
Перемычки (для разработки) 1 набор

Инструменты

Приложения и сервисы

О проекте

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

Узнав, что модули Intel Curie могут работать как центральные и периферийные BLE-устройства, сразу захотел сделать эти очки. (Подробнее о CurieBLE здесь). Благодаря уроку Adafruit, базовый каркас 3D-печатных очков с LCD уже есть. Я добавил BLE-управление двумя очками одновременно: одно — мастер (центральное), другое — слейв (периферийное), и переработал 3D-модели оправ.

Проект разрабатывался на Arduino 101 и прототипировался на tinyTILE — у обоих модули Intel Curie. Даже если Curie в будущем станут недоступны, методология может быть полезна. Представляю много способов применения BLE central/peripheral и жду обсуждений.

Шаг 1 — Разработка

Два Arduino 101 и два светодиода использовались для разработки схемы и тестирования кода. Из-за сложности итоговой схемы лучше начать с макетной платы перед пайкой.

Умные очки для знакомств на Arduino 101 и tinyTILE BLE

Для периферийного устройства можно взять код из примеров CurieBLE → Peripheral → LED, поменяв HIGH и LOW местами (причина в последнем шаге). Код для центрального устройства приведен в конце проекта. Он почти такой же, как CurieBLE → Central → LEDcontrol, с парой строк для LCD.

Умные очки для знакомств на Arduino 101 и tinyTILE BLE
Умные очки для знакомств на Arduino 101 и tinyTILE BLE

TinyTILE — почти точная миниатюрная копия Arduino 101. Центральный прямоугольник — модуль Intel Curie. Их можно прошивать одинаковым кодом. Пины Arduino 101 удобнее, но размер tinyTILE привлекательнее для носимых устройств. Я разрабатываю на Arduino 101, потом переношу на tinyTILE. Если форм-фактор не важен — используйте Arduino 101.

Умные очки для знакомств на Arduino 101 и tinyTILE BLE

Тестировал каждый компонент пошагово при переходе с Arduino 101 на tinyTILE и замене светодиодов на LCD.

Шаг 2 — 3D-печать

Оправы переработал в SolidWorks на базе дизайна Adafruit. Их базовый дизайн здесь, можно модифицировать в любом ПО для 3D-печати. Мои дизайны (сердечко и вселенная) в вложениях. Почему такие формы — смотрите видео.

Дизайн можно адаптировать под свое лицо. Мне было неудерживать на маленьком носу. Есть компании, делающие 3D-скан лица и кастомизирующие очки — отлично.

Умные очки для знакомств на Arduino 101 и tinyTILE BLE

Думаю, 3D-принтер братьев Ruiz от Adafruit лучше моего. Мой напечатал много поддержек в труднодоступных местах. Как UX-дизайнер, много чего могу сказать о неудобстве моего принтера. Хотел бы водорастворимые поддержки или принтер без поддержек или фотополимерный.

Шаг 3 — Сборка

Советы Adafruit по проводке, пайке и монтажу отличны. Нужно только добавить tinyTILE и кнопку. Аккуратно подрезайте провода под нужную длину.

Умные очки для знакомств на Arduino 101 и tinyTILE BLE

Шаг 4 — Готово и веселитесь!

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

Умные очки для знакомств на Arduino 101 и tinyTILE BLE
Умные очки для знакомств на Arduino 101 и tinyTILE BLE
Умные очки для знакомств на Arduino 101 и tinyTILE BLE

Два очка управляются на большом расстоянии в пределах BLE. Дома проверял: Сердце привлекает внимание Вселенной хотя бы за 15 шагов.

Представьте не кнопку, а жест, кивок или совпадение ритма сердец!

Heart (master=central): "I like your sophisticated mind <3"
Universe (slave=peripheral): "I see you. Let's talk."

Код: Управление кнопкой для центрального устройства

/* 
 * Copyright (c) 2016 Intel Corporation. All rights reserved.
 * License terms at the end of this file.
 */
/*
 * Sketch: LedControl.ino
 * Central sketch that looks for a particular Service with a
 * certain Characteristic from a Peripheral. Upon succesful discovery,
 * it reads the state of a button and write that value to the
 * Peripheral Characteristic.
 */
#include 

const int buttonPin = 3;
int oldButtonState = LOW;
const int ledPin = 5; // пин для LCD (был LED)

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);
  BLE.begin();
  Serial.println("BLE Central - LED control");
  BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
}

void loop() {
  BLEDevice peripheral = BLE.available();
  if (peripheral) {
    Serial.print("Found ");
    Serial.print(peripheral.address());
    Serial.print(" '");
    Serial.print(peripheral.localName());
    Serial.print("' ");
    Serial.print(peripheral.advertisedServiceUuid());
    Serial.println();
    
    BLE.stopScan();
    controlLed(peripheral);
    
    BLE.scanForUuid("19b10000-e8f2-537e-4f6c-d104768a1214");
  }
}

void controlLed(BLEDevice peripheral) {
  Serial.println("Connecting ...");
  if (peripheral.connect()) {
    Serial.println("Connected");
  } else {
    Serial.println("Failed to connect!");
    return;
  }
  
  Serial.println("Discovering attributes ...");
  if (peripheral.discoverAttributes()) {
    Serial.println("Attributes discovered");
  } else {
    Serial.println("Attribute discovery failed!");
    peripheral.disconnect();
    return;
  }
  
  BLECharacteristic ledCharacteristic = peripheral.characteristic("19b10001-e8f2-537e-4f6c-d104768a1214");
  if (!ledCharacteristic) {
    Serial.println("Peripheral does not have LED characteristic!");
    peripheral.disconnect();
    return;
  } else if (!ledCharacteristic.canWrite()) {
    Serial.println("Peripheral does not have a writable LED characteristic!");
    peripheral.disconnect();
    return;
  }
  
  while (peripheral.connected()) {
    int buttonState = digitalRead(buttonPin);
    if (oldButtonState != buttonState) {
      oldButtonState = buttonState;
      if (buttonState) {
        Serial.println("button pressed");
        ledCharacteristic.writeByte(0x01); // включить LCD (сделать прозрачным)
        digitalWrite(ledPin, LOW);
      } else {
        Serial.println("button released");
        ledCharacteristic.writeByte(0x00); // выключить LCD (сделать темным)
        digitalWrite(ledPin, HIGH);
      }
    }
  }
  Serial.println("Peripheral disconnected");
}

/* Arduino BLE Central LED Control example
 * Copyright (c) 2016 Arduino LLC. All right reserved.
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License...
 */

Схемы

Центральное устройство: пин 3 — кнопка, пин 5 — LCD. Периферийное: пин 6 — LCD.

Умные очки для знакомств на Arduino 101 и tinyTILE BLE

Производственный процесс

  1. Солнцезащитные очки: дизайн, материалы и стандарты защиты глаз
  2. Батареи: от вольтовой стопки к современным литийным элементам
  3. UnifiedWater v1: полный набор датчиков качества воды на Arduino MKR GSM
  4. Оптимизированные решения питания для проектов на Arduino
  5. Собственный шлем Железного Человека и Арк-реактор на Arduino — пошаговое руководство
  6. Переносная система голосования с GSM-связью
  7. Arduino 101 BLE + Blynk: DIY танк с Bluetooth-управлением с телефона
  8. Автомобильный аккумулятор: устройство, типы, характеристики, обслуживание
  9. Как проверить генератор (альтернатор): экспертные методы для надежного результата
  10. 7 явных признаков неисправности генератора