Pull to refresh

Comments 55

Не проще ли перейти в оптический диапазон? У телефона есть экран, нужен фотоприемник. Остаётся вопрос в скорости передачи... :)

конечно, прикидывали этот вариант - скорость никакая :) частота обновления экрана 60-100 Гц - по сравнению с десятками килогерц дискретизации звука - это несерьезно. 1-2 байта в секунду передавать можно. не помню уже в этой репе или где-то по соседству был тест этого варианта, но наверное и так всё понятно :)

Можно от последовательной передачи перейти к параллельной. Например 8 фотоприемников. Сложней конечно...

да, для каких-то узких кейсов можно на это заморочиться (я уверен что в Юном Технике видел когда-то статью с идеей управления светомузыкой подобным образом через монитор БК) - но возрастающая сложность решения делает вариант со звуком более приемлемым :)

У меня был лет пятнадцать назад генератор ключей к онлайн банкингу. Его надо было для синхронизации прикладывать к экрану монитора, запускать программу. На экране быстро рисовались белые и черные полосы в окошке. Через несколько секунд было готово. Но там да, там наверное несколько байт передавались, для синхронизации, может подпись какая то еще. Нынешние микроконтроллеры c четвертью мегабайта памяти придется долго таким способом программировать. :)

любопытная история :) касательно полос - я прикидывал и такую возможность как изображать программу штрих-кодом (видимо в несколько полос) и считывать её несколькими фотодатчиками... в идеале её тогда и на бумажке можно записывать - но в реализации и использовании выглядит жутко :)

Видел какие-то умные часы "досмартфонной" эпохи, которые синхронизировались так же. Причём, насколько помню, работало только с ЭЛТ монитором, так как его частота обновления использовалась в качестве несущей.

Про аудиовыход забыли. Припаиваем к аудиоштеккеру ИК-светодиод, втыкаем его в гнездо наушников (в том числе через адаптер TupeC) - получаем возможность модуляции его яркости с частотой до 14-20 кГц. Причем принимать такой сигнал гораздо проще, нежели звуковой...

Еще немного, и будет изобретен акустический модем (V.21 300 bod FSK) ;)

И пойдет развитие технологии - v34 (скорость), v42bis (сжатие передаваемых данных). С v90 не выйдет, к сожалению, там нужно прямое подключение.

Интересно, какой скорости можно достичь на звуке, не ограничиваясь телефонными частотами и с современными вычислительными мощностями?

да-да, всё по кругу :) ну и не зря - решая новые инженерные задачи порой стоит оглянуться назад

Интересно, какой скорости можно достичь на звуке, не ограничиваясь телефонными частотами

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

Пора пробудить древнее зло ;) Входная цепь АОН или Спектрума - 1 компаратор. Скорость получается пристойная, никак не байты в секунду.

А в чем проблема подключить к телефону через OTG что угодно, USB - uart например?

ходная цепь АОН или Спектрума - 1 компаратор. Скорость получается пристойная, никак не байты в секунду.

с той только разницей что всё же проводной канал а не микрофон :) но думаю что сравнимых скоростей "по воздуху" достигнем - в основном за счет того что возможности воспроизведения звука у нынешних телефонов довольно мощные (в смысле времени нарастания сигнала и т.п.)

А в чем проблема подключить к телефону через OTG что угодно

только в том что OTG не на всех телефонах

ну и скорее всего приложуху придётся писать, хотя какое-то веб-апи для работы с USB есть в браузерах. а приложухи писать - это доп.геморрой на Android/iPhone разделяться...

ну и скорее всего приложуху придётся писать

Их >1 ;) нужно подобрать ту что умеет передавать файлы.

ну да, а файл откуда возьмётся :) его надо скомпилировать

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

и при том что это решение пригодится только для тех у кого OTG в телефоне таки найдётся. для одного себя это можно решить - а если класс на 20 человек, то хочется большей универсальности :)

Использовать телефон для набирания и компилирования кода конечно же можно. Но зачем это превозмогание? Неудобно же. А если у кого-то телефон кнопочный?

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

Использовать телефон для набирания и компилирования кода конечно же можно.

да, не супер удобно, но...

у нас несколько уроков в годовом курсе по электронике посвящены контроллерам и микропроцессорным основам. затащить откуда-то 20 компов на 20 человек и на все их установить нужный софт... тоже муторно выходит

Учимся плавать, а если мы будем хорошо себя вести, нам воды нальют (ц)

