Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Двунаправленная передача данных через i2c


Двунаправленная передача данных через i2c

Сообщений 1 страница 30 из 33

1

Нашёл интересный проект: маленькие рации на радиомодулях.
Принцип работы кратко описан на странице проекта:
https://www.tindie.com/products/masihva … e-talkie-/
Всё сделано на Баскоме. Читаются данные с микрофона через АЦП, затем отправляются через радиомодуль. Вторым радиомодулем данные принимаются и через ШИМ преобразуются в звук.
Несмотря на то, что проект заявлен, как Open Source, никакой информации и, тем более, исходников найти не удалось.
Нет ли у кого наработок в данном направлении - по двустороннему обмену. Я был бы рад любой информации, вплоть просто до алгоритмов.

0

2

Да не суть, какой модуль - главное, что радиочастотный, и не суть, какой протокол - главное, что последовательный. И примеров параллельного двустороннего непрерывного обмена данными между двумя МК, связанными таким образом, нет.
Есть библиотека для NRF24L01, но с её применением через модуль можно либо асинхронно передавать данные, либо принимать, что совсем не то.
Пример: http://avrproject.ru/publ/kak_podkljuch … 1/2-1-0-92

Отредактировано beginer (2016-05-04 15:03:12)

0

3

Ну, раз никто не хочет помогать, то вот как я себе представляю работу подобной конструкции

1. В бесконечном цикле читаем микрофон через АЦП и сразу после прочтения передаём байт RF-модулю, снабдив его дополнительным контролем правильности, чтобы не ловить помехи и чужие данные.
2. Если от модуля приходит входящий байт, то срабатывает прерывание, получаем этот байт, проверяем на правильность и кидаем его в ЦАП или псевдо-ЦАП.

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

0

4

beginer написал(а):

Ну, раз никто не хочет помогать, то вот как я себе представляю работу подобной конструкции
            1. В бесконечном цикле читаем микрофон через АЦП и сразу после прочтения передаём байт RF-модулю, снабдив его дополнительным контролем правильности, чтобы не ловить помехи и чужие данные.2. Если от модуля приходит входящий байт, то срабатывает прерывание, получаем этот байт, проверяем на правильность и кидаем его в ЦАП или псевдо-ЦАП.
            Получается, вроде бы, очень просто. Вопрос в том, могут ли эти радиомодули работать одновременно в режиме и приёма и передачи или чередуя их со скоростью, достаточной для передачи голоса?

Какие бы прерывания в МК не использовались, для полноценного дуплексного режима придется использовать отдельные радиомодули.
А это потянет за собой и остальной "обвес".
Проще собрать в одном корпусе самостоятельные приемник и передатчик... ;)

0

5

Nord написал(а):

для полноценного дуплексного режима придется использовать отдельные радиомодули.

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

0

6

Пётр написал(а):

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

Ну дык а я не про это же ? ;)

0

7

Во время передачи модуль не может принимать пакеты, т.е. хоть там есть общий 32 байтный буфер, но работать он может только в синхронном режиме. Если передавать всё синхронно, то проблем нет.
Если передавать всегда только в одном направлении (А > В), то вообще проблем нет и всё надежно работает.
(как подмечено ранее) Если надо асинхронно всё молотить, то да, проще поставить один МК с двумя аппаратными "портами" (SPI) и ДВА модуля nrf24l01.
Но в любом случае, тут кроются проблемы (особенно при попытке построить "сеть"):

- как-то надо раздавать адресацию (это можно и в ручном, если не запутаться при большом количестве);
- потом это всё надо как-то коммутировать (и тоже не запутаться);
- ну и МК должен успевать всё "параллельно" молотить без задержек (возможно с общим внутренним буфером).

0

8

Думаю, в таком случае разумнее всего сделать так, как предложил Пётр - передача по нажатию кнопки. Кто возьмётся написать алгоритм работы? И нет ли у кого модели NRF24L01 для Протеуса?

0

9

beginer написал(а):

