Show last authors
1 **Table of Contents: **
2
3 {{toc/}}
4
5
6
7
8 = 1. Overview =
9
10 (((
11
12
13 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:
14 )))
15
16 (((
17 [[Point to Point Software for LT-22222-L>>https://github.com/dragino/LT-22222-L]].
18 )))
19
20
21 = 2. Features for this firmware =
22
23 == 2.1  Point To Point ==
24
25 === 2.1.1 Overview ===
26
27
28 [[image:image-20220602111219-1.png||height="472" width="972"]]
29
30
31 === 2.2.2 Configure ===
32
33
34 (% border="1" style="background-color:#f7faff; color:black; width:360px" %)
35 |=(% style="width: 179px;" %)**A's configuration**|=(% style="width: 177px;" %)**B's configuration**
36 |(% style="width:179px" %)AT+GROUPMOD=0|(% style="width:177px" %)AT+GROUPMOD=0
37 |(% style="width:179px" %)AT+TXCHS=868700000|(% style="width:177px" %)AT+TXCHS=869000000
38 |(% style="width:179px" %)AT+RXCHS=869000000|(% style="width:177px" %)AT+RXCHS=868700000
39 |(% style="width:179px" %)AT+TRIG1=2,50|(% style="width:177px" %)AT+TRIG1=2,50
40 |(% style="width:179px" %)AT+TRIG2=2,50|(% style="width:177px" %)AT+TRIG2=2,50
41 |(% style="width:179px" %)AT+DI1TODO1=2|(% style="width:177px" %)AT+DI1TODO1=2
42 |(% style="width:179px" %)AT+DI1TORO1=2|(% style="width:177px" %)AT+DI1TORO1=2
43 |(% style="width:179px" %)AT+DI2TODO2=2 |(% style="width:177px" %)AT+DI2TODO2=2
44 |(% style="width:179px" %)AT+DI2TORO2=2|(% style="width:177px" %)AT+DI2TORO2=2
45
46 === 2.2.3 Serial port display ===
47
48
49 (% class="wikigeneratedid" %)
50 [[image:image-20220602111219-2.png]]
51
52
53 (% class="wikigeneratedid" %)
54 [[image:image-20220602111219-3.png]]
55
56
57 (% class="wikigeneratedid" %)
58 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.
59
60
61 == 2.2  Point To Mult-Point ==
62
63 === 2.2.1 Overview ===
64
65
66 [[image:1654152390874-192.png]]
67
68
69 === 2.2.2  Configure ===
70
71
72 (% style="color:blue" %)**Configuration of the TX group:**
73
74 AT+GROUPMOD=0,2
75
76 AT+TXCHS=868700000
77
78 AT+RXCHS=869000000
79
80 AT+TRIG1=2,50
81
82 AT+TRIG2=2,50
83
84 AT+DI1TODO1=1
85
86 AT+DI1TORO1=1
87
88 AT+DI2TODO2=1
89
90 AT+DI2TORO2=1
91
92
93 (% style="color:blue" %)**Configuration for RX group number 1:**
94
95 AT+GROUPMOD=1,1
96
97 AT+TXCHS=869000000
98
99 AT+RXCHS=868700000
100
101
102 (% style="color:blue" %)**Configuration for RX group number 2:**
103
104 AT+GROUPMOD=1,2
105
106 AT+TXCHS=869000000
107
108 AT+RXCHS=868700000
109
110
111 === 2.2.3 Serial port display ===
112
113
114 [[image:image-20220602144747-1.png]]
115
116
117 [[image:image-20220602144747-2.png]]
118
119
120 (((
121 If the TX group does not receive all the ACK replies from the RX group, it will retransmit up to 4 times, each time interval is 30 seconds, and the retransmission UplinkCounter will not increase.
122 )))
123
124
125 == 2.3 AT command ==
126
127
128 (((
129 (% style="color:#037691" %)**ATZ** (%%)**: ** Trig a reset of the MCU
130 )))
131
132 (((
133 (% style="color:#037691" %)**AT+FDR** (%%)**:**  Reset Parameters to Factory Default, Keys Reserve
134 )))
135
136 (((
137 (% style="color:#037691" %)**AT+FCU** (%%)**:**  Get or Set the Frame Counter Uplink
138 )))
139
140 (((
141 (% style="color:#037691" %)**AT+FCD** (%%)**:**  Get or Set the Frame Counter Downlink
142 )))
143
144 (((
145 (% style="color:#037691" %)**AT+TXP** (%%)**:**  Get or Set the transmit power, the maximum is 20dBm (default is 14dBm)
146 )))
147
148 (((
149 (% style="color:#037691" %)**AT+SYNC** (%%)**:**  Get or Set the Sync word [1:0x34,0:0x12] (default is 1)
150 )))
151
152 (((
153 (% style="color:#037691" %)**AT+PMB** (%%)**:    **Get or Set the preamble (default:8)
154 )))
155
156 (((
157 (% style="color:#037691" %)**AT+TXCHS **(%%)**:** Get or Set the transmit frequency of TX (default:868700000)
158 )))
159
160 (((
161 (% style="color:#037691" %)**AT+TXSF **(%%)**:**  Get or Set the spreading factor of TX (7 to 12) (default:12)
162 )))
163
164 (((
165 (% style="color:#037691" %)**AT+RXCHS **(%%)**:** Get or Set the transmit frequency of RX (default:869000000)
166 )))
167
168 (((
169 (% style="color:#037691" %)**AT+RXSF **(%%)**:**  Get or Set the spreading factor of RX (7 to 12) (default:12)
170 )))
171
172 (((
173 (% style="color:#037691" %)**AT+BW **(%%)**:       **Get or Set the bandwidth [0:125khz,1:250khz,2:500khz] (default:0)
174 )))
175
176 (((
177 (% 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)
178 )))
179
180 (((
181 (% style="color:#037691" %)**AT+TDC **(%%)**:**  Get or set the application data transmission interval in ms(default 10 minutes)
182 )))
183
184 (((
185 (% style="color:#037691" %)**AT+VER **(%%)**:**  Get firmware version number
186 )))
187
188 (((
189 (% style="color:#037691" %)**AT+SEND **(%%)**:   **Set Custom sent hex data
190 )))
191
192 (((
193 (% style="color:#037691" %)**AT+GROUPMOD **(%%)**: **Set or Get the grouping mode of the device (default: 0)
194 )))
195
196 (((
197 (((
198 (% 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)
199 )))
200 )))
201
202 (((
203 (% style="color:#037691" %)**AT+TRIG1 **(%%)**:**  Set or Get the DI1 pin interrupt trigger mode (default 0,0)
204 )))
205
206 (((
207 (% style="color:#037691" %)**AT+TRIG2 **(%%)**:            **Set or Get the DI2 pin interrupt trigger mode (default 0,0)
208 )))
209
210 (((
211 (% style="color:#037691" %)**AT+DI1TODO1 **(%%)**:    **Set or get the mode in which DI1 maps to DO1 (default 0)
212 )))
213
214 (((
215 (% style="color:#037691" %)**AT+DI1TORO1 **(%%)**:    **Set or get the mode in which DI1 maps to RO1(default 0)
216 )))
217
218 (((
219 (% style="color:#037691" %)**AT+DI2TODO2 **(%%)**:**  Set or get the mode in which DI2 maps to DO2(default 0)
220 )))
221
222 (((
223 (% style="color:#037691" %)**AT+DI2TORO2 **(%%)**:    **Set or get the mode in which DI2 maps to RO2(default 0)
224 )))
225
226
227 (((
228 (% style="color:blue" %)**Example 1:**
229 )))
230
231 (((
232 **AT+SEND=01020304 **will send a payload of 01020304
233 )))
234
235
236 (((
237 (% style="color:blue" %)**Example 2: **
238 )))
239
240 (((
241 **AT+TRIGx=a    **Trigger directly without triggering time
242 )))
243
244 (((
245 **AT+TRIGx=a,b**
246 )))
247
248 (((
249 **a=0:** falling edge;
250 )))
251
252 (((
253 **a=1: **rising edge;
254 )))
255
256 (((
257 **a=2:** falling edge or rising edge;
258 )))
259
260 (((
261 **b:**  triggering time in milliseconds.
262 )))
263
264 (((
265 **AT+TRIGx=2,50**  Falling edge or rising edge trigger, and the trigger time exceeds 50ms.
266 )))
267
268
269 (((
270 (% style="color:blue" %)**Example 3: **
271 )))
272
273 (((
274 **AT+DI1TODO1= maps value**
275 )))
276
277 (((
278 **AT+DI1TORO1= maps value**
279 )))
280
281 (((
282 **AT+DI2TODO2= maps value**
283 )))
284
285 (((
286 **AT+DI2TORO2= maps value**
287 )))
288
289 (((
290
291 )))
292
293 (% border="1" style="background-color:#f7faff; color:black; width:690px" %)
294 |=(% style="width: 102px;" %)(((
295 Maps value
296 )))|=(% style="width: 331px;" %)(((
297 DIx to DOx
298 )))|=(% style="width: 251px;" %)(((
299 DIx to ROx
300 )))
301 |(% style="width:102px" %)(((
302 0
303 )))|(% style="width:331px" %)(((
304 No Action
305 )))|(% style="width:251px" %)(((
306 No Action
307 )))
308 |(% style="width:102px" %)(((
309 1
310 )))|(% style="width:331px" %)(((
311 If DIx is high, control DOx to output low level, If DIx is low, control DOx to output high level
312 )))|(% style="width:251px" %)(((
313 (((
314 If DIx is high, control ROx to close,
315 )))
316
317 (((
318 if DIx is low, control ROx to open
319 )))
320 )))
321 |(% style="width:102px" %)(((
322 2
323 )))|(% style="width:331px" %)(((
324 If DIx is high, control DOx to output high level, If DIx is low, control DOx to output low level
325 )))|(% style="width:251px" %)(((
326 (((
327 If DIx is high, control ROx to open,
328 )))
329
330 (((
331 if DIx is low, control ROx to close
332 )))
333 )))
334 |(% style="width:102px" %)(((
335 3
336 )))|(% style="width:331px" %)(((
337 DOx state flip
338 )))|(% style="width:251px" %)(((
339 ROx state flip
340 )))
341
342 (((
343
344
345 (% style="color:blue" %)**Example 4: **
346 )))
347
348 (((
349 **AT+GROUPMOD=0**  Set to point to point mode
350 )))
351
352 (((
353 **AT+GROUPMOD=0,aa**  Set the TX group that controls the number of aa (The maximum value of aa is 8)
354 )))
355
356 (((
357 **AT+GROUPMOD=1,bb**  Set to the RX group controlled by the TX group, numbered bb(The maximum value of aa is 8)
358 )))
359
360 (((
361 **AT+GROUPMOD=0,2**  Set to control the TX group of the two RX groups
362 )))
363
364 (((
365 **AT+GROUPMOD=1,1**  Set the RX group numbered 1
366 )))
367
368 (((
369 **AT+GROUPMOD=1,2**  Set the RX group numbered 2
370 )))
371
372
373 === 2.3.1 TRIG command is configured in the transmit LT. (LT1)(Since firmware 1.3) ===
374
375
376 **AT+TRIGx=a          **Trigger transmit directly without triggering time
377
378 **AT+TRIGx=a,b**  Trigger transmit with triggering time threshold
379
380 **AT+TRIGx=a,b,c    **Trigger transmit with triggering time threshold, and continue to transmit every xx seconds if DI status no change.
381
382
383 **a=0:** falling edge;
384
385 **a=1:** rising edge;
386
387 **a=2:** falling edge or rising edge;
388
389 **b:**  triggering time in milliseconds.
390
391 **c:** transmit interval
392
393
394 (% style="color:blue" %)**Use Case 1**(%%):  Once the DI1 port status change ( either from low to high or high to low, LT1 sends a trigger to LT-2)
395
396 **Command:**
397
398 **AT+TRIG1=2,50**  Falling edge or rising edge trigger, and the trigger time should exceed 50ms.
399
400
401 (% style="color:blue" %)**Use Case 2:  **(%%)Sync LT2 RO / DO status with LT1 every minute.
402
403 **Command:**
404
405 **AT+TRIG2=2,50,60**  Once there is falling edge or rising edge on DI2 of LT1, LT1 will transmit trigger to LT2 and LT2 can sync the status of RO/DO.
406
407
408 === 2.3.2 RO/DO is configured in the receiver LT (LT2)(Since firmware 1.3) ===
409
410
411 AT+DI1TODO1= maps value[,latch time]
412
413 AT+DI1TORO1= maps value[,latch time]
414
415 AT+DI2TODO2= maps value[,latch time]
416
417 AT+DI2TORO2= maps value[,latch time]
418
419
420 (% border="1" style="background-color:#f7faff; color:black; width:774px" %)
421 |(% style="width:105px" %) **Maps value**|(% style="width:415px" %)**DIx to DOx**|(% style="width:249px" %)**DIx to ROx**
422 |(% style="width:105px" %)0|(% style="width:415px" %)No Action|(% style="width:249px" %)No Action
423 |(% style="width:105px" %)1|(% style="width:415px" %)If DIx is high, control DOx to output low level, If DIx is low, control DOx to output high level|(% style="width:249px" %)(((
424 If DIx is high, control ROx to close,
425
426 if DIx is low, control ROx to open
427 )))
428 |(% style="width:105px" %)2|(% style="width:415px" %)If DIx is high, control DOx to output high level, If DIx is low, control DOx to output low level|(% style="width:249px" %)(((
429 If DIx is high, control ROx to open,
430
431 if DIx is low, control ROx to close
432 )))
433 |(% style="width:105px" %)3|(% style="width:415px" %)DOx state flip|(% style="width:249px" %)ROx state flip
434
435 latch time, if latch time is defined, DO or RO will go back to the original status after latch time, if there is a new trigger comes, the LT2 will use the new latch time settings and ignore the old one.
436
437
438 (% style="color:blue" %)**Case1**:
439
440 AT+DI1TODO1=1  ~/~/ LT2 DO1 will follow LT1 DI1 trigger command, if DI1 of LT1 is trigger high, DO1 of LT2 will output low, if DI1 of LT1 is trigger low, DO2 of LT2 will output high.
441
442
443 (% style="color:blue" %)**Case2**:
444
445 AT+DI1TODO1=1,60  ~/~/ LT2 DO1 will follow LT1 DI1 trigger command, DO1 will keep the status 60 seconds and then go back to original state.
446
447
448 === 2.3.3 Save the RO/DO status during power off(Since firmware 1.3) ===
449
450
451 Enable/Disbale retain Digital Output/Relay Output after power off / Power On
452
453 **AT+DOROSAVE=0**  ~/~/ Disable Retain after power off/on
454
455 **AT+DOROSAVE=1**  ~/~/ Enable Retain after power off/on
456
457 **AT+DOROSAVE=2,a,b,c,d**  ~/~/ set DO/RO port to default state after power on.
458
459 **a: **for DO1
460
461 **b:** for DO2
462
463 **c: **for RO1
464
465 **d:** for RO2.
466
467
468 **Example:**
469
470 AT+DOROSAVE=2,0,0,0,1  ~/~/ Set DO1/DO2 to Low, RO1 to open after power on , set RO2 to close after power on.
471
472
473 === 2.3.4 Control Sleep status.(Since firmware 1.3) ===
474
475
476 DI2 can be used to set LT into sleep mode.
477
478 **AT+DI2SLEEP=1**  ~/~/  Enable DI2 as Sleep pin
479
480 **AT+DI2SLEEP=0**  ~/~/  Disable DI2 as Sleep pin
481
482 When DI2 is enabled as sleep pin, a falling trigger (with 500ms pulse) will set LT into sleep mode. A raising trigger will wake up it again.
483
484 In sleep mode, DORO will keep its initial state if AT+DOROSAVE=2, otherwise DORO will be in OFF state
485
486
487 == 2.4 Data Format ==
488
489
490 (((
491 8 bytes of GROUPID + 9 bytes of payload + 4 bytes of checksum
492 )))
493
494 (((
495 (% style="color:blue" %)**Payload:Payload triggered by TDC or DI**
496 )))
497
498 (% border="1" style="background-color:#f7faff; color:black; width:825px" %)
499 |=(% style="width: 102px;" %)(((
500 **Size (bytes)**
501 )))|=(% style="width: 74px;" %)(((
502 1
503 )))|=(% style="width: 72px;" %)(((
504 1
505 )))|=(% style="width: 47px;" %)(((
506 1
507 )))|=(% style="width: 83px;" %)(((
508 1
509 )))|=(% style="width: 90px;" %)(((
510 1
511 )))|=(% style="width: 92px;" %)(((
512 1
513 )))|=(% style="width: 78px;" %)(((
514 1
515 )))|=(% style="width: 91px;" %)(((
516 1
517 )))|=(% style="width: 91px;" %)(((
518 1
519 )))
520 |(% style="width:102px" %)(((
521 **Value**
522 )))|(% style="width:74px" %)(((
523 address
524 )))|(% style="width:72px" %)(((
525 request
526 )))|(% style="width:47px" %)(((
527 ACK
528 )))|(% style="width:83px" %)(((
529 (((
530 DI1&
531 DI1 level
532 )))
533 )))|(% style="width:90px" %)(((
534 DI1TODO1
535 )))|(% style="width:92px" %)(((
536 DI1TORO1
537 )))|(% style="width:78px" %)(((
538 (((
539 DI2&
540 DI2 leve
541 )))
542 )))|(% style="width:91px" %)(((
543 DI2TODO2
544 )))|(% style="width:91px" %)(((
545 DI2TORO2
546 )))
547
548 (((
549 (% style="color:#037691" %)**The first byte**(%%)**:**  00 is the broadcast address, 01-08 is the RX group number.
550 )))
551
552 (((
553 (% style="color:#037691" %)**The second byte**(%%)**:**  send mapping request when not 0, not request when it is 0.
554 )))
555
556 (((
557 (% style="color:#037691" %)**The third byte**(%%)**:**  ACK returned to the sender after the mapping is completed.
558 )))
559
560 (((
561 (((
562 (% 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.
563 )))
564 )))
565
566 (((
567 (% style="color:#037691" %)**The Fifth byte**(%%)**:       **DI1TODO1 when the interrupt is triggered, 0 when the interrupt is not triggered.
568 )))
569
570 (((
571 (% style="color:#037691" %)**The Sixth byte**(%%)**:**  0 does not trigger interrupt when DI1TORO1 interrupt is triggered.
572 )))
573
574 (((
575 (((
576 (% 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.
577 )))
578 )))
579
580 (((
581 (% style="color:#037691" %)**The 8th byte**(%%)**:          **DI2TODO2 when the interrupt is triggered, 0 when the interrupt is not triggered.
582 )))
583
584 (((
585 (% style="color:#037691" %)**The 9th byte**(%%)**:**  DI2TORO2 when an interrupt is triggered, 0 when an interrupt is not triggered.
586 )))
587
588 (((
589
590
591 (% style="color:blue" %)**Payload:(Since firmware 1.3)The receiver replies to the sent packet**
592 )))
593
594 (% border="1" style="background-color:#f7faff; color:black; width:822px" %)
595 |=(% style="width: 97px;" %)(((
596 **Size(bytes)**
597 )))|=(% style="width: 71px;" %)(((
598 1
599 )))|=(% style="width: 70px;" %)(((
600 1
601 )))|=(% style="width: 48px;" %)(((
602 1
603 )))|=(% style="width: 85px;" %)(((
604 1
605 )))|=(% style="width: 90px;" %)(((
606 1
607 )))|=(% style="width: 88px;" %)(((
608 1
609 )))|=(% style="width: 86px;" %)(((
610 1
611 )))|=(% style="width: 92px;" %)(((
612 1
613 )))|=(% style="width: 92px;" %)(((
614 1
615 )))
616 |(% style="width:97px" %)(((
617 **Value**
618 )))|(% style="width:71px" %)(((
619 address
620 )))|(% style="width:70px" %)(((
621 request
622 )))|(% style="width:48px" %)(((
623 ACK
624 )))|(% style="width:85px" %)(((
625 (((
626 DOI1&
627 DOI2 level
628 )))
629 )))|(% style="width:90px" %)(((
630 DI1TODO1
631 )))|(% style="width:88px" %)(((
632 DI1TORO1
633 )))|(% style="width:86px" %)(((
634 (((
635 RO2&
636 RO2 level
637 )))
638 )))|(% style="width:92px" %)(((
639 DI2TODO2
640 )))|(% style="width:92px" %)(((
641 DI2TORO2
642 )))
643
644 (((
645 (% style="color:#037691" %)**The first byte**(%%)**:**  00 is the broadcast address, 01-08 is the RX group number.
646 )))
647
648 (((
649 (% style="color:#037691" %)**The second byte**(%%)**:**  send mapping request when not 0, not request when it is 0.
650 )))
651
652 (((
653 (% style="color:#037691" %)**The third byte**(%%)**:**  ACK returned to the sender after the mapping is completed.
654 )))
655
656 (((
657 (((
658 (% style="color:#037691" %)**The fourth byte**(%%)**:**  the high four bits are 1 to represent DOI1, and the low four bits are the level of DOI2 when the interrupt is triggered.
659 )))
660 )))
661
662 (((
663 (% style="color:#037691" %)**The Fifth byte**(%%)**:       **DI1TODO1 when the interrupt is triggered, 0 when the interrupt is not triggered.
664 )))
665
666 (((
667 (% style="color:#037691" %)**The Sixth byte**(%%)**:**  0 does not trigger interrupt when DI1TORO1 interrupt is triggered.
668 )))
669
670 (((
671 (((
672 (% style="color:#037691" %)**The seventh byte**(%%)**:**  the high four bits are 2 to represent RO2, and the low four bits are the level of RO2 when the interrupt is triggered.
673 )))
674 )))
675
676 (((
677 (% style="color:#037691" %)**The 8th byte**(%%)**:          **DI2TODO2 when the interrupt is triggered, 0 when the interrupt is not triggered.
678 )))
679
680 (((
681 (% style="color:#037691" %)**The 9th byte**(%%)**:**  DI2TORO2 when an interrupt is triggered, 0 when an interrupt is not triggered.
682 )))
683
684
Copyright ©2010-2022 Dragino Technology Co., LTD. All rights reserved
Dragino Wiki v2.0