Четверг, 02.05.2024, 08:42
| RSS
Главная | Радиомодуль - Страница 37 - Форум
Защита, контроль, управление
Форма входа
Логин:
Пароль:
[ Новые сообщения · Участники · Правила форума · Поиск · RSS · Чат

Наш канал в YouTube
]
Форум » ФОРУМ » Домашняя автоматизация на Raspberry Pi » Радиомодуль
Радиомодуль
AdminДата: Понедельник, 09.04.2018, 18:53 | Сообщение # 361
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Итак, закономерность отличия кодов проверил, как и говорил Александр, причина в записи старшим битом вперед. Сравним коды, записаные с одной и той же кнопки брелка:

АА АА 30 хх = 10101010 10101010 00110000 хх - мой код

xx 55 55 С0 = хх 01010101 01010101 11000000 - код Александра

Единственный момент, это байты хх. У меня этот байт идет последним и назывался "номером зоны" - по нему происходила дополнительная идентификация сработавшего датчика. В новой прошивке при считывании кода брелка он записался первым в последовательности и равен 0F. Похоже, здесь он вообще не используется?

И еще вопросы:
1. В какой ячейке расположен адрес контроллера? В последней (адрес 30)?
2. Для передатчика коды тоже нужно инвертировать?
3. EEPROM разбита на области для принимаемых и передаваемых кодов? Если да, то в каких пределах?
4. В прошивке применяется принцип формирования кодов "опорный код+N"

Александр, я понимаю, что ответы на все эти вопросы могу найти в исходнике, но лучше получить информацию из первоисточника  biggrin
 
AlexAWДата: Вторник, 10.04.2018, 05:23 | Сообщение # 362
Группа: Пользователи
Сообщений: 310
Статус: Offline
Что касается кода XX - четвертый байт, точнее младший полубайт радиомодуль использует для хранения кода частоты несущей см. таблицу пересчета кода в  период. Приемником этот код никак не используется, только при записи кода команды в память он записывается в младший полубайт четвертого байта. Далее он  используется для передатчика при передаче этой команды, он передается с той скоростью с которой он был когда то принят и записан с точностью 100 мкс. (это было сделано для "имитирования" всего зоопарка китайских радиоустройств в диапазоне периодов модуляции от 500 до 2000 мкс на бит) Старший полубайт четвертого байта в радиомодуле никак не используется, но через 485 сеть  в этот байт можно прописать все что нужно и использовать по своему усмотрению. Например можно определить 16 различных зон. в  которые можно включить любые из 31 записанных датчиков. Но  по моему если каждый датчик может иметь сой адрес, можно в системе обозначить более точно место и событие....
далее по пунктам
1 в последней ячейке EEPROM с адресом 7F
2 Код одинаковокак пишется так и читается (что увиде в режиме снифера то и прописал) или просто прописал в режиме программирования и все...
3 EEPROM разбита по 4 ячейки на один код, начиная с нулевого адреса. Коды при записи нумеруются от 1 до 31 включительно. Код 0 признак конца принятых кодов в буфере. Все записанные коды могут передаваться по команде модбас. притом можно с большой скоростью накидать в буфер передачи до 15 команд и они будут последовательно все передаваться пачками по 15 посылок каждая команда  потом разрыв и следующая пока все не передадутся.
4 опорный код  в прошивки не применяется. Мой алгоритм радиомодуля больше похож на "попугая" повторяет что научили помнить.
Ваще более подробно я прописал в файле редми и как всегда в табличках команд 485 протокола и таблице пересчета.


Сообщение отредактировал AlexAW - Вторник, 10.04.2018, 05:34
 
AdminДата: Вторник, 10.04.2018, 06:59 | Сообщение # 363
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Цитата AlexAW ()
3 EEPROM разбита по 4 ячейки на один код, начиная с нулевого адреса. Коды при записи нумеруются от 1 до 31 включительно. Код 0 признак конца принятых кодов в буфере. Все записанные коды могут передаваться по команде модбас. притом можно с большой скоростью накидать в буфер передачи до 15 команд и они будут последовательно все передаваться пачками по 15 посылок каждая команда  потом разрыв и следующая пока все не передадутся.

Т.е. весь массив сохраненных в памяти адресов (31 адрес) доступен как для чтения (принимаемые коды), так и для передачи (передаваемые коды)?

Заметил один нюанс - после принятого кода, как и положено, зажигается соответствующий светодиод. Через некоторое время (строго периода нет, может и 30 секунд, а может и полчаса) он выключается. Я так предполагаю, происходит сброс МК, возможно по WDT. К сожалению, при старте МК нет тестового мигания индикаторов, что бы точно понять, что пошла перезагрузка.
 


AlexAWДата: Вторник, 10.04.2018, 11:34 | Сообщение # 364
Группа: Пользователи
Сообщений: 310
Статус: Offline
Цитата
Т.е. весь массив сохраненных в памяти адресов (31 адрес) доступен
Да все что модулем запомнено им же может быть и передано, я таким образом записал в память команды пультов своих люстр и теперь через модбас могу люстрами управлять.
Цитата Admin ()
Заметил один нюанс
Радиомодуль отображает светодиодами номер последней принятой и известной ему команды. А если он принял команду но ее не нашел он соответственно не знает какой номер отобразить. (так что думаю, что радиомодуль где то соседа подслушал))))

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

 На фото скриншот приема команды и работы снифера.
