Сб июл 24, 2021 23:36:20
Вт авг 17, 2021 13:06:06
_borisovich_ писал(а):Особая благодарность Сергею Безрукову ( Ser60 ).
#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");
}
}
}
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
Вт авг 31, 2021 16:46:30
Чт сен 02, 2021 12:00:25
polkomn писал(а):Вы не пробовали считать прошивку с самого счетчика?
Пт сен 03, 2021 12:22:13
Сб сен 04, 2021 16:55:00
Вс сен 05, 2021 09:49:46
Ср сен 22, 2021 17:06:28
Пт сен 24, 2021 21:49:00
Вс сен 26, 2021 17:30:05
Пт окт 15, 2021 06:31:13
Вс окт 17, 2021 17:04:24
Вт ноя 30, 2021 17:06:21
Вс дек 05, 2021 00:13:57
Вс дек 05, 2021 14:19:11
Вс дек 05, 2021 22:57:24
Пн дек 06, 2021 09:16:30
Вт дек 07, 2021 03:28:42
Вт дек 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 - конец пакета
Ср дек 08, 2021 11:45:20