Wiki source code of Add GPS Support in LG308N / LPS8v2
Version 19.1 by Kilight Cao on 2023/12/21 15:31
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | **Table of Contents:** | ||
2 | |||
3 | {{toc/}} | ||
4 | |||
5 | |||
6 | ((( | ||
7 | = 1. Introduction = | ||
8 | |||
9 | ---- | ||
10 | |||
11 | It is possible to GPS supports in LG308N-EC25 version and LPS8v2-EC25 version so device will add location info to uplink packet to LoRaWAN server. | ||
12 | ))) | ||
13 | |||
14 | |||
15 | = 2. Use Cellular Module GPS feature for LoRaWAN Timing. = | ||
16 | |||
17 | == 2.1 Configure on LG308N / LPS8N == | ||
18 | |||
19 | ((( | ||
20 | (% style="color:blue" %)**Below are the steps:** | ||
21 | ))) | ||
22 | |||
23 | ((( | ||
24 | **~1. Open the box and connect GPS antenna to GNSS port of EC25** | ||
25 | ))) | ||
26 | |||
27 | [[image:image-20220527160148-2.png]] | ||
28 | |||
29 | Connect GPS antenna | ||
30 | |||
31 | |||
32 | ((( | ||
33 | **2. modify the two files:** | ||
34 | ))) | ||
35 | |||
36 | ((( | ||
37 | /etc/chatscripts/3g.chat | ||
38 | ))) | ||
39 | |||
40 | (% class="box" %) | ||
41 | ((( | ||
42 | ABORT BUSY | ||
43 | ABORT 'NO CARRIER' | ||
44 | ABORT ERROR | ||
45 | REPORT CONNECT | ||
46 | TIMEOUT 10 | ||
47 | "" "AT&F" | ||
48 | OK "ATE1" | ||
49 | (% style="color:red" %)**OK "AT+QGPS=1" ~-~-> Add this line, so EC25 module GPS will be enable when dial up**(%%) | ||
50 | (% style="color:black" %)OK 'AT+CGDCONT=1,"IP","$USE_APN"' | ||
51 | SAY "Calling UMTS/GPRS" | ||
52 | TIMEOUT 30 | ||
53 | OK "ATD$DIALNUMBER" | ||
54 | CONNECT ' ' | ||
55 | ))) | ||
56 | |||
57 | |||
58 | ((( | ||
59 | (% style="color:red" %)**Note: **(%%)**After above settings, the GPS will be enable when dial up, if user doesn't use Cellular for Internet access, above script won't execute, in this case, user can (% style="color:red" %)run "echo AT+QGPS=1 > /dev/ttyUSB2" (%%)to (% style="color:blue" %)enable GPS /usr/bin/generate-config.sh,(%%) after configure this, in the web page, select any frequency band and save to make this take affect.** | ||
60 | ))) | ||
61 | |||
62 | |||
63 | (% class="box" %) | ||
64 | ((( | ||
65 | ((( | ||
66 | ((( | ||
67 | gen_gw_cfg() { | ||
68 | json_init | ||
69 | json_add_object gateway_conf | ||
70 | json_add_string "gateway_ID" "$gwid" | ||
71 | json_add_string "server_address" "$server" | ||
72 | json_add_int "serv_port_up" "$upp" | ||
73 | json_add_int "serv_port_down" "$dpp" | ||
74 | json_add_int "stat_interval" "$stat" | ||
75 | json_add_boolean "forward_crc_valid" 1 | ||
76 | json_add_boolean "forward_crc_error" 0 | ||
77 | ))) | ||
78 | |||
79 | ((( | ||
80 | (% style="color:red" %)**json_add_string "gps_tty_path" "/dev/ttyUSB1" ~-~-~-~--> Add this line so lora program knows to get the gps info from EC25** | ||
81 | ))) | ||
82 | |||
83 | ((( | ||
84 | (% style="color:black" %) json_close_object | ||
85 | json_dump > /etc/lora/local_conf.json(%%) | ||
86 | (% style="color:black" %)**}** | ||
87 | ))) | ||
88 | ))) | ||
89 | ))) | ||
90 | |||
91 | |||
92 | ((( | ||
93 | **3. Reboot the device and run logread -f to verify if GPS already works.** | ||
94 | ))) | ||
95 | |||
96 | (% class="box" %) | ||
97 | ((( | ||
98 | Fri Mar 6 04:08:59 2020 daemon.info lora_pkt_fwd[3016]: (% style="color:red" %)**INFO~~ GPS serial port path is configured to "/dev/ttyUSB1"**(%%) | ||
99 | Fri Mar 6 04:08:59 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ [main] TTY port /dev/ttyUSB1 open for GPS synchronization | ||
100 | Fri Mar 6 04:09:00 2020 cron.err crond[1689]: time disparity of 4301528 minutes detected | ||
101 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ sockfd=4 | ||
102 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ sockfd=5 | ||
103 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ FPort Filter: 0 | ||
104 | Fri Mar 6 04:09:00 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ DevAddrMask: 0x0 | ||
105 | Fri Mar 6 04:09:34 2020 daemon.info lora_pkt_fwd[3016]: INFO: [jit] queue is empty | ||
106 | Fri Mar 6 04:09:34 2020 daemon.info lora_pkt_fwd[3016]: STAT~~ {"stat":{"time":"2020-03-06 04:09:34 UTC"**,(% style="color:red" %)"lati":22.70627,"long":114.24277,"alti":58,(%%)** | ||
107 | (% style="color:black" %)"rxnb":0,"rxok":0,"rxfw":0,"ackr":0.0,"dwnb":0,"txnb":0}} | ||
108 | Fri Mar 6 04:09:35 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ [up] PUSH_ACK received in 293 ms | ||
109 | Fri Mar 6 04:09:35 2020 daemon.info lora_pkt_fwd[3016]: INFO~~ [down] PULL_ACK received in 596 ms | ||
110 | ))) | ||
111 | |||
112 | |||
113 | == 2.2. Configure on LPS8v2 == | ||
114 | |||
115 | ((( | ||
116 | (% style="color:blue" %)**Below are the steps:** | ||
117 | ))) | ||
118 | |||
119 | ((( | ||
120 | **~1. Open the box and connect GPS antenna to GNSS port of EC25** | ||
121 | ))) | ||
122 | |||
123 | [[image:image-20231208153214-1.png||height="426" width="590"]] | ||
124 | |||
125 | Connect GPS antenna | ||
126 | |||
127 | |||
128 | **2. modify the two files:** | ||
129 | |||
130 | /etc/rc.local | ||
131 | |||
132 | (% class="box" %) | ||
133 | ((( | ||
134 | #!/bin/sh -e | ||
135 | # | ||
136 | # rc.local | ||
137 | # | ||
138 | # This script is executed at the end of each multiuser runlevel. | ||
139 | # Make sure that the script will "exit 0" on success or any other | ||
140 | # value on error. | ||
141 | # | ||
142 | # In order to enable or disable this script just change the execution | ||
143 | # bits. | ||
144 | # | ||
145 | # By default this script does nothing. | ||
146 | |||
147 | echo 0 > /sys/class/leds/dragino\:blue\:opt/brightness | ||
148 | echo 0 > /sys/class/leds/dragino\:green\:stat/brightness | ||
149 | echo 0 > /sys/class/leds/dragino\:red\:sys/brightness | ||
150 | (% style="color:red" %)**echo AT+QGPS=1 > /dev/ttyUSB2** | ||
151 | |||
152 | |||
153 | exit 0 | ||
154 | ))) | ||
155 | |||
156 | (% style="color:red" %)**Note: **(%%) **After above settings, LPS8v2 will (% style="color:blue" %)enable GPS(%%) automatically on boot.** | ||
157 | |||
158 | |||
159 | **The user can run (% style="color:red" %)"echo AT+QGPS=1 > /dev/ttyUSB2" (%%)to manually (% style="color:blue" %)enable GPS.(%%)** | ||
160 | |||
161 | **/usr/local/dragino/generate-config.sh, after configuring this, on the web page, select any frequency band and save to make this take effect.** | ||
162 | |||
163 | (% class="box" %) | ||
164 | ((( | ||
165 | gen_gw_cfg() { | ||
166 | json_init | ||
167 | json_add_object gateway_conf | ||
168 | json_add_string "platform" "SX1$chip" | ||
169 | json_add_string "description" "Dragino LoRaWAN Gateway" | ||
170 | json_add_string "gateway_ID" "$gwid" | ||
171 | json_add_boolean "radiostream_enable" 1 | ||
172 | json_add_string "ghost_host" "localhost" | ||
173 | json_add_string "ghost_port" "1760" | ||
174 | json_add_boolean "manage_enable" 0 | ||
175 | json_add_boolean "custom_downlink" 0 | ||
176 | json_add_int "stat_interval" "30" | ||
177 | json_add_boolean "wd_enable" 1 | ||
178 | json_add_boolean "mac_decode" 0 | ||
179 | json_add_boolean "mac2file" 0 | ||
180 | json_add_boolean "mac2db" 0 | ||
181 | json_add_string "log_mask" "1111" | ||
182 | (% style="color:red" %)**json_add_string "gps_tty_path" "/dev/ttyUSB1" ~-~-~-~--> Add this line so lora program knows to get the gps info from EC25**(%%) | ||
183 | json_add_double "ref_latitude" "$latitude" | ||
184 | json_add_double "ref_longitude" "$longitude" | ||
185 | json_add_double "ref_altitude" "$altitude" | ||
186 | json_add_int "beacon_period" "0" | ||
187 | json_add_int "beacon_freq_hz" "869525000" | ||
188 | ))) | ||
189 | |||
190 | **3. Reboot the device and run journalctl -u draginofwd -f to verify if GPS already works.** | ||
191 | |||
192 | [[image:image-20231208160114-2.png||height="288" width="907"]] | ||
193 | |||
194 | |||
195 | [[image:image-20231208161058-5.png||height="548" width="965"]] | ||
196 | |||
197 | |||
198 | |||
199 | = 3. Use Cellular Module GPS feature for System Timing. = | ||
200 | |||
201 | == 3.1 Configure on LPS8v2 == | ||
202 | |||
203 |