聚丰项目 > 便携抽湿加湿器
1. 便携。主控模块总体重量不超过300g。 2.多功能。通过更换模块,可以实现给室内空气抽湿加湿的功能。 3.便于维修,拓展。各模块之间耦合度低,通过更换不同的模块部分,为后续开发维修留下了余地。 4.可以通过手机控制参数,实现个体化定制。
汪家州
分享汪家州
团队成员
汪家州 代码+硬件
此款加湿抽湿器主要有6个模块
加湿模块
rc震荡电路+108k微孔雾化片构成+棉棒+棉棒外壳。只需给rc震荡电路提供5v电源即可工作。
抽湿模块
半导体制冷片+散热片+导热硅胶+散热扇(可加可不加)。只需给半导体制冷片提供5v电源即可工作。
arduino+继电器控制模块
arduino uno 开发板 + 继电器。负责逻辑控制,通过判断湿度来控制继电器的吸合,从而控制加湿模块与抽湿模块。
lcd液晶显示模块
现成的模块,负责把湿度设定值与当前湿度值显示出来
esp8266 wifi透传模块
现成的模块,负责把手机端发送的湿度设定值等参数传送给arduino。
HS300X传感器模块
IDT厂家出的温湿度传感器,通过IIC 将采集到的环境温湿度数据传给arduino。
电源
可以使用充电宝或者USB插槽供电。
#include<LiquidCrystal.h>
#include<Wire.h>
#include<WiFi.h>
#include<SoftwareSerial.h>
bool g_getDataSuccess = false;
bool g_startMeasure = false;
int relayPin = A2;
static int setHumi = 78;
// wifi
SoftwareSerial espSerial(A0, A1);
LiquidCrystal lcd(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); // rs=2,d7=12
// 湿度数据结构
static struct SMeasureData
{
int Humidity;
int humi_h;
int humi_l;
bool Init()
{
Humidity = 0;
humi_h = 0;
humi_l = 0;
}
} Mdata;
void setup()
{
// put your setup code here, to run once:
//I2C
Wire.begin();
// 液晶显示屏
lcd.begin(16, 2);
//
Serial.begin(9600);
espSerial.begin(115200);
pinMode(relayPin, OUTPUT);
}
// 以下 获取湿度值部分开始
bool StartMeasure(void)
{
// 通知传感器开始测量
Wire.beginTransmission(0x44);// 传感器地址44hex末尾+0
Wire.endTransmission();
delay(1000);
g_startMeasure = true;
return g_startMeasure;
}
bool DataFetch(void)
{
Mdata.Init();
Wire.requestFrom(0x44, 2); // 获取湿度数据
bool getHigh = true;
while (Wire.available())
{
if ( getHigh)
{
Mdata.humi_h = Wire.read(); // Humidity Data [15:8]
getHigh = false;
}
else
{
Mdata.humi_l = Wire.read(); // Humidity Data [7:0]
getHigh = true;
}
}
Mdata.Humidity = (Mdata.humi_h << 8) | Mdata.humi_l; // 拼接完整数据
delay(1000);
g_getDataSuccess = true;
return g_getDataSuccess;
}
int HumiCalc(int humi)
{
float fixNum = 16383.0;// (2e+14)- 1 = 16383,根据芯片手册计算公式
int humiResult = ( humi / fixNum) * 100 ;
return humiResult;
}
// 以上 获取湿度值部分结束
void loop()
{
// put your main code here, to run repeatedly:
lcd.setCursor(0, 0);
lcd.print("setHumi: ");
lcd.print(setHumi, DEC);
// 获取湿度数据开始
StartMeasure();
if (g_startMeasure)
{
DataFetch();
if (g_getDataSuccess)
{
Mdata.Humidity = HumiCalc(Mdata.Humidity); //计算湿度值
lcd.setCursor(0, 1);
lcd.print("HUMI:");
lcd.print( Mdata.Humidity, DEC);
}
}
// 获取湿度数据结束
if (setHumi >= Mdata.Humidity)
{
digitalWrite(relayPin, LOW);// 如果当前湿度小于设定湿度,开启加湿
}
else
{
digitalWrite(relayPin, HIGH);// 否则 ,关闭加湿
}
#if 0
if (Serial.available())
{
espSerial.write(Serial.read());
}
if (espSerial.available())
{
Serial.write(espSerial.read());
}
#endif
if (espSerial.available())
{
int addOrDel = 0;
addOrDel = (int)espSerial.read();
}
if (addOrDel == 0x01); // wifi接受数据0A
{
setHumi = setHumi + 1;
}
elseif(addOrDel == 0x02)// wifi 接受数据0D
{
setHumi = setHumi - 1;
}
}
使用的开发平台是arduino IDE.
如附件所示
(16.41 MB)下载