Очки с функцией костной проводимости — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
(Приложение)
 
(не показано 14 промежуточных версий 2 участников)
Строка 1: Строка 1:
 +
 
[[File:Boneconduction gif1.gif|thumb]]
 
[[File:Boneconduction gif1.gif|thumb]]
  
===Суть проекта===
+
==Суть проекта==
Создание очков, обладающих функционалом гарнитуры на костной проводимости
+
Создание очков, обладающих функционалом гарнитуры на костной проводимости - девайс, который был бы безопасен для здоровья, удобен и действительно изменил бы жизнь к лучшему
  
===Проектная команда===
+
==Проектная команда==
 
* [[Дрепин Михаил]]
 
* [[Дрепин Михаил]]
 
* [[Серов Александр]]  
 
* [[Серов Александр]]  
  
===Поставленные цели===
+
==Поставленные цели==
 
* Осуществление коммуникаций и прослушивание музыки без использования большого количества дорогостоящих устройств
 
* Осуществление коммуникаций и прослушивание музыки без использования большого количества дорогостоящих устройств
 
* Использование безопасных для здоровья и жизни беспроводных девайсов
 
* Использование безопасных для здоровья и жизни беспроводных девайсов
  
===Альтернативные решения===
+
==Альтернативные варианты==
 
* Дорогостоящие импортные очки с гарнитурой
 
* Дорогостоящие импортные очки с гарнитурой
 
* Наушники с гарнитурой
 
* Наушники с гарнитурой
 
* Ушная Bluetooth гарнитура
 
* Ушная Bluetooth гарнитура
  
===Технология костной проводимости===
+
==Технология костной проводимости==
 
Данный динамик позволяет передавать звук напрямую во внутреннее ухо через кости черепа,  
 
Данный динамик позволяет передавать звук напрямую во внутреннее ухо через кости черепа,  
минуя наружное ухо(ушную раковину) и среднее ухо( барабанную перепонку, молоточек, наковальню, стремечко)
+
минуя наружное ухо (ушную раковину) и среднее ухо (барабанную перепонку, молоточек, наковальню, стремечко)
 +
 
 +
==Свойства устройства==
 +
* Bluetooth 4.0
 +
* Динамики костной проводимости
 +
* Автономное питание (до 10 часов) с зарядкой через micro usb
 +
* Эксклюзивная оправа, спроектированная во fusion 360
  
 
==Работа по проекту==
 
==Работа по проекту==
Строка 25: Строка 32:
 
|-
 
|-
 
|'''Срок'''
 
|'''Срок'''
 +
|'''Задача'''
 
|'''Возникающие проблемы'''
 
|'''Возникающие проблемы'''
|'''Задача'''
 
 
|'''Что сделано к сроку'''
 
|'''Что сделано к сроку'''
 
|-
 
|-
Строка 44: Строка 51:
 
|Модель построена
 
|Модель построена
 
|-
 
|-
| 7.05.18
+
| 02.05.18
 +
| Подобрать и спаять все модули
 +
| Отсутствие опыта пайки, минимизация размеров конструкции
 +
| Все модули спаяны и работают
 +
|-
 +
| 07.05.18
 
|Работа с Arduino
 
|Работа с Arduino
 
|Изучение электронного конструктора Arduino
 
|Изучение электронного конструктора Arduino
Строка 65: Строка 77:
 
* Очки спроектированы и распечатаны на 3D-принтере
 
* Очки спроектированы и распечатаны на 3D-принтере
 
* Собраны модули
 
