聚豐項(xiàng)目 > 便攜抽濕加濕器
1. 便攜。主控模塊總體重量不超過300g。 2.多功能。通過更換模塊,可以實(shí)現(xiàn)給室內(nèi)空氣抽濕加濕的功能。 3.便于維修,拓展。各模塊之間耦合度低,通過更換不同的模塊部分,為后續(xù)開發(fā)維修留下了余地。 4.可以通過手機(jī)控制參數(shù),實(shí)現(xiàn)個(gè)體化定制。
汪家州
分享汪家州
團(tuán)隊(duì)成員
汪家州 代碼+硬件
此款加濕抽濕器主要有6個(gè)模塊
加濕模塊
rc震蕩電路+108k微孔霧化片構(gòu)成+棉棒+棉棒外殼。只需給rc震蕩電路提供5v電源即可工作。
抽濕模塊
半導(dǎo)體制冷片+散熱片+導(dǎo)熱硅膠+散熱扇(可加可不加)。只需給半導(dǎo)體制冷片提供5v電源即可工作。
arduino+繼電器控制模塊
arduino uno 開發(fā)板 + 繼電器。負(fù)責(zé)邏輯控制,通過判斷濕度來控制繼電器的吸合,從而控制加濕模塊與抽濕模塊。
lcd液晶顯示模塊
現(xiàn)成的模塊,負(fù)責(zé)把濕度設(shè)定值與當(dāng)前濕度值顯示出來
esp8266 wifi透傳模塊
現(xiàn)成的模塊,負(fù)責(zé)把手機(jī)端發(fā)送的濕度設(shè)定值等參數(shù)傳送給arduino。
HS300X傳感器模塊
IDT廠家出的溫濕度傳感器,通過IIC 將采集到的環(huán)境溫濕度數(shù)據(jù)傳給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
// 濕度數(shù)據(jù)結(jié)構(gòu)
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)
{
// 通知傳感器開始測(cè)量
Wire.beginTransmission(0x44);// 傳感器地址44hex末尾+0
Wire.endTransmission();
delay(1000);
g_startMeasure = true;
return g_startMeasure;
}
bool DataFetch(void)
{
Mdata.Init();
Wire.requestFrom(0x44, 2); // 獲取濕度數(shù)據(jù)
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; // 拼接完整數(shù)據(jù)
delay(1000);
g_getDataSuccess = true;
return g_getDataSuccess;
}
int HumiCalc(int humi)
{
float fixNum = 16383.0;// (2e+14)- 1 = 16383,根據(jù)芯片手冊(cè)計(jì)算公式
int humiResult = ( humi / fixNum) * 100 ;
return humiResult;
}
// 以上 獲取濕度值部分結(jié)束
void loop()
{
// put your main code here, to run repeatedly:
lcd.setCursor(0, 0);
lcd.print("setHumi: ");
lcd.print(setHumi, DEC);
// 獲取濕度數(shù)據(jù)開始
StartMeasure();
if (g_startMeasure)
{
DataFetch();
if (g_getDataSuccess)
{
Mdata.Humidity = HumiCalc(Mdata.Humidity); //計(jì)算濕度值
lcd.setCursor(0, 1);
lcd.print("HUMI:");
lcd.print( Mdata.Humidity, DEC);
}
}
// 獲取濕度數(shù)據(jù)結(jié)束
if (setHumi >= Mdata.Humidity)
{
digitalWrite(relayPin, LOW);// 如果當(dāng)前濕度小于設(shè)定濕度,開啟加濕
}
else
{
digitalWrite(relayPin, HIGH);// 否則 ,關(guān)閉加濕
}
#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接受數(shù)據(jù)0A
{
setHumi = setHumi + 1;
}
elseif(addOrDel == 0x02)// wifi 接受數(shù)據(jù)0D
{
setHumi = setHumi - 1;
}
}
使用的開發(fā)平臺(tái)是arduino IDE.
如附件所示
(16.41 MB)下載