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
47
48 === 2.2.3 Serial port display ===
49
50
51 (% class="wikigeneratedid" %)
52 [[image:image-20220602111219-2.png]]
53
54
55 (% class="wikigeneratedid" %)
56 [[image:image-20220602111219-3.png]]
57
58
59 (% class="wikigeneratedid" %)
60 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.
61
62
63 == 2.2  Point To Mult-Point ==
64
65 === 2.2.1 Overview ===
66
67
68 [[image:1654152390874-192.png]]
69
70
71 === 2.2.2  Configure ===
72
73
74 (% style="color:blue" %)**Configuration of the TX group:**
75
76 AT+GROUPMOD=0,2
77
78 AT+TXCHS=868700000
79
80 AT+RXCHS=869000000
81
82 AT+TRIG1=2,50
83
84 AT+TRIG2=2,50
85
86 AT+DI1TODO1=1
87
88 AT+DI1TORO1=1
89
90 AT+DI2TODO2=1
91
92 AT+DI2TORO2=1
93
94
95 (% style="color:blue" %)**Configuration for RX group number 1:**
96
97 AT+GROUPMOD=1,1
98
99 AT+TXCHS=869000000
100
101 AT+RXCHS=868700000
102
103
104 (% style="color:blue" %)**Configuration for RX group number 2:**
105
106 AT+GROUPMOD=1,2
107
108 AT+TXCHS=869000000
109
110 AT+RXCHS=868700000
111
112
113 === 2.2.3 Serial port display ===
114
115
116 [[image:image-20220602144747-1.png]]
117
118
119 [[image:image-20220602144747-2.png]]
120
121
122 (((
123 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.
124 )))
125
126
127 == 2.3 AT command ==
128
129
130 (((
131 (% style="color:#037691" %)**ATZ** (%%)**: ** Trig a reset of the MCU
132 )))
133
134 (((
135 (% style="color:#037691" %)**AT+FDR** (%%)**:**  Reset Parameters to Factory Default, Keys Reserve
136 )))
137
138 (((
139 (% style="color:#037691" %)**AT+FCU** (%%)**:**  Get or Set the Frame Counter Uplink
140 )))
141
142 (((
143 (% style="color:#037691" %)**AT+FCD** (%%)**:**  Get or Set the Frame Counter Downlink
144 )))
145
146 (((
147 (% style="color:#037691" %)**AT+TXP** (%%)**:**  Get or Set the transmit power, the maximum is 20dBm (default is 14dBm)
148 )))
149
150 (((
151 (% style="color:#037691" %)**AT+SYNC** (%%)**:**  Get or Set the Sync word [1:0x34,0:0x12] (default is 1)
152 )))
153
154 (((
155 (% style="color:#037691" %)**AT+PMB** (%%)**:    **Get or Set the preamble (default:8)
156 )))
157
158 (((
159 (% style="color:#037691" %)**AT+TXCHS **(%%)**:** Get or Set the transmit frequency of TX (default:868700000)
160 )))
161
162 (((
163 (% style="color:#037691" %)**AT+TXSF **(%%)**:**  Get or Set the spreading factor of TX (7 to 12) (default:12)
164 )))
165
166 (((
167 (% style="color:#037691" %)**AT+RXCHS **(%%)**:** Get or Set the transmit frequency of RX (default:869000000)
168 )))
169
170 (((
171 (% style="color:#037691" %)**AT+RXSF **(%%)**:**  Get or Set the spreading factor of RX (7 to 12) (default:12)
172 )))
173
174 (((
175 (% style="color:#037691" %)**AT+BW **(%%)**:       **Get or Set the bandwidth [0:125khz,1:250khz,2:500khz] (default:0)
176 )))
177
178 (((
179 (% 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)
180 )))
181
182 (((
183 (% style="color:#037691" %)**AT+TDC **(%%)**:**  Get or set the application data transmission interval in ms(default 10 minutes)
184 )))
185
186 (((
187 (% style="color:#037691" %)**AT+VER **(%%)**:**  Get firmware version number
188 )))
189
190 (((
191 (% style="color:#037691" %)**AT+SEND **(%%)**:   **Set Custom sent hex data
192 )))
193
194 (((
195 (% style="color:#037691" %)**AT+GROUPMOD **(%%)**: **Set or Get the grouping mode of the device (default: 0)
196 )))
197
198 (((
199 (((
200 (% 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)
201 )))
202 )))
203
204 (((
205 (% style="color:#037691" %)**AT+TRIG1 **(%%)**:**  Set or Get the DI1 pin interrupt trigger mode (default 0,0)
206 )))
207
208 (((
209 (% style="color:#037691" %)**AT+TRIG2 **(%%)**:            **Set or Get the DI2 pin interrupt trigger mode (default 0,0)
210 )))
211
212 (((
213 (% style="color:#037691" %)**AT+DI1TODO1 **(%%)**:    **Set or get the mode in which DI1 maps to DO1 (default 0)
214 )))
215
216 (((
217 (% style="color:#037691" %)**AT+DI1TORO1 **(%%)**:    **Set or get the mode in which DI1 maps to RO1(default 0)
218 )))
219
220 (((
221 (% style="color:#037691" %)**AT+DI2TODO2 **(%%)**:**  Set or get the mode in which DI2 maps to DO2(default 0)
222 )))
223
224 (((
225 (% style="color:#037691" %)**AT+DI2TORO2 **(%%)**:    **Set or get the mode in which DI2 maps to RO2(default 0)
226 )))
227
228
229 (((
230 (% style="color:blue" %)**Example 1:**
231 )))
232
233 (((
234 **AT+SEND=01020304 **will send a payload of 01020304
235 )))
236
237
238 (((
239 (% style="color:blue" %)**Example 2: **
240 )))
241
242 (((
243 **AT+TRIGx=a    **Trigger directly without triggering time
244 )))
245
246 (((
247 **AT+TRIGx=a,b**
248 )))
249
250 (((
251 **a=0:** falling edge;
252 )))
253
254 (((
255 **a=1: **rising edge;
256 )))
257
258 (((
259 **a=2:** falling edge or rising edge;
260 )))
261
262 (((
263 **b:**  triggering time in milliseconds.
264 )))
265
266 (((
267 **AT+TRIGx=2,50**  Falling edge or rising edge trigger, and the trigger time exceeds 50ms.
268 )))
269
270
271 (((
272 (% style="color:blue" %)**Example 3: **
273 )))
274
275 (((
276 **AT+DI1TODO1= maps value**
277 )))
278
279 (((
280 **AT+DI1TORO1= maps value**
281 )))
282
283 (((
284 **AT+DI2TODO2= maps value**
285 )))
286
287 (((
288 **AT+DI2TORO2= maps value**
289 )))
290
291 (((
292
293 )))
294
295 (% border="1" style="background-color:#f7faff; color:black; width:690px" %)
296 |=(% style="width: 102px;" %)(((
297 Maps value
298 )))|=(% style="width: 331px;" %)(((
299 DIx to DOx
300 )))|=(% style="width: 251px;" %)(((
301 DIx to ROx
302 )))
303 |(% style="width:102px" %)(((
304 0
305 )))|(% style="width:331px" %)(((
306 No Action
307 )))|(% style="width:251px" %)(((
308 No Action
309 )))
310 |(% style="width:102px" %)(((
311 1
312 )))|(% style="width:331px" %)(((
313 If DIx is high, control DOx to output low level, If DIx is low, control DOx to output high level
314 )))|(% style="width:251px" %)(((
315 (((
316 If DIx is high, control ROx to close,
317 )))
318
319 (((
320 if DIx is low, control ROx to open
321 )))
322 )))
323 |(% style="width:102px" %)(((
324 2
325 )))|(% style="width:331px" %)(((
326 If DIx is high, control DOx to output high level, If DIx is low, control DOx to output low level
327 )))|(% style="width:251px" %)(((
328 (((
329 If DIx is high, control ROx to open,
330 )))
331
332 (((
333 if DIx is low, control ROx to close
334 )))
335 )))
336 |(% style="width:102px" %)(((
337 3
338 )))|(% style="width:331px" %)(((
339 DOx state flip
340 )))|(% style="width:251px" %)(((
341 ROx state flip
342 )))
343
344 (((
345
346
347 (% style="color:blue" %)**Example 4: **
348 )))
349
350 (((
351 **AT+GROUPMOD=0**  Set to point to point mode
352 )))
353
354 (((
355 **AT+GROUPMOD=0,aa**  Set the TX group that controls the number of aa (The maximum value of aa is 8)
356 )))
357
358 (((
359 **AT+GROUPMOD=1,bb**  Set to the RX group controlled by the TX group, numbered bb(The maximum value of aa is 8)
360 )))
361
362 (((
363 **AT+GROUPMOD=0,2**  Set to control the TX group of the two RX groups
364 )))
365
366 (((
367 **AT+GROUPMOD=1,1**  Set the RX group numbered 1
368 )))
369
370 (((
371 **AT+GROUPMOD=1,2**  Set the RX group numbered 2
372 )))
373
374
375 === 2.3.1 TRIG command is configured in the transmit LT. (LT1)(Since firmware 1.3) ===
376
377
378 **AT+TRIGx=a          **Trigger transmit directly without triggering time
379
380 **AT+TRIGx=a,b**  Trigger transmit with triggering time threshold
381
382 **AT+TRIGx=a,b,c    **Trigger transmit with triggering time threshold, and continue to transmit every xx seconds if DI status no change.
383
384
385 **a=0:** falling edge;
386
387 **a=1:** rising edge;
388
389 **a=2:** falling edge or rising edge;
390
391 **b:**  triggering time in milliseconds.
392
393 **c:** transmit interval
394
395
396 (% 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)
397
398 **Command:**
399
400 **AT+TRIG1=2,50**  Falling edge or rising edge trigger, and the trigger time should exceed 50ms.
401
402
403 (% style="color:blue" %)**Use Case 2:  **(%%)Sync LT2 RO / DO status with LT1 every minute.
404
405 **Command:**
406
407 **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.
408
409
410 === 2.3.2 RO/DO is configured in the receiver LT (LT2)(Since firmware 1.3) ===
411
412
413 AT+DI1TODO1= maps value[,latch time]
414
415 AT+DI1TORO1= maps value[,latch time]
416
417 AT+DI2TODO2= maps value[,latch time]
418
419 AT+DI2TORO2= maps value[,latch time]
420
421
422 (% border="1" style="background-color:#f7faff; color:black; width:774px" %)
423 |(% style="width:105px" %) **Maps value**|(% style="width:415px" %)**DIx to DOx**|(% style="width:249px" %)**DIx to ROx**
424 |(% style="width:105px" %)0|(% style="width:415px" %)No Action|(% style="width:249px" %)No Action
425 |(% 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" %)(((
426 If DIx is high, control ROx to close,
427
428 if DIx is low, control ROx to open
429 )))
430 |(% 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" %)(((
431 If DIx is high, control ROx to open,
432
433 if DIx is low, control ROx to close
434 )))
435 |(% style="width:105px" %)3|(% style="width:415px" %)DOx state flip|(% style="width:249px" %)ROx state flip
436
437 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.
438
439
440 (% style="color:blue" %)**Case1**:
441
442 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.
443
444
445 (% style="color:blue" %)**Case2**:
446
447 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.
448
449
450 === 2.3.3 Save the RO/DO status during power off(Since firmware 1.3) ===
451
452
453 Enable/Disbale retain Digital Output/Relay Output after power off / Power On
454
455 **AT+DOROSAVE=0**  ~/~/ Disable Retain after power off/on
456
457 **AT+DOROSAVE=1**  ~/~/ Enable Retain after power off/on
458
459 **AT+DOROSAVE=2,a,b,c,d**  ~/~/ set DO/RO port to default state after power on.
460
461 **a: **for DO1
462
463 **b:** for DO2
464
465 **c: **for RO1
466
467 **d:** for RO2.
468
469
470 **Example:**
471
472 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.
473
474
475 === 2.3.4 Control Sleep status.(Since firmware 1.3) ===
476
477
478 DI2 can be used to set LT into sleep mode.
479
480 **AT+DI2SLEEP=1**  ~/~/  Enable DI2 as Sleep pin
481
482 **AT+DI2SLEEP=0**  ~/~/  Disable DI2 as Sleep pin
483
484 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.
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:**
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 DO1&
627 DO1 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 DO1, and the low four bits are the level of DO1 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