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

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

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


Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="Dismas",url="/forum/viewtopic.php?p=4064752#p4064752"]...можно дебажить в реальном времени...[/uquote]
Ну вот собственно что получилось. В архиве схема, асм, и готовый hex.
Прошивка проверена на версии железа v1.
У версии 2 имеются 7 кнопок + немного изменена схема включения LCD.
В асме, (как и в hex) установлен номер счётчика 00000.
Прошивать нужно Flash+EEP.
При первом запуске нужно установить необходимый номер (см. инструкцию).
Марку LCD указал, но данные на них нигде не нашёл, видимо заказные...
Асм не стал разбирать подробно, думаю, если будет интерес - можно создать
отдельную тему, а там и более грамотные товарищи подтянутся.
Всем удачи :beer:
Вложения
Mirtek_830_V1.rar
(60.16 КБ) 557 скачиваний
shev377
Открыл глаза
Сообщения: 48
Зарегистрирован: Пт янв 29, 2010 21:34:59

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

Сообщение shev377 »

_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 из-за неправильного регистра, хз
polkomn
Родился
Сообщения: 1
Зарегистрирован: Вт авг 31, 2021 16:34:08

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

Сообщение polkomn »

[uquote="Dismas",url="/forum/viewtopic.php?p=4064752#p4064752"][uquote="shev377",url="/forum/viewtopic.php?p=4009384#p4009384"]...получает ответ, но дальше либо не получается распарсить значения,
либо команды запроса показаний в этом счётчике другие...[/uquote]
У меня аналогичные показания. И на 12 и на 32 миртеке.
Команды запроса у них одинаковые, сравнивал с запросами через опто порт.
В результате прикупил на барахолке 2 пульта первой версии (4 кнопки) за 1500р.
Бонусом - прошивка не залочена. PIC16LF1947 можно дебажить в реальном времени.
Жаль марку LCD нигде не нашёл, нет надписей на нём. Схему разрисовал. :)[/uquote]

Вы не пробовали считать прошивку с самого счетчика?
shev377
Открыл глаза
Сообщения: 48
Зарегистрирован: Пт янв 29, 2010 21:34:59

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

Сообщение shev377 »

polkomn писал(а):Вы не пробовали считать прошивку с самого счетчика?
А смысл, выше же Dismas выложил и HEX и читабельный ASM-код

По хорошему, я мог бы просто к нему добить функции общения по uart вместо дисплея, но мои познания в ASM не настолько обширны)
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="polkomn",url="/forum/viewtopic.php?p=4084131#p4084131"]...Вы не пробовали считать прошивку с самого счетчика?[/uquote]
PIC залочен, поэтому читаются одни нули. :(
[uquote="shev377",url="/forum/viewtopic.php?p=4085074#p4085074"]По хорошему, я мог бы просто к нему добить функции общения по uart вместо дисплея...[/uquote]
Можно на основе асм_овских функций, сделать С_ишные, это кому как удобно.
Схема заводского модема имеется, а вот прошивки к нему нет :cry:
shev377
Открыл глаза
Сообщения: 48
Зарегистрирован: Пт янв 29, 2010 21:34:59

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

Сообщение shev377 »

[uquote="Dismas",url="/forum/viewtopic.php?p=4085630#p4085630"]PIC залочен, поэтому читаются одни нули. :([/uquote]
А у Вас случайно нет возможности посмотреть какие параметры PIC отправляет в CC1101?

А то у всех получилось хотя бы на связь выйти со своим счётчиком, а я как-то вообще не прошёл начальный уровень сложности, так понимаю обломался на стадии настройки CC1101, хотя вроде бы использовал тот же конфиг из этой ветки)
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="shev377",url="/forum/viewtopic.php?p=4086344#p4086344"]А у Вас случайно нет возможности посмотреть какие параметры PIC отправляет в CC1101?[/uquote]
Чуть позже посмотрю.
Если разговор про ардуину, у меня и отправляет и принимает данные, а в мониторе - нули :(
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

Дошли руки помониторить протокол обмена SPI между PIC16 и CC1101.
В каком виде лучше выложить ? Можно в файле анализатора LA1010 и ссылку на софт.
Тогда желающие смогут (скачав и установив программу для анализатора) более детально
рассмотреть кто кому и что шлёт :)
Софт
Спойлерhttps://disk.yandex.ru/d/nych7LjCo3tPhA
В прикреплённом архиве установки и собственно сами данные - настройка после вкл. питания и обмен.
Вложения
MIRTEK12_SPI.7z
(979.81 КБ) 402 скачивания
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

А это обмен по SPI между ардуинкой и СС1101.
Вложения
MIRT12_ARDUINO.7z
(9.58 КБ) 394 скачивания
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="Dismas",url="/forum/viewtopic.php?p=4096268#p4096268"]...между ардуинкой и СС1101.[/uquote]
Для лучшего понимания вырезал из протокола:
Спойлер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.
Alecseyyy
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Чт дек 02, 2010 01:56:00

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

Сообщение Alecseyyy »

