Condensation Monitor Measure the current environment condition at outside and inside and make caution or warnings related to condensation. Support UART over BLE. It works with nRF Toolbox. 結露モニタ 屋内外の環境情報を計測し、結露に関する警告あるいは注意を出力します。 nRF Toolboxと一緒に動作し、UART機能でBLE経由でメッセージを出力します。 ドキュメント https://developer.mbed.org/users/takafuminaka/notebook/information-about-my-condensation-monitor-for-mbed/

Dependencies:   AQM0802 BME280 HDC1000 VaporCondition mbed BLE_API nRF51822 BLE_Condensation_Monitor

Dependents:   BLE_Condensation_Monitor

Fork of Condensation_Monitor by Nakatafu ☆

Committer:
takafuminaka
Date:
Thu Apr 30 16:53:14 2015 +0000
Revision:
1:1cf4309871b7
Parent:
0:6434ef883399
Child:
3:8f886f74f9bb
Initial Release
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:6434ef883399 1 //**********************
yasuyuki 0:6434ef883399 2 // Hygrometer and Thermometer for mbed
yasuyuki 0:6434ef883399 3 //
yasuyuki 0:6434ef883399 4 // LPC1768 flash=512KB, ADC=12bits
yasuyuki 0:6434ef883399 5 // LPC11U35 flash=64KB, ADC=10bits
yasuyuki 0:6434ef883399 6 // Nucleo ADC=12bits
yasuyuki 0:6434ef883399 7 //
yasuyuki 0:6434ef883399 8 // (C)Copyright 2015 All rights reserved by Y.Onodera
yasuyuki 0:6434ef883399 9 // http://einstlab.web.fc2.com
yasuyuki 0:6434ef883399 10 //**********************
yasuyuki 0:6434ef883399 11 #include "mbed.h"
yasuyuki 0:6434ef883399 12 #include "HDC1000.h"
takafuminaka 1:1cf4309871b7 13 #include "BME280.h"
takafuminaka 1:1cf4309871b7 14 #include "VaporCondition.h"
takafuminaka 1:1cf4309871b7 15
takafuminaka 1:1cf4309871b7 16 #define NEED_CONSOLE_OUTPUT 1
takafuminaka 1:1cf4309871b7 17
takafuminaka 1:1cf4309871b7 18 #if NEED_CONSOLE_OUTPUT
takafuminaka 1:1cf4309871b7 19 Serial pc(USBTX, USBRX);
takafuminaka 1:1cf4309871b7 20 #define PC(...) { pc.printf(__VA_ARGS__); }
takafuminaka 1:1cf4309871b7 21 #else
takafuminaka 1:1cf4309871b7 22 #define PC(...) /* nothing */
takafuminaka 1:1cf4309871b7 23 #endif /* #if NEED_CONSOLE_OUTPUT */
takafuminaka 1:1cf4309871b7 24
yasuyuki 0:6434ef883399 25
yasuyuki 0:6434ef883399 26 #if defined(TARGET_LPC1768)
takafuminaka 1:1cf4309871b7 27 I2C i2c(p28, p27);
takafuminaka 1:1cf4309871b7 28 // BME280 sensor(p28, p27, 0x76 << 1);
takafuminaka 1:1cf4309871b7 29 #else
takafuminaka 1:1cf4309871b7 30 I2C i2c(I2C_SDA0, I2C_SCL0);
takafuminaka 1:1cf4309871b7 31 // BME280 sensor(I2C_SDA0, I2C_SCL0, 0x76 << 1);
yasuyuki 0:6434ef883399 32 #endif
yasuyuki 0:6434ef883399 33
takafuminaka 1:1cf4309871b7 34 BME280 bme280(I2C_SDA0, I2C_SCL0, 0x76 << 1);
yasuyuki 0:6434ef883399 35 HDC1000 hdc1000(i2c);
yasuyuki 0:6434ef883399 36
takafuminaka 1:1cf4309871b7 37 DigitalOut led1(LED1);
takafuminaka 1:1cf4309871b7 38 DigitalOut led2(LED2);
takafuminaka 1:1cf4309871b7 39
yasuyuki 0:6434ef883399 40 int main() {
takafuminaka 1:1cf4309871b7 41 float Tdp_o;
takafuminaka 1:1cf4309871b7 42 float Tdp_i;
takafuminaka 1:1cf4309871b7 43 int cautions;
takafuminaka 1:1cf4309871b7 44 int warnings;
takafuminaka 1:1cf4309871b7 45 int warn_wid = 20;
yasuyuki 0:6434ef883399 46
takafuminaka 1:1cf4309871b7 47 VaporCondition Inside;
takafuminaka 1:1cf4309871b7 48 VaporCondition Outside;
takafuminaka 1:1cf4309871b7 49
takafuminaka 1:1cf4309871b7 50 // LED Check
takafuminaka 1:1cf4309871b7 51 led1 = 1;
takafuminaka 1:1cf4309871b7 52 led2 = 1;
takafuminaka 1:1cf4309871b7 53 wait(10);
takafuminaka 1:1cf4309871b7 54
takafuminaka 1:1cf4309871b7 55 led1 = 0;
takafuminaka 1:1cf4309871b7 56 led2 = 0;
yasuyuki 0:6434ef883399 57
yasuyuki 0:6434ef883399 58 while(1) {
yasuyuki 0:6434ef883399 59
takafuminaka 1:1cf4309871b7 60 Inside.h = float(hdc1000.humidity())/0x10000*100;
takafuminaka 1:1cf4309871b7 61
takafuminaka 1:1cf4309871b7 62 Inside.t = float(hdc1000.temperature())/0x10000*165-40;
takafuminaka 1:1cf4309871b7 63
takafuminaka 1:1cf4309871b7 64 Outside.h = bme280.getHumidity();
takafuminaka 1:1cf4309871b7 65 Outside.t = bme280.getTemperature();
takafuminaka 1:1cf4309871b7 66
takafuminaka 1:1cf4309871b7 67 Outside.p = bme280.getPressure();
takafuminaka 1:1cf4309871b7 68 Inside.p = bme280.getPressure(); // Usually Pressures are same between inside and outside.
yasuyuki 0:6434ef883399 69
takafuminaka 1:1cf4309871b7 70 // PC("%2.2f degC, %2.2f %%\r\n", t, h);
takafuminaka 1:1cf4309871b7 71
takafuminaka 1:1cf4309871b7 72 PC("In: %2.2f degC, %2.2f %% Out: %2.2f degC, %2.2f %%, %04.2f hPa\r\n", Inside.t, Inside.h, Outside.t, Outside.h, Outside.p);
takafuminaka 1:1cf4309871b7 73 PC("Humidity Ratio [g/kg] : In %2.2f Out %2.2f \r\n", Inside.Rh(), Outside.Rh());
takafuminaka 1:1cf4309871b7 74 Tdp_o = Outside.Tdp();
takafuminaka 1:1cf4309871b7 75 Tdp_i = Inside.Tdp();
takafuminaka 1:1cf4309871b7 76 PC("Due Point Temperature [degC] : In %2.2f Out %2.2f \r\n", Tdp_o, Tdp_i);
takafuminaka 1:1cf4309871b7 77
takafuminaka 1:1cf4309871b7 78 // print catuions //
takafuminaka 1:1cf4309871b7 79 cautions = 0;
takafuminaka 1:1cf4309871b7 80 if ( Tdp_o >= Outside.t )
takafuminaka 1:1cf4309871b7 81 {
takafuminaka 1:1cf4309871b7 82 PC("Condensation at Outside\r\n");
takafuminaka 1:1cf4309871b7 83 cautions ++;
takafuminaka 1:1cf4309871b7 84 }
takafuminaka 1:1cf4309871b7 85
takafuminaka 1:1cf4309871b7 86 if ( Tdp_i >= Inside.t )
takafuminaka 1:1cf4309871b7 87 {
takafuminaka 1:1cf4309871b7 88 PC("Condensation at Inside\r\n");
takafuminaka 1:1cf4309871b7 89 cautions ++;
takafuminaka 1:1cf4309871b7 90 }
takafuminaka 1:1cf4309871b7 91
takafuminaka 1:1cf4309871b7 92 if ( Tdp_i >= Outside.t )
takafuminaka 1:1cf4309871b7 93 {
takafuminaka 1:1cf4309871b7 94 PC("Condensation at Window Inside\r\n");
takafuminaka 1:1cf4309871b7 95 cautions ++;
takafuminaka 1:1cf4309871b7 96 }
takafuminaka 1:1cf4309871b7 97
takafuminaka 1:1cf4309871b7 98 if ( Tdp_o >= Inside.t )
takafuminaka 1:1cf4309871b7 99 {
takafuminaka 1:1cf4309871b7 100 PC("Condensation at Window Outside\r\n");
takafuminaka 1:1cf4309871b7 101 cautions ++;
takafuminaka 1:1cf4309871b7 102 }
takafuminaka 1:1cf4309871b7 103
takafuminaka 1:1cf4309871b7 104 // print warnings //
takafuminaka 1:1cf4309871b7 105 warnings = 0;
takafuminaka 1:1cf4309871b7 106 if ( Tdp_o >= Outside.t - warn_wid)
takafuminaka 1:1cf4309871b7 107 {
takafuminaka 1:1cf4309871b7 108 PC("%2.2f degC to Condensation at Outside\r\n", Outside.t - Tdp_o);
takafuminaka 1:1cf4309871b7 109 warnings ++;
takafuminaka 1:1cf4309871b7 110 }
takafuminaka 1:1cf4309871b7 111
takafuminaka 1:1cf4309871b7 112 if ( Tdp_i >= Inside.t - warn_wid)
takafuminaka 1:1cf4309871b7 113 {
takafuminaka 1:1cf4309871b7 114 PC("%2.2f degC to Condensation at Inside\r\n", Inside.t - Tdp_i);
takafuminaka 1:1cf4309871b7 115 warnings ++;
takafuminaka 1:1cf4309871b7 116 }
takafuminaka 1:1cf4309871b7 117
takafuminaka 1:1cf4309871b7 118 if ( Tdp_i >= Outside.t - warn_wid)
takafuminaka 1:1cf4309871b7 119 {
takafuminaka 1:1cf4309871b7 120 PC("%2.2f degC to Condensation at Window Inside\r\n", Outside.t - Tdp_i);
takafuminaka 1:1cf4309871b7 121 warnings ++;
takafuminaka 1:1cf4309871b7 122 }
takafuminaka 1:1cf4309871b7 123
takafuminaka 1:1cf4309871b7 124 if ( Tdp_o >= Inside.t - warn_wid)
takafuminaka 1:1cf4309871b7 125 {
takafuminaka 1:1cf4309871b7 126 PC("%2.2f degC to Condensation at Window Outside\r\n", Inside.t - Tdp_o);
takafuminaka 1:1cf4309871b7 127 warnings ++;
takafuminaka 1:1cf4309871b7 128 }
takafuminaka 1:1cf4309871b7 129
takafuminaka 1:1cf4309871b7 130 if ( cautions > 0 )
takafuminaka 1:1cf4309871b7 131 {
takafuminaka 1:1cf4309871b7 132 led2 = 1;
takafuminaka 1:1cf4309871b7 133 }
takafuminaka 1:1cf4309871b7 134 else
takafuminaka 1:1cf4309871b7 135 {
takafuminaka 1:1cf4309871b7 136 led2 = 0;
takafuminaka 1:1cf4309871b7 137 }
takafuminaka 1:1cf4309871b7 138
takafuminaka 1:1cf4309871b7 139 if ( warnings > 0 )
takafuminaka 1:1cf4309871b7 140 {
takafuminaka 1:1cf4309871b7 141 led1 = 1;
takafuminaka 1:1cf4309871b7 142 }
takafuminaka 1:1cf4309871b7 143 else
takafuminaka 1:1cf4309871b7 144 {
takafuminaka 1:1cf4309871b7 145 led1 = 0;
takafuminaka 1:1cf4309871b7 146 }
takafuminaka 1:1cf4309871b7 147
takafuminaka 1:1cf4309871b7 148 PC("\r\n");
takafuminaka 1:1cf4309871b7 149 wait(10);
yasuyuki 0:6434ef883399 150 }
yasuyuki 0:6434ef883399 151
yasuyuki 0:6434ef883399 152 }