* Собраны модули
* С получившейся моделью можете ознакомиться на приложенных фотографиях
+
* С получившейся моделью можете ознакомиться [https://a360.co/2EAvkOd здесь] или на приложенных фотографиях
  
 +
<gallery mode="slideshow">
 +
File:Boneconduction pic1.jpg| Модель в собранном виде
 +
File:Boneconduction pic2.jpg| Модель в разобранном виде
 +
File:Boneconduction pic3.jpg| Дужка
 +
</gallery>
  
 
==Arduino прошивка==
 
==Arduino прошивка==
Строка 73: Строка 90:
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
 
<syntaxhighlight lang="javascript" line start="1" enclose="div">
  
#include "Arduino.h"
+
#include <Volume.h>
#include "Cl_do_btn.h"
+
int inPin = 2; //пин, отвечающий за кнопку
Cl_do_btn::Cl_do_btn(byte _pin, bool high, void (* _Do_Btn)()) {
+
int spkr = 5; //пин, отвечающий за колонки
   pin = _pin;
+
int reading; //актуальное значение кнопки
   low = !high;
+
int previous = LOW; //старое значение кнопки
   Do_Btn = _Do_Btn;
+
long time = 0; //время работы
 +
long debounce = 200; //антидребезговое время
 +
bool play = false; // флаг, включено ли проигрывание
 +
Volume vol; //
 +
float mv = 0; //
 +
void setup(){
 +
   pinMode(inPin, INPUT);
 +
   pinMode(spkr, OUTPUT);
 +
   vol.begin();
 
}
 
}
void Cl_do_btn::setup() {
+
void loop(){  
   //pinMode(pin, INPUT);// подключить кнопку
+
   //проверяем, лежит ли значение, которое передаёт аналоговый потенциометр, в интервале от 0 до 100 и присваиваем его mv
   pinMode(pin, INPUT_PULLUP);// подключить кнопку 1 с подтяжкой
+
   mv = constrain(analogRead(A0) / 10, 0, 100) / 100.00;
   btn = read(); // прочитать реальное значение на выводе
+
  //задержка
}
+
   delay(20);
void Cl_do_btn::loop() {
+
   if (play){
   if (! bounce && btn != read()) { // если прошел фронт изм на выводн
+
     vol.tone(1000, 255 * mv); //устанавливаем громкость
     bounce = 1;                   // выставить флаг
+
  }
     past = millis();               // сделать временую засветку
+
  else{
 +
     vol.noTone(); //выключаем звук
 
   }
 
   }
   else if ( bounce && millis() - past >= 5 ) { // если прошло антидребезговое время
+
   reading = digitalRead(inPin);
     bounce = 0;     // то снять флаг
+
  if (reading == HIGH && previous == LOW && millis() - time > debounce) {
     btn_old = btn ;
+
     if (!play) {
    btn = read(); // прочитать реальное значение на выводе
+
      play = true;
     if (! btn_old && btn)  Do_Btn();
+
     }
 +
    else {
 +
      play = false;
 +
      time = millis();
 +
     }
 
   }
 
   }
 +
  previous = reading;
 
}
 
}
  
  
void loop() {
 
  v = !digitalRead(2);
 
  battle = !digitalRead(3);
 
  if (battle==1 && flag==0 && (millis()-timestep)>300){  // Отрабатываем нажатие кнопки..
 
    flag = 1;
 
    i++;
 
    Serial.println(i);
 
    timestep = millis();
 
  }
 
  if (battle==0 && flag==1){  // ..и отжатие
 
    flag = 0;
 
  }
 
  if ((millis()-timestep)>2500 && i>1){ // Через 2.5 секунды после последнего нажатия кнопки запускается дальнейший скрипт
 
    j = i;
 
  }
 
  //if (j>0 && (millis()-timestep)>5000 && (millis()-timestep)<6000){    Прошивка для двигателя (не использовалась)
 
  //  digitalWrite(9,HIGH);
 
  //} else {
 
  //  digitalWrite(9,LOW);
 
  //}
 
  if (j>0 && v==HIGH && flag1==0 && c<180 && (millis()-timestep1)>1000){ // Снятие показания с датчика препятствий и
 
    flag1 = 1;
 
    timestep1 = millis();
 
    c += 180/j;
 
    servo1.write(c);                                                    // подача сигнала на сервопривод
 
  }
 
  if (j>0 && v==LOW && flag1==1 && (millis()-timestep1)>300){
 
    flag1 = 0;
 
    timestep1 = millis();
 
  }
 
 
}
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 
</div>
 
</div>
 
</div>
 
</div>
 +
 +
==Перспективы работы==
 +
В настоящий момент разрабатывается пользовательское приложения для работы с очками.
 +
Оно позволяет настроить функционал под себя:
 +
* Отвечать в одно касание на звонки
 +
* Делать фото на встроенную камеру по касанию
 +
* Переключать касанием музыку
 +
* Получать аудио уведомления от определённого круга приложений
 +
Так же в процессе создание новой модели внешне практически не отличающейся от обычных очков
 +
 +
==Приложение==
 +
[http://mech.spbstu.ru/images/9/9a/Bone00.docx Электронная версия курсового проекта]
  
 
==Ссылки==
 
==Ссылки==
 +
* [[Фаблаб_Политех]]
 +
* [[Курсовые работы по программированию 2 курс 2018]]

Текущая версия на 14:48, 6 июня 2018

Boneconduction gif1.gif

Суть проекта[править]

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

Проектная команда[править]

Поставленные цели[править]

  • Осуществление коммуникаций и прослушивание музыки без использования большого количества дорогостоящих устройств
  • Использование безопасных для здоровья и жизни беспроводных девайсов

Альтернативные варианты[править]

  • Дорогостоящие импортные очки с гарнитурой
  • Наушники с гарнитурой
  • Ушная Bluetooth гарнитура

Технология костной проводимости[править]

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

Свойства устройства[править]

  • Bluetooth 4.0
  • Динамики костной проводимости
  • Автономное питание (до 10 часов) с зарядкой через micro usb
  • Эксклюзивная оправа, спроектированная во fusion 360

Работа по проекту[править]

Срок Задача Возникающие проблемы Что сделано к сроку
23.02.18 Найти динамик на костной проводимости Костная проводимость - нераспространенная технология Динамик был приобретен с помощью интернет сервиса
30.02.18 Рассмотреть легальность вопроса Во многих странах были запрещены подобные технологии из-за скрытого микрофона На очках будет эмблема микрофона, предупреждающая о его наличии
11.04.18 Проектирование 3D модели Изучение САПР Autodesk Fusion 360 Модель построена
02.05.18 Подобрать и спаять все модули Отсутствие опыта пайки, минимизация размеров конструкции Все модули спаяны и работают
07.05.18 Работа с Arduino Изучение электронного конструктора Arduino Подключение к очкам по Bluetooth, получение звука через динамик
15.05.18 Сборка первого прототипа 3D-принтер не смог осилить тонкости модели Прототип собран и функционирует

Смета[править]

  • Динамики - 500 рублей
  • Bluetooth аудио модуль BK8000L (F-6188 V4.0) - 200р
  • Аккумулятор Li-Pol Орбита 25*23*23 3.7В 110 мАч - 100р
  • Модуль заряда аккумуляторов TP4056 (micro USB) - 25 р

Результаты по проекту[править]

  • Очки спроектированы и распечатаны на 3D-принтере
  • Собраны модули
  • С получившейся моделью можете ознакомиться здесь или на приложенных фотографиях

Arduino прошивка[править]

 1 #include <Volume.h>
 2 int inPin = 2; //пин, отвечающий за кнопку
 3 int spkr = 5; //пин, отвечающий за колонки
 4 int reading; //актуальное значение кнопки
 5 int previous = LOW; //старое значение кнопки
 6 long time = 0; //время работы 
 7 long debounce = 200; //антидребезговое время
 8 bool play = false; // флаг, включено ли проигрывание
 9 Volume vol; //
10 float mv = 0; //
11 void setup(){
12   pinMode(inPin, INPUT);
13   pinMode(spkr, OUTPUT);
14   vol.begin();
15 }
16 void loop(){ 
17   //проверяем, лежит ли значение, которое передаёт аналоговый потенциометр, в интервале от 0 до 100 и присваиваем его mv
18   mv = constrain(analogRead(A0) / 10, 0, 100) / 100.00;
19   //задержка
20   delay(20);
21   if (play){
22     vol.tone(1000, 255 * mv); //устанавливаем громкость
23   }
24   else{
25     vol.noTone(); //выключаем звук
26   }
27   reading = digitalRead(inPin);
28   if (reading == HIGH && previous == LOW && millis() - time > debounce) {
29     if (!play) {
30       play = true;
31     }
32     else {
33       play = false;
34       time = millis();
35     }
36   }
37   previous = reading;
38 }

Перспективы работы[править]

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

  • Отвечать в одно касание на звонки
  • Делать фото на встроенную камеру по касанию
  • Переключать касанием музыку
  • Получать аудио уведомления от определённого круга приложений

Так же в процессе создание новой модели внешне практически не отличающейся от обычных очков

Приложение[править]

Электронная версия курсового проекта

Ссылки[править]