Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить

Re: Модуль отображения информации МИРТ-830 из ардуины

Сб июл 24, 2021 23:36:20

...можно дебажить в реальном времени...

Ну вот собственно что получилось. В архиве схема, асм, и готовый hex.
Прошивка проверена на версии железа v1.
У версии 2 имеются 7 кнопок + немного изменена схема включения LCD.
В асме, (как и в hex) установлен номер счётчика 00000.
Прошивать нужно Flash+EEP.
При первом запуске нужно установить необходимый номер (см. инструкцию).
Марку LCD указал, но данные на них нигде не нашёл, видимо заказные...
Асм не стал разбирать подробно, думаю, если будет интерес - можно создать
отдельную тему, а там и более грамотные товарищи подтянутся.
Всем удачи :beer:
Вложения
Mirtek_830_V1.rar
(60.16 KiB) Скачиваний: 362

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт авг 17, 2021 13:06:06

_borisovich_ писал(а):Особая благодарность Сергею Безрукову ( Ser60 ).

Попробовал конфиги из архива, что-то не взлетело(
Использую библиотеку RadioHead и пример из этого ролика
https://www.youtube.com/watch?v=9K3yOZMGOaA

Загоняю параметры в трансивер, регистры записываются и читаются правильно, но никакой информации получить не удаётся
Делаю запрос с родного пульта от счётчика, ни его ни ответа от счётчика трансивер не получает.

Показатели в статус-регистрах
AGCTEST |0x002B|0x3F|AGC Test (Иногда меняется при отправке команды с пульта)
FREQEST |0x0032|0x00|Frequency Offset Estimate from Demodulator
RSSI |0x0034|0x00|Received Signal Strength Indication
PKTSTATUS |0x0038|0x00|Current GDOx Status and Packet Status
меняются и реагируют на окружающую обстановку, то есть трансивер вроде как живой

pinout
1 VCC - VCC
2 GDO0 - к D2 arduino (transiver output)
3 CSN - 10 SS
4 SCK - 13 SCK
5 MOSI - 11 MOSI
6 MISO - 12 MISO
7 GD02 - 9 (information output) - не использую
8 GND - GND

Подскажите, куда копать?

Спойлер
Код:
#include <SPI.h>
#include <RH_CC110.h>

// Singleton instance of the radio driver
RH_CC110 cc110;


void apply_mirtek_cc() {
cc110.spiWrite(0x00, 0x0D); //GDO2 Output Pin Configuration
cc110.spiWrite(0x01, 0x2E); //GDO1 Output Pin Configuration
cc110.spiWrite(0x02, 0x06); //GDO0 Output Pin Configuration
cc110.spiWrite(0x03, 0x4F); //RX FIFO and TX FIFO Thresholds
cc110.spiWrite(0x04, 0xD3); //Sync Word, High Byte
cc110.spiWrite(0x05, 0x91); //Sync Word, Low Byte
cc110.spiWrite(0x06, 0x3C); //Packet Length
cc110.spiWrite(0x07, 0x00); //Packet Automation Control
cc110.spiWrite(0x08, 0x41); //Packet Automation Control
cc110.spiWrite(0x09, 0x00); //Device Address
cc110.spiWrite(0x0A, 0x16); //Channel Number
cc110.spiWrite(0x0B, 0x0F); //Frequency Synthesizer Control
cc110.spiWrite(0x0C, 0x00); //Frequency Synthesizer Control
cc110.spiWrite(0x0D, 0x10); //Frequency Control Word, High Byte
cc110.spiWrite(0x0E, 0x8B); //Frequency Control Word, Middle Byte
cc110.spiWrite(0x0F, 0x54); //Frequency Control Word, Low Byte
cc110.spiWrite(0x10, 0xD9); //Modem Configuration
cc110.spiWrite(0x11, 0x83); //Modem Configuration
cc110.spiWrite(0x12, 0x13); //Modem Configuration
cc110.spiWrite(0x13, 0xD2); //Modem Configuration
cc110.spiWrite(0x14, 0xAA); //Modem Configuration
cc110.spiWrite(0x15, 0x31); //Modem Deviation Setting
cc110.spiWrite(0x16, 0x07); //Main Radio Control State Machine Configuration
cc110.spiWrite(0x17, 0x0C); //Main Radio Control State Machine Configuration
cc110.spiWrite(0x18, 0x08); //Main Radio Control State Machine Configuration
cc110.spiWrite(0x19, 0x16); //Frequency Offset Compensation Configuration
cc110.spiWrite(0x1A, 0x6C); //Bit Synchronization Configuration
cc110.spiWrite(0x1B, 0x03); //AGC Control
cc110.spiWrite(0x1C, 0x40); //AGC Control
cc110.spiWrite(0x1D, 0x91); //AGC Control
cc110.spiWrite(0x1E, 0x87); //High Byte Event0 Timeout
cc110.spiWrite(0x1F, 0x6B); //Low Byte Event0 Timeout
cc110.spiWrite(0x20, 0xF8); //Wake On Radio Control
cc110.spiWrite(0x21, 0x56); //Front End RX Configuration
cc110.spiWrite(0x22, 0x10); //Front End TX Configuration
cc110.spiWrite(0x23, 0xE9); //Frequency Synthesizer Calibration
cc110.spiWrite(0x24, 0x2A); //Frequency Synthesizer Calibration
cc110.spiWrite(0x25, 0x00); //Frequency Synthesizer Calibration
cc110.spiWrite(0x26, 0x1F); //Frequency Synthesizer Calibration
cc110.spiWrite(0x27, 0x41); //RC Oscillator Configuration
cc110.spiWrite(0x28, 0x00); //RC Oscillator Configuration
cc110.spiWrite(0x29, 0x59); //Frequency Synthesizer Calibration Control
cc110.spiWrite(0x2A, 0x59); //Production Test
cc110.spiWrite(0x2B, 0x3F); //AGC Test
cc110.spiWrite(0x2C, 0x81); //Various Test Settings
cc110.spiWrite(0x2D, 0x35); //Various Test Settings
cc110.spiWrite(0x2E, 0x0B); //Various Test Settings

}

void setup()
{
  Serial.begin(9600);
  while (!Serial)

  cc110.setIs27MHz(false); // Anaren 430BOOST-CC110L Air BoosterPack test boards have 27MHz
  if (!cc110.init())
    Serial.println("init failed");
  cc110.setTxPower(RH_CC110::TransmitPowerM10dBm);
  cc110.setModemConfig(RH_CC110::GFSK_Rb10Fd19);
  cc110.setFrequency(433.868652);
  apply_mirtek_cc();
  //cc110.printRegisters();
  //cc110.setModeRx();
  Serial.println("init ok");
  pinMode(9,INPUT); //GDO0 - неиспользуемый
}

void loop()
{
  if (cc110.available())
  {
    // Should be a message for us now   
    Serial.println("INCOMMING MESSAGE");
    uint8_t buf[RH_CC110_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    if (cc110.recv(buf, &len))
    {
      RH_CC110::printBuffer("request: ", buf, len);
      Serial.print("got request: ");
      Serial.println((char*)buf);
      Serial.print("RSSI: ");
      Serial.println(cc110.lastRssi(), DEC);
     
      // Send a reply
      uint8_t data[] = "And hello back to you";
      //cc110.send(data, sizeof(data));
      //cc110.waitPacketSent();
      //Serial.println("Sent a reply");
    }
    else
    {
      Serial.println("recv failed");
    }
  }
}



UPD: Методом случайного тыка определил, что при замыкании GDO0 на землю VCC, вызывая тем самым прерывание, в терминал выплёвываются чередуясь данные сообщения:
Спойлер
Код:
INCOMMING MESSAGE
request:
9C 17 BA 7A 5B 6C AA 84 95 64 A4 45 60 C9 E4 F3
80 D 9D 47 CC 99 FF 82 3F A4 7E 26 92 5A D6 D8
CE DE A8 FB F7 C5 D7 A E9 28 79 F1 2 FE 40 BF
40 F9 20 F3 CE 89 EF 6C FE A 54
RSSI: -101

INCOMMING MESSAGE
request:
17 BA 7A 5B 6C AA 84 95 64 A4 45 60 C9 E4 F3 80
D 9D 47 CC 99 FF 82 3F A4 7E 26 92 5A D6 D8 CE
DE A8 FB F7 C5 D7 A E9 28 79 F1 2 FE 40 BF 40
F9 20 F3 CE 89 EF 6C FE A 54 54
RSSI: -97

Не могу понять, мусор ли эти сообщения, или не срабатывают вовремя прерывания на GDO0 из-за неправильного регистра, хз

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт авг 31, 2021 16:46:30

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

У меня аналогичные показания. И на 12 и на 32 миртеке.
Команды запроса у них одинаковые, сравнивал с запросами через опто порт.
В результате прикупил на барахолке 2 пульта первой версии (4 кнопки) за 1500р.
Бонусом - прошивка не залочена. PIC16LF1947 можно дебажить в реальном времени.
Жаль марку LCD нигде не нашёл, нет надписей на нём. Схему разрисовал. :)


Вы не пробовали считать прошивку с самого счетчика?

Re: Модуль отображения информации МИРТ-830 из ардуины

Чт сен 02, 2021 12:00:25

polkomn писал(а):Вы не пробовали считать прошивку с самого счетчика?

А смысл, выше же Dismas выложил и HEX и читабельный ASM-код

По хорошему, я мог бы просто к нему добить функции общения по uart вместо дисплея, но мои познания в ASM не настолько обширны)

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт сен 03, 2021 12:22:13