Как то странно учиться плавать, если бассейна нет, и воду нужно свою приносить.

неясно что вы предлагаете - закрывать лавочку и ничего не делать?

устраивайте свои кружки или курсы - обменяемся опытом :) а так в комментах рассуждать как в идеале хорошо было бы жить в идеальном мире - это трата времени

устраивайте свои кружки или курсы

Сперва добейся (ц) ? ;)

неясно что вы предлагаете - закрывать лавочку и ничего не делать?

Чтобы учиться плавать - нужен бассейн. Хотя можно и на стадионе.

Чтобы учиться кататься на лыжах - нужен снег. Хотя можно и на асфальте.

sapiens sat.

у меня есть бассейн, и плавать в нём можно, и желающие плавать есть

а у вас всё развлечение - по комментам на хабре бурчать

ну, каждому своё :)

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

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

забавная штука, но тут речь не идёт о решении "для любых контроллеров" а подробностей вроде они не приводят :)

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

Обратите внимание на кодирование, которое в Спектруме
https://habr.com/ru/articles/510386/
Или в Радио-86РК - там манчестерское кодирование.
Ваш способ с широтно-импульсным кодированием для звука не очень.
И входной каскад противоречит законам природы - выходное сопротивление электретного микрофона большое, входное у транзистора маленькое.. Без смещения..

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

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

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

сигнал претерпевает изменения

Начните с конденсатора. Сравните, как через него пройдет ваш сигнал и как спектрумовский.

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

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

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

в любом случае спасибо - это ж круто, иметь возможность сказать что и у Маруси так сделано :)

Кажется ребята из Яндекса (или кто-то вдохновившийся идеей) даже тут на Хабре писали про то как организована загрузка параметров сети на Яндекс станциях с помощью звукового сигнала.

EDIT: нашел ссылку, надеюсь пригодится

https://habr.com/ru/articles/470293/

Не только в умных колонках. Практически все современные и не очень китайские камеры наблюдения имеют возможность настройки через звуковой канал (помимо оптического QR). Точно, что ещё попадались устройства с подобным видом коммуникации, но не могу вспомнить, что именно.

Напомню. В прошлом веке 8бит/8кГц канала хватало для передачи 56 кбод. Идея с бутлоадером изначально нежизнеспособна. Все равно нужно питание, микрофон, усилитель, етс.

Советую сделать программатор на ESP32, который будет работать с микрофоном, BT и WiFi по выбору. Внутри поместится как минимум v34, верю что АЦП 12 бит 2 МГц сможет оцифровать больше чем 3 кГц полосу. Но желателен обратный канал в каком-либо виде, хотя бы через светодиод и камеру мобилки, иначе будет тяжело с контролем ошибок.

программатор на ESP32

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

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

Не очень понятно почему вы считаете что необходимость питания (батарейка + регулятор) и микрофона делают систему "нежизнеспособной". ESP32 это не микроконтроллер а целая система SoC. Насчет 12 бит при 2 МГц вроде бы Вы ошибаетесь. АЦП там такого же класса что и в AVR-ках - и там и здесь его можно на 1 или 2 МГц запустить но с потерей точности.

Напомню. В прошлом веке 8бит/8кГц канала хватало для передачи 56 кбод. 

опять же напомню, это всё касалось проводной линии.

это всё касалось проводной линии.

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

Битпотоковое программирование не оно?! По идее та же самая работа с амплитудой сигнала.

Двухчастотный (FSK) демодулятор мог бы радикально решить Вашу проблему.

Вот простейшая реализация FSK на Verilog-е, можете его затолкать в Tang-Nano-1K и получить "over-the-air ISP". Замодулировать сигнал cо стороны мобилки проблем для Вас, как я понимаю, не составит.

Еще есть микросхема FSK демодулятора XR2211, но ей требуется +12V. Возможно есть что-то поновее.

Еще решение - однокристальный ИК приемник. Передавать можно модулированием "фонаря".

Да, с мобильной стороны проблем не составит, с мощью джаваскрипта нафантазировать можно что угодно :) просто хотелось со стороны контроллера минимальной "обвязкой" обойтись, почему сперва и пробовал вообще голый микрофон к АЦП привязать. А так получается в общем-то вынести загрузчик в отдельную плату :) можно но удорожает решение, особенно в случае программирования чипов вроде AVR или STM32 которые сами по себе значительно дешевле чем Tang-Nano-1K если я правильно понимаю :)