Думаю, в таком случае разумнее всего сделать так, как предложил Пётр - передача по нажатию кнопки.

Нескромный вопрос...
Если "разумное направление" уже определено ;) , то не проще ли собрать "из кубиков" банальную радиостанцию, которых уже имеется море ? ;)
Или тут гвоздем программы является использование МК ?

0

10

Радиомодуль + МК - самый дешёвый вариант.

0

11

beginer написал(а):

Радиомодуль + МК - самый дешёвый вариант.

Не, ну это - дело личное, конечно... ;)
Есть желание соорудить самому - я не отговариваю... ;)

Пара LPD р/ст у нас (в городе) стОит от 800р...
Неужели р/модуль и пляски вокруг него будут обоснованы ?
Будет ли эта связка обеспечивать те же условия связи ? ;)

0

12

70р за модуль NRF24L01, а пляски вокруг него - это вообще самое ценное :)

0

13

Какие там пляски?      Качаешь даташит на него и пишешь сам библиотеку.
70р. ?????                  За 70р. ты купишь фуфло на 10 метров максимум. Покупай за 270 с антенной, лупит метров на 500 запросто.
->> Кто возьмётся написать алгоритм работы? И нет ли у кого модели NRF24L01 для Протеуса?
Какой алгоритм? Зачем он тебе?
В NRF24 есть собственный адрес от 3 до пяти байт + до 32 байт данных + контролька + 127 каналов частотных. Иными словами у тебя есть вероятность принятия пакета 1/2^длина адреса*канал. Даже один БИТИК изменишь - пакет не примется. Там есть ещё виртуальные пайпы для группировки нескольких устройств в сетку или кластер. Тебе остаётся один вариант с кнопкой - нажал - пошла оцифровка и передача данных пакетами. Если кнопка отпущена - модуль становится на приём и контролирует бит буфера приёма. Как только данные появились в буфере - читаем их и преобразуем в аналог. ВСЁ!

Таперь главное - а зачем всё это? Купи рацейку в магазине и радуйся радиосвязи.

0

14

Спасибо за дельные советы. Ответы на вопросы: фуфло с антенной из печатной дорожки работает на 50 метров - достаточно. Зачем это всё нужно - для тренировки.

0

15

Нет, не достаточно. Если будет фото или видео отчёт - тогда будет достаточно.

0

16

Так давайте подробный алгоритм, я реализую его в коде, тогда и будет подробный фото и видео отчёт.

0

17

Алгоритм чего? Работы с радоимодулем или работы самой рации в целом или ещё что? Непонятно.
Я скажу только одно: NRF24 из Китая за 100-300 рублей ЭТО не NRF24 а копия, причём СОВСЕМ другая и разная!!!
Статьи на эту тему с подробными фотографиями можно найти в интернете запросто.
Это я к чему пишу - не все ФУНКЦИИ нативной микрухи РАБОТАЮТ на копии, примерно 95-99%. Вот на ЭТО стоит обратить внимание при написании кода.

0

18

Такой модуль нормальный? Если нет, то как должен выглядеть "правильный"? От него ведь не требуется полноты функций, нужно просто связать два МК по радиоканалу, как будто по трём проводам.
http://img.dxcdn.com/productimages/sku_149483_2.jpg
По поводу алгоритма - да, прошу помочь с составлением алгоритма работы "рации".

Отредактировано beginer (2016-05-11 13:24:38)

0

19

Такой модуль у меня в квартире одну стену не "пробивает" на максимальной мощности.
Модуль, что помощнее называется NRF24 + PA + LNA или как-то около этого. Заявленая мощность +20дБм или 100 мВт... но помоему это гон, хотя пофиг.
Эти модули реально лупят при ПРЯМОЙ видимости 500-1000 метров!

Алгоритм рацейки:
1 - приём. Ставим радоимодуль на приём и ждём пакеты данных. По приёму пакета переводим в аналог и выдаём на динамик.
2 - передача. Ждём нажатия кнопки передачи. Оцифровываем данные с микрофона и формируем пакеты. Сформированные пакеты поочерёдно передаём в радиомодуль для передачи.

