I live in East Coast of USA where most of the houses have basements, some are finished, some are not. Our basement is semi-finished which means proper dehumidification is not setup. In non-finished basements we need to make sure humidity does not rise too much for a long period of time which helps molds to grow. Toxic mold can irritate your eyes, your respiratory system and cause very unpleasant odors in your basement. Mold can trigger asthma attacks and cause serious problems for individuals who have weakened immune systems. So keeping basement dry is very important thing.
I have a dehumidified running all the time in basement which keeps the basement dry. But problem is, the unit shuts off when the bucket is full of water and eventually humidity goes high. I need to periodically go in the basement and make sure unit is running and empty the bucket when it's full. But sometimes I forget to check for a week or two.
SolutionI am making a device using Wio Terminal and BME680 environmental sensor which will measure temperature, humidity, indoor air quality (IAQ) and noise level. Data will be displayed on the Wio Terminal and also sent to Blynk. When humidity goes beyond pre-defined threshold ( configurable via Blynk app ), Blynk will send push notification to my phone so that I never miss to empty the bucket.
BME680 sensor can help measure indoor air quality. It's a very important data point specially for my basement as oil tank is situated in the basement along with heating unit. If there is any leakage, it will produce bad smell and IAQ would go high. In an event of this, Blynk will send me push notification.
Though Wio Terminal has nice display but it's more convenient to see the sensor data from your Blynk app. Every seconds, Wio Terminal sends data to Blynk server which is displayed on the app.
I am not going to document the steps here as there is a superb documentation already available on seeedstudio wiki.
In my project, I have used four guages, one slider, one chart and one notification widget. 4 guages are linked to 4 virtual pins.
Blynk.virtualWrite(V1, t);
Blynk.virtualWrite(V2, h);
Blynk.virtualWrite(V3, a);
Blynk.virtualWrite(V4, avg);
Humidity threshold is connected to slider which determines when to send notification
BLYNK_WRITE(V0)
{
//reads the slider value when it changes in the app
humidityThreshold = param.asInt();
}
if(h > humidityThreshold ){
if(lastNotification == 0 || (millis() - lastNotification) > 60*60*1000){
lastNotification = millis();
Blynk.notify("Basement is too humid. Check the dehumidifier");
}
}
Final Product In ActionSo, finally I 3D printed the enclosure and screwed on the basement door frame.
I am planning to use tinyML ( using Edge Impulse Studio) to analyze the audio coming from dehumidifier and classify is the unit is running or in stand by.
Follow this tutorial to get started with Edge Impulse.
If you don't know, EI is a web based tool where you can collect data, build your inference model, test your model performance and finally deploy to your microcontroller. It's free. I highly recommend you to signup your free account and tinker with it.
I have collected around 3 minutes of data. Honestly, in the basement, there is no other noise except the dehumidifier or when we have game time or movie night. So 3m is OK.
For the signal processing block, I tried both MFCC and MFE. I found better result with MFE.
Then I download Arduino library. Note - the example in the library is written for Nano BLE Sense which uses PDM module to capture sound from microphone. So you need to make some changes in your Wio code. Follow dehumifier_tinyml.ino file to hook up EI sdk with your code.
Prediction is running every seconds but we are sending data to Blynk every 10 seconds. Also prediction can be wrong sometimes, so it's better to take average and eliminate outliers.
BME680 3V3 - WIO 3V3 (1)
BME680 GND - WIO GND (9)
BME680 SDA/SDI - WIO SDA (3)
BME680 SCL/SCK - WIO SCL (5)
This project is published on PCBWay as well.
Comments