Чиним USB-шнур на коленке. Самодельный USB-свисток с микрофоном, STM32 и ESP8266 на борту Самодельный usb



В моём распоряжении были следующие коннекторы: USB гнездо, предназначенное для установки в печатную плату и 80 сантиметровый кусок кабеля с USB вилкой на конце.


Вначале, я попытался изготовить гибкий удлинитель из 4-метрового аудио-видео кабеля, но попытка не увенчалась успехом. Когда я вставил флэшку в этот кабель, ОС «сказала», что устройство работает неправильно.



Так что, было решено использовать витую пару, тем более что у меня имелось несколько кусков сетевого Ethernet-овского кабеля, оставшегося со времён раздачи Интернета через локальную сеть. Сетевые кабеля оказались самого низкого качества, так как никаких экранов не имели. Во всех кусках кабеля имелось по четыре витые пары в пластиковой изоляции. Судя по цвету и жёсткости самих жил, изготовлены они были из какого-то медного сплава, похожего на латунь.

Для передачи сигнала и питания в формате USB2.0, на расстояние до 5-ти мтеров, вполне достаточно всего двух витых пар. Оставшиеся витые пары можно не использовать.


Однако если сопротивление жил кабеля велико, а подключенное к концу кабеля устройство потребляет значительный ток, то можно пустить питание сразу по двум или даже трём витым парам.


Давайте рассмотрим этот момент подробнее.

Например, если потребляемый USB устройством ток составляет 400мА, а сопротивление одной пары 2 Ома (в оба конца), то сопротивление USB устройства будет равно:


5 / 0,4 = 12,5 (Ом)


При этом падение напряжения на кабеле составит:


5 * 2/ (12,5 + 2) ≈ 0,69 (Вольт)


Что, конечно, многовато.


Но, если использовать сразу три пары:


2 / 3 ≈ 0,67 (Вольт)

5 * 0,67/ (12,5 + 0,67) ≈ 0,25 (Вольт)


То падение напряжения на кабеле снизится и уже не будет столь критичным.

О цоколёвке (распиновке) USB вилок и гнёзд

На картинке показана цоколёвка гнезда и вилки USB 2.0.


Для передачи данных (+Data и –Data) можно использовать любую из четырёх имеющихся витых пар.


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


Как закрепить гнездо USB на жёстком сетевом кабеле

Сборка моего кабеля несколько осложнилась в связи с тем, что в моём распоряжении оказалось не кабельное USB гнездо, а гнездо для печатных плат.


Пришлось сначала изолировать контакты от задней стенки корпуса.


А потом и от нижней стенки корпуса (на фото показано сверху).

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


Сначала с помощью швейных ниток крепим к кабелю отрезок полихлорвиниловой трубки (кембрика). Конец нити можно закрепить расплавленной канифолью. На кембрике и изоляции кабеля делаем по два продольных разреза.


Должно получиться примерно так. Образовавшиеся «лепестки» должны быть расположены в виде креста.


Затем можно припаять концы витых пар к соответствующим выводам.


Крепим «лепестки» к корпусу гнезда швейными нитками. Конец нитки закрепляем канифолью.

Теперь можно облагородить гнездо, надев термоусадочную трубку или покрыв полиэтиленом (из пистолета).

Но, у меня был только очень жёсткий кабель, поэтому и крепление пришлось изготовить более серьёзное.


Сначала я намотал на край кабеля медный провод диаметром 1,3мм. Потом припаял концы этого провода к боковым стенкам гнезда USB.


Для придания дополнительной жёсткости конструкции, покрыл место соединения кабеля с гнездом USB низкотемпературным термоклеем.



Для придания более благообразной формы и улучшения внешнего вида разъёма, покрыл его термоусадочной трубкой. В

Внимание! Во время усадки трубки, термоклей может просочиться через щели во внутреннюю часть гнезда. Чтобы это предотвратить, можно вставить прокладку между трубкой и корпусом гнезда или вилку в гнездо. Тогда не придётся выковыривать термоклей из гнезда.

Содержание:

В работе с компьютерной техникой довольно часто требуются какие-либо нестандартные дополнительные приспособления. Например, при устройстве локальной сети может понадобиться кабель различной длины, оборудованный разъемами USB. Однако стандартные изделия заводского изготовления не всегда отвечают предъявляемым требованиям. В подобных случаях приходится изготавливать USB удлинитель своими руками.

Принцип работы и область применения USB удлинителей

