Очки с функцией костной проводимости — различия между версиями
Материал из Department of Theoretical and Applied Mechanics
Строка 85: | Строка 85: | ||
<syntaxhighlight lang="javascript" line start="1" enclose="div"> | <syntaxhighlight lang="javascript" line start="1" enclose="div"> | ||
− | #include | + | #include <Volume.h> |
− | + | int inPin = 2; //пин, отвечающий за кнопку | |
− | + | int spkr = 5; //пин, отвечающий за колонки | |
− | + | int reading; //актуальное значение кнопки | |
− | + | int previous = LOW; //старое значение кнопки | |
− | + | 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 | + | void loop(){ |
− | // | + | //проверяем, лежит ли значение, которое передаёт аналоговый потенциометр, в интервале от 0 до 100 и присваиваем его mv |
− | + | mv = constrain(analogRead(A0) / 10, 0, 100) / 100.00; | |
− | + | //задержка | |
− | + | delay(20); | |
− | + | if (play){ | |
− | if ( | + | vol.tone(1000, 255 * mv); //устанавливаем громкость |
− | + | } | |
− | + | else{ | |
+ | vol.noTone(); //выключаем звук | ||
} | } | ||
− | + | reading = digitalRead(inPin); | |
− | + | if (reading == HIGH && previous == LOW && millis() - time > debounce) { | |
− | + | if (!play) { | |
− | + | play = true; | |
− | + | } | |
+ | else { | ||
+ | play = false; | ||
+ | time = millis(); | ||
+ | } | ||
} | } | ||
+ | previous = reading; | ||
} | } | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | </div> |
Версия 23:39, 30 мая 2018
Содержание
Суть проекта
Создание очков, обладающих функционалом гарнитуры на костной проводимости - девайс, который был бы безопасен для здоровья, удобен и действительно изменил бы жизнь к лучшему
Проектная команда
Поставленные цели
- Осуществление коммуникаций и прослушивание музыки без использования большого количества дорогостоящих устройств
- Использование безопасных для здоровья и жизни беспроводных девайсов
Альтернативные варианты
- Дорогостоящие импортные очки с гарнитурой
- Наушники с гарнитурой
- Ушная Bluetooth гарнитура
Технология костной проводимости
Данный динамик позволяет передавать звук напрямую во внутреннее ухо через кости черепа, минуя наружное ухо (ушную раковину) и среднее ухо (барабанную перепонку, молоточек, наковальню, стремечко)
Свойства устройства
- Bluetooth 4.0
- Динамики костной проводимости
- Автономное питание (до 10 часов) с зарядкой через micro usb
- Эксклюзивная оправа, спроектированная во fusion 360
Работа по проекту
Срок | Возникающие проблемы | Задача | Что сделано к сроку |
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 <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 }
Перспективы работы
В настоящий момент разрабатывается пользовательское приложения для работы с очками. Оно позволяет настроить функционал под себя:
- Отвечать в одно касание на звонки
- Делать фото на встроенную камеру по касанию
- Переключать касанием музыку
- Получать аудио уведомления от определённого круга приложений
Так же в процессе создание новой модели внешне практически не отличающейся от обычных очков