Wiki source code of Point to Point Communication of LT-22222-L
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
1.1 | 1 | {{box cssClass="floatinginfobox" title="**Contents**"}} |
2 | {{toc/}} | ||
3 | {{/box}} | ||
4 | |||
![]() |
4.2 | 5 | = **1. Overview** = |
![]() |
1.1 | 6 | |
![]() |
6.1 | 7 | ((( |
![]() |
1.1 | 8 | Shipped LT-22222-L is base on LoRaWAN protocol. We also develop a open source Point to Point LoRa protocol for LT-22222-L. The source code and hex file can be found at: |
![]() |
6.1 | 9 | ))) |
![]() |
1.1 | 10 | |
![]() |
6.1 | 11 | ((( |
![]() |
1.1 | 12 | [[Point to Point Software for LT-22222-L>>https://github.com/dragino/LT-22222-L]]. |
![]() |
6.1 | 13 | ))) |
![]() |
1.1 | 14 | |
15 | == == | ||
16 | |||
![]() |
4.2 | 17 | = **2. Features for this firmware** = |
![]() |
1.1 | 18 | |
![]() |
4.2 | 19 | |
![]() |
8.2 | 20 | == **2.1 Point To Point** == |
![]() |
4.2 | 21 | |
![]() |
8.1 | 22 | |
![]() |
8.2 | 23 | [[image:image-20220602111219-1.png||height="472" width="972"]] |
![]() |
4.2 | 24 | |
25 | |||
![]() |
8.2 | 26 | (% class="wikigeneratedid" id="H2.2.Configure" %) |
27 | (% style="color:blue" %)**Configure:** | ||
![]() |
4.2 | 28 | |
![]() |
8.1 | 29 | |
![]() |
4.3 | 30 | (% border="1" style="background-color:#f7faff; color:black; width:500px" %) |
31 | |=**A's configuration**|=**B's configuration** | ||
32 | |AT+GROUPMOD=0|AT+GROUPMOD=0 | ||
33 | |AT+TXCHS=868700000|AT+TXCHS=869000000 | ||
34 | |AT+RXCHS=869000000|AT+RXCHS=868700000 | ||
35 | |AT+TRIG1=2,50|AT+TRIG1=2,50 | ||
36 | |AT+TRIG2=2,50|AT+TRIG2=2,50 | ||
37 | |AT+DI1TODO1=2|AT+DI1TODO1=2 | ||
38 | |AT+DI1TORO1=2|AT+DI1TORO1=2 | ||
39 | |AT+DI2TODO2=2 |AT+DI2TODO2=2 | ||
40 | |AT+DI2TORO2=2|AT+DI2TORO2=2 | ||
![]() |
4.2 | 41 | |
![]() |
8.2 | 42 | == **2.2 Point To Mult-Point ** == |
![]() |
4.2 | 43 | |
![]() |
7.1 | 44 | |
![]() |
4.2 | 45 | [[image:image-20220602111219-2.png]] |
46 | |||
47 | |||
48 | [[image:image-20220602111219-3.png]] | ||
49 | |||
50 | If the sender does not get the ACK reply from the receiver, it will retransmit up to 4 times, each interval is 6 seconds, and the UplinkCounter of the retransmission will not increase. | ||
51 | |||
![]() |
8.2 | 52 | |
53 | == **2.3 AT command** == | ||
54 | |||
55 | |||
![]() |
8.6 | 56 | (% style="color:#037691" %)**ATZ** (%%)**: ** Trig a reset of the MCU |
![]() |
8.2 | 57 | |
![]() |
8.6 | 58 | (% style="color:#037691" %)**AT+FDR** (%%)**:** Reset Parameters to Factory Default, Keys Reserve |
![]() |
8.2 | 59 | |
![]() |
8.6 | 60 | (% style="color:#037691" %)**AT+FCU** (%%)**:** Get or Set the Frame Counter Uplink |
![]() |
8.2 | 61 | |
![]() |
8.6 | 62 | (% style="color:#037691" %)**AT+FCD** (%%)**:** Get or Set the Frame Counter Downlink |
![]() |
8.2 | 63 | |
![]() |
8.6 | 64 | (% style="color:#037691" %)**AT+TXP** (%%)**:** Get or Set the transmit power, the maximum is 20dBm (default is 14dBm) |
![]() |
8.2 | 65 | |
![]() |
8.6 | 66 | (% style="color:#037691" %)**AT+SYNC** (%%)**:** Get or Set the Sync word [1:0x34,0:0x12] (default is 1) |
![]() |
8.2 | 67 | |
![]() |
8.6 | 68 | (% style="color:#037691" %)**AT+PMB** (%%)**: **Get or Set the preamble (default:8) |
![]() |
8.2 | 69 | |
![]() |
8.6 | 70 | (% style="color:#037691" %)**AT+TXCHS **(%%)**:** Get or Set the transmit frequency of TX (default:868700000) |
![]() |
8.2 | 71 | |
![]() |
8.6 | 72 | (% style="color:#037691" %)**AT+TXSF **(%%)**:** Get or Set the spreading factor of TX (7 to 12) (default:12) |
![]() |
8.2 | 73 | |
![]() |
8.6 | 74 | (% style="color:#037691" %)**AT+RXCHS **(%%)**:** Get or Set the transmit frequency of RX (default:869000000) |
![]() |
8.2 | 75 | |
![]() |
8.6 | 76 | (% style="color:#037691" %)**AT+RXSF **(%%)**:** Get or Set the spreading factor of RX (7 to 12) (default:12) |
![]() |
8.2 | 77 | |
![]() |
8.6 | 78 | (% style="color:#037691" %)**AT+BW **(%%)**: **Get or Set the bandwidth [0:125khz,1:250khz,2:500khz] (default:0) |
![]() |
8.2 | 79 | |
![]() |
8.6 | 80 | (% style="color:#037691" %)**AT+CR **(%%)**: **Get or Set the coding rate [1: 4/5, 2: 4/6, 3: 4/7, 4: 4/8] (default:1) |
![]() |
8.2 | 81 | |
![]() |
8.6 | 82 | (% style="color:#037691" %)**AT+TDC **(%%)**:** Get or set the application data transmission interval in ms(default 10 minutes) |
![]() |
8.2 | 83 | |
![]() |
8.6 | 84 | (% style="color:#037691" %)**AT+VER **(%%)**:** Get firmware version number |
![]() |
8.2 | 85 | |
![]() |
8.6 | 86 | (% style="color:#037691" %)**AT+SEND **(%%)**: **Set Custom sent hex data |
![]() |
8.2 | 87 | |
![]() |
8.6 | 88 | (% style="color:#037691" %)**AT+GROUPMOD **(%%)**: **Set or Get the grouping mode of the device (default: 0) |
![]() |
8.2 | 89 | |
![]() |
8.6 | 90 | (% style="color:#037691" %)**AT+GROUPID **(%%)**: **Set or Get the password for matching between TX group and RX group, which can be composed of numbers or characters (default: 12345678) |
![]() |
8.2 | 91 | |
![]() |
8.6 | 92 | (% style="color:#037691" %)**AT+TRIG1 **(%%)**:** Set or Get the DI1 pin interrupt trigger mode (default 0,0) |
![]() |
8.2 | 93 | |
![]() |
8.6 | 94 | (% style="color:#037691" %)**AT+TRIG2 **(%%)**: **Set or Get the DI2 pin interrupt trigger mode (default 0,0) |
![]() |
8.2 | 95 | |
![]() |
8.6 | 96 | (% style="color:#037691" %)**AT+DI1TODO1 **(%%)**: **Set or get the mode in which DI1 maps to DO1 (default 0) |
![]() |
8.2 | 97 | |
![]() |
8.6 | 98 | (% style="color:#037691" %)**AT+DI1TORO1 **(%%)**: **Set or get the mode in which DI1 maps to RO1(default 0) |
![]() |
8.2 | 99 | |
![]() |
8.6 | 100 | (% style="color:#037691" %)**AT+DI2TODO2 **(%%)**:** Set or get the mode in which DI2 maps to DO2(default 0) |
![]() |
8.2 | 101 | |
![]() |
8.6 | 102 | (% style="color:#037691" %)**AT+DI2TORO2 **(%%)**: **Set or get the mode in which DI2 maps to RO2(default 0) |
![]() |
8.2 | 103 | |
104 | |||
105 | |||
![]() |
8.3 | 106 | **Example1:** AT+SEND=01020304 will send a payload of 01020304 |
![]() |
8.2 | 107 | |
108 | |||
109 | i.g. AT+TRIGx=a Trigger directly without triggering time | ||
110 | |||
111 | AT+TRIGx=a,b a=0, falling edge; | ||
112 | |||
113 | a=1, rising edge; | ||
114 | |||
115 | a=2, falling edge or rising edge. | ||
116 | |||
117 | b, triggering time in milliseconds | ||
118 | |||
119 | AT+TRIGx=2,50 Falling edge or rising edge trigger, and the trigger time exceeds 50ms | ||
120 | |||
121 | |||
122 | i.g. AT+DI1TODO1= maps value | ||
123 | |||
124 | AT+DI1TORO1= maps value | ||
125 | |||
126 | AT+DI2TODO2= maps value | ||
127 | |||
128 | AT+DI2TORO2= maps value | ||
129 | |||
130 | |||
131 | |||
132 | |||
![]() |
8.4 | 133 | (% border="1" style="background-color:#f7faff; color:black; width:706px" %) |
134 | |=(% style="width: 102px;" %)Maps value|=(% style="width: 331px;" %)DIx to DOx|=(% style="width: 268px;" %)DIx to ROx | ||
![]() |
8.2 | 135 | |(% style="width:102px" %)0|(% style="width:331px" %)No Action|(% style="width:268px" %)No Action |
136 | |(% style="width:102px" %)1|(% style="width:331px" %)If DIx is high, control DOx to output low level, If DIx is low, control DOx to output high level|(% style="width:268px" %)((( | ||
137 | If DIx is high, control ROx to close, | ||
138 | |||
139 | if DIx is low, control ROx to open | ||
140 | ))) | ||
141 | |(% style="width:102px" %)2|(% style="width:331px" %)If DIx is high, control DOx to output high level, If DIx is low, control DOx to output low level|(% style="width:268px" %)((( | ||
142 | If DIx is high, control ROx to open, | ||
143 | |||
144 | if DIx is low, control ROx to close | ||
145 | ))) | ||
146 | |(% style="width:102px" %)3|(% style="width:331px" %)DOx state flip|(% style="width:268px" %)ROx state flip | ||
147 | |||
148 | i.g. AT+GROUPMOD=0 Set to point to point mode | ||
149 | |||
150 | AT+GROUPMOD=0,aa Set the TX group that controls the number of aa (The maximum value of aa is 8) | ||
151 | |||
152 | AT+GROUPMOD=1,bb Set to the RX group controlled by the TX group, numbered bb(The maximum value of aa is 8) | ||
153 | |||
154 | |||
155 | AT+GROUPMOD=0,2 Set to control the TX group of the two RX groups | ||
156 | |||
157 | AT+GROUPMOD=1,1 Set the RX group numbered 1 | ||
158 | |||
159 | AT+GROUPMOD=1,2 Set the RX group numbered 2 | ||
160 | |||
161 | |||
162 | |||
163 | == **2.4 Data Format** == | ||
164 | |||
165 | 8 bytes of GROUPID + 9 bytes of payload + 4 bytes of checksum | ||
166 | |||
167 | |||
![]() |
8.5 | 168 | **Payload:** |
![]() |
8.2 | 169 | |
![]() |
8.4 | 170 | (% border="1" style="background-color:#f7faff; color:black; width:938px" %) |
171 | |=(% style="width: 123px;" %)**Size (bytes)**|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1|=(% style="width: 107px;" %)1 | ||
172 | |(% style="width:123px" %)**Value**|(% style="width:38px" %)address|(% style="width:70px" %)request|(% style="width:52px" %)ACK|(% style="width:127px" %)((( | ||
![]() |
8.2 | 173 | DI1& |
174 | |||
175 | DI1 level | ||
![]() |
8.4 | 176 | )))|(% style="width:101px" %)DI1TODO1|(% style="width:91px" %)DI1TORO1|(% style="width:111px" %)((( |
![]() |
8.2 | 177 | DI2& |
178 | |||
179 | DI2 level | ||
![]() |
8.4 | 180 | )))|(% style="width:105px" %)DI2TODO2|(% style="width:106px" %)DI2TORO2 |
![]() |
8.2 | 181 | |
![]() |
8.5 | 182 | (% style="color:#037691" %)**The first byte**(%%)**:** 00 is the broadcast address, 01-08 is the RX group number. |
![]() |
8.2 | 183 | |
![]() |
8.5 | 184 | (% style="color:#037691" %)**The second byte**(%%)**:** send mapping request when not 0, not request when it is 0. |
![]() |
8.2 | 185 | |
![]() |
8.5 | 186 | (% style="color:#037691" %)**The third byte**(%%)**:** ACK returned to the sender after the mapping is completed. |
![]() |
8.2 | 187 | |
![]() |
8.5 | 188 | (% style="color:#037691" %)**The fourth byte**(%%)**:** the high four bits are 1 to represent DI1, and the low four bits are the level of DI1 when the interrupt is triggered. |
![]() |
8.2 | 189 | |
![]() |
8.6 | 190 | (% style="color:#037691" %)**The Fifth byte**(%%)**: **DI1TODO1 when the interrupt is triggered, 0 when the interrupt is not triggered. |
![]() |
8.2 | 191 | |
![]() |
8.5 | 192 | (% style="color:#037691" %)**The Sixth byte**(%%)**:** 0 does not trigger interrupt when DI1TORO1 interrupt is triggered. |
![]() |
8.2 | 193 | |
![]() |
8.5 | 194 | (% style="color:#037691" %)**The seventh byte**(%%)**:** the high four bits are 2 to represent DI2, and the low four bits are the level of DI2 when the interrupt is triggered. |
![]() |
8.2 | 195 | |
![]() |
8.6 | 196 | (% style="color:#037691" %)**The 8th byte**(%%)**: **DI2TODO2 when the interrupt is triggered, 0 when the interrupt is not triggered. |
![]() |
8.2 | 197 | |
![]() |
8.5 | 198 | (% style="color:#037691" %)**The 9th byte**(%%)**:** DI2TORO2 when an interrupt is triggered, 0 when an interrupt is not triggered. |
![]() |
8.2 | 199 | |
![]() |
1.1 | 200 |