Для изготовления нормального рабочего удлинителя нужно хорошо знать его свойства и принцип действия. От этого в первую очередь зависит его длина. Всем известно, что с помощью обычного кабеля возможно подключение удаленных устройств на расстояние 3-5 метров. Такие кабели считаются пассивными удлинителями, и во многих случаях такого расстояния оказывается недостаточно для обеспечения нормальной работы в доме или офисе. Не всегда имеется возможность расположения принтера, сканера и других периферийных устройств неподалеку от компьютера.

Данную проблему успешно решает активный USB удлинитель, коренным образом отличающийся от обычного кабеля. Его полезные качества проявляются за счет активных усилителей, встроенных на каждом конце и получающих питание с разъемов USB в пределах 5 вольт. За счет этого полезный сигнал усиливается многократно, что дает возможность подключения устройств, удаленных от компьютера на расстояние 50 метров и более.

В процессе передачи сигнала наступает его неизбежное ослабление. В связи с этим для больших расстояний (свыше 5 метров) используется подключение лишь по протоколу USB 1.1. На расстоянии до 30 метров необходимо применение более скоростного протокола USB 2.0. Большое значение имеет кабель, соединяющий устройства между собой. Он должен быть высокого качества, гарантирующего такую же высокую скорость подключения.

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

Процесс изготовления удлинителя

Следует сразу же отметить, что самостоятельное изготовление USB удлинителя требует специальных знаний , практических навыков работы с паяльником и другим электроинструментом. В противном случае рекомендуется приобрести готовое изделие нужной длины, хотя оно и будет дороже самодельного. Тем не менее, многие все-таки пытаются сделать USB удлинитель самостоятельно.

Прежде всего нужно запастись стандартным USB кабелем небольшой длины. По возможности, в нем должен быть ферритовый сердечник, способный гасить высокочастотные помехи и указывающий на высокое качество кабеля. Такой отрезок можно попросить или недорого купить у людей, занимающихся кабельными линиями. У них же можно попросить и необходимое количество компьютерного кабеля UTP, желательно одной из высоких категорий, например, 5е, 6 или 6е. От этого будет зависеть скорость работы аппаратуры на противоположном конце.

Из инструмента понадобятся кусачки или ножницы для разрезания кабеля. выполняется специальным инструментом, но при его отсутствии можно обойтись простым ножом. Для соединений будут нужны паяльник, припой и канифоль, поскольку скрутки проводов не допускаются из-за их высокого сопротивления. Места соединений изолируются термоусадочными трубками. Вместо них можно использовать изоленту.

Работы начинаются с разрезания кабелей на отрезки необходимой длины и зачистки концов. Изоляция со всех проводников снимается примерно на 3-5 мм. USB кабель содержит 4 проводника, UTP кабель - 8. В состав одной пары UTP кабеля, входит два проводка - цветной и пестрый. Вместо пестрого может быть белый провод. Каждая такая пара припаивается к отдельному проводку USB кабеля с соблюдением соответствующих цветов. По такой же схеме изготавливается USB удлинитель с дополнительным питанием своими руками, известный как активный удлинитель.

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

USB удлинитель из витой пары

Удлинители из витой пары применяются в основном для подключения интернета через 3G модем. Данные устройства используются на дачах и в загородных домах, при отсутствии возможности проведения обычного кабельного интернета. Нередко возникают ситуации, когда уверенный прием сигнала 3G возможен лишь из определенного места, к которому требуется подвести отдельный кабель. Нередко юсб удлинитель нужного размера отсутствует в продаже, поэтому единственным выходом остается его изготовление своими руками.

Для этой цели потребуется нужное количество витой пары, экранированной фольгой, два разъема USB АМ и AF, то есть «папа» и «мама», термоусадочная трубка 16 мм, а также изолента. Из инструментов понадобится нож, бокорезы, паяльник, припой и флюс.

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

Термоусадочная трубка заранее разрезается на части по 4 см каждая и надевается на витую пару. Это позволит в дальнейшем не делать отпаивание разъема. Правильность выполнения распайки следует проверять очень тщательно, поскольку случайная путаница может привести к выходу из строя USB устройства.

После проверки необходимо включить модем в тестовом режиме. Если компьютер не опознает устройство или показывает неправильную работу, необходимо опробовать другой разъем. Отсутствие положительного результата указывает на слишком большое потребление тока. Поскольку провода очень тонкие, модему просто не хватает напряжения. Возможно придется укорачивать провод до тех пор, пока устройство не начнет работать или увеличивать сечение проводов. Если же вся система работает нормально, остается надеть на разъемы термоусадочные трубки и после разогрева проверить качество изоляции.

