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:
Mon May 18 23:07:11 2015 +0000
Revision:
3:8f886f74f9bb
Parent:
1:1cf4309871b7
Child:
4:3075954b341c
Read Temperature first. It will be used for calculate other measurement.

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;
takafuminaka 3:8f886f74f9bb 57
takafuminaka 3:8f886f74f9bb 58 // i2c.frequency(100000);
yasuyuki 0:6434ef883399 59
yasuyuki 0:6434ef883399 60 while(1) {
yasuyuki 0:6434ef883399 61
takafuminaka 3:8f886f74f9bb 62 Outside.t = bme280.getTemperature();
takafuminaka 1:1cf4309871b7 63 Outside.h = bme280.getHumidity();
takafuminaka 1:1cf4309871b7 64
takafuminaka 1:1cf4309871b7 65 Outside.p = bme280.getPressure();
takafuminaka 1:1cf4309871b7 66 Inside.p = bme280.getPressure(); // Usually Pressures are same between inside and outside.
yasuyuki 0:6434ef883399 67
takafuminaka 3:8f886f74f9bb 68 Inside.t = float(hdc1000.temperature())/0x10000*165-40;
takafuminaka 3:8f886f74f9bb 69 Inside.h = float(hdc1000.humidity())/0x10000*100;
takafuminaka 3:8f886f74f9bb 70
takafuminaka 1:1cf4309871b7 71 // PC("%2.2f degC, %2.2f %%\r\n", t, h);
takafuminaka 1:1cf4309871b7 72
takafuminaka 1:1cf4309871b7 73 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 74 PC("Humidity Ratio [g/kg] : In %2.2f Out %2.2f \r\n", Inside.Rh(), Outside.Rh());
takafuminaka 1:1cf4309871b7 75 Tdp_o = Outside.Tdp();
takafuminaka 1:1cf4309871b7 76 Tdp_i = Inside.Tdp();
takafuminaka 1:1cf4309871b7 77 PC("Due Point Temperature [degC] : In %2.2f Out %2.2f \r\n", Tdp_o, Tdp_i);
takafuminaka 1:1cf4309871b7 78
takafuminaka 1:1cf4309871b7 79 // print catuions //
takafuminaka 1:1cf4309871b7 80 cautions = 0;
takafuminaka 1:1cf4309871b7 81 if ( Tdp_o >= Outside.t )
takafuminaka 1:1cf4309871b7 82 {
takafuminaka 1:1cf4309871b7 83 PC("Condensation at Outside\r\n");
takafuminaka 1:1cf4309871b7 84 cautions ++;
takafuminaka 1:1cf4309871b7 85 }
takafuminaka 1:1cf4309871b7 86
takafuminaka 1:1cf4309871b7 87 if ( Tdp_i >= Inside.t )
takafuminaka 1:1cf4309871b7 88 {
takafuminaka 1:1cf4309871b7 89 PC("Condensation at Inside\r\n");
takafuminaka 1:1cf4309871b7 90 cautions ++;
takafuminaka 1:1cf4309871b7 91 }
takafuminaka 1:1cf4309871b7 92
takafuminaka 1:1cf4309871b7 93 if ( Tdp_i >= Outside.t )
takafuminaka 1:1cf4309871b7 94 {
takafuminaka 1:1cf4309871b7 95 PC("Condensation at Window Inside\r\n");
takafuminaka 1:1cf4309871b7 96 cautions ++;
takafuminaka 1:1cf4309871b7 97 }
takafuminaka 1:1cf4309871b7 98
takafuminaka 1:1cf4309871b7 99 if ( Tdp_o >= Inside.t )
takafuminaka 1:1cf4309871b7 100 {
takafuminaka 1:1cf4309871b7 101 PC("Condensation at Window Outside\r\n");
takafuminaka 1:1cf4309871b7 102 cautions ++;
takafuminaka 1:1cf4309871b7 103 }
takafuminaka 1:1cf4309871b7 104
takafuminaka 1:1cf4309871b7 105 // print warnings //
takafuminaka 1:1cf4309871b7 106 warnings = 0;
takafuminaka 1:1cf4309871b7 107 if ( Tdp_o >= Outside.t - warn_wid)
takafuminaka 1:1cf4309871b7 108 {
takafuminaka 1:1cf4309871b7 109 PC("%2.2f degC to Condensation at Outside\r\n", Outside.t - Tdp_o);
takafuminaka 1:1cf4309871b7 110 warnings ++;
takafuminaka 1:1cf4309871b7 111 }
takafuminaka 1:1cf4309871b7 112
takafuminaka 1:1cf4309871b7 113 if ( Tdp_i >= Inside.t - warn_wid)
takafuminaka 1:1cf4309871b7 114 {
takafuminaka 1:1cf4309871b7 115 PC("%2.2f degC to Condensation at Inside\r\n", Inside.t - Tdp_i);
takafuminaka 1:1cf4309871b7 116 warnings ++;
takafuminaka 1:1cf4309871b7 117 }
takafuminaka 1:1cf4309871b7 118
takafuminaka 1:1cf4309871b7 119 if ( Tdp_i >= Outside.t - warn_wid)
takafuminaka 1:1cf4309871b7 120 {
takafuminaka 1:1cf4309871b7 121 PC("%2.2f degC to Condensation at Window Inside\r\n", Outside.t - Tdp_i);
takafuminaka 1:1cf4309871b7 122 warnings ++;
takafuminaka 1:1cf4309871b7 123 }
takafuminaka 1:1cf4309871b7 124
takafuminaka 1:1cf4309871b7 125 if ( Tdp_o >= Inside.t - warn_wid)
takafuminaka 1:1cf4309871b7 126 {
takafuminaka 1:1cf4309871b7 127 PC("%2.2f degC to Condensation at Window Outside\r\n", Inside.t - Tdp_o);
takafuminaka 1:1cf4309871b7 128 warnings ++;
takafuminaka 1:1cf4309871b7 129 }
takafuminaka 1:1cf4309871b7 130
takafuminaka 1:1cf4309871b7 131 if ( cautions > 0 )
takafuminaka 1:1cf4309871b7 132 {
takafuminaka 1:1cf4309871b7 133 led2 = 1;
takafuminaka 1:1cf4309871b7 134 }
takafuminaka 1:1cf4309871b7 135 else
takafuminaka 1:1cf4309871b7 136 {
takafuminaka 1:1cf4309871b7 137 led2 = 0;
takafuminaka 1:1cf4309871b7 138 }
takafuminaka 1:1cf4309871b7 139
takafuminaka 1:1cf4309871b7 140 if ( warnings > 0 )
takafuminaka 1:1cf4309871b7 141 {
takafuminaka 1:1cf4309871b7 142 led1 = 1;
takafuminaka 1:1cf4309871b7 143 }
takafuminaka 1:1cf4309871b7 144 else
takafuminaka 1:1cf4309871b7 145 {
takafuminaka 1:1cf4309871b7 146 led1 = 0;
takafuminaka 1:1cf4309871b7 147 }
takafuminaka 1:1cf4309871b7 148
takafuminaka 1:1cf4309871b7 149 PC("\r\n");
takafuminaka 3:8f886f74f9bb 150 wait(3);
yasuyuki 0:6434ef883399 151 }
yasuyuki 0:6434ef883399 152
yasuyuki 0:6434ef883399 153 }