Program to satellite, send variables of temperature, pressure, RH, GPS

Dependencies:   mbed nRF24L01P BMP180 DHT11 GPS

Committer:
JorgeGtz
Date:
Sat Nov 30 18:32:58 2019 +0000
Revision:
1:b91db48be151
Parent:
0:e8e530360fe5
Satelite

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JorgeGtz 0:e8e530360fe5 1 #include "Sensores.h"
JorgeGtz 0:e8e530360fe5 2 #include "mbed.h"
JorgeGtz 0:e8e530360fe5 3 #include "Dht11.h"
JorgeGtz 0:e8e530360fe5 4 #include "BMP180.h"
JorgeGtz 0:e8e530360fe5 5 #include "GPS.h"
JorgeGtz 0:e8e530360fe5 6 #include "nRF24L01P.h"
JorgeGtz 0:e8e530360fe5 7
JorgeGtz 0:e8e530360fe5 8
JorgeGtz 0:e8e530360fe5 9 Serial BT(Rx,Tx);
JorgeGtz 0:e8e530360fe5 10 Dht11 sensor(SENSOR);
JorgeGtz 0:e8e530360fe5 11 I2C i2c(SDA, SCL); //SDA,SCL
JorgeGtz 0:e8e530360fe5 12 BMP180 bmp180(&i2c);
JorgeGtz 0:e8e530360fe5 13 GPS ark(ARK_Rx, ARK_Tx);
JorgeGtz 0:e8e530360fe5 14 DigitalOut myled(LED);
JorgeGtz 0:e8e530360fe5 15 Ticker mTicker;
JorgeGtz 0:e8e530360fe5 16 nRF24L01P my_nrf24l01p(MOSI, MISO, SCK, CSN, CE, IRQ); // mosi, miso, sck, csn, ce, irq
JorgeGtz 0:e8e530360fe5 17
JorgeGtz 0:e8e530360fe5 18
JorgeGtz 0:e8e530360fe5 19 int Temperatura,Humedad, Presion, Altura, Lat, Long;
JorgeGtz 0:e8e530360fe5 20 float Longitud, Latitud, temp;
JorgeGtz 0:e8e530360fe5 21 long UTC,muestreo_sensores=0;;
JorgeGtz 0:e8e530360fe5 22 char hora,minuto,segundo;
JorgeGtz 0:e8e530360fe5 23 int count=0;
JorgeGtz 0:e8e530360fe5 24 int count_enviar=0;
JorgeGtz 0:e8e530360fe5 25
JorgeGtz 0:e8e530360fe5 26
JorgeGtz 0:e8e530360fe5 27
JorgeGtz 0:e8e530360fe5 28 char tab_control[TRANSFER_SIZE]={'T','H','P','A','L','D','U'};
JorgeGtz 0:e8e530360fe5 29 char valor[TRANSFER_SIZE];
JorgeGtz 0:e8e530360fe5 30 int variables[7];
JorgeGtz 0:e8e530360fe5 31
JorgeGtz 0:e8e530360fe5 32
JorgeGtz 0:e8e530360fe5 33 void ticker_callback(){
JorgeGtz 0:e8e530360fe5 34 count++;
JorgeGtz 0:e8e530360fe5 35 muestreo_sensores++;
JorgeGtz 0:e8e530360fe5 36 count_enviar++;
JorgeGtz 0:e8e530360fe5 37
JorgeGtz 0:e8e530360fe5 38 if(count>10){
JorgeGtz 0:e8e530360fe5 39 // Temperatura=sensor.getFahrenheit();
JorgeGtz 0:e8e530360fe5 40 if( ark.sample() == 1) {
JorgeGtz 0:e8e530360fe5 41 // myled=0;
JorgeGtz 0:e8e530360fe5 42 Latitud=ark.latitude;
JorgeGtz 0:e8e530360fe5 43 Longitud=ark.longitude;
JorgeGtz 0:e8e530360fe5 44 UTC=ark.utc+50000;
JorgeGtz 0:e8e530360fe5 45 Altura=ark.alt;
JorgeGtz 0:e8e530360fe5 46
JorgeGtz 0:e8e530360fe5 47 }
JorgeGtz 0:e8e530360fe5 48 // else myled=1;
JorgeGtz 0:e8e530360fe5 49 count=0;
JorgeGtz 0:e8e530360fe5 50 }
JorgeGtz 0:e8e530360fe5 51
JorgeGtz 0:e8e530360fe5 52 if(muestreo_sensores>200) {
JorgeGtz 0:e8e530360fe5 53 sensor.read();
JorgeGtz 0:e8e530360fe5 54 Humedad=sensor.getHumidity();
JorgeGtz 0:e8e530360fe5 55 muestreo_sensores=0;
JorgeGtz 0:e8e530360fe5 56 }
JorgeGtz 0:e8e530360fe5 57
JorgeGtz 0:e8e530360fe5 58 if(count_enviar>5) {
JorgeGtz 0:e8e530360fe5 59 enviar_datos();
JorgeGtz 0:e8e530360fe5 60 myled=!myled;
JorgeGtz 0:e8e530360fe5 61 count_enviar=0;
JorgeGtz 0:e8e530360fe5 62 }
JorgeGtz 0:e8e530360fe5 63
JorgeGtz 0:e8e530360fe5 64 }
JorgeGtz 0:e8e530360fe5 65
JorgeGtz 0:e8e530360fe5 66 ////////////////////////////////////////////////////////////////////////////////
JorgeGtz 0:e8e530360fe5 67 void init_serial(void){
JorgeGtz 0:e8e530360fe5 68 BT.baud(115200);
JorgeGtz 0:e8e530360fe5 69 }
JorgeGtz 0:e8e530360fe5 70
JorgeGtz 0:e8e530360fe5 71 void init_transmisor(void){
JorgeGtz 0:e8e530360fe5 72
JorgeGtz 0:e8e530360fe5 73 my_nrf24l01p.powerUp();
JorgeGtz 0:e8e530360fe5 74 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
JorgeGtz 0:e8e530360fe5 75 my_nrf24l01p.setTransmitMode();
JorgeGtz 0:e8e530360fe5 76 my_nrf24l01p.enable();
JorgeGtz 0:e8e530360fe5 77 }
JorgeGtz 0:e8e530360fe5 78
JorgeGtz 0:e8e530360fe5 79 void init_sensores(void){
JorgeGtz 0:e8e530360fe5 80 mTicker.attach_us(&ticker_callback,10000); //(funtion(),tiempo de interrupcion(seg))
JorgeGtz 0:e8e530360fe5 81 bmp180.init();
JorgeGtz 0:e8e530360fe5 82 }
JorgeGtz 0:e8e530360fe5 83
JorgeGtz 0:e8e530360fe5 84 void actualizar(void){
JorgeGtz 0:e8e530360fe5 85
JorgeGtz 0:e8e530360fe5 86 bmp180.startTemperature();
JorgeGtz 0:e8e530360fe5 87 wait_ms(5);
JorgeGtz 0:e8e530360fe5 88 if(bmp180.getTemperature(&temp) != 0) {
JorgeGtz 0:e8e530360fe5 89 // BT.printf("Error getting temperature\n");
JorgeGtz 0:e8e530360fe5 90 }
JorgeGtz 0:e8e530360fe5 91
JorgeGtz 0:e8e530360fe5 92 bmp180.startPressure(BMP180::ULTRA_LOW_POWER);
JorgeGtz 0:e8e530360fe5 93 wait_ms(10); // Wait for conversion to complete
JorgeGtz 0:e8e530360fe5 94 if(bmp180.getPressure(&Presion) != 0) {
JorgeGtz 0:e8e530360fe5 95 // BT.printf("Error getting pressure\n");
JorgeGtz 0:e8e530360fe5 96 }
JorgeGtz 0:e8e530360fe5 97
JorgeGtz 0:e8e530360fe5 98
JorgeGtz 0:e8e530360fe5 99
JorgeGtz 0:e8e530360fe5 100 }
JorgeGtz 0:e8e530360fe5 101
JorgeGtz 0:e8e530360fe5 102 void enviar_datos(void){
JorgeGtz 0:e8e530360fe5 103 presion();
JorgeGtz 0:e8e530360fe5 104 sensor_dht11();
JorgeGtz 0:e8e530360fe5 105 global();
JorgeGtz 0:e8e530360fe5 106 transmitir();
JorgeGtz 0:e8e530360fe5 107 }
JorgeGtz 0:e8e530360fe5 108
JorgeGtz 0:e8e530360fe5 109 ////////////////////////////////////////////////////////////////////////////////Enviar data
JorgeGtz 0:e8e530360fe5 110
JorgeGtz 0:e8e530360fe5 111 void presion(void){
JorgeGtz 0:e8e530360fe5 112
JorgeGtz 0:e8e530360fe5 113
JorgeGtz 0:e8e530360fe5 114 Temperatura=temp*100;
JorgeGtz 0:e8e530360fe5 115 variables[0]=Temperatura;
JorgeGtz 0:e8e530360fe5 116 variables[2]=Presion;
JorgeGtz 0:e8e530360fe5 117 /*
JorgeGtz 0:e8e530360fe5 118 sprintf(valor,"T%06d",Temperatura);
JorgeGtz 0:e8e530360fe5 119
JorgeGtz 0:e8e530360fe5 120 BT.printf(valor);
JorgeGtz 0:e8e530360fe5 121 BT.printf("\n");*/
JorgeGtz 0:e8e530360fe5 122 }
JorgeGtz 0:e8e530360fe5 123
JorgeGtz 0:e8e530360fe5 124 void sensor_dht11(void){
JorgeGtz 0:e8e530360fe5 125 variables[1]=Humedad;
JorgeGtz 0:e8e530360fe5 126 }
JorgeGtz 0:e8e530360fe5 127
JorgeGtz 0:e8e530360fe5 128 void global(void){
JorgeGtz 0:e8e530360fe5 129
JorgeGtz 0:e8e530360fe5 130 Lat=Latitud*1000;
JorgeGtz 0:e8e530360fe5 131 Long=Longitud*100;
JorgeGtz 0:e8e530360fe5 132
JorgeGtz 0:e8e530360fe5 133 variables[3]=Altura;
JorgeGtz 0:e8e530360fe5 134 variables[4]=Lat;
JorgeGtz 0:e8e530360fe5 135 variables[5]=Long;
JorgeGtz 0:e8e530360fe5 136 variables[6]=UTC;
JorgeGtz 0:e8e530360fe5 137
JorgeGtz 0:e8e530360fe5 138 }
JorgeGtz 0:e8e530360fe5 139
JorgeGtz 0:e8e530360fe5 140 ////////////////////////////////////////////////////////////////////////////////
JorgeGtz 0:e8e530360fe5 141 void transmitir(void){
JorgeGtz 0:e8e530360fe5 142 for(int i=0; i<=6; i++){
JorgeGtz 0:e8e530360fe5 143
JorgeGtz 0:e8e530360fe5 144 sprintf(valor,"%c%6d",tab_control[i],variables[i]);
JorgeGtz 0:e8e530360fe5 145
JorgeGtz 0:e8e530360fe5 146 // If the transmit buffer is full
JorgeGtz 0:e8e530360fe5 147 if ( TRANSFER_SIZE >= sizeof( valor) ) {
JorgeGtz 0:e8e530360fe5 148 BT.printf("Sending Message... ");
JorgeGtz 0:e8e530360fe5 149 // Send the transmitbuffer via the nRF24L01+
JorgeGtz 0:e8e530360fe5 150 my_nrf24l01p.write( NRF24L01P_PIPE_P0,valor, TRANSFER_SIZE );
JorgeGtz 0:e8e530360fe5 151 BT.printf("Message Sent\n");
JorgeGtz 0:e8e530360fe5 152 }
JorgeGtz 0:e8e530360fe5 153 }
JorgeGtz 0:e8e530360fe5 154 }
JorgeGtz 0:e8e530360fe5 155
JorgeGtz 0:e8e530360fe5 156
JorgeGtz 0:e8e530360fe5 157
JorgeGtz 0:e8e530360fe5 158