![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
hg
Dependencies: LoRaTransmitter mbed BME280 SX1272Lib
Diff: main.cpp
- Revision:
- 3:4e51739d3a97
- Parent:
- 1:30ce00fbab55
--- a/main.cpp Fri May 13 15:45:57 2022 +0000 +++ b/main.cpp Sat Jun 11 14:20:20 2022 +0000 @@ -2,8 +2,9 @@ #include "main.h" #include "sx1272-hal.h" #include "debug.h" +#include "BME280.h" -#include "Grove_LCD_RGB_Backlight.h" + /* Set this flag to '1' to display debug messages on the console */ #define DEBUG_MESSAGE 1 @@ -57,14 +58,14 @@ DigitalOut led( LED1 ); #endif -Serial pc(USBTX, USBRX); // tx, rx -AnalogIn voltage(PC_5); -AnalogIn current(A1); +//Serial pc(USBTX, USBRX); // tx, rx +AnalogIn ground(A1); +BME280 sensor(I2C_SDA, I2C_SCL); Ticker measure; -Ticker send; -Grove_LCD_RGB_Backlight lcd(I2C_SDA, I2C_SCL); + -//Grove_LCD_RGB_Backlight rgbLCD(I2C_SDA, I2C_SCL); + + /* * Global variables declarations @@ -106,57 +107,27 @@ int8_t SnrValue = 0.0; //float measured_sinus = 0.0; int16_t j = 0; -float voltage_sinus, current_sinus; -volatile float Vsum = 0,Vmax =0, Vmean = 0, Imax =0, Isum = 0, Imean = 0, Ud = 0, Id = 0, cosi = 0; -volatile double P = 0, P2 = 0, S2 = 0, P1=0, S1=0; +float ground_hum, temperature, pressure, humidity; uint16_t strSize = 0; char str[BUFFER_SIZE]; -char monitor[16]="0", monitor1[16]="0"; + void meas (void) { - j++; - voltage_sinus = voltage*2200; - current_sinus = current*5; - Vsum+=voltage_sinus; - Isum+=current_sinus; - if (voltage_sinus>Vmax) - Vmax=voltage_sinus; - if (current_sinus>Imax) - Imax=current_sinus; - - P=P+(((voltage_sinus-Vmean)*(current_sinus-Imean))*(0.0002/3600000)); - P2=P2+((voltage_sinus-Vmean)*(current_sinus-Imean)); - if((((voltage_sinus-Vmean)*(current_sinus-Imean))*(0.0002/3600000))>0) - S2=S2+((voltage_sinus-Vmean)*(current_sinus-Imean)); + ground_hum = ground; + printf("Ground humidity is %5.2f%%\n\r", ground_hum*100); + printf("%2.2f degC, %04.2f hPa, %2.2f %%\n\r", temperature, pressure, humidity); + strSize = sprintf ( str, "%5.2f%%, %5.2f degC, %5.2f hPa, %5.2f %%", ground_hum*100, temperature, pressure, humidity); + State = TX; - - - if (j>=300) - { - j = 0; - Vmean=Vsum/(300); - Imean = Isum/(300); - P1=P2/300; S1=S2/300; - Ud=(Vmax-Vmean)/1.41; - Id=(Imax-Imean)/1.41; - Vmax = 0; Imax = 0; - - cosi = P2/S2; - P2=0; S2=0; - } + } -void transmit (void) -{ - strSize = sprintf ( str, "W=%10.4fkWh, cos fi=%5.4f, P1=%5.4f, S1=%5.4f", P, cosi, P2, S2); - State = TX; - -} + @@ -242,25 +213,14 @@ - measure.attach_us(&meas, 200); - send.attach(&transmit, 30); + measure.attach(&meas, 5); while( 1 ) { - lcd.setRGB(0, 255, 0); - - - sprintf(monitor, "U=%3.0fV, I=%3.2fA", Ud, Id); - sprintf(monitor1, "P=%8.2f kWh", P); - // Print a message to the LCD. - lcd.locate(0, 0); - lcd.print(monitor); - lcd.locate(0, 1); - lcd.print(monitor1); switch( State ) { @@ -281,6 +241,7 @@ State = LOWPOWER; break; case RX_ERROR: + Radio.Rx( RX_TIMEOUT_VALUE ); State = LOWPOWER; break; case TX_TIMEOUT: @@ -293,7 +254,10 @@ State = LOWPOWER; break; } - + temperature = sensor.getTemperature(); + pressure = sensor.getPressure(); + humidity = sensor.getHumidity(); + wait(5); } }