聚丰项目 > 便携抽湿加湿器

便携抽湿加湿器

1. 便携。主控模块总体重量不超过300g。 2.多功能。通过更换模块,可以实现给室内空气抽湿加湿的功能。 3.便于维修,拓展。各模块之间耦合度低,通过更换不同的模块部分,为后续开发维修留下了余地。 4.可以通过手机控制参数,实现个体化定制。

汪家州 汪家州

分享
1 喜欢这个项目
团队介绍

汪家州 汪家州

团队成员

汪家州 代码+硬件

分享
项目简介
1. 便携。主控模块总体重量不超过300g。 2.多功能。通过更换模块,可以实现给室内空气抽湿加湿的功能。 3.便于维修,拓展。各模块之间耦合度低,通过更换不同的模块部分,为后续开发维修留下了余地。 4.可以通过手机控制参数,实现个体化定制。
硬件说明

此款加湿抽湿器主要有6个模块

  1. 加湿模块

    rc震荡电路+108k微孔雾化片构成+棉棒+棉棒外壳。只需给rc震荡电路提供5v电源即可工作。

  2. 抽湿模块

    半导体制冷片+散热片+导热硅胶+散热扇(可加可不加)。只需给半导体制冷片提供5v电源即可工作。

  3. arduino+继电器控制模块

    arduino uno 开发板 + 继电器。负责逻辑控制,通过判断湿度来控制继电器的吸合,从而控制加湿模块与抽湿模块。

  4. lcd液晶显示模块

    现成的模块,负责把湿度设定值与当前湿度值显示出来

  5. esp8266 wifi透传模块

    现成的模块,负责把手机端发送的湿度设定值等参数传送给arduino。

  6. HS300X传感器模块

    IDT厂家出的温湿度传感器,通过IIC 将采集到的环境温湿度数据传给arduino。

  7. 电源

    可以使用充电宝或者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.


演示效果

如附件所示

IMG_20190113_020303.jpg


附件

(16.41 MB)下载

评论区(0 )