Нашёл интересный проект: маленькие рации на радиомодулях.
Принцип работы кратко описан на странице проекта:
https://www.tindie.com/products/masihva … e-talkie-/
Всё сделано на Баскоме. Читаются данные с микрофона через АЦП, затем отправляются через радиомодуль. Вторым радиомодулем данные принимаются и через ШИМ преобразуются в звук.
Несмотря на то, что проект заявлен, как Open Source, никакой информации и, тем более, исходников найти не удалось.
Нет ли у кого наработок в данном направлении - по двустороннему обмену. Я был бы рад любой информации, вплоть просто до алгоритмов.
Двунаправленная передача данных через i2c
Сообщений 1 страница 30 из 33
Поделиться12016-05-04 11:39:32
Поделиться22016-05-04 15:01:55
Да не суть, какой модуль - главное, что радиочастотный, и не суть, какой протокол - главное, что последовательный. И примеров параллельного двустороннего непрерывного обмена данными между двумя МК, связанными таким образом, нет.
Есть библиотека для NRF24L01, но с её применением через модуль можно либо асинхронно передавать данные, либо принимать, что совсем не то.
Пример: http://avrproject.ru/publ/kak_podkljuch … 1/2-1-0-92
Отредактировано beginer (2016-05-04 15:03:12)
Поделиться32016-05-04 22:43:03
Ну, раз никто не хочет помогать, то вот как я себе представляю работу подобной конструкции
1. В бесконечном цикле читаем микрофон через АЦП и сразу после прочтения передаём байт RF-модулю, снабдив его дополнительным контролем правильности, чтобы не ловить помехи и чужие данные.
2. Если от модуля приходит входящий байт, то срабатывает прерывание, получаем этот байт, проверяем на правильность и кидаем его в ЦАП или псевдо-ЦАП.
Получается, вроде бы, очень просто. Вопрос в том, могут ли эти радиомодули работать одновременно в режиме и приёма и передачи или чередуя их со скоростью, достаточной для передачи голоса?
Поделиться42016-05-05 11:45:13
Ну, раз никто не хочет помогать, то вот как я себе представляю работу подобной конструкции
1. В бесконечном цикле читаем микрофон через АЦП и сразу после прочтения передаём байт RF-модулю, снабдив его дополнительным контролем правильности, чтобы не ловить помехи и чужие данные.2. Если от модуля приходит входящий байт, то срабатывает прерывание, получаем этот байт, проверяем на правильность и кидаем его в ЦАП или псевдо-ЦАП.
Получается, вроде бы, очень просто. Вопрос в том, могут ли эти радиомодули работать одновременно в режиме и приёма и передачи или чередуя их со скоростью, достаточной для передачи голоса?
Какие бы прерывания в МК не использовались, для полноценного дуплексного режима придется использовать отдельные радиомодули.
А это потянет за собой и остальной "обвес".
Проще собрать в одном корпусе самостоятельные приемник и передатчик... 
Поделиться52016-05-05 12:16:56
для полноценного дуплексного режима придется использовать отдельные радиомодули.
Необязательно. Модули не могут одновременно работать на прием и на передачу и вероятнее всего не смогут очень быстро (несколько тысяч раз в секунду) переключаться с приема на передачу и обратно. Даже если это получится, будет большая потеря пакетов из-за не синхронного переключения приема/передачи.
Нужен другой подход.
Во первых, необходимо синхронизировать переключение приема/передачи. Модуль который сейчас передает, должен отправить специальный пакет, информирующий другой модуль что он переходит в режим приема, и тот другой может переключится в режим передачи.
Во вторых нужно буферизировать данные - отправлять / принимать не побайтово, а через буфер в памяти. Это позволит значительно снизить частоту переключения приема/передачи.
Поделиться62016-05-05 14:24:46
Модули не могут одновременно работать на прием и на передачу и вероятнее всего не смогут очень быстро (несколько тысяч раз в секунду) переключаться с приема на передачу и обратно.
Ну дык а я не про это же ? 
Поделиться72016-05-05 14:25:39
Во время передачи модуль не может принимать пакеты, т.е. хоть там есть общий 32 байтный буфер, но работать он может только в синхронном режиме. Если передавать всё синхронно, то проблем нет.
Если передавать всегда только в одном направлении (А > В), то вообще проблем нет и всё надежно работает.
(как подмечено ранее) Если надо асинхронно всё молотить, то да, проще поставить один МК с двумя аппаратными "портами" (SPI) и ДВА модуля nrf24l01.
Но в любом случае, тут кроются проблемы (особенно при попытке построить "сеть"):
- как-то надо раздавать адресацию (это можно и в ручном, если не запутаться при большом количестве);
- потом это всё надо как-то коммутировать (и тоже не запутаться);
- ну и МК должен успевать всё "параллельно" молотить без задержек (возможно с общим внутренним буфером).
Поделиться82016-05-05 19:02:43
Думаю, в таком случае разумнее всего сделать так, как предложил Пётр - передача по нажатию кнопки. Кто возьмётся написать алгоритм работы? И нет ли у кого модели NRF24L01 для Протеуса?
Поделиться92016-05-05 19:39:14
Думаю, в таком случае разумнее всего сделать так, как предложил Пётр - передача по нажатию кнопки.
Нескромный вопрос...
Если "разумное направление" уже определено
, то не проще ли собрать "из кубиков" банальную радиостанцию, которых уже имеется море ? 
Или тут гвоздем программы является использование МК ?
Поделиться102016-05-05 20:41:14
Радиомодуль + МК - самый дешёвый вариант.
Поделиться112016-05-05 21:41:27
Радиомодуль + МК - самый дешёвый вариант.
Не, ну это - дело личное, конечно... 
Есть желание соорудить самому - я не отговариваю... 
Пара LPD р/ст у нас (в городе) стОит от 800р...
Неужели р/модуль и пляски вокруг него будут обоснованы ?
Будет ли эта связка обеспечивать те же условия связи ? 
Поделиться122016-05-06 08:28:27
70р за модуль NRF24L01, а пляски вокруг него - это вообще самое ценное 
Поделиться132016-05-08 11:52:53
Какие там пляски? Качаешь даташит на него и пишешь сам библиотеку.
70р. ????? За 70р. ты купишь фуфло на 10 метров максимум. Покупай за 270 с антенной, лупит метров на 500 запросто.
->> Кто возьмётся написать алгоритм работы? И нет ли у кого модели NRF24L01 для Протеуса?
Какой алгоритм? Зачем он тебе?
В NRF24 есть собственный адрес от 3 до пяти байт + до 32 байт данных + контролька + 127 каналов частотных. Иными словами у тебя есть вероятность принятия пакета 1/2^длина адреса*канал. Даже один БИТИК изменишь - пакет не примется. Там есть ещё виртуальные пайпы для группировки нескольких устройств в сетку или кластер. Тебе остаётся один вариант с кнопкой - нажал - пошла оцифровка и передача данных пакетами. Если кнопка отпущена - модуль становится на приём и контролирует бит буфера приёма. Как только данные появились в буфере - читаем их и преобразуем в аналог. ВСЁ!
Таперь главное - а зачем всё это? Купи рацейку в магазине и радуйся радиосвязи.
Поделиться142016-05-09 20:37:09
Спасибо за дельные советы. Ответы на вопросы: фуфло с антенной из печатной дорожки работает на 50 метров - достаточно. Зачем это всё нужно - для тренировки.
Поделиться152016-05-10 08:41:20
Нет, не достаточно. Если будет фото или видео отчёт - тогда будет достаточно.
Поделиться162016-05-11 07:45:01
Так давайте подробный алгоритм, я реализую его в коде, тогда и будет подробный фото и видео отчёт.
Поделиться172016-05-11 11:57:37
Алгоритм чего? Работы с радоимодулем или работы самой рации в целом или ещё что? Непонятно.
Я скажу только одно: NRF24 из Китая за 100-300 рублей ЭТО не NRF24 а копия, причём СОВСЕМ другая и разная!!!
Статьи на эту тему с подробными фотографиями можно найти в интернете запросто.
Это я к чему пишу - не все ФУНКЦИИ нативной микрухи РАБОТАЮТ на копии, примерно 95-99%. Вот на ЭТО стоит обратить внимание при написании кода.
Поделиться182016-05-11 13:23:54
Такой модуль нормальный? Если нет, то как должен выглядеть "правильный"? От него ведь не требуется полноты функций, нужно просто связать два МК по радиоканалу, как будто по трём проводам.
По поводу алгоритма - да, прошу помочь с составлением алгоритма работы "рации".
Отредактировано beginer (2016-05-11 13:24:38)
Поделиться192016-05-11 14:26:01
Такой модуль у меня в квартире одну стену не "пробивает" на максимальной мощности.
Модуль, что помощнее называется NRF24 + PA + LNA или как-то около этого. Заявленая мощность +20дБм или 100 мВт... но помоему это гон, хотя пофиг.
Эти модули реально лупят при ПРЯМОЙ видимости 500-1000 метров!
Алгоритм рацейки:
1 - приём. Ставим радоимодуль на приём и ждём пакеты данных. По приёму пакета переводим в аналог и выдаём на динамик.
2 - передача. Ждём нажатия кнопки передачи. Оцифровываем данные с микрофона и формируем пакеты. Сформированные пакеты поочерёдно передаём в радиомодуль для передачи.
Моё личное мнение:
Всё это как-то жибленько, ибо нужен буфер для хранения принимаемых и отдаваемых данных, а где его взять?
И принимаемые и передаваемые данные нужно сначала СОБРАТЬ или РАЗОБРАТЬ по 32 байта соответственно.
Передавать 8 bit wav format нецелесообразно, нужно хоть какое-нибудь кодирование, а у нас ни времени, ни памяти, ни ресурсов НЕТ!
ИМХО херня получится, так, для поиграться.
Поделиться202016-05-11 15:33:27
Передавать 8 bit wav format нецелесообразно, нужно хоть какое-нибудь кодирование, а у нас ни времени, ни памяти, ни ресурсов НЕТ!
ИМХО херня получится, так, для поиграться.
Ну если норм АЦП/ЦАП наружу повесить, то будет очень даже, а если взять МК по шустрее и/или разогнать, то всё пучком получится (у меня локально, не по радио, обрабатывался поток более 48КГц, 16-бит.).
Проблема тут мне кажется в другом:
- сможет ли РМ быстро, надежно передавать данные (в районе хотя бы 32КБ/сек);
- как поведёт себя модуль в конфликтных ситуациях, сможет ли корректно отрабатывать полупакеты (типа пытался что-то отправить, а там в этот момент должны были прийти данные);
- система выходит односторонняя (мне кажется лучше заморочиться над обычным "телефоном" (ставить два модуля на рацию, чтобы крест на крест работали).
Вообще я в этом направлении тоже думал (для поиграться), но особой надобности в рации нет надобности, по этому так и не родилось.
На счет РМ (Радио Модулей), если брать сразу пару, то пофиг какие они там (подделка или нет), главное чтобы суметь разобраться с протоколом обмена.
У меня есть модули похожие как на картинке и с нормальной SMA антенной. Без антенны (только полоски на плате) у меня пробивали две кирпичные стены в квартире, была проблема заглушить сигнал (для одной идеи испытания проводил). 
Вообще есть ещё такие штуки (тоже игрался, описание), у меня версия была на 433МГц. Этот модуль считается "COM по воздуху", полный дуплекс, обычный UART. Можно удаленно настраивать хар-ки второго (удаленного) модуля. Если пропускной способности хватает, то подойдет...
Единственное, что я не помню, надо ли как-то их адресно конфигурировать, вроде они сами парятся. И неизвестно, что будет, если в системе появится 3-й модуль.
Чтобы понять, надо его купить...вдруг они сеть образуют...
Поделиться212016-05-11 20:05:35
Можно сделать и на 433 МГц модулях, если это будет проще.
Поделиться222016-05-12 07:46:24
- ты к нему DSP ещё подвесь, шоб налету кодировал-раскодировал)))
- сможет и до 2 мегабит/сек передавать.
- нет, не сможет. Один БИТ не такой - пакет игнорируется полностью!
- да, односторонняя. Чтобы поставить дуплексную систему понадобится антенный дуплексер, стоит он "екмало" )))
- рации и не получится хорошей, игрушка получится.
- пофиг то пофиг, РМ созданы для других целей.
- у меня есть всякие, наигрался я с ними уже давно.
- 433 СОМ по воздуху ФУЛЛДУПЛЕКС? Не бухти бухту, кури даташит глубже!
- удалённо настраивать х-ки? Можно то можно, только софт будет громоздкий и на атмеле это будет полный изврат! (делаю сч. маршрутизатор, для поиграццо...Фу, бяка!)
- конфигурировать НЕОБХОДИМО перед каждой транзакцией!!!
- 3-й модуль будет тоже "слушать" и "говорить", если адреса + канал + CRC совпадают.
- сеть там уже есть на АППАРАТНОМ уровне, её осталось только включить в регистре "возможности", они самые последние в списке регистров и их там 2 !!!
А впрочем колупайтесь, если делать нефиг!!! )))
Поделиться232016-05-12 11:00:27
-NMi-, чо ты там куришь, такую туфту пишешь. Всё там корректно работает, у тебя видать была первая ревизия корявая, по остальному даже комментить нет смысла.
Если человек хочет что-то делать - пусть делает, экспериментирует.
Отредактировано RDW (2016-05-12 12:21:30)
Поделиться242016-05-12 13:38:41
ЭТО ИЗ ОПИСАНИЯ РМ по твоей-же ссылке!!!
Отличительные особенности:
низкая стоимость, отличная производительность, высокая надежность;
FSK-модуляция, 2-сторонний полудуплексный обмен данными, усиленная защита от помех;
свободные от лицензирования частотные ISM-диапазоны: 433 или 868 МГц;
максимальная выходная мощность передатчика: 100 мВт (20 дБм) с возможностью регулировки в переделах 1-20 дБм;
Какую туфту?
Хоть что нибудь опровергни!
И ещё: могу сказать на все 100% что у него НИЧЕГО не получится!!!
Поделиться252016-05-12 15:04:30
Какую туфту?
Хоть что нибудь опровергни!
Окей:
сможет и до 2 мегабит/сек передавать
На HM-TRP - не сможет, там UART макс 115200 (в идеале 11.520КБ/сек, для звука 8-бит норм, но 8-бит качество так се, надо как-то жать и протаскивать 16-бит).
half–duplex
Ну с этим я соглашусь, только синхронная передача.
Вообще HM-TRP используют для телеметрии, т.к. в одной сборке реализован конечный продукт (сам всё делает), управление/геморроя минимум и передача вроде как надежная (сам не проверял, из форумов, народ доволен).
Чтобы поставить дуплексную систему понадобится антенный дуплексер, стоит он "екмало"
Это вообще не в тему.
рации и не получится хорошей
Берём к примеру NRF24L01, пропускная способность до 2Мб/сек, т.к. система цифровая, то алгоритм от аналоговой рации изначально не подойдёт, т.е. просто может быть совершенно другой алгоритм работы (синхронный, независимо от наличия данных передачи (пинги).
только софт будет громоздкий
Нет, там всё примитивно до безобразия (как ты сказал ранее):
кури даташит глубже

атмеле это будет полный изврат
Ну это вообще к чему? С таким подходом: "зачем рождаться - всё равно умирать"! 
конфигурировать НЕОБХОДИМО перед каждой транзакцией
Опять отправляю тебя по твоим же словам:
кури даташит глубже

А впрочем колупайтесь
Для того этот форум и существует, не говоря об увлечении радиоэлектроникой! 
И ещё: могу сказать на все 100% что у него НИЧЕГО не получится!!!
Есть такое опасение, если ничего не делать и ждать, что за тебя кто-то сделает.
Поделиться262016-05-12 15:16:09
И ещё: могу сказать на все 100% что у него НИЧЕГО не получится!!!
Отчего так категорично ? 
Вариант алгоритма:
...
- фраза оцифровывается и накапливается в памяти
- после отпускания кнопки РМ включается на передачу, передается сигнальный код и пакет "выплевывается"
...
- принятый пакет записывается в память
- из памяти раскодируется в звук
Издержки:
- гарантированная пауза при приеме-передаче
- вероятность "выпадания" сигнала
- необходимость использования высокоскоростных АЦП/ЦАП и процессора
Отсюда удорожание конструкции, которое можно оправдать только желанием самому создать что-то подобное... 
Поделиться272016-05-12 15:35:20
фраза оцифровывается и накапливается в памяти
Ваще не вариант, память не резиновая.
Я думал можно сделать "проще":
- одна рация "ведомая" (клиент);
- вторая "ведущая"(сервер);
- "ведущая" каждый раз пингует клиента на придмет данных, даже всегда принимает данные;
- когда данные не принимаются сервером, то сама отправляет клиенту;
- так всё гоняется по кругу (обмениваются);
- а вот вывод звука (нажатие), кнопки, можно сделать командой (когда включать оповещение) или вообще забить на кнопки и сделать для начала синхронный обмен (посмотреть как работать будет (шипеть).
Если весь цикл хотя бы будет работать с частотой не ниже 18-16КГц, то свистеть сильно не будет. Ещё надо подумать (возможно) о возбуждении микрофона...в противофазу его.
Отредактировано RDW (2016-05-12 15:37:37)
Поделиться282016-05-12 15:42:58
Думаю если сильно извращнуться, то можно попробовать всё это сделать на тиньке85, разогнав её...
Поделиться292016-05-12 18:00:39
фраза оцифровывается и накапливается в памяти
Ваще не вариант, память не резиновая.
Разумеется, что речь шла не про память МК... 
Ну, не указал в "Издержках" флешку...
А, вообще-то я упрощенно описал принцип пакетной радиосвязи, который используется уже много лет... 
Отредактировано Nord (2016-05-12 18:01:37)