Расскажу о том, как я сделал свой беспроводной USB-адаптер повышенной точности для симулятора. USB-адаптер был опробован в Heli-X , FPVFreeRider и LiftOff и показал прекрасный результат, оправдал все мои ожидания!


Перепробовав несколько вариантов USB-адаптеров для симулятора, стал искать возможность сделать такой самостоятельно. Ни один из продаваемых USB-адаптеров меня не устраивал по причине малой точности. То есть, на полный ход стика приходилось очень малое количество шагов. Например в было всего 168 шагов. Это самое большое, что я видел, и этого ужасно мало для нормального управления моделью в симуляторе.


Открываем файл Joystick.cpp внутри каталога...\Arduino\libraries\Joystick\src, находим строчку:

#define JOYSTICK_AXIS_MINIMUM -32767

и заменяем ее на:

#define JOYSTICK_AXIS_MINIMUM 0

Дело в том, что FPVFreeRider в Windows получает данные с джойстика в обход системы и никакая системная калибровка джойстика не нужна. Но тут есть маленький подвох. Симулятор FPVFreeRider понимает значения с осей джойстика в диапазоне от 0 до 32767, а системный джойстик может работать в диапазоне -32767 до 32767. Поэтому, если ваш джойстик может выдавать отрицательные значения, то у вас будут проблемы с его калибровкой в FPVFreeRider . Это касается только Windows, в других системах такой проблемы нет и ничего менять не надо.

Скачиваем код скетча , открываем его в среде Arduino и сразу же загружаем в USB-адаптер кнопкой "Загрузка". Все должно пройти без проблем и ошибок.


В общем, USB-адаптер уже может работать, но пока что не настроен. Надо определить максимальное, минимальное и центральное значения PPM-импульса, поступающего на вход адаптера с приемника или тренерского разъема. В передатчике все каналы должны быть выставлены +/-100% и убраны все триммеры в ноль. В Ubuntu значения можно получить, выполнив в консоли простую команду:

# cat /dev/ttyACM0

Для Windows придется установить бесплатную программу TeraTerm . Распаковываем и запускаем ttermpro.exe. Создаем новое соединение, выбираем виртуальный COM-порт, подтверждаем и видим на экране шесть колонок цифр. Это данные шести каналов, которые получает USB-адаптер со своего входа.


Шевелим стиками и смотрим на цифры. Надо определить и записать минимальное, максимальное и значение в центральном положении стика. Значения могут немного плыть на 1-4 единицы. Для минимального надо выбрать максимально минимальное. Для максимального минимально максимальное, для среднего - среднее. Например, у меня минимальное значение гуляет в диапазоне 2210-2214, значит беру 2214. Максимальное гуляет 3810-3812, беру 3810. Среднее гуляет 3011-3013, беру 3012.

Если все получилось, то в программе можно отключить вывод данных, поставив комментарий на следующую строку. Было:

#define SERIALOUT

// #define SERIALOUT

Подставляем полученные значения в переменные ниже.

#define MIN_PULSE_WIDTH 2214 // Minimal pulse
#define CENTER_PULSE_WIDTH 3012 // Middle pulse
#define MAX_PULSE_WIDTH 3810 // Maximal pulse

Если у вас Windows, то меняем значение переменной USB_STICK_MIN на ноль. Для других операционных систем оставляем как есть.

#define USB_STICK_MIN 0

Заливаем скетч в USB-адаптер и проверяем его работу. В Ubuntu это можно сделать в программе jstest-gtk. Если она не установлена, то ставим:

# sudo apt-get install jstest-gtk

В самой программе заходим в калибровку и сбрасываем значения кнопкой Raw Events.


Значения должны изменяться от -32767 до 32765. В около-нулевой зоне стика будет небольшой дребезг. Надо добиться того, чтобы эти значения гуляли как в положительную зону, так и в отрицательную. Придется подкорректировать переменные MIN_PULSE_WIDTH, CENTER_PULSE_WIDTH и MAX_PULSE_WIDTH несколько раз, чтобы добиться нужного результата. При этом не должно быть холостого хода стика в крайних положениях. Калибровку выполнять не надо, а еще лучше сохранить обнуленные значения командой:

# sudo jscal-store /dev/input/js0

В Windows проверку диапазона работы USB-адаптера можно выполнить с помощью программы Joystick Tester . Значения по осям должны изменяться от 32767 до 65535, а центр должен быть на значении 49150. Как я уже говорил, это сделано для того, чтобы FPVFreeRider смог нормально работать с USB-адаптером.


