UART over audio jack 10т.р. (web audio API javascript )

Серж17

✩✩✩✩✩✩✩
4 Авг 2025
4
0
Передатчик: https://audioserial.sourceforge.io/serialdemo.html

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


--
Нужно чтоб так же работал на android версии браузера.
Изначально и так работает но есть особенности,например нельзя запустить (для теста приемо-перадачи между вкладками) одноверменно две вкладки на прием и предачу. Возможно я как-то криво баловался.
Проверить между двумя разными устройствами, смартфон-смартфон, комп-смартфон и т.д.
Максимально закоментировать, проект учебный.
Пример работы с фильтрами
https://labs.thygate.com/cw-psk-mod-demod/

связь: телега @radar76ghz


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

Но в цело меня не интересует реализация в железе.
Передатчик генерирует передачу байтов по UART, это просто звук моуляции с частотой 9600 например. Его можно услышать если воткнуть динамик на TX UART.
И надо чтобы на соседнем компе или на смартфоне приемник в браузере декодировал эту передачу, по аудиокабелю или просто на слух что издает передатчик на компе или смартфоне.
Можно даже все проверить на одном компе или смартфоне, просто подать на вход? выход аудио.
Еесли на смартфоне то через резистор 10к чтоб случайно не убить микрофонный вход.
Или вообще без проводов, браузер может слушать самого себя через микрофон :) и декодировать то что услышал.
И вообще это можно сделать таже без звука програмно передав "звук" в перемнную приемника на обработку но это уже другая история.
 

Вложения

Изменено:

Серж17

✩✩✩✩✩✩✩
4 Авг 2025
4
0
кстати, я нашел готовое решение.
Данный метод реализован в espruino
Скорость приема из-за больших расходов на обработку получилась небольшой, 9600. Но Для большинства задач хватит.
Через web IDE можно через аудио передавать и принимать

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

Серж17

✩✩✩✩✩✩✩
4 Авг 2025
4
0
Еще немного поработал за потенциального исполнителя и выковырал нужный файл из готового решения замеченного ранее (espruino)...
---
поэтому задача слегка измениласб ,можно сказать упростилась.

Ниже два файла, один передает кодированное аудио другой принимает и декодирует.

скрипт приема
https://github.com/espruino/Espruin...4dad1ae89b70fffb9893/core/serial_web_audio.js

Скрипт передачи: https://espruino.github.io/EspruinoOrion/serial_to_audio.js

Задача:
написать веб морду на которой несколько настроек касаемых этих криптов, типа скорости приема передачи, инвертирование или нет и т.д...

раздел страницы передатчика:
поле ввода данных на передачу - строковое.
Поле ввода на передачу в виде чисел разделенных пробелом
десятичных, двоичных шестнадцетиричных.
Кнопка загрузки внешнего файла.

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

4 поля принятых данных DEC HEX BIN ascii
у формы ascii, рядом радиокнопки koi win DOS unicode
для перекодировки.
Кнопка сохранения файла возле каждого поля.
у формы HEX две кнопки, одна сохраняет файл как двоичный, другая как HEX файл.
У всех остальных сохраняется как текст.

Для теста надо в винде в качестве устройства записи включить аудиомикшер ,чтобы браузер слышал сам себя. Иначе придется проверять с другого устройства.
Если у вас звук передается на монитор телек по HDMI, то выставить по умолчанию вывод звука hidifinition audio или что там у вас выводит на линейные выходы...
Для чувствительности стоит поиграться громкостью по выходу и входу.
Это осциллограф и одновременно тест входа, вдруг пригодлится для настройки
https://labs.thygate.com/online-2ch-oscilloscope-and-function-generator/
Если не запустится сразу,(не будет звука при снятии галочки mute audio) то надо открыть сраничку через предудущий раздел автора
(это какой-т баг...)

Еще один показометр микрофонного входа: https://webaudioapi.com/samples/microphone/

Вроде пока все.
 

Вложения

Изменено:

Серж17

✩✩✩✩✩✩✩
4 Авг 2025
4
0
Еще немоного посмотрел....
И оказалось что авторы не используют какой либо математический анализ спектра чтобы детектировать сигнал.
Они просто детектируют нижние значения аудио АЦП и фиксируют это как 0 ,верхние значение фиксируют как единицу.
Накладывая это на временное окно в 9600 бод , фактически происходит автовыборка и декодирование словаа и пакетов..
Торопитесь, цена может уменьшиться ;)
Я уже сделал всю математику за вас.
Остался примитивный HTML но я думаю тему уже можно продублировать на HTML форумах....

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