Очки с функцией костной проводимости
Материал из Department of Theoretical and Applied Mechanics
Содержание
Суть проекта
Создание очков, обладающих функционалом гарнитуры на костной проводимости
Проектная команда
Поставленные цели
- Осуществление коммуникаций и прослушивание музыки без использования большого количества дорогостоящих устройств
- Использование безопасных для здоровья и жизни беспроводных девайсов
Альтернативные решения
- Дорогостоящие импортные очки с гарнитурой
- Наушники с гарнитурой
- Ушная 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 }