FSK же вообще я пробовал (ради "гладкости" волны) но скорость показалась не фонтан (на каждый бит несколько периодов частоты тратилось). Если с текущей реализацией в какие-то проблемы воткнусь, м.б. ещё поразмышляю над FSK, спасибо.

В esp8266 можно заливать код через wifi. Это 0 дополнительных денег, не благодарите;)

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

мы же говорим о прошивке потенциально любого контроллера. ESP8266 это не любой контроллер.

мы же говорим о прошивке потенциально любого контроллера.

Не мы а вы ;) (ц)

кэп подсказывает, что микроконтроллеров очень много. абсолютно универсального программатора не существует, да и не нужен он никому. так что вы все равно под любым вы понимаете какое то их подмножество. esp 8266 - тоже подмножество.

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

вы упорно не хотите понять о чем вообще речь

Понимаю, у самурая нет цели, есть только путь ;) . Ок ;)

но почему-то вам очень понравилось комментировать все подряд замечания в этой статье :)

Ну, все мы немного самураи ;)

А зачем Doom люди всюду запускать пытаются или San Andreas? А процессоры разгоняют так, что жидким азотом охлаждать приходится и целые лаборатории под это строить. Но а толку с этого?

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

Человек чего-то себе придумал и с этим теперь развлекается. Решил показать другим, поделится наработками. Он же не позиционирует себя как автора единого истинно правильного способа программировать МК. Просто нашел для себя интересную тему, добился определенных результатов и показал это публике. Ничего не предлагая и не навязывая .

Да есть OTG, есть разноплановые загрузчики по воздуху. Ну так и что :) Почему наличие этих средств должно остановить ТС в его исследованиях интересной ему темы?

Я тоже обратил внимание, что вы смотрите на задачи которые решает автор с какой-то практической точки зрения или коммерческого продукта.

Ну, мне показалось, что это для радио кружка решение. Там, по легенде, компьютеров не выдают, и для программирования микроконтроллеров есть только телефон. Возможно я перепутал с другим автором, почему нет ;)

Почему наличие этих средств должно остановить ТС в его исследованиях интересной ему темы?

Почему мои комментарии должны кого то останавливать? ;) Я достаточно политкорректно обращаю внимание на места, которые можно улучшить.

Кстати по поводу звука, может не совсем в тему, но может и в тему.

В 2013 году вышел фильм «Android» и бонусом к этому фильму шло приложение на OS Android. Тогда зрителям предлагали установить это приложение перед началом просмотра фильма.

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

Я тогда быстро понял, что приложуха синхронизируется с аудио дорожкой фильма.

После этого сам загорелся сделать нечто подобное, но для МК. Но моих познаний математики не хватило и энтузиазм со временем угас. Но фильм запомнился))

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

Ого! Несколько лет назад экспериментировал с такой передачей данных. Собрал адаптер UART, состоявший также из страницы с кодом на JS и простенькой схемы.

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

Среднего размера прошивка для ESP32 - 2-3 мегабайта. Как представил её заливку звуком - ужаснулся.

Несколько лет назад покупал бытовую IP камеру Ezviz. Там один из вариантов настройки (передача камере данных роутера) был звуковой. Приложение на телефоне забавно пиликало (нечто среднее между звуком программ спектрума и модемными трелями) и камера получала настройки. Позже этот способ убрали из прошивок камер. Сколько тогда ни пытался найти, как это называется и может кто-то повторил из самодельщиков - не нашёл...

Передача данных динамиком и прием микрофоном возможна и используется: друг рассказал, как сервис-служба его стиральной машинки(на табло появился непонятный код) попросила его поднести телефон к машинке(модель какая-то из популярных) и нажать сочетание кнопок на ней - машинка ответила писком, и инженер ответил, что это норма после покупки - всё нормально. Но этот вариант для того, чтобы бабушка смогла проделать также, и, видимо, там было передано всего несколько символов. Я бы попробовал два варианта: 1-й) передача пакетами (как в ИК пультах) ультразвука(до какой частоты способен излучать ТФ?) с приёмом на "стандартный" УЗ микрофон (40кГц) от Ардуино-модуля, и 2-й) если подключить к ТФ вместо наушника(джек или блютуз) светодиод(или лазер), а на вход МК подключить "стандартный" ардуиновский приёмник ИК-излучения(на 38кГц но бывают на 33,36, или 56кГц). Эти каналы будут почище от помех. Желаю успехов!

Sign up to leave a comment.

Articles