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

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
Строка 1: Строка 1:
 +
 
[[File:Boneconduction gif1.gif|thumb]]
 
[[File:Boneconduction gif1.gif|thumb]]
 +
[[File:Boneconduction gif2.gif|thumb]]
  
 
===Суть проекта===
 
===Суть проекта===

Версия 00:17, 30 мая 2018

Boneconduction gif1.gif
Boneconduction gif2.gif

Суть проекта

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

Проектная команда

Поставленные цели

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

Альтернативные решения

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

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

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

Работа по проекту

Срок Возникающие проблемы Задача Что сделано к сроку
23.02.18 Найти динамик на костной проводимости Костная проводимость - нераспространенная технология Динамик был приобретен с помощью интернет сервиса
30.02.18 Рассмотреть легальность вопроса Во многих странах были запрещены подобные технологии из-за скрытого микрофона На очках будет эмблема микрофона, предупреждающая о его наличии
11.04.18 Проектирование 3D модели Изучение САПР Autodesk Fusion 360 Модель построена
7.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 "Arduino.h"
 2 #include "Cl_do_btn.h"
 3 Cl_do_btn::Cl_do_btn(byte _pin, bool high, void (* _Do_Btn)()) {
 4   pin = _pin;
 5   low = !high;
 6   Do_Btn = _Do_Btn;
 7 }
 8 void Cl_do_btn::setup() {
 9   //pinMode(pin, INPUT);// подключить кнопку
10   pinMode(pin, INPUT_PULLUP);// подключить кнопку 1 с подтяжкой
11   btn = read(); // прочитать реальное значение на выводе
12 }
13 void Cl_do_btn::loop() {
14   if (! bounce && btn != read()) { // если прошел фронт изм на выводн
15     bounce = 1;                    // выставить флаг
16     past = millis();               // сделать временую засветку
17   }
18   else if ( bounce && millis() - past >= 5 ) { // если прошло антидребезговое время
19     bounce = 0;      // то снять флаг
20     btn_old = btn ;
21     btn = read(); // прочитать реальное значение на выводе
22     if (! btn_old && btn)  Do_Btn();
23   }
24 }
25 
26 
27 void loop() {
28   v = !digitalRead(2);
29   battle = !digitalRead(3);
30   if (battle==1 && flag==0 && (millis()-timestep)>300){  // Отрабатываем нажатие кнопки..
31     flag = 1;
32     i++;
33     Serial.println(i);
34     timestep = millis();
35   }
36   if (battle==0 && flag==1){  // ..и отжатие
37     flag = 0;
38   }
39   if ((millis()-timestep)>2500 && i>1){ // Через 2.5 секунды после последнего нажатия кнопки запускается дальнейший скрипт
40     j = i;
41   }
42   //if (j>0 && (millis()-timestep)>5000 && (millis()-timestep)<6000){    Прошивка для двигателя (не использовалась)
43   //  digitalWrite(9,HIGH);
44   //} else {
45   //  digitalWrite(9,LOW);
46   //}
47   if (j>0 && v==HIGH && flag1==0 && c<180 && (millis()-timestep1)>1000){ // Снятие показания с датчика препятствий и 
48     flag1 = 1;
49     timestep1 = millis();
50     c += 180/j;
51     servo1.write(c);                                                     // подача сигнала на сервопривод
52   }
53   if (j>0 && v==LOW && flag1==1 && (millis()-timestep1)>300){
54     flag1 = 0;
55     timestep1 = millis();
56   }
57 
58 }

Ссылки