Lorawan to Pulga with GPS

Dependencies:   pulga-lorawan-drv Si1133 BME280

Committer:
brunnobbco
Date:
Thu Jan 07 13:46:09 2021 +0000
Revision:
61:225d19b4b0a9
Lorawan com GPS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brunnobbco 61:225d19b4b0a9 1
brunnobbco 61:225d19b4b0a9 2 #define SYNC1 0xB5
brunnobbco 61:225d19b4b0a9 3 #define SYNC2 0x62
brunnobbco 61:225d19b4b0a9 4
brunnobbco 61:225d19b4b0a9 5 //GPS DEclaration
brunnobbco 61:225d19b4b0a9 6 SPI spi_2(P0_5, P0_7, P0_11); // mosi, miso, sclk
brunnobbco 61:225d19b4b0a9 7 DigitalOut cs(P0_30);
brunnobbco 61:225d19b4b0a9 8 DigitalOut gps_reset(P1_2);
brunnobbco 61:225d19b4b0a9 9 DigitalOut gps_int (P0_23);
brunnobbco 61:225d19b4b0a9 10 DigitalOut gps_DSEL (P0_27);
brunnobbco 61:225d19b4b0a9 11
brunnobbco 61:225d19b4b0a9 12
brunnobbco 61:225d19b4b0a9 13
brunnobbco 61:225d19b4b0a9 14
brunnobbco 61:225d19b4b0a9 15
brunnobbco 61:225d19b4b0a9 16 typedef struct
brunnobbco 61:225d19b4b0a9 17 {
brunnobbco 61:225d19b4b0a9 18 uint8_t cls;
brunnobbco 61:225d19b4b0a9 19 uint8_t id;
brunnobbco 61:225d19b4b0a9 20 uint16_t len; //Length of the payload. Does not include cls, id, or checksum bytes
brunnobbco 61:225d19b4b0a9 21 uint8_t *payload;
brunnobbco 61:225d19b4b0a9 22 uint8_t checksumA; //Given to us from module. Checked against the rolling calculated A/B checksums.
brunnobbco 61:225d19b4b0a9 23 uint8_t checksumB;
brunnobbco 61:225d19b4b0a9 24 } gps_ubxPacket;
brunnobbco 61:225d19b4b0a9 25
brunnobbco 61:225d19b4b0a9 26 typedef struct
brunnobbco 61:225d19b4b0a9 27 {
brunnobbco 61:225d19b4b0a9 28 uint32_t iTOW=0;
brunnobbco 61:225d19b4b0a9 29 uint16_t year=0;
brunnobbco 61:225d19b4b0a9 30 uint8_t month=0;
brunnobbco 61:225d19b4b0a9 31 uint8_t day=0;
brunnobbco 61:225d19b4b0a9 32 uint8_t hour=0;
brunnobbco 61:225d19b4b0a9 33 uint8_t min=0;
brunnobbco 61:225d19b4b0a9 34 uint8_t sec=0;
brunnobbco 61:225d19b4b0a9 35 int8_t valid=0;
brunnobbco 61:225d19b4b0a9 36 uint32_t tAcc=0;
brunnobbco 61:225d19b4b0a9 37 int32_t nano=0;
brunnobbco 61:225d19b4b0a9 38 uint8_t fixtype=0;
brunnobbco 61:225d19b4b0a9 39 int8_t flags=0;
brunnobbco 61:225d19b4b0a9 40 int8_t flags2=0;
brunnobbco 61:225d19b4b0a9 41 uint8_t numSV=0;
brunnobbco 61:225d19b4b0a9 42 int32_t lon=0;
brunnobbco 61:225d19b4b0a9 43 int32_t lat=0;
brunnobbco 61:225d19b4b0a9 44 int32_t height=0;
brunnobbco 61:225d19b4b0a9 45 int32_t hMSL=0;
brunnobbco 61:225d19b4b0a9 46 uint32_t hAcc=0;
brunnobbco 61:225d19b4b0a9 47 uint32_t vAcc=0;
brunnobbco 61:225d19b4b0a9 48 int32_t velN=0;
brunnobbco 61:225d19b4b0a9 49 int32_t velE=0;
brunnobbco 61:225d19b4b0a9 50 int32_t velD=0;
brunnobbco 61:225d19b4b0a9 51 int32_t gSpeed=0;
brunnobbco 61:225d19b4b0a9 52 int32_t headMot=0;
brunnobbco 61:225d19b4b0a9 53 uint32_t sAcc=0;
brunnobbco 61:225d19b4b0a9 54 uint32_t headAcc=0;
brunnobbco 61:225d19b4b0a9 55 uint16_t pDOP=0;
brunnobbco 61:225d19b4b0a9 56 int32_t headVeh;
brunnobbco 61:225d19b4b0a9 57 int16_t magDec;
brunnobbco 61:225d19b4b0a9 58 uint16_t magAcc;
brunnobbco 61:225d19b4b0a9 59
brunnobbco 61:225d19b4b0a9 60
brunnobbco 61:225d19b4b0a9 61 } gps_navPVT;
brunnobbco 61:225d19b4b0a9 62
brunnobbco 61:225d19b4b0a9 63
brunnobbco 61:225d19b4b0a9 64 void gps_leBootMsg(){
brunnobbco 61:225d19b4b0a9 65
brunnobbco 61:225d19b4b0a9 66 #define MAXIMUM_PACKET_SIZE 60
brunnobbco 61:225d19b4b0a9 67 int packet_size;
brunnobbco 61:225d19b4b0a9 68 uint8_t packet[MAXIMUM_PACKET_SIZE];
brunnobbco 61:225d19b4b0a9 69 uint8_t value;
brunnobbco 61:225d19b4b0a9 70 int cont;
brunnobbco 61:225d19b4b0a9 71 value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 72
brunnobbco 61:225d19b4b0a9 73 while (value != '$' ){ //wait start boot msg
brunnobbco 61:225d19b4b0a9 74 value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 75 wait_ms(5);
brunnobbco 61:225d19b4b0a9 76 cont++;
brunnobbco 61:225d19b4b0a9 77 if (cont > 100){
brunnobbco 61:225d19b4b0a9 78 printf("\n no response \n");
brunnobbco 61:225d19b4b0a9 79 return;
brunnobbco 61:225d19b4b0a9 80 }
brunnobbco 61:225d19b4b0a9 81 }
brunnobbco 61:225d19b4b0a9 82 packet[0] = value;
brunnobbco 61:225d19b4b0a9 83 value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 84 for (packet_size = 1 ; packet_size <= MAXIMUM_PACKET_SIZE ;packet_size++) {
brunnobbco 61:225d19b4b0a9 85 if (value != '\n' ){
brunnobbco 61:225d19b4b0a9 86 packet [packet_size]= value;
brunnobbco 61:225d19b4b0a9 87 value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 88 }
brunnobbco 61:225d19b4b0a9 89 else {
brunnobbco 61:225d19b4b0a9 90 //lora_send_packet (packet , (uint8_t) packet_size+1); // manda atraves do lora a mensagem de boot do gps
brunnobbco 61:225d19b4b0a9 91 printf("Boot msg: %s \n", packet);
brunnobbco 61:225d19b4b0a9 92 return;
brunnobbco 61:225d19b4b0a9 93 }
brunnobbco 61:225d19b4b0a9 94
brunnobbco 61:225d19b4b0a9 95 }
brunnobbco 61:225d19b4b0a9 96
brunnobbco 61:225d19b4b0a9 97 }
brunnobbco 61:225d19b4b0a9 98
brunnobbco 61:225d19b4b0a9 99 void gps_le_envia_linha(){
brunnobbco 61:225d19b4b0a9 100
brunnobbco 61:225d19b4b0a9 101 uint8_t packet[150];
brunnobbco 61:225d19b4b0a9 102 uint8_t value;
brunnobbco 61:225d19b4b0a9 103
brunnobbco 61:225d19b4b0a9 104 for (int i=0;i < 149; i++){
brunnobbco 61:225d19b4b0a9 105 if (value == '\n'){
brunnobbco 61:225d19b4b0a9 106 //lora_send_packet (packet , (uint8_t) i);
brunnobbco 61:225d19b4b0a9 107 return;
brunnobbco 61:225d19b4b0a9 108 }
brunnobbco 61:225d19b4b0a9 109 else packet [i] =value;
brunnobbco 61:225d19b4b0a9 110 }
brunnobbco 61:225d19b4b0a9 111 //lora_send_packet (packet , (uint8_t) 99);
brunnobbco 61:225d19b4b0a9 112
brunnobbco 61:225d19b4b0a9 113 }
brunnobbco 61:225d19b4b0a9 114
brunnobbco 61:225d19b4b0a9 115
brunnobbco 61:225d19b4b0a9 116 gps_ubxPacket gps_calcula_check(gps_ubxPacket Packet) {
brunnobbco 61:225d19b4b0a9 117
brunnobbco 61:225d19b4b0a9 118 uint8_t Buffer[Packet.len + 4];
brunnobbco 61:225d19b4b0a9 119 uint8_t CK_A=0;
brunnobbco 61:225d19b4b0a9 120 uint8_t CK_B=0;
brunnobbco 61:225d19b4b0a9 121
brunnobbco 61:225d19b4b0a9 122 Buffer[0]= Packet.cls;
brunnobbco 61:225d19b4b0a9 123 Buffer[1]= Packet.id;
brunnobbco 61:225d19b4b0a9 124 Buffer[2]= Packet.len & 0xFF;
brunnobbco 61:225d19b4b0a9 125 Buffer[3]= (Packet.len >> 8)& 0xFF;;
brunnobbco 61:225d19b4b0a9 126
brunnobbco 61:225d19b4b0a9 127 //send_packet (Buffer, (uint8_t) 4 );
brunnobbco 61:225d19b4b0a9 128
brunnobbco 61:225d19b4b0a9 129 for (uint16_t i = 0; i < Packet.len; i++) {
brunnobbco 61:225d19b4b0a9 130 Buffer [i+4] = Packet.payload[i] ;
brunnobbco 61:225d19b4b0a9 131 }
brunnobbco 61:225d19b4b0a9 132
brunnobbco 61:225d19b4b0a9 133 //send_packet (Buffer, (uint8_t) Packet.len + 4 );
brunnobbco 61:225d19b4b0a9 134
brunnobbco 61:225d19b4b0a9 135 for(int i=0 ; i < Packet.len + 4 ; i++) {
brunnobbco 61:225d19b4b0a9 136 CK_A = CK_A + Buffer[i];
brunnobbco 61:225d19b4b0a9 137 CK_B = CK_B + CK_A;
brunnobbco 61:225d19b4b0a9 138 CK_A = CK_A & 0xFF;
brunnobbco 61:225d19b4b0a9 139 CK_B = CK_B & 0xFF;
brunnobbco 61:225d19b4b0a9 140 //uint8_t packet_check[5] ={Buffer[i],(uint8_t) (i+1),CK_A,CK_B,'#'};
brunnobbco 61:225d19b4b0a9 141 // send_packet (packet_check , (uint8_t) 5);
brunnobbco 61:225d19b4b0a9 142 }
brunnobbco 61:225d19b4b0a9 143
brunnobbco 61:225d19b4b0a9 144
brunnobbco 61:225d19b4b0a9 145 // uint8_t packet_check[2] ={CK_A, CK_B};
brunnobbco 61:225d19b4b0a9 146 // send_packet (packet_check , (uint8_t) 2);
brunnobbco 61:225d19b4b0a9 147
brunnobbco 61:225d19b4b0a9 148 Packet.checksumA = CK_A;
brunnobbco 61:225d19b4b0a9 149 Packet.checksumB = CK_B;
brunnobbco 61:225d19b4b0a9 150
brunnobbco 61:225d19b4b0a9 151 return Packet;
brunnobbco 61:225d19b4b0a9 152
brunnobbco 61:225d19b4b0a9 153 }
brunnobbco 61:225d19b4b0a9 154
brunnobbco 61:225d19b4b0a9 155 void send_gps_packet(gps_ubxPacket packet){
brunnobbco 61:225d19b4b0a9 156
brunnobbco 61:225d19b4b0a9 157 spi_2.write(SYNC1);
brunnobbco 61:225d19b4b0a9 158 spi_2.write(SYNC2);
brunnobbco 61:225d19b4b0a9 159 spi_2.write(packet.cls);
brunnobbco 61:225d19b4b0a9 160 spi_2.write(packet.id);
brunnobbco 61:225d19b4b0a9 161 spi_2.write(packet.len & 0xFF);
brunnobbco 61:225d19b4b0a9 162 spi_2.write((packet.len >> 8)& 0xFF);
brunnobbco 61:225d19b4b0a9 163
brunnobbco 61:225d19b4b0a9 164 for (uint16_t i = 0; i < packet.len; i++) {
brunnobbco 61:225d19b4b0a9 165 spi_2.write(packet.payload[i]);
brunnobbco 61:225d19b4b0a9 166 }
brunnobbco 61:225d19b4b0a9 167 spi_2.write(packet.checksumA);
brunnobbco 61:225d19b4b0a9 168 spi_2.write(packet.checksumB);
brunnobbco 61:225d19b4b0a9 169
brunnobbco 61:225d19b4b0a9 170 //=============imprime resposta
brunnobbco 61:225d19b4b0a9 171 wait_ms(50);
brunnobbco 61:225d19b4b0a9 172 gps_le_envia_linha();
brunnobbco 61:225d19b4b0a9 173 gps_le_envia_linha();
brunnobbco 61:225d19b4b0a9 174
brunnobbco 61:225d19b4b0a9 175 }
brunnobbco 61:225d19b4b0a9 176
brunnobbco 61:225d19b4b0a9 177 gps_navPVT le_nav_pvt () {
brunnobbco 61:225d19b4b0a9 178
brunnobbco 61:225d19b4b0a9 179 gps_navPVT Pac;
brunnobbco 61:225d19b4b0a9 180
brunnobbco 61:225d19b4b0a9 181 char state = 0;
brunnobbco 61:225d19b4b0a9 182 int cont =0;
brunnobbco 61:225d19b4b0a9 183 int numb=0;
brunnobbco 61:225d19b4b0a9 184
brunnobbco 61:225d19b4b0a9 185 while (1){ //começou mensagem
brunnobbco 61:225d19b4b0a9 186 if (cont > 100) {
brunnobbco 61:225d19b4b0a9 187 // BMX160_read_acc();
brunnobbco 61:225d19b4b0a9 188 return Pac;
brunnobbco 61:225d19b4b0a9 189 }
brunnobbco 61:225d19b4b0a9 190 if (state == 0 ){
brunnobbco 61:225d19b4b0a9 191
brunnobbco 61:225d19b4b0a9 192 if ( spi_2.write(0x00) == 0xB5){
brunnobbco 61:225d19b4b0a9 193 state =1;
brunnobbco 61:225d19b4b0a9 194 }
brunnobbco 61:225d19b4b0a9 195 else {
brunnobbco 61:225d19b4b0a9 196 cont++;
brunnobbco 61:225d19b4b0a9 197 wait_ms(40);
brunnobbco 61:225d19b4b0a9 198 }
brunnobbco 61:225d19b4b0a9 199
brunnobbco 61:225d19b4b0a9 200 }
brunnobbco 61:225d19b4b0a9 201 else if (state == 1){ // read 0xb5
brunnobbco 61:225d19b4b0a9 202 if (spi_2.write(0x00) == 0x62){
brunnobbco 61:225d19b4b0a9 203 state =2;
brunnobbco 61:225d19b4b0a9 204 //wait_ms(30);
brunnobbco 61:225d19b4b0a9 205 }
brunnobbco 61:225d19b4b0a9 206 else state =0;
brunnobbco 61:225d19b4b0a9 207 }
brunnobbco 61:225d19b4b0a9 208 else if (state == 2) {// read 0xb5 0x62
brunnobbco 61:225d19b4b0a9 209 if (spi_2.write(0x00) == 0x01){
brunnobbco 61:225d19b4b0a9 210 //printf("le_nav_pvt going to state 3");
brunnobbco 61:225d19b4b0a9 211 state =3;
brunnobbco 61:225d19b4b0a9 212 //wait_ms(30);
brunnobbco 61:225d19b4b0a9 213 }
brunnobbco 61:225d19b4b0a9 214 else state =0;
brunnobbco 61:225d19b4b0a9 215 }
brunnobbco 61:225d19b4b0a9 216 else if (state == 3) {// read 0xb5 0x62 0x01
brunnobbco 61:225d19b4b0a9 217 if (spi_2.write(0x00) == 0x07){
brunnobbco 61:225d19b4b0a9 218 state =4;
brunnobbco 61:225d19b4b0a9 219 //printf("le_nav_pvt going to state 4");
brunnobbco 61:225d19b4b0a9 220 //wait_ms(30);
brunnobbco 61:225d19b4b0a9 221 }
brunnobbco 61:225d19b4b0a9 222 else state =0;
brunnobbco 61:225d19b4b0a9 223 }
brunnobbco 61:225d19b4b0a9 224 else if (state == 4) {// read 0xb5 0x62 0x01 0x07
brunnobbco 61:225d19b4b0a9 225 if (spi_2.write(0x00) == 0x5c){
brunnobbco 61:225d19b4b0a9 226 state =5;
brunnobbco 61:225d19b4b0a9 227 //printf("le_nav_pvt going to state 5");
brunnobbco 61:225d19b4b0a9 228 //wait_ms(30);
brunnobbco 61:225d19b4b0a9 229 }
brunnobbco 61:225d19b4b0a9 230 else state =0;
brunnobbco 61:225d19b4b0a9 231 }
brunnobbco 61:225d19b4b0a9 232 else if (state == 5) {// read 0xb5 0x62 0x01 0x07 0x5c
brunnobbco 61:225d19b4b0a9 233 if (spi_2.write(0x00) == 0x00){
brunnobbco 61:225d19b4b0a9 234 state =6;
brunnobbco 61:225d19b4b0a9 235 //printf("le_nav_pvt going to state 6");
brunnobbco 61:225d19b4b0a9 236 //wait_ms(30);
brunnobbco 61:225d19b4b0a9 237 }
brunnobbco 61:225d19b4b0a9 238 else state =0;
brunnobbco 61:225d19b4b0a9 239 }
brunnobbco 61:225d19b4b0a9 240 else if (state == 6){ // read 0xb5 0x62 0x01 0x07 0x5c 0x00
brunnobbco 61:225d19b4b0a9 241 uint8_t value1,value2,value3,value4;
brunnobbco 61:225d19b4b0a9 242 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 243 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 244 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 245 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 246 Pac.iTOW = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 247
brunnobbco 61:225d19b4b0a9 248 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 249 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 250 Pac.year = (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 251
brunnobbco 61:225d19b4b0a9 252 Pac.month = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 253 Pac.day = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 254 Pac.hour = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 255 Pac.min = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 256 Pac.sec = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 257 Pac.valid = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 258
brunnobbco 61:225d19b4b0a9 259 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 260 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 261 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 262 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 263 Pac.tAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 264
brunnobbco 61:225d19b4b0a9 265 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 266 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 267 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 268 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 269 Pac.nano = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 270
brunnobbco 61:225d19b4b0a9 271 Pac.fixtype = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 272 Pac.flags = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 273 Pac.flags2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 274 Pac.numSV = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 275
brunnobbco 61:225d19b4b0a9 276 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 277 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 278 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 279 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 280 Pac.lon = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 281 lon= (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 282 //printf("Long Data %d \n ", lon);
brunnobbco 61:225d19b4b0a9 283
brunnobbco 61:225d19b4b0a9 284 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 285 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 286 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 287 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 288 Pac.lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 289 lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 290 //printf("Lat Data %d", lat);
brunnobbco 61:225d19b4b0a9 291
brunnobbco 61:225d19b4b0a9 292
brunnobbco 61:225d19b4b0a9 293 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 294 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 295 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 296 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 297 Pac.height = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 298
brunnobbco 61:225d19b4b0a9 299 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 300 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 301 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 302 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 303 Pac.hMSL = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 304
brunnobbco 61:225d19b4b0a9 305 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 306 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 307 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 308 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 309 Pac.hAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 310
brunnobbco 61:225d19b4b0a9 311 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 312 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 313 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 314 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 315 Pac.vAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 316
brunnobbco 61:225d19b4b0a9 317 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 318 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 319 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 320 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 321 Pac.velN = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 322
brunnobbco 61:225d19b4b0a9 323 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 324 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 325 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 326 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 327 Pac.velE = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 328
brunnobbco 61:225d19b4b0a9 329 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 330 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 331 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 332 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 333 Pac.velD = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 334
brunnobbco 61:225d19b4b0a9 335 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 336 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 337 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 338 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 339 Pac.gSpeed = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 340
brunnobbco 61:225d19b4b0a9 341 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 342 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 343 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 344 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 345 Pac.headMot = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 346
brunnobbco 61:225d19b4b0a9 347 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 348 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 349 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 350 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 351 Pac.sAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 352
brunnobbco 61:225d19b4b0a9 353 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 354 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 355 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 356 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 357 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 358
brunnobbco 61:225d19b4b0a9 359 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 360 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 361 Pac.pDOP = (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 362
brunnobbco 61:225d19b4b0a9 363 for (int i=0; i < 6; i++)spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 364
brunnobbco 61:225d19b4b0a9 365 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 366 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 367 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 368 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 369 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 370
brunnobbco 61:225d19b4b0a9 371 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 372 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 373 value3 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 374 value4 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 375 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 376
brunnobbco 61:225d19b4b0a9 377 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 378 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 379 Pac.magDec = (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 380
brunnobbco 61:225d19b4b0a9 381 value1 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 382 value2 = 0xff & spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 383 Pac.magAcc = (value2 << 8) + value1;
brunnobbco 61:225d19b4b0a9 384
brunnobbco 61:225d19b4b0a9 385
brunnobbco 61:225d19b4b0a9 386 return Pac;
brunnobbco 61:225d19b4b0a9 387 }
brunnobbco 61:225d19b4b0a9 388 }
brunnobbco 61:225d19b4b0a9 389 wait_ms(100);
brunnobbco 61:225d19b4b0a9 390 }
brunnobbco 61:225d19b4b0a9 391
brunnobbco 61:225d19b4b0a9 392 void send_nav_pvt (){
brunnobbco 61:225d19b4b0a9 393 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
brunnobbco 61:225d19b4b0a9 394
brunnobbco 61:225d19b4b0a9 395 //=============envia pacote nav pvt
brunnobbco 61:225d19b4b0a9 396 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
brunnobbco 61:225d19b4b0a9 397 spi_2.write(packet_nav_pvt[i]);
brunnobbco 61:225d19b4b0a9 398 wait_ms(5);
brunnobbco 61:225d19b4b0a9 399 }
brunnobbco 61:225d19b4b0a9 400
brunnobbco 61:225d19b4b0a9 401 gps_navPVT Data = le_nav_pvt();
brunnobbco 61:225d19b4b0a9 402
brunnobbco 61:225d19b4b0a9 403 uint8_t packet [100];
brunnobbco 61:225d19b4b0a9 404
brunnobbco 61:225d19b4b0a9 405 packet [0]= (Data.lon >> 24)& 0xff;
brunnobbco 61:225d19b4b0a9 406 packet [1]= (Data.lon >> 16) & 0xff ;
brunnobbco 61:225d19b4b0a9 407 packet [2]= (Data.lon >> 8) & 0xff;
brunnobbco 61:225d19b4b0a9 408 packet [3]= Data.lon & 0xff;
brunnobbco 61:225d19b4b0a9 409 packet [4]= (Data.lat >> 24)& 0xff;
brunnobbco 61:225d19b4b0a9 410 packet [5]= (Data.lat >> 16) & 0xff ;
brunnobbco 61:225d19b4b0a9 411 packet [6]= (Data.lat >> 8) & 0xff;
brunnobbco 61:225d19b4b0a9 412 packet [7]= Data.lat & 0xff;
brunnobbco 61:225d19b4b0a9 413 packet [8]= (Data.hMSL >> 24)& 0xff;
brunnobbco 61:225d19b4b0a9 414 packet [9]= (Data.hMSL >> 16) & 0xff ;
brunnobbco 61:225d19b4b0a9 415 packet [10]= (Data.hMSL >> 8) & 0xff;
brunnobbco 61:225d19b4b0a9 416 packet [11]= Data.hMSL & 0xff;
brunnobbco 61:225d19b4b0a9 417
brunnobbco 61:225d19b4b0a9 418 if (Data.lon !=0 || Data.lat !=0 ){
brunnobbco 61:225d19b4b0a9 419 //lora_send_packet (packet , (uint8_t) 12);
brunnobbco 61:225d19b4b0a9 420 }
brunnobbco 61:225d19b4b0a9 421 }
brunnobbco 61:225d19b4b0a9 422
brunnobbco 61:225d19b4b0a9 423 void send_gps_data(uint8_t *packet, uint8_t size){
brunnobbco 61:225d19b4b0a9 424 uint8_t packet_rec[size];
brunnobbco 61:225d19b4b0a9 425 for ( int i=0; i< size ; i++){
brunnobbco 61:225d19b4b0a9 426 spi_2.write(packet[i]);
brunnobbco 61:225d19b4b0a9 427
brunnobbco 61:225d19b4b0a9 428 //wait_ms(5);
brunnobbco 61:225d19b4b0a9 429 }
brunnobbco 61:225d19b4b0a9 430 //send_packet (packet_rec ,size);
brunnobbco 61:225d19b4b0a9 431 }
brunnobbco 61:225d19b4b0a9 432
brunnobbco 61:225d19b4b0a9 433 /*
brunnobbco 61:225d19b4b0a9 434 void wait_packet (uint8_t *header) {
brunnobbco 61:225d19b4b0a9 435
brunnobbco 61:225d19b4b0a9 436 char state = 0;
brunnobbco 61:225d19b4b0a9 437 int cont =0;
brunnobbco 61:225d19b4b0a9 438
brunnobbco 61:225d19b4b0a9 439 while (1){ //começou mensagem
brunnobbco 61:225d19b4b0a9 440 if (cont > 250) {
brunnobbco 61:225d19b4b0a9 441 //led2=!led2;
brunnobbco 61:225d19b4b0a9 442 return;
brunnobbco 61:225d19b4b0a9 443 }
brunnobbco 61:225d19b4b0a9 444 if (state == 0 ){
brunnobbco 61:225d19b4b0a9 445 if (spi_2.write(0x00) == header[0])
brunnobbco 61:225d19b4b0a9 446 state =1;
brunnobbco 61:225d19b4b0a9 447 else {
brunnobbco 61:225d19b4b0a9 448 cont++;
brunnobbco 61:225d19b4b0a9 449 wait_ms(10);
brunnobbco 61:225d19b4b0a9 450 }
brunnobbco 61:225d19b4b0a9 451
brunnobbco 61:225d19b4b0a9 452
brunnobbco 61:225d19b4b0a9 453 }
brunnobbco 61:225d19b4b0a9 454 else if (state == 1){ // read 0xb5
brunnobbco 61:225d19b4b0a9 455 if (spi_2.write(0x00) == header[1]){
brunnobbco 61:225d19b4b0a9 456 state =2;
brunnobbco 61:225d19b4b0a9 457 }
brunnobbco 61:225d19b4b0a9 458 else state =0;
brunnobbco 61:225d19b4b0a9 459 }
brunnobbco 61:225d19b4b0a9 460 else if (state == 2) {// read 0xb5 0x62
brunnobbco 61:225d19b4b0a9 461 if (spi_2.write(0x00) == header[2]){
brunnobbco 61:225d19b4b0a9 462 state =3;
brunnobbco 61:225d19b4b0a9 463 }
brunnobbco 61:225d19b4b0a9 464 else state =0;
brunnobbco 61:225d19b4b0a9 465 }
brunnobbco 61:225d19b4b0a9 466 else if (state == 3) {// read 0xb5 0x62 0x06
brunnobbco 61:225d19b4b0a9 467 if (spi_2.write(0x00) == header[3]){
brunnobbco 61:225d19b4b0a9 468 state =4;
brunnobbco 61:225d19b4b0a9 469 }
brunnobbco 61:225d19b4b0a9 470 else state =0;
brunnobbco 61:225d19b4b0a9 471 }
brunnobbco 61:225d19b4b0a9 472 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
brunnobbco 61:225d19b4b0a9 473
brunnobbco 61:225d19b4b0a9 474 uint8_t packet[100];
brunnobbco 61:225d19b4b0a9 475 uint8_t value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 476 uint8_t packet_size;
brunnobbco 61:225d19b4b0a9 477
brunnobbco 61:225d19b4b0a9 478 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
brunnobbco 61:225d19b4b0a9 479 if (value != '\n' ){
brunnobbco 61:225d19b4b0a9 480 packet [packet_size]= value;
brunnobbco 61:225d19b4b0a9 481 value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 482 }
brunnobbco 61:225d19b4b0a9 483 else {
brunnobbco 61:225d19b4b0a9 484 lora_send_packet (packet , (uint8_t) packet_size+1);
brunnobbco 61:225d19b4b0a9 485 //packet_size = MAXIMUM_PACKET_SIZE +1;
brunnobbco 61:225d19b4b0a9 486 return;
brunnobbco 61:225d19b4b0a9 487 }
brunnobbco 61:225d19b4b0a9 488 }
brunnobbco 61:225d19b4b0a9 489
brunnobbco 61:225d19b4b0a9 490 }
brunnobbco 61:225d19b4b0a9 491 }
brunnobbco 61:225d19b4b0a9 492 }*/
brunnobbco 61:225d19b4b0a9 493
brunnobbco 61:225d19b4b0a9 494 void wait_packet_byte (uint8_t *header, uint8_t byte) {
brunnobbco 61:225d19b4b0a9 495
brunnobbco 61:225d19b4b0a9 496 char state = 0;
brunnobbco 61:225d19b4b0a9 497 int cont =0;
brunnobbco 61:225d19b4b0a9 498
brunnobbco 61:225d19b4b0a9 499 while (1){ //começou mensagem
brunnobbco 61:225d19b4b0a9 500 if (cont > 250) {
brunnobbco 61:225d19b4b0a9 501 //led2=!led2;
brunnobbco 61:225d19b4b0a9 502 return;
brunnobbco 61:225d19b4b0a9 503 }
brunnobbco 61:225d19b4b0a9 504 if (state == 0 ){
brunnobbco 61:225d19b4b0a9 505 if (spi_2.write(0x00) == header[0])
brunnobbco 61:225d19b4b0a9 506 state =1;
brunnobbco 61:225d19b4b0a9 507 else {
brunnobbco 61:225d19b4b0a9 508 cont++;
brunnobbco 61:225d19b4b0a9 509 wait_ms(10);
brunnobbco 61:225d19b4b0a9 510 }
brunnobbco 61:225d19b4b0a9 511
brunnobbco 61:225d19b4b0a9 512
brunnobbco 61:225d19b4b0a9 513 }
brunnobbco 61:225d19b4b0a9 514 else if (state == 1){ // read 0xb5
brunnobbco 61:225d19b4b0a9 515 if (spi_2.write(0x00) == header[1]){
brunnobbco 61:225d19b4b0a9 516 state =2;
brunnobbco 61:225d19b4b0a9 517 }
brunnobbco 61:225d19b4b0a9 518 else state =0;
brunnobbco 61:225d19b4b0a9 519 }
brunnobbco 61:225d19b4b0a9 520 else if (state == 2) {// read 0xb5 0x62
brunnobbco 61:225d19b4b0a9 521 if (spi_2.write(0x00) == header[2]){
brunnobbco 61:225d19b4b0a9 522 state =3;
brunnobbco 61:225d19b4b0a9 523 }
brunnobbco 61:225d19b4b0a9 524 else state =0;
brunnobbco 61:225d19b4b0a9 525 }
brunnobbco 61:225d19b4b0a9 526 else if (state == 3) {// read 0xb5 0x62 0x06
brunnobbco 61:225d19b4b0a9 527 if (spi_2.write(0x00) == header[3]){
brunnobbco 61:225d19b4b0a9 528 state =4;
brunnobbco 61:225d19b4b0a9 529 }
brunnobbco 61:225d19b4b0a9 530 else state =0;
brunnobbco 61:225d19b4b0a9 531 }
brunnobbco 61:225d19b4b0a9 532 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
brunnobbco 61:225d19b4b0a9 533
brunnobbco 61:225d19b4b0a9 534 if (byte == 0){//mostrar todo o pacote
brunnobbco 61:225d19b4b0a9 535 uint8_t packet[100];
brunnobbco 61:225d19b4b0a9 536 uint8_t value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 537 uint8_t packet_size;
brunnobbco 61:225d19b4b0a9 538
brunnobbco 61:225d19b4b0a9 539 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
brunnobbco 61:225d19b4b0a9 540 if (value != '\n' ){
brunnobbco 61:225d19b4b0a9 541 packet [packet_size]= value;
brunnobbco 61:225d19b4b0a9 542 value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 543 }
brunnobbco 61:225d19b4b0a9 544 else {
brunnobbco 61:225d19b4b0a9 545 //lora_send_packet (packet , (uint8_t) packet_size+1);
brunnobbco 61:225d19b4b0a9 546 //packet_size = MAXIMUM_PACKET_SIZE +1;
brunnobbco 61:225d19b4b0a9 547 return;
brunnobbco 61:225d19b4b0a9 548 }
brunnobbco 61:225d19b4b0a9 549 }//fim for
brunnobbco 61:225d19b4b0a9 550 }//fim if byte
brunnobbco 61:225d19b4b0a9 551
brunnobbco 61:225d19b4b0a9 552 else {//mostrar apenas um byte
brunnobbco 61:225d19b4b0a9 553
brunnobbco 61:225d19b4b0a9 554
brunnobbco 61:225d19b4b0a9 555 for (int i = 0 ; i < byte-1 ;i++)
brunnobbco 61:225d19b4b0a9 556 spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 557
brunnobbco 61:225d19b4b0a9 558 uint8_t packet[]={(uint8_t)99,(uint8_t)spi_2.write(0x00)};
brunnobbco 61:225d19b4b0a9 559 //lora_send_packet (packet , (uint8_t) 2);
brunnobbco 61:225d19b4b0a9 560
brunnobbco 61:225d19b4b0a9 561
brunnobbco 61:225d19b4b0a9 562 for (int i = 0 ; i < 100 ;i++)
brunnobbco 61:225d19b4b0a9 563 if (spi_2.write(0x00) == '\n')
brunnobbco 61:225d19b4b0a9 564 return;
brunnobbco 61:225d19b4b0a9 565
brunnobbco 61:225d19b4b0a9 566 return;
brunnobbco 61:225d19b4b0a9 567
brunnobbco 61:225d19b4b0a9 568 }//fim else byte
brunnobbco 61:225d19b4b0a9 569
brunnobbco 61:225d19b4b0a9 570 }
brunnobbco 61:225d19b4b0a9 571
brunnobbco 61:225d19b4b0a9 572 }
brunnobbco 61:225d19b4b0a9 573
brunnobbco 61:225d19b4b0a9 574 }
brunnobbco 61:225d19b4b0a9 575
brunnobbco 61:225d19b4b0a9 576
brunnobbco 61:225d19b4b0a9 577 void gps_wait_same_packet () {
brunnobbco 61:225d19b4b0a9 578
brunnobbco 61:225d19b4b0a9 579 char state = 0;
brunnobbco 61:225d19b4b0a9 580 int cont =0;
brunnobbco 61:225d19b4b0a9 581
brunnobbco 61:225d19b4b0a9 582 while (1){ //começou mensagem
brunnobbco 61:225d19b4b0a9 583 if (cont > 250) {
brunnobbco 61:225d19b4b0a9 584 //led2=!led2;
brunnobbco 61:225d19b4b0a9 585 return;
brunnobbco 61:225d19b4b0a9 586 }
brunnobbco 61:225d19b4b0a9 587 if (state == 0 ){
brunnobbco 61:225d19b4b0a9 588 if (spi_2.write(0x00) == 0xb5)
brunnobbco 61:225d19b4b0a9 589 state =1;
brunnobbco 61:225d19b4b0a9 590 else {
brunnobbco 61:225d19b4b0a9 591 cont++;
brunnobbco 61:225d19b4b0a9 592 wait_ms(10);
brunnobbco 61:225d19b4b0a9 593 }
brunnobbco 61:225d19b4b0a9 594
brunnobbco 61:225d19b4b0a9 595
brunnobbco 61:225d19b4b0a9 596 }
brunnobbco 61:225d19b4b0a9 597 else if (state == 1){ // read 0xb5
brunnobbco 61:225d19b4b0a9 598 if (spi_2.write(0x00) == 0x62){
brunnobbco 61:225d19b4b0a9 599 state =2;
brunnobbco 61:225d19b4b0a9 600 }
brunnobbco 61:225d19b4b0a9 601 else state =0;
brunnobbco 61:225d19b4b0a9 602 }
brunnobbco 61:225d19b4b0a9 603 else if (state == 2){
brunnobbco 61:225d19b4b0a9 604 uint8_t packet[200];
brunnobbco 61:225d19b4b0a9 605 uint8_t value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 606 uint8_t packet_size;
brunnobbco 61:225d19b4b0a9 607
brunnobbco 61:225d19b4b0a9 608 for (packet_size = 0 ; packet_size < 200 ;packet_size++) {
brunnobbco 61:225d19b4b0a9 609 if (value != '\n' ){
brunnobbco 61:225d19b4b0a9 610 packet [packet_size]= value;
brunnobbco 61:225d19b4b0a9 611 value = spi_2.write(0x00);
brunnobbco 61:225d19b4b0a9 612 }
brunnobbco 61:225d19b4b0a9 613 else {
brunnobbco 61:225d19b4b0a9 614 //lora_send_packet (packet , (uint8_t) packet_size+1);
brunnobbco 61:225d19b4b0a9 615 //packet_size = MAXIMUM_PACKET_SIZE +1;
brunnobbco 61:225d19b4b0a9 616 return;
brunnobbco 61:225d19b4b0a9 617 }
brunnobbco 61:225d19b4b0a9 618
brunnobbco 61:225d19b4b0a9 619 }//fim for
brunnobbco 61:225d19b4b0a9 620 // lora_send_packet (packet , 200);
brunnobbco 61:225d19b4b0a9 621 }
brunnobbco 61:225d19b4b0a9 622 }
brunnobbco 61:225d19b4b0a9 623 }
brunnobbco 61:225d19b4b0a9 624
brunnobbco 61:225d19b4b0a9 625 void gps_config_gnss (){
brunnobbco 61:225d19b4b0a9 626
brunnobbco 61:225d19b4b0a9 627 uint8_t packet_cfg_gnss[] = {
brunnobbco 61:225d19b4b0a9 628 0xB5, 0x62, // Header
brunnobbco 61:225d19b4b0a9 629 0x03, 0x3E, // Class ID = CFG, Msg ID = UBX-CFG-GNSS
brunnobbco 61:225d19b4b0a9 630 0x3C, 0x00, // Payload Length = 60 bytes
brunnobbco 61:225d19b4b0a9 631 0x00, 0x00, 0x20, 0x07, // msgVer=0, numTrkChHw=32, numTrkChUse=32, numConfigBlocks=7
brunnobbco 61:225d19b4b0a9 632 0x00, 0x08, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, // gnssId=0 (GPS), resTrkCh=8, maxTrkCh=12, ENABLE
brunnobbco 61:225d19b4b0a9 633 0x01, 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=1 (SBAS), resTrkCh=1, maxTrkCh=2, ENABLE
brunnobbco 61:225d19b4b0a9 634 0x02, 0x04, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=2 (Galileo), resTrkCh=4, maxTrkCh=10, ENABLE
brunnobbco 61:225d19b4b0a9 635 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=3 (BeiDou), resTrkCh=4, maxTrkCh=8, DISABLE
brunnobbco 61:225d19b4b0a9 636 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=4 (IMES), resTrkCh=0, maxTrkCh=8, DISABLE
brunnobbco 61:225d19b4b0a9 637 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=5 (QZSS), resTrkCh=0, maxTrkCh=3, DISABLE
brunnobbco 61:225d19b4b0a9 638 0x06, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=6 (GLONASS), resTrkCh=4, maxTrkCh=8, ENABLE
brunnobbco 61:225d19b4b0a9 639 0x00, 0x00 //checksums A &amp; B
brunnobbco 61:225d19b4b0a9 640 };
brunnobbco 61:225d19b4b0a9 641 uint8_t pos_ck = sizeof(packet_cfg_gnss)-2;
brunnobbco 61:225d19b4b0a9 642 printf("gnss config finish");
brunnobbco 61:225d19b4b0a9 643 uint8_t ubxi;
brunnobbco 61:225d19b4b0a9 644 //calcula checksum
brunnobbco 61:225d19b4b0a9 645 for (ubxi=2; ubxi<pos_ck ; ubxi++) {
brunnobbco 61:225d19b4b0a9 646 packet_cfg_gnss[pos_ck] = packet_cfg_gnss[pos_ck] + packet_cfg_gnss[ubxi];
brunnobbco 61:225d19b4b0a9 647 packet_cfg_gnss[pos_ck+1] = packet_cfg_gnss[pos_ck+1] + packet_cfg_gnss[pos_ck];
brunnobbco 61:225d19b4b0a9 648 }
brunnobbco 61:225d19b4b0a9 649
brunnobbco 61:225d19b4b0a9 650 }
brunnobbco 61:225d19b4b0a9 651
brunnobbco 61:225d19b4b0a9 652
brunnobbco 61:225d19b4b0a9 653 void gps_print_local (){
brunnobbco 61:225d19b4b0a9 654 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
brunnobbco 61:225d19b4b0a9 655
brunnobbco 61:225d19b4b0a9 656 //=============envia pacote nav pvt
brunnobbco 61:225d19b4b0a9 657 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
brunnobbco 61:225d19b4b0a9 658 spi_2.write(packet_nav_pvt[i]);
brunnobbco 61:225d19b4b0a9 659 wait_ms(20);
brunnobbco 61:225d19b4b0a9 660 }
brunnobbco 61:225d19b4b0a9 661
brunnobbco 61:225d19b4b0a9 662 gps_navPVT Data = le_nav_pvt();
brunnobbco 61:225d19b4b0a9 663
brunnobbco 61:225d19b4b0a9 664 //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon );
brunnobbco 61:225d19b4b0a9 665 //lat=Data.lat;
brunnobbco 61:225d19b4b0a9 666 //lon=Data.lon;
brunnobbco 61:225d19b4b0a9 667 }
brunnobbco 61:225d19b4b0a9 668
brunnobbco 61:225d19b4b0a9 669 void gps_config (){
brunnobbco 61:225d19b4b0a9 670 gps_DSEL = 0;
brunnobbco 61:225d19b4b0a9 671 //spi gps configuration
brunnobbco 61:225d19b4b0a9 672 spi_2.format(8,0);
brunnobbco 61:225d19b4b0a9 673 spi_2.frequency(1000000); //1MHz
brunnobbco 61:225d19b4b0a9 674 cs=1;
brunnobbco 61:225d19b4b0a9 675 wait(0.1);
brunnobbco 61:225d19b4b0a9 676 cs=0;
brunnobbco 61:225d19b4b0a9 677 wait(0.1);
brunnobbco 61:225d19b4b0a9 678
brunnobbco 61:225d19b4b0a9 679 gps_int = 0;
brunnobbco 61:225d19b4b0a9 680
brunnobbco 61:225d19b4b0a9 681 //gps reset
brunnobbco 61:225d19b4b0a9 682 gps_reset = 1;
brunnobbco 61:225d19b4b0a9 683 wait_ms(50);
brunnobbco 61:225d19b4b0a9 684 //gps_reset = 0;
brunnobbco 61:225d19b4b0a9 685 //wait(1.5);
brunnobbco 61:225d19b4b0a9 686 }
brunnobbco 61:225d19b4b0a9 687