Всем привет, а можно простым языком объяснить, как подключить cc1101 к esp и выводить показания через mqtt? Зачем кнопки, дисплеи и прочее?
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="Alecseyyy",url="/forum/viewtopic.php?p=4105979#p4105979"]...Зачем кнопки, дисплеи и прочее?[/uquote]
Это схема заводского модуля отображения, потому кнопки и дисплей.
Нет протокола обмена со счётчиком, а у кого есть - тот молчит.
Vittaly76
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт ноя 30, 2021 17:02:32

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

Сообщение Vittaly76 »

[uquote="Dismas",url="/forum/viewtopic.php?p=4057859#p4057859"][uquote="Dismas",url="/forum/viewtopic.php?p=4057737#p4057737"]Что то не получилось прилепить...[/uquote]
Немного не правильно записал ответ на последний запрос ардуины:
Изображение[/uquote]
Добрый день! Скажите, получилось продвинуться в исследовании протокола? Оч хочется получить возможность снимать показания со счётчика...
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="Vittaly76",url="/forum/viewtopic.php?p=4132397#p4132397"]Скажите, получилось продвинуться в исследовании протокола?
Оч хочется получить возможность снимать показания со счётчика...[/uquote]
Поскольку для меня это только хобби - то занимаюсь этим время от времени.
Для снятия показаний есть решения от производителя - выносной пульт или модем.
Первый для ручного сбора данных второй для автоматического.
Vittaly76
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт ноя 30, 2021 17:02:32

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

Сообщение Vittaly76 »

[uquote="Dismas",url="/forum/viewtopic.php?p=4135425#p4135425"][uquote="Vittaly76",url="/forum/viewtopic.php?p=4132397#p4132397"]Скажите, получилось продвинуться в исследовании протокола?
Оч хочется получить возможность снимать показания со счётчика...[/uquote]
Поскольку для меня это только хобби - то занимаюсь этим время от времени.
Для снятия показаний есть решения от производителя - выносной пульт или модем.
Первый для ручного сбора данных второй для автоматического.[/uquote]
А можете поподробнее про модем: где почитать? Я правильно понимаю, что модем тоже работает по радиоканалу, и имеет некий API, с помощью которого можно общаться с счётчиком?
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="Vittaly76",url="/forum/viewtopic.php?p=4135703#p4135703"]...где почитать?...[/uquote]
На сайте производителя, да и на других ресурсах.
Поищите МИРТ-141. Только цена на него больно кусачая.
Vittaly76
Первый раз сказал Мяу!
Сообщения: 20
Зарегистрирован: Вт ноя 30, 2021 17:02:32

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

Сообщение Vittaly76 »

[uquote="Dismas",url="/forum/viewtopic.php?p=4136031#p4136031"][uquote="Vittaly76",url="/forum/viewtopic.php?p=4135703#p4135703"]...где почитать?...[/uquote]
На сайте производителя, да и на других ресурсах.
Поищите МИРТ-141. Только цена на него больно кусачая.[/uquote]
Спасибо! Да уж, ценник совсем не демократичный... не готов столько тратить. Что ж, буду пытаться продолжить ваш труд самостоятельно...
Vasfed
Родился
Сообщения: 5
Зарегистрирован: Вт дек 07, 2021 03:03:48

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

Сообщение Vasfed »

[uquote="Vittaly76",url="/forum/viewtopic.php?p=4136187#p4136187"]Спасибо! Да уж, ценник совсем не демократичный... не готов столько тратить. Что ж, буду пытаться продолжить ваш труд самостоятельно...[/uquote]
Доброго времени! Тоже уже несколько дней в фоновом режиме ковыряю идой прошивки из топика.
Для оригинальной соорудил на коленках из схемы Dismas простенький симулятор lcd на svg+html+js, ест набор инструкций с bsf/bcf типа `bsf lcddata2, 6`(можно с адресами в начале, слушает paste на страницу, чтобы напрямую из дизасма вставлять)
Пара пинов похоже была с опечатками, поправил по логике прошивки, вроде выдает адекватные результаты
Вложения
mirt_lcd_simulator.html.zip
js-симулятор lcd
(13.93 КБ) 348 скачиваний
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="Vittaly76",url="/forum/viewtopic.php?p=4132397#p4132397"]...Скажите, получилось продвинуться в исследовании протокола?...[/uquote]
Так, совсем немного.

Код: Выделить всё

Первый запрос от пульта к счётчику:
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
Аватара пользователя
Dismas
Потрогал лапой паяльник
Сообщения: 365
Зарегистрирован: Вс май 02, 2021 18:58:49
Откуда: 俄罗斯

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

Сообщение Dismas »

[uquote="Vasfed",url="/forum/viewtopic.php?p=4136767#p4136767"]...простенький симулятор lcd...[/uquote]
Может я чего не понял, но было бы здорово если бы после очистки экрана
сегменты не гасли совсем, а оставалась некая их подсветка, указывающая
на положение их относительно других. К примеру контуры сегментов.
Ответить

Вернуться в «Статьи»