На этом этапе уже можно считать настройку USB-адаптера завершенной и проверять его работу в различных симуляторах. Но можно пойти дальше, если есть желание:)

Переменная CENTER_PULSE_JITTER убирает дребезг в около-нулевой зоне стика. При нулевом значении фильтр не работает. Если не нравится наличие небольшого дребезга, то можно поставить значение от 5 до 10. Большие значения лучше не ставить, иначе потеряется чувствительность в около-нулевой зоне.

Переменная RC_CHANNELS_COUNT отвечает за количество входящих каналов. У меня с приемника идет восемь каналов, поэтому весь скетч сформирован именно под это число. Это можно изменить, но придется еще глубже залезать в дебри кода.

Следующая строка формирует собственно джойстик с заданными параметрами:

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK, 2, 0, true, true, true, true, true, true, false, false, false, false, false);

Третий параметр, там где стоит цифра 2, задает количество кнопок джойстика. Начиная с пятого параметра идет определение наличия осей. Шесть раз подряд true - это шесть осей USB-адаптера. Потом идет false - запрет оси. Всего можно задать 11 осей. Например, для USB-адаптера без кнопок и с четырьмя осями будет вот такая строка:

Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID, JOYSTICK_TYPE_JOYSTICK, 0, 0, true, true, true, true, false, false, false, false, false, false, false);

Переменная NEWFRAME_PULSE_WIDTH отвечает за определение паузы в микросекундах между PPM-пакетами. Лучше ее не изменять.

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





Joystick.setRyAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setRzAxisRange(USB_STICK_MIN, USB_STICK_MAX);

Если осей меньше шести, то количество строк можно сократить. Для четырех осей будет так:

Joystick.setXAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setYAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setZAxisRange(USB_STICK_MIN, USB_STICK_MAX);
Joystick.setRxAxisRange(USB_STICK_MIN, USB_STICK_MAX);
В следующем блоке происходит преобразование полученных на входе значений в данные джойстика:





Joystick.setRyAxis(stickValue(rcValue));
Joystick.setRzAxis(stickValue(rcValue));
Joystick.setButton(0, rcValue > CENTER_PULSE_WIDTH);
Joystick.setButton(1, rcValue > CENTER_PULSE_WIDTH);

Последние две строки формируют значения кнопок. Первый параметр в этой строке - это номер кнопки. Нумерация идет с нуля. Если оставить четыре оси и убрать кнопки, то блок будет выглядеть так:

Joystick.setXAxis(stickValue(rcValue));
Joystick.setYAxis(stickValue(rcValue));
Joystick.setZAxis(stickValue(rcValue));
Joystick.setRxAxis(stickValue(rcValue));

Можно еще немного подчистить код, убирая лишние данные, но пусть это будет "домашним заданием" для желающих копнуть еще глубже:)

Самый лучший способ сравнить работу обычного USB-адаптера и самодельного - это тест на точность полета. Как нельзя лучше для этого подходит трасса на детской площадке в симуляторе Ubuntu он у всех работает с проблемами.

На следующем этапе попробую заставить работать USB-адаптер с приемником через шину S.BUS. Это должно еще больше поднять точность управления в симуляторе. Успешных тренировок!

Хочу рассказать о своем небольшом проекте выходного дня, осветить трудности, с которыми пришлось столкнуться, дальнейших планах и получить консультацию более опытных Хабраюзеров. Формат статьи обзорный, так сказать, галопом по Европам. Если будет интерес, пройдусь подробнее по отдельным частям.

Коротко описать работу устройства можно так:

Электретный микрофон → Усилитель Max9812 → Микроконтроллер STM32F103 → Программное детектирование наличия звука → Кодирование звука в Speex → Отправка через ESP8266 на сервер → Скрипт PHP приема данных и оформления в звуковой контейнер Ogg. Кому интересно, прошу под кат.

Зачем все это надо?

Сама идея устройства у меня возникла к рождению дочки. В перспективе хочу сделать некое подобие радионяни: воткнул в розетку рядом с детской кроваткой, а сам в другой комнате сериальчик смотришь, тут хоп - на телефон пуш уведомление пришло и можно послушать что там происходит. Но по реализации последних пунктов у меня больше вопросов, нежели ответов. Об этом позже.

Возможно кто-то увидит другое применение такой поделке, но уверяю Вас, устройство не создается с целью негласного получения информации (ст.138.1 УК РФ) и любая такая попытка будет преследоваться по закону .