В первом окне код принятой команды, во втором старший полубайт значение периода модуляции деленое на 8 в младшем первый байт кода команды, в третьем окне второй и третий байт кода команды.
Прикрепления: 8850329.png (78.4 Kb)


Сообщение отредактировал AlexAW - Вторник, 10.04.2018, 18:20
 
AdminДата: Вторник, 10.04.2018, 14:29 | Сообщение # 365
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Цитата AlexAW ()
Да все что модулем запомнено им же может быть и передано, я таким образом записал в память команды пультов своих люстр и теперь через модбас могу люстрами управлять.

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

Цитата AlexAW ()
Что касается кода XX - четвертый байт, точнее младший полубайт радиомодуль использует для хранения кода частоты несущей см. таблицу пересчета кода в  период.

А почему четвертый? У меня он пишется в первую порядковую ячейку - xx 55 55 С0
 
AlexAWДата: Вторник, 10.04.2018, 18:12 | Сообщение # 366
Группа: Пользователи
Сообщений: 310
Статус: Offline
Цитата Admin ()
А почему четвертый? У меня он пишется в первую порядковую ячейку - xx 55 55 С0
Да верно! первым идет байт с кодом частоты модуляции потом три байта кода команды. я уже начинаю забывать чего там нагородил. )))
Еще про старший полубайт - в него во время записи кода команды  через процедуру программирования записывается 0 потом можно в этот полубайт записать свое значение либо программатором, либо путем команд модбас -считывания и записи ячеек EEPROM. 
В файле README вроде про это тоже написано...
 
AdminДата: Среда, 11.04.2018, 07:32 | Сообщение # 367
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Цитата AlexAW ()
В файле README вроде про это тоже написано...

Александр, извини, проглядел я, что в архиве есть файл подсказки sad
 
AdminДата: Среда, 02.05.2018, 08:44 | Сообщение # 368
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
По возможности занимаюсь разработкой интерфейса для радиоконтроллера Александра. Получается, что в форме нужно разместить 31 кнопку управления и 31 контроль состояния (принятый код). Думаю, состояния выводить постоянно, а управление спрятать под спойлер. Также планируется добавить переключение сетевого адреса, что бы работать с разными радиомодулями с одной формы (аналогично как для релейного модуля)
Может, будут еще предложения?
 
AlexAWДата: Среда, 02.05.2018, 11:38 | Сообщение # 369
Группа: Пользователи
Сообщений: 310
Статус: Offline
Цитата Admin ()
Может, будут еще предложения?
А имеет ли смысл делать все 31 кнопки, и индикаторы. Ведь част кодов может быть использована только для приема например команд с датчиков, а часть кодов, только для передачи, (например управление радиореле) или перехвата люстры.
Может определить несколько кнопок несколько индикаторов и несколько кнопок с индикаторами, только с возможностью привязки определенного номера команды к соответствующей кнопке (индикатору) а за одно  можно было бы и действие прикрутить к получаемым командам, а передаваемые команды , как действие применить и на других страницах -
например температура достигла определенного уровня выбираем действие передать команду привязанную к радио кнопке 1
Или при получении радиосигнала с датчика протечки подать команду на включение реле ХХ,
Или при получении команды от датчика протечки о снижении питания послать СМС сообщение №1
ну итд итп


Сообщение отредактировал AlexAW - Среда, 02.05.2018, 11:39
 
AdminДата: Среда, 02.05.2018, 12:00 | Сообщение # 370
Admin
Группа: Администраторы
Сообщений: 4260
Статус: Offline
Цитата AlexAW ()
А имеет ли смысл делать все 31 кнопки, и индикаторы. Ведь част кодов может быть использована только для приема например команд с датчиков, а часть кодов, только для передачи, (например управление радиореле) или перехвата люстры.

Оно то все так, но возможно кому-то понадобится только передача (управление), а кому-то только контроль. Или большой "дисбаланс" этих функций - например, 5 на управление, 29 на контроль (или наоборот).

Цитата AlexAW ()
Может определить несколько кнопок несколько индикаторов и несколько кнопок с индикаторами, только с возможностью привязки определенного номера команды к соответствующей кнопке (индикатору) а за одно  можно было бы и действие прикрутить к получаемым командам, а передаваемые команды , как действие применить и на других страницах -
например температура достигла определенного уровня выбираем действие передать команду привязанную к радио кнопке 1
Или при получении радиосигнала с датчика протечки подать команду на включение реле ХХ,
Или при получении команды от датчика протечки о снижении питания послать СМС сообщение №1
ну итд итп

Так для этого кнопки и входы необязательно визуализировать в форме, можно это делать и "внутри" сценариев.
 
Форум » ФОРУМ » Домашняя автоматизация на Raspberry Pi » Радиомодуль
Поиск:



T2M © 2024
Сайт управляется системой uCoz