...Вы не пробовали считать прошивку с самого счетчика?

PIC залочен, поэтому читаются одни нули. :(
По хорошему, я мог бы просто к нему добить функции общения по uart вместо дисплея...

Можно на основе асм_овских функций, сделать С_ишные, это кому как удобно.
Схема заводского модема имеется, а вот прошивки к нему нет :cry:

Re: Модуль отображения информации МИРТ-830 из ардуины

Сб сен 04, 2021 16:55:00

PIC залочен, поэтому читаются одни нули. :(

А у Вас случайно нет возможности посмотреть какие параметры PIC отправляет в CC1101?

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

Re: Модуль отображения информации МИРТ-830 из ардуины

Вс сен 05, 2021 09:49:46

А у Вас случайно нет возможности посмотреть какие параметры PIC отправляет в CC1101?

Чуть позже посмотрю.
Если разговор про ардуину, у меня и отправляет и принимает данные, а в мониторе - нули :(

Re: Модуль отображения информации МИРТ-830 из ардуины

Ср сен 22, 2021 17:06:28

Дошли руки помониторить протокол обмена SPI между PIC16 и CC1101.
В каком виде лучше выложить ? Можно в файле анализатора LA1010 и ссылку на софт.
Тогда желающие смогут (скачав и установив программу для анализатора) более детально
рассмотреть кто кому и что шлёт :)
Софт
Спойлерhttps://disk.yandex.ru/d/nych7LjCo3tPhA


В прикреплённом архиве установки и собственно сами данные - настройка после вкл. питания и обмен.
Вложения
MIRTEK12_SPI.7z
(979.81 KiB) Скачиваний: 267

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт сен 24, 2021 21:49:00

А это обмен по SPI между ардуинкой и СС1101.
Вложения
MIRT12_ARDUINO.7z
(9.58 KiB) Скачиваний: 249

Re: Модуль отображения информации МИРТ-830 из ардуины

Вс сен 26, 2021 17:30:05

...между ардуинкой и СС1101.

Для лучшего понимания вырезал из протокола:
Спойлер00 0D 01 2E 02 06 03 4F 04 D3 05 91 06 3C 07 00
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F

08 41 09 00 0A 16 0B 0F 0C 00 0D 10 0E 8B 0F 54
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F

10 D9 11 83 12 13 13 D2 14 AA 15 31 16 07 17 0C
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F

18 08 19 16 1A 6C 1B 03 1C 40 1D 91 1E 87 1F 6B
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F

20 F8 21 56 22 10 23 E9 24 2A 25 00 26 1F 27 41
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F

28 00 29 59 2A 59 2B 3F 2C 81 2D 35 2E 0B
0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F

После подачи команды в СС1101 0х30 (RESET) и получения ответа 0х1F,
засылаем в регистры конфигурацию.
Верхний ряд - адрес регистра и собственно байт в регистр засылаемый.
Нижний ряд - ответ от СС1101.

Re: Модуль отображения информации МИРТ-830 из ардуины

Пт окт 15, 2021 06:31:13

Всем привет, а можно простым языком объяснить, как подключить cc1101 к esp и выводить показания через mqtt? Зачем кнопки, дисплеи и прочее?

Re: Модуль отображения информации МИРТ-830 из ардуины

Вс окт 17, 2021 17:04:24

...Зачем кнопки, дисплеи и прочее?

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

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт ноя 30, 2021 17:06:21

Что то не получилось прилепить...

Немного не правильно записал ответ на последний запрос ардуины:
Изображение

Добрый день! Скажите, получилось продвинуться в исследовании протокола? Оч хочется получить возможность снимать показания со счётчика...

Re: Модуль отображения информации МИРТ-830 из ардуины

Вс дек 05, 2021 00:13:57

Скажите, получилось продвинуться в исследовании протокола?
Оч хочется получить возможность снимать показания со счётчика...

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

Re: Модуль отображения информации МИРТ-830 из ардуины

Вс дек 05, 2021 14:19:11

Скажите, получилось продвинуться в исследовании протокола?
Оч хочется получить возможность снимать показания со счётчика...

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

А можете поподробнее про модем: где почитать? Я правильно понимаю, что модем тоже работает по радиоканалу, и имеет некий API, с помощью которого можно общаться с счётчиком?

Re: Модуль отображения информации МИРТ-830 из ардуины

Вс дек 05, 2021 22:57:24

...где почитать?...

На сайте производителя, да и на других ресурсах.
Поищите МИРТ-141. Только цена на него больно кусачая.

Re: Модуль отображения информации МИРТ-830 из ардуины

Пн дек 06, 2021 09:16:30

...где почитать?...

На сайте производителя, да и на других ресурсах.
Поищите МИРТ-141. Только цена на него больно кусачая.

Спасибо! Да уж, ценник совсем не демократичный... не готов столько тратить. Что ж, буду пытаться продолжить ваш труд самостоятельно...

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт дек 07, 2021 03:28:42

Спасибо! Да уж, ценник совсем не демократичный... не готов столько тратить. Что ж, буду пытаться продолжить ваш труд самостоятельно...

Доброго времени! Тоже уже несколько дней в фоновом режиме ковыряю идой прошивки из топика.
Для оригинальной соорудил на коленках из схемы Dismas простенький симулятор lcd на svg+html+js, ест набор инструкций с bsf/bcf типа `bsf lcddata2, 6`(можно с адресами в начале, слушает paste на страницу, чтобы напрямую из дизасма вставлять)
Пара пинов похоже была с опечатками, поправил по логике прошивки, вроде выдает адекватные результаты
Вложения
mirt_lcd_simulator.html.zip
js-симулятор lcd
(13.93 KiB) Скачиваний: 223

Re: Модуль отображения информации МИРТ-830 из ардуины

Вт дек 07, 2021 21:15:38

...Скажите, получилось продвинуться в исследовании протокола?...

Так, совсем немного.
Код:
Первый запрос от пульта к счётчику:
73 55 20 00 7C 64 FE FF 01 00 00 00 00 CE 55
73 - преамбула
55 - начало пакета
20 - циклический адрес (ну или как там по умному)
     в зависимости от длинны пакета, по нему считается
     контрольная сумма
7C 64 - сетевой адрес в hex (мл. байт старший байт)
FE FF - канал связи (от оптопорта другие значения)
01 - открыть канал связи
00 00 00 00 - пароль (по умолчанию - 0)
CE - контрольная сумма
55 - конец пакета
Эти данные появляются в RAM процессора при формировании запроса к счётчику.
Затем загружаются в СС1101 по SPI  и передаются в эфир.

Ответ так же начинается с
Код:
73 55 04 00 FE FF 7C 64 01 A8 05 5B 00 09 05 7C 64 A7 55
73 - преамбула
55 - начало пакета
04 - циклический адрес
00
FE FF - тип соединения (адрес или устройство ?)
7C 64 - сетевой адрес
01 - на какую команду ответ
A8 - ?
05 - ? изменяется в зависимости от дня
5B - ?
00 - ?
09 05 - версия ПО (9.5)
7C 64 - сетевой адрес
A7 - КС
55 - конец пакета

Есть файл в формате анализатора (раньше уже выкладывал подобный),
но тут сразу два анализатора синхронно.
Там видно что приходит на SPI что поступает уже по UARTу в процессор счётчика.
Что отвечает и как эти данные соотносятся друг с другом.
Спойлерhttps://disk.yandex.ru/d/mG4LZKesekNJrA

Re: Модуль отображения информации МИРТ-830 из ардуины

Ср дек 08, 2021 11:45:20

...простенький симулятор lcd...

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