自制智能WIFI空气净化器(ARDUINO)

自制智能WIFI空气净化器(ARDUINO)

转载请注明出处http://blog.csdn.net/cuijiyue/article/details/78824768

简介

  • 成品图片
    这里写图片描述这里写图片描述
  • web控制端
    这里写图片描述

  • 参考资料

模块 参考资料
单片机 mega2560 硬件 https://wenku.baidu.com/view/0c37156065ce050877321320.html
编程入门 http://www.51hei.com/bbs/dpj-41336-1.html
https://pan.baidu.com/s/1jIf8IxS
多线程 https://www.cnblogs.com/xiaowuyi/p/4319720.html
温湿度 DHT11,单总线
http://www.arduino.cn/thread-1429-1-2.html
https://pan.baidu.com/s/1kVaMRzD
PM25 PMS500, 串口
https://pan.baidu.com/s/1eS5zosE
WIFI ESP-12N,串口,内置MCU,LUA编程
https://pan.baidu.com/s/1kVvLCzX
屏幕 12864 OLED, i2c
http://www.arduino.cn/forum.php?mod=viewthread&tid=20080
https://pan.baidu.com/s/1micMO1y
PMW电机调速 L298N,gpio PWM调速
https://pan.baidu.com/s/1eSwBMLk
箱体及电机硬件 https://post.smzdm.com/p/41272/

DH11温湿度

加载DHT11的lib,就可以读取温湿度,每5s读取一次

dht11 DHT11;
void getTemperature(int pin) {
    int ret = DHT11.read(pin);
    switch (ret)
    {
      case DHTLIB_OK: 
        //log("DHT11 OK");
        temperature = DHT11.temperature;
        humidity = DHT11.humidity;
        PT_SEM_SIGNAL(&screenSem);
        break;
      case DHTLIB_ERROR_CHECKSUM: 
        log("DHT11 Checksum error"); 
        break;
      case DHTLIB_ERROR_TIMEOUT: 
        log("DHT11 Time out error"); 
        break;
      default: 
        log("DHT11 Unknown error"); 
        break;
    }
}
static int temperatureMission(struct pt *pt)
{
  PT_BEGIN(pt);//线程开始
  while(1)
  {
    getTemperature(2);//接入2号管脚
    //dhtDelay.setTimer(5000);//设定5秒
    PT_TIMER_DELAY(pt, 5000);
  }
  PT_END(pt);//线程结束
}

PM25

读取时需要注意检查数据帧结构,防止信息错误
PM25会存储上一次读取的数值,每5s会通过信号量通知屏幕更新,
读取PM25和电机控制在 pm25PowerMission 中

class PM25 {
private:
  int pm_cf_10 = -1;
  int pm_cf_25 = -1;
  int pm_cf_100 = -1;
  int pm_at_10 = -1;
  int pm_at_25 = -1;
  int pm_at_100 = -1;
  int particulate03 = -1;
  int particulate05 = -1;
  int particulate10 = -1;
  int particulate25 = -1;
  int particulate50 = -1;
  int particulate100 = -1;
  int setGpio = -1;
  int resetGpio = -1;
  int serialNum;


  int prePM25[10] = {0};
  int sleepLevel[4][2] = {
  {10, 20}, {50, 30}, {100, 1}, {200, 0}}; //pm_val, sleep minutes
  int powerLevel[4][2] = {
  {10, 0}, {50, 2}, {100, 10}, {200, 24}}; //pm_val, powerlevel
  int beginIndex = 0;
  int endIndex = 0;
  bool pmHighPower = true;
  bool pmRun = true;

  unsigned char rxBuffer[32];
  int frameLen = 32;
  enum FrameStatus{
    HEAD1,
    HEAD2,
    LEN1,
    LEN2,
    DATAREAD,
    VERSION,
    CHECK,
    CRC1,
    CRC2,
  };
  FrameStatus frameStatus;
  int dataLen;

  int
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
空气净化器电路原理图PCB图源程程序 ⑴.接通电源后,机子没有显示; ⑵.按下遥控器上的“电源开关”按键后:显示板上橙色灯亮,CN4(M FAN)通电,电机按照中速运行;电源板上CN5、CN6、CN7、CN8通电,4个摆风电机M2运行,摆风叶片摆动;电源板上CN2通电,摆风电机M1运行;电源板上CN3通电,负离子运行;再按下遥控器上的“电源开关”按键后,机子恢复之前状态。 ⑶.按下遥控器上“低”按键后,电机低速运行,绿色LED灯亮。按下遥控器上“中”按键后,电机中速运行,橙色LED灯亮。按下遥控器上“高”按键后,电机高速运行,红色LED灯亮。 ⑷.按下遥控器上的“摆风”按键后,电源板上的M1和4个M2断电,摆风停止。再按下遥控器上的“摆风”按键后,机子恢复之前状态。 ⑸.按下遥控器上的“负离子”按键后,CN3断电,负离子停止工作。再按下遥控器上的“负离子”按键后,机子恢复之前状态。 ⑹.CN4电源所用电机为:三速电机,功率为100W,输入电源AC110-127V/60HZ或者AC220-240V/50-60HZ。 ⑺.CN2电源所用电机M1为:步进电机,功率为10W,输入电源AC110-127V/60HZ或者AC220-240V/50-60HZ。 ⑻.CN3电源所用负离子为:功率小于5W(要求按照100W功率来设置,以后可以考虑用来做其他功能的电源),输入电源AC110-127V/60HZ或者AC220-240V/50-60HZ。 ⑼.CN5,CN6,CN7,CN8电源所用M2电机为:步进电机,型号为:28BYJ46,输入电源为12VDC。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值