GPS to Pulga

Dependencies:   Si1133 BME280

Committer:
pancotinho
Date:
Fri Jan 03 09:28:20 2020 +0000
Revision:
24:595155aa83c3
Parent:
23:7f1c9c1a4c57
Child:
25:ecdee9ef9939
Working sensors, GPS, BLE, Lorawan (w/ Buffering)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pancotinho 23:7f1c9c1a4c57 1 /***GENERAL INCLUDES***/
pancotinho 23:7f1c9c1a4c57 2
pancotinho 23:7f1c9c1a4c57 3 //MBed Includes
pancotinho 23:7f1c9c1a4c57 4
pancotinho 23:7f1c9c1a4c57 5 #include <events/mbed_events.h>
pancotinho 23:7f1c9c1a4c57 6 #include <stdio.h>
pancotinho 23:7f1c9c1a4c57 7 #include "mbed.h"
pancotinho 23:7f1c9c1a4c57 8 /***Definições do Arquétipo***/
pancotinho 23:7f1c9c1a4c57 9
pancotinho 24:595155aa83c3 10 int comm=2; // Selecionar: 0 para nenhum, 1 para BLE, 2 para Lora ou 3 para Lorawan
pancotinho 23:7f1c9c1a4c57 11 int sensors=0; // Selecionar: 0 para nenhum, 1 para sensor ambiental, 2 para sensor de luz, 3 para sensor de movimento.
pancotinho 23:7f1c9c1a4c57 12 int peripherals=0; // Selecionar: 0 para nenhum, 1 para GPS
pancotinho 23:7f1c9c1a4c57 13
pancotinho 23:7f1c9c1a4c57 14 /***Global Variables***/
pancotinho 23:7f1c9c1a4c57 15
pancotinho 24:595155aa83c3 16 float sensor_get_0 = 0;
pancotinho 24:595155aa83c3 17 float sensor_get_1 = 0;
pancotinho 24:595155aa83c3 18 float sensor_get_2 = 0;
pancotinho 24:595155aa83c3 19 float sensor_get_3 = 0;
pancotinho 24:595155aa83c3 20 float sensor_get_4 = 0;
pancotinho 24:595155aa83c3 21
pancotinho 23:7f1c9c1a4c57 22 uint32_t sens00 = 0;
pancotinho 23:7f1c9c1a4c57 23 uint32_t sens01 = 0;
pancotinho 23:7f1c9c1a4c57 24 uint32_t sens02 = 0;
pancotinho 23:7f1c9c1a4c57 25 int cont=0;
pancotinho 23:7f1c9c1a4c57 26 int read_sens=0;
pancotinho 24:595155aa83c3 27 int lat=0;
pancotinho 24:595155aa83c3 28 int lon=0;
pancotinho 24:595155aa83c3 29 int latitude=0;
pancotinho 24:595155aa83c3 30 int longitude=0;
pancotinho 23:7f1c9c1a4c57 31
pancotinho 23:7f1c9c1a4c57 32
pancotinho 23:7f1c9c1a4c57 33 /***SPECIFIC INCLUDES***/
pancotinho 23:7f1c9c1a4c57 34
pancotinho 23:7f1c9c1a4c57 35 //BLE Includes
pancotinho 23:7f1c9c1a4c57 36
pancotinho 24:595155aa83c3 37
pancotinho 23:7f1c9c1a4c57 38 #include "platform/Callback.h"
pancotinho 23:7f1c9c1a4c57 39 #include "events/EventQueue.h"
pancotinho 23:7f1c9c1a4c57 40 #include "platform/NonCopyable.h"
pancotinho 23:7f1c9c1a4c57 41
pancotinho 23:7f1c9c1a4c57 42 #include "ble/BLE.h"
pancotinho 23:7f1c9c1a4c57 43 #include "ble/Gap.h"
pancotinho 23:7f1c9c1a4c57 44 #include "ble/GattClient.h"
pancotinho 23:7f1c9c1a4c57 45 #include "ble/GapAdvertisingParams.h"
pancotinho 23:7f1c9c1a4c57 46 #include "ble/GapAdvertisingData.h"
pancotinho 23:7f1c9c1a4c57 47 #include "ble/GattServer.h"
pancotinho 23:7f1c9c1a4c57 48 #include "BLEProcess.h"
pancotinho 23:7f1c9c1a4c57 49
pancotinho 24:595155aa83c3 50
pancotinho 24:595155aa83c3 51
pancotinho 24:595155aa83c3 52 //Lorawan Includes
pancotinho 24:595155aa83c3 53
pancotinho 24:595155aa83c3 54 #include "lorawan/LoRaWANInterface.h"
pancotinho 24:595155aa83c3 55 #include "lorawan/system/lorawan_data_structures.h"
pancotinho 24:595155aa83c3 56 #include "trace_helper.h"
pancotinho 24:595155aa83c3 57 #include "lora_radio_helper.h"
pancotinho 24:595155aa83c3 58
pancotinho 24:595155aa83c3 59 DigitalOut led1(P1_13);
pancotinho 24:595155aa83c3 60 InterruptIn button1(P1_11);
pancotinho 24:595155aa83c3 61
pancotinho 23:7f1c9c1a4c57 62 //Sensors Includes
pancotinho 23:7f1c9c1a4c57 63
pancotinho 23:7f1c9c1a4c57 64 #include "BME280.h"
pancotinho 23:7f1c9c1a4c57 65 #include "Si1133.h"
pancotinho 23:7f1c9c1a4c57 66 #include "BMX160.txt"
pancotinho 24:595155aa83c3 67 #include "gps.txt"
pancotinho 23:7f1c9c1a4c57 68
pancotinho 23:7f1c9c1a4c57 69 /***DEFINES***/
pancotinho 23:7f1c9c1a4c57 70
pancotinho 23:7f1c9c1a4c57 71 //Sensors and Peripherals
pancotinho 24:595155aa83c3 72
pancotinho 24:595155aa83c3 73 BME280 sensor_amb(P0_13, P0_15, 0x77 << 1);
pancotinho 23:7f1c9c1a4c57 74 Si1133 sensor_light(P0_13, P0_15);
pancotinho 23:7f1c9c1a4c57 75
pancotinho 23:7f1c9c1a4c57 76
pancotinho 23:7f1c9c1a4c57 77
pancotinho 23:7f1c9c1a4c57 78
pancotinho 23:7f1c9c1a4c57 79 /***Functions***/
pancotinho 23:7f1c9c1a4c57 80
pancotinho 23:7f1c9c1a4c57 81
pancotinho 23:7f1c9c1a4c57 82
pancotinho 23:7f1c9c1a4c57 83 void Sensor_Read(int sens){
pancotinho 23:7f1c9c1a4c57 84
pancotinho 23:7f1c9c1a4c57 85 if (sens==1) {
pancotinho 23:7f1c9c1a4c57 86 sensor_amb.initialize();
pancotinho 24:595155aa83c3 87 sensor_get_0 = sensor_amb.getTemperature();
pancotinho 23:7f1c9c1a4c57 88
pancotinho 24:595155aa83c3 89 //if (comm==1){
pancotinho 24:595155aa83c3 90 sens00 = sensor_get_0;
pancotinho 23:7f1c9c1a4c57 91 sens00 = (sens00 < 0 ? 0 : sens00);
pancotinho 23:7f1c9c1a4c57 92 sens00 = (sens00 > 255 ? 255 : sens00);
pancotinho 23:7f1c9c1a4c57 93 printf("Temp = %u\n", sens00);
pancotinho 24:595155aa83c3 94 // }
pancotinho 23:7f1c9c1a4c57 95
pancotinho 24:595155aa83c3 96 printf("Temp = %f\n", sensor_get_0);
pancotinho 23:7f1c9c1a4c57 97
pancotinho 23:7f1c9c1a4c57 98
pancotinho 24:595155aa83c3 99 sensor_get_1 = sensor_amb.getPressure();
pancotinho 23:7f1c9c1a4c57 100
pancotinho 23:7f1c9c1a4c57 101 if (comm==1){
pancotinho 24:595155aa83c3 102 sens01 = sensor_get_1/10;
pancotinho 23:7f1c9c1a4c57 103 sens01 = (sens01 < 0 ? 0 : sens01);
pancotinho 23:7f1c9c1a4c57 104 sens01 = (sens01 > 255 ? 255 : sens01);
pancotinho 23:7f1c9c1a4c57 105 printf("Pres = %u\n", sens01);
pancotinho 23:7f1c9c1a4c57 106 }
pancotinho 23:7f1c9c1a4c57 107
pancotinho 24:595155aa83c3 108 printf("Pres = %f\n", sensor_get_1);
pancotinho 23:7f1c9c1a4c57 109
pancotinho 23:7f1c9c1a4c57 110
pancotinho 24:595155aa83c3 111 sensor_get_2 = sensor_amb.getHumidity();
pancotinho 23:7f1c9c1a4c57 112
pancotinho 23:7f1c9c1a4c57 113
pancotinho 23:7f1c9c1a4c57 114 if (comm==1){
pancotinho 24:595155aa83c3 115 sens02 = sensor_get_2;
pancotinho 23:7f1c9c1a4c57 116 sens02 = (sens02 < 0 ? 0 : sens02);
pancotinho 23:7f1c9c1a4c57 117 sens02 = (sens02 > 255 ? 255 : sens02);
pancotinho 23:7f1c9c1a4c57 118 printf("Hum = %u\n", sens02);
pancotinho 23:7f1c9c1a4c57 119 }
pancotinho 23:7f1c9c1a4c57 120
pancotinho 24:595155aa83c3 121 printf("Hum = %f\n", sensor_get_2);
pancotinho 23:7f1c9c1a4c57 122 }
pancotinho 23:7f1c9c1a4c57 123
pancotinho 23:7f1c9c1a4c57 124 if (sens==2) {
pancotinho 23:7f1c9c1a4c57 125 if(sensor_light.open()){
pancotinho 24:595155aa83c3 126 sensor_get_3 = sensor_light.get_light_level();
pancotinho 23:7f1c9c1a4c57 127 if (comm==1){
pancotinho 24:595155aa83c3 128 sens00 = sensor_get_3;
pancotinho 23:7f1c9c1a4c57 129 sens00 = (sens00 < 0 ? 0 : sens00);
pancotinho 23:7f1c9c1a4c57 130 sens00 = (sens00 > 255 ? 255 : sens00);
pancotinho 23:7f1c9c1a4c57 131 printf("Light Level = %u\n", sens00);
pancotinho 23:7f1c9c1a4c57 132 }
pancotinho 23:7f1c9c1a4c57 133
pancotinho 24:595155aa83c3 134 printf("Light Level = %f\n", sensor_get_3);
pancotinho 23:7f1c9c1a4c57 135 }
pancotinho 23:7f1c9c1a4c57 136 }
pancotinho 23:7f1c9c1a4c57 137
pancotinho 23:7f1c9c1a4c57 138 if (sens==3) {
pancotinho 23:7f1c9c1a4c57 139 if(sensor_light.open()){
pancotinho 24:595155aa83c3 140 sensor_get_4 = sensor_light.get_uv_index();
pancotinho 23:7f1c9c1a4c57 141 if (comm==1){
pancotinho 24:595155aa83c3 142 sens01 = sensor_get_4/10;
pancotinho 23:7f1c9c1a4c57 143 sens01 = (sens01 < 0 ? 0 : sens01);
pancotinho 23:7f1c9c1a4c57 144 sens01 = (sens01 > 255 ? 255 : sens01);
pancotinho 23:7f1c9c1a4c57 145 printf("UV Index = %u\n", sens01);
pancotinho 23:7f1c9c1a4c57 146 }
pancotinho 24:595155aa83c3 147 printf("Uv Index = %f\n", sensor_get_4);
pancotinho 23:7f1c9c1a4c57 148 }
pancotinho 23:7f1c9c1a4c57 149 }
pancotinho 23:7f1c9c1a4c57 150
pancotinho 23:7f1c9c1a4c57 151 if (sens==4) {
pancotinho 23:7f1c9c1a4c57 152
pancotinho 23:7f1c9c1a4c57 153 BMX160_print();
pancotinho 23:7f1c9c1a4c57 154
pancotinho 23:7f1c9c1a4c57 155 }
pancotinho 23:7f1c9c1a4c57 156 }
pancotinho 24:595155aa83c3 157
pancotinho 23:7f1c9c1a4c57 158
pancotinho 24:595155aa83c3 159 void GPS_Read(void)
pancotinho 24:595155aa83c3 160 {
pancotinho 24:595155aa83c3 161 gps_print_local();
pancotinho 24:595155aa83c3 162 // send_nav_pvt();
pancotinho 24:595155aa83c3 163 //lon= gps_send_long ();
pancotinho 24:595155aa83c3 164 printf ("gps longitude=%d \n",lon);
pancotinho 24:595155aa83c3 165 //lat= gps_send_lat ();
pancotinho 24:595155aa83c3 166 printf ("gps latitude=%d \n",lat);
pancotinho 24:595155aa83c3 167 //if(lat!=0 && lon!=0){
pancotinho 24:595155aa83c3 168 longitude=lon;
pancotinho 24:595155aa83c3 169 latitude=lat;
pancotinho 24:595155aa83c3 170 //}
pancotinho 24:595155aa83c3 171 }
pancotinho 23:7f1c9c1a4c57 172
pancotinho 23:7f1c9c1a4c57 173 #include "BLE.txt"
pancotinho 24:595155aa83c3 174 #include "Lorawan.txt"
pancotinho 23:7f1c9c1a4c57 175
pancotinho 23:7f1c9c1a4c57 176 int Communication(int comm){
pancotinho 23:7f1c9c1a4c57 177
pancotinho 23:7f1c9c1a4c57 178 if(comm==1){
pancotinho 23:7f1c9c1a4c57 179
pancotinho 23:7f1c9c1a4c57 180 BLE &ble_interface = BLE::Instance();
pancotinho 23:7f1c9c1a4c57 181 events::EventQueue event_queue;
pancotinho 23:7f1c9c1a4c57 182 MyService demo_service;
pancotinho 23:7f1c9c1a4c57 183 BLEProcess ble_process(event_queue, ble_interface);
pancotinho 23:7f1c9c1a4c57 184 ble_process.on_init(callback(&demo_service, &MyService::start));
pancotinho 23:7f1c9c1a4c57 185 ble_process.start();
pancotinho 24:595155aa83c3 186 event_queue.dispatch_forever();
pancotinho 23:7f1c9c1a4c57 187 }
pancotinho 24:595155aa83c3 188
pancotinho 24:595155aa83c3 189 if(comm==2){
pancotinho 24:595155aa83c3 190
pancotinho 24:595155aa83c3 191 setup_trace();
pancotinho 24:595155aa83c3 192 lorawan_status_t retcode;
pancotinho 24:595155aa83c3 193
pancotinho 24:595155aa83c3 194 if (lorawan.initialize(&ev_queue) != LORAWAN_STATUS_OK) {
pancotinho 24:595155aa83c3 195 printf("\r\n LoRa initialization failed! \r\n");
pancotinho 24:595155aa83c3 196 return -1;}
pancotinho 24:595155aa83c3 197 callbacks.events = mbed::callback(lora_event_handler);
pancotinho 24:595155aa83c3 198 lorawan.add_app_callbacks(&callbacks);
pancotinho 24:595155aa83c3 199 if (lorawan.set_confirmed_msg_retries(CONFIRMED_MSG_RETRY_COUNTER)
pancotinho 24:595155aa83c3 200 != LORAWAN_STATUS_OK) {
pancotinho 24:595155aa83c3 201 return -1;}
pancotinho 24:595155aa83c3 202 if (lorawan.enable_adaptive_datarate() != LORAWAN_STATUS_OK) {
pancotinho 24:595155aa83c3 203 printf("\r\n enable_adaptive_datarate failed! \r\n");
pancotinho 24:595155aa83c3 204 return -1;}
pancotinho 24:595155aa83c3 205 retcode = lorawan.connect();
pancotinho 24:595155aa83c3 206 if (retcode == LORAWAN_STATUS_OK ||
pancotinho 24:595155aa83c3 207 retcode == LORAWAN_STATUS_CONNECT_IN_PROGRESS) {
pancotinho 24:595155aa83c3 208 } else {
pancotinho 24:595155aa83c3 209 return -1;}
pancotinho 24:595155aa83c3 210 ev_queue.dispatch_forever();
pancotinho 24:595155aa83c3 211 }
pancotinho 24:595155aa83c3 212 return 0;
pancotinho 24:595155aa83c3 213 }
pancotinho 23:7f1c9c1a4c57 214 void button1_pressed()
pancotinho 23:7f1c9c1a4c57 215 {
pancotinho 23:7f1c9c1a4c57 216 printf("Teste dos Periféricos\n");
pancotinho 23:7f1c9c1a4c57 217 Sensor_Read(1);
pancotinho 23:7f1c9c1a4c57 218 wait(0.5);
pancotinho 23:7f1c9c1a4c57 219 Sensor_Read(2);
pancotinho 23:7f1c9c1a4c57 220 wait(0.5);
pancotinho 23:7f1c9c1a4c57 221 Sensor_Read(3);
pancotinho 23:7f1c9c1a4c57 222 wait(0.5);
pancotinho 23:7f1c9c1a4c57 223 }
pancotinho 23:7f1c9c1a4c57 224
pancotinho 23:7f1c9c1a4c57 225 void button1_released()
pancotinho 23:7f1c9c1a4c57 226 {
pancotinho 23:7f1c9c1a4c57 227 led1=1;
pancotinho 23:7f1c9c1a4c57 228 wait(3);
pancotinho 23:7f1c9c1a4c57 229 led1=0;
pancotinho 23:7f1c9c1a4c57 230
pancotinho 23:7f1c9c1a4c57 231 }
pancotinho 23:7f1c9c1a4c57 232
pancotinho 23:7f1c9c1a4c57 233 int main() {
pancotinho 23:7f1c9c1a4c57 234
pancotinho 23:7f1c9c1a4c57 235 BMX160_config();
pancotinho 24:595155aa83c3 236 gps_config();
pancotinho 24:595155aa83c3 237 gps_config_gnss ();
pancotinho 23:7f1c9c1a4c57 238 //button1.fall(&button1_pressed);
pancotinho 23:7f1c9c1a4c57 239 //button1.rise(&button1_released);
pancotinho 23:7f1c9c1a4c57 240 Communication (comm);
pancotinho 23:7f1c9c1a4c57 241
pancotinho 23:7f1c9c1a4c57 242 }