Попрошу сразу не критиковать саму идею, работа со звуком и Wi-Fi мне нужна в другом проекте, над которым я пока только думаю. А это - отдельный кусок, реализованный в самостоятельный девайс.

Корпус

По принципу “Design first” начал думать в каком конструктиве делать устройство. В поисках готовых корпусов на Ali наткнулся на корпуса для usb с отверстием под кабель и подумал про себя, что это идеальный вариант - дырку займет микрофон, а остальное как-нибудь впихнем.

Только вот заказывать 10шт за $5 я не хотел и начал искать варианты. В итоге заказал переходник USB-RS485 в точно таком корпусе за $0.84. А сам переходник пригодится на работе, а то Bolid’ы, стоимостью 1.5 тыс рублей, уходят как расходный материал.

Закупаем все необходимое

Во-первых, при ознакомлении с предметной областью предстоящей поделки, я наткнулся на статью Распознавание речи на STM32F4-Discovery . Там и прочитал про кодек Speex и его применение на микроконтроллерах. Признаюсь, это мой первый опыт работы с микроконтроллерами фирмы STM.

Итак, заказываем самую распространенную отладку с микроконтроллером STM32F103C8T6, к ней отладчик St-link v2, допиливаем его на коленке и уже можно жить. По приблизительным подсчетам ресурсов STM32F103C8T6 должно было хватить, но speex весьма прожорлив, да и сами драйвера HAL не такие уж компактные, в общем памяти для всех библиотек оказалось маловато. В конечном девайсе стоит STM32F103CBT6 с удвоенным количеством flash.

Во-вторых, нужен микрофон. Первой строчкой в поиске берем микрофонный модуль с усилителем max9812, а в довесок горстку более миниатюрных микрофонов типоразмера 6050 (ведь у нас уже есть корпус с отверстием, куда должен пролезть данный микрофон).

В-третьих, нужно подобрать модуль wi-fi, да такой, чтоб влез в купленный корпус. Выбор был сделан на миниатюрный ESP-03 с керамической антенной и несколько штук ESP-12 для макетирования.

Макетирование и программирование

В STM32CubeMX быстренько собираем необходимую периферию и идем дальше, в процессе работы все равно придется часто возвращаться к Кубу. Тут главное писать код в специально отведенных местах /* USER CODE */ и тогда новая генерация проекта никак не скажется на уже написанном.

Семплирование АЦП идет через DMA по триггеру таймера на частоте 8кГц в два кольцевых буфера размером 160 семплов, один буфер получается равен 20мс. Столкнулся с таким моментом, который не знал и потерял на этом время: DMA продолжает работать на брейкпоинте отладчика, при этом оба флага HT (половина передачи) и TC (передача закончена) установлены, а буферы заполнены всегда полностью.

С библиотекой Speex разобрался не сразу, контроллер постоянно вылетал в HardFault. Оказалось просто не хватало размеров стека и кучи. Нашел Application Note от Silicon Labs с описание необходимых ресурсов для кодирования/декодирования, в конце статьи есть ссылка. Установил значения с небольшим запасом CSTACK 0x800 и HEAP 0x1600. На выходе кодирования получаем размер фрейма 20 байт. Собираем их в пакеты для отправки.

Модуль Esp8266 за раз может принять не более 2048 байт данных. Формат команды отправки: POST-заголовок + данные. Размер пакета данных я ограничил до 1800 байт (90 фреймов по 20мс).

Прием данных сделал на PHP. Мне было стыдновато выкладывать код, тем более это мой первый опыт ООП в жизни. Прошу не хейтить, это не моя область, лучше научите как правильно. Суть скрипта в том, чтобы забрать данные из php://input, сформировать заголовок, посчитать необходимые контрольные суммы и сохранить все в файл Ogg (либо дописать старый, либо создать новый). Но у меня есть жуткое предчуствие, что принимать аудио через POST запросы очень глупо…

Вопрос к сообществу: что посоветуете для серверной части? В перспективе хочется получать стрим аудио в реальном времени. У меня лично есть небольшое желание познакомиться с Node.js.

Принципиальная схема и разводка печатной платы

Схему и разводку нарисовал в бесплатной версии Eagle CAD, благо размер платы небольшой. Вот они. Без комментариев.

Заказ плат

Платы заказал в американском OSH Park . Чем примечателен данный сервис, так это тем, что цена формируется от размера платы ($5 за квадратный дюйм), а доставка бесплатная. Ко всему прочему на сайт можно грузить сам файл.brd из Орла и есть предпросмотр, не надо перегонять в Gerber.