Моё личное мнение:
Всё это как-то жибленько, ибо нужен буфер для хранения принимаемых и отдаваемых данных, а где его взять?
И принимаемые и передаваемые данные нужно сначала СОБРАТЬ или РАЗОБРАТЬ по 32 байта соответственно.
Передавать 8 bit wav format нецелесообразно, нужно хоть какое-нибудь кодирование, а у нас ни времени, ни памяти, ни ресурсов НЕТ!
ИМХО херня получится, так, для поиграться.

0

20

-NMi- написал(а):

Передавать 8 bit wav format нецелесообразно, нужно хоть какое-нибудь кодирование, а у нас ни времени, ни памяти, ни ресурсов НЕТ!
ИМХО херня получится, так, для поиграться.

Ну если норм АЦП/ЦАП наружу повесить, то будет очень даже, а если взять МК по шустрее и/или разогнать, то всё пучком получится (у меня локально, не по радио, обрабатывался поток более 48КГц, 16-бит.).
Проблема тут мне кажется в другом:

- сможет ли РМ быстро, надежно передавать данные (в районе хотя бы 32КБ/сек);
- как поведёт себя модуль в конфликтных ситуациях, сможет ли корректно отрабатывать полупакеты (типа пытался что-то отправить, а там в этот момент должны были прийти данные);
- система выходит односторонняя (мне кажется лучше заморочиться над обычным "телефоном" (ставить два модуля на рацию, чтобы крест на крест работали).

Вообще я в этом направлении тоже думал (для поиграться), но особой надобности в рации нет надобности, по этому так и не родилось.

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

У меня есть модули похожие как на картинке и с нормальной SMA антенной. Без антенны (только полоски на плате) у меня пробивали две кирпичные стены в квартире, была проблема заглушить сигнал (для одной идеи испытания проводил). :D

Вообще есть ещё такие штуки (тоже игрался, описание), у меня версия была на 433МГц. Этот модуль считается "COM по воздуху", полный дуплекс, обычный UART. Можно удаленно настраивать хар-ки второго (удаленного) модуля. Если пропускной способности хватает, то подойдет...
Единственное, что я не помню, надо ли как-то их адресно конфигурировать, вроде они сами парятся. И неизвестно, что будет, если в системе появится 3-й модуль. ;) Чтобы понять, надо его купить...вдруг они сеть образуют...

-1

21

Можно сделать и на 433 МГц модулях, если это будет проще.

0

22

- ты к нему DSP ещё подвесь, шоб налету кодировал-раскодировал)))
- сможет и до 2 мегабит/сек передавать.
- нет, не сможет. Один БИТ не такой - пакет игнорируется полностью!
- да, односторонняя. Чтобы поставить дуплексную систему понадобится антенный дуплексер, стоит он "екмало" )))
- рации и не получится хорошей, игрушка получится.
- пофиг то пофиг, РМ созданы для других целей.
- у меня есть всякие, наигрался я с ними уже давно.
- 433 СОМ по воздуху ФУЛЛДУПЛЕКС? Не бухти бухту, кури даташит глубже!
- удалённо настраивать х-ки? Можно то можно, только софт будет громоздкий и на атмеле это будет полный изврат! (делаю сч. маршрутизатор, для поиграццо...Фу, бяка!)
- конфигурировать НЕОБХОДИМО перед каждой транзакцией!!!
- 3-й модуль будет тоже "слушать" и "говорить", если адреса + канал + CRC совпадают.
- сеть там уже есть на АППАРАТНОМ уровне, её осталось только включить в регистре "возможности", они самые последние в списке регистров и их там 2 !!!

А впрочем колупайтесь, если делать нефиг!!! )))

-1

23

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

Отредактировано RDW (2016-05-12 12:21:30)

-1

24

ЭТО ИЗ ОПИСАНИЯ РМ по твоей-же ссылке!!!

Отличительные особенности:

низкая стоимость, отличная производительность, высокая надежность;
FSK-модуляция, 2-сторонний полудуплексный обмен данными, усиленная защита от помех;
свободные от лицензирования частотные ISM-диапазоны: 433 или 868 МГц;
максимальная выходная мощность передатчика: 100 мВт (20 дБм) с возможностью регулировки в переделах 1-20 дБм;

Какую туфту?
Хоть что нибудь опровергни!

И ещё: могу сказать на все 100% что у него НИЧЕГО не получится!!!

0

25

-NMi- написал(а):

Какую туфту?
Хоть что нибудь опровергни!

Окей:

-NMi- написал(а):

сможет и до 2 мегабит/сек передавать

На HM-TRP - не сможет, там UART макс 115200 (в идеале 11.520КБ/сек, для звука 8-бит норм, но 8-бит качество так се, надо как-то жать и протаскивать 16-бит).

half–duplex

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

-NMi- написал(а):

Чтобы поставить дуплексную систему понадобится антенный дуплексер, стоит он "екмало"

Это вообще не в тему.

-NMi- написал(а):

рации и не получится хорошей

Берём к примеру NRF24L01, пропускная способность до 2Мб/сек, т.к. система цифровая, то алгоритм от аналоговой рации изначально не подойдёт, т.е. просто может быть совершенно другой алгоритм работы (синхронный, независимо от наличия данных передачи (пинги).

-NMi- написал(а):

только софт будет громоздкий

Нет, там всё примитивно до безобразия (как ты сказал ранее):

-NMi- написал(а):

кури даташит глубже

:D

-NMi- написал(а):

атмеле это будет полный изврат

Ну это вообще к чему? С таким подходом: "зачем рождаться - всё равно умирать"! :D

-NMi- написал(а):

конфигурировать НЕОБХОДИМО перед каждой транзакцией

Опять отправляю тебя по твоим же словам:

-NMi- написал(а):

кури даташит глубже

:D

-NMi- написал(а):

А впрочем колупайтесь

Для того этот форум и существует, не говоря об увлечении радиоэлектроникой! :D

-NMi- написал(а):

И ещё: могу сказать на все 100% что у него НИЧЕГО не получится!!!

Есть такое опасение, если ничего не делать и ждать, что за тебя кто-то сделает.

-1

26

-NMi- написал(а):

И ещё: могу сказать на все 100% что у него НИЧЕГО не получится!!!

Отчего так категорично ? ;)
Вариант алгоритма:
...
- фраза оцифровывается и накапливается в памяти
- после отпускания кнопки РМ включается на передачу, передается сигнальный код и пакет "выплевывается"
...
- принятый пакет записывается в память
- из памяти раскодируется в звук

Издержки:
- гарантированная пауза при приеме-передаче
- вероятность "выпадания" сигнала
- необходимость использования высокоскоростных АЦП/ЦАП и процессора

Отсюда удорожание конструкции, которое можно оправдать только желанием самому создать что-то подобное... ;)

0

27

Nord написал(а):

фраза оцифровывается и накапливается в памяти

Ваще не вариант, память не резиновая.
Я думал можно сделать "проще":

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

Если весь цикл хотя бы будет работать с частотой не ниже 18-16КГц, то свистеть сильно не будет. Ещё надо подумать (возможно) о возбуждении микрофона...в противофазу его.

Отредактировано RDW (2016-05-12 15:37:37)

0

28

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

0

29

RDW написал(а):

фраза оцифровывается и накапливается в памяти
Ваще не вариант, память не резиновая.

Разумеется, что речь шла не про память МК... ;)
Ну, не указал в "Издержках" флешку...

А, вообще-то я упрощенно описал принцип пакетной радиосвязи, который используется уже много лет... ;)

Отредактировано Nord (2016-05-12 18:01:37)

0

30

Вот кусочек кода для NRF24.
Разберитесь, что и где работает, а где нет.

http://se.uploads.ru/t/GcKvz.jpg

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Двунаправленная передача данных через i2c