Получилось 3 платы за $3.35. Для макетного образца это выгоднее, чем переплачивать китайцам $15 за ненужные 10шт. До сих пор дома валяются горы ненужных плат от других проектов. Да к тому же пришло все это в фирменном пакете с конфетками внутри. Мелочь, а приятно. Трек номера не было, дошло за 40 дней с момента заказа. В производстве были 10 дней (с 29 декабря по 9 января, возможно праздники как-то сказались на сроках).

Качеством плат я остался доволен. Дорожки 8 mil. Переходные 13 mil. Платы пришли с золочением, слой маски относительно площадок везде ровный.

Сборка и настройка

Пока не понял в чем дело, но модуль Esp-03 практически не ловит сигнал, что странно в условиях наличия керамической антенны и расстояния до телефона (который на работе выступает в качестве раздающего wi-fi) в пределах полуметра, при этом модуль ощутимо греется. При поднесении телефона вплотную начинает обнаруживать сеть и подключается к ней. Заказывать новый или в чем может быть дело?

Дальнейшие планы

1. Доработать алгоритм VAD (Voice Activity Detection, запись при обнаружении звука) до более адекватного.
2. Проверить возможность воспроизведения звука на телефоне.
3. Сделать возможность настройки удаленно. Сейчас это реализовано путем ответа сервера (Settings=40,2000,10,), где задается чувствительность нынешнего алгоритма VAD (сигнал должен 40 раз превысить 2000 бубок) и длительность записи в секундах.

Итоговый вариант

Калькуляция
$2.03 - модуль ESP-03
$2.13 - микроконтроллер STM32F103CBT6
$0.39 - микрофоны типоразмера 6050
$1.12 - микрофонный модуль с MAX9812 и обвязкой
$0.84 - преобразователь USB-RS485 (корпус + usb type A male)
$0.50 - стабилизатор NCP3335A на 3.3V

Итого: $7.01 (~420 руб) на один девайс.

Цены могут отличаться в связи с последними событиями на Ali. В стоимости не учтены программатор и рассыпуха.

Спасибо за внимание!

Вопросы и предложения пишите в комментарии. Также допускается контакт или телеграмм, ник везде один.

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

Работает устройство очень просто - всего лишь нужно поставить карту памяти в определенное место на адаптере, а сам адаптер выполнен в виде юсб штекера который только нужно подключить к юсб порту ПК. Для нашей самодельной флешки под рукой нужно иметь именно такой адаптер с картой памяти от мобильного телефона и еще один штекер или соответствующий пластмассовый корпус для юсб.

Затем адаптер помещаем в кожух штекера и закрываем крышку и смотрим что у нас получилось.

Теперь это похоже на обрезанный юсб штекер, но никто даже не заподозрит, что там есть накопитель памяти! Теперь пришла очередь схематики. Проводов там 4, заранее снимаем небольшую часть изоляцию от проводов и залуживаем их. Далее берем пару новеньких деталей (лучше взять испорченные, но чтобы с виду были как новые) и паем их друг к другу. Тут конкретной схемы нет, паяйте что куда хотите, конструкция просто должна выглядеть как схема, она конечно работать не будет! Использовать можно конденсаторы, резисторы, полярные и неполярные конденсаторы и пару транзисторов, как известно некоторые флешки имеет сзади встроенный светодиодный индикатор, можно получить имитатор такого индикатора, чтобы наша самодельная флешка выглядела правдоподобно и не вызывала сомнения.

Для этого к статье прикреплена распаковка юсб гнезда и штекера, по боковым каналам подается питание которое нужно подключить к нашим проводам, затем собрать простейшую схему мигалки для одного светодиода, в таком случае у нас остаются еще два свободных провода к которым можно прицепить заранее изготовленную <блеф> схему накопителя памяти. Итак, подведем итоги - у нас получился довольно интересная конструкция, при подключении к usb порту компьютера светодиод начнет мигать и у посторонних он вызовет ощущение, что подключена флешка, но они удивятся больше когда компьютер будет уведомлять, что к нему подключен накопитель памяти! Да уж все станут верить что вы гений и попросят схему такой простейшей чудо флешки. Старайтесь сделать схему подключения деталей как можно запутанной, чтобы даже мастер на заподозрил в чем тут обман. Ну вот и все, подобные интересные вещицы можете увидеть в дальнейших статьях, до свидания друзья - Артур Касьян (АКА).

Поделиться