所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
Cool_Warm_干手器
安卓机器人 安卓机器人 2020-05-09 22:51:04
2
0
简单

【项目介绍】

洗手后想尽快吹干吗?不想动手,还想着冬季吹着暖暖的风,夏季换成凉凉风-怎么办?懒人自有办法!买简单,造才有趣。

【解决方案】

简单分析:利用吹风机能吹出冷暖风来达到基本功能。配上传感器和微控制器实现自动感应。

硬件分工:DF的Cheapduino微控制器作为处理中心;输出端2个继电器控制风类电源开关;输入端1个红外传感器接收近距检测、1个LM35温度传感器感知空气温度、1个触摸开关。

工作原理:当有物接近红外开关传感器时,微控制器根据触摸开关状态决定出风类,否则根据LM35决定出风类。也就是说出风类可以根据空气温度自动决定(小于18摄氏度时出热风),或者操作者通过触摸开关来手动决定。

【作品演示】

【制作过程】

先折解不想用的吹风机。

projectImage
projectImage
projectImage
projectImage

基本电路必须得搞清楚。下图右边绿白接通控制出热风。无关电源线剪掉,做好绝缘。

projectImage
projectImage

DF cheapduino 微控制器小巧低功耗,普通手机电池可以启动它。焊接红电源+,黑电源-,绿白为信号。

projectImage
projectImage

开始准备加入温度值显示模块,后来删掉。

projectImage

继电器接强电侧:

就相当于开关,一根连市电是通路。另一根一端接COM,另一端接NO(常开)

projectImage

继电器接微控制器侧:

projectImage
projectImage

输入型传感器:

projectImage

确保安全前提下接通市电!

projectImage

【测 试】

【组 装】

projectImage

下图左侧添加了内置手机电池的开关。

出风口太偏向墙壁侧了。

projectImage

【完 成】

projectImage

【项目总结】

总体思路简单、原理简单、代码简单、硬件也容易获得。但由于用了市电,必须安全第一!

改进想法:

1.利用弃用的5V1A类充电头可以直连接市电转给微控制器供电。

2.外形可以用3D打印。

。。。

【代码资源】

小技巧:

static bool touched = false;// 使用静态变量利于保留触摸开关状态 (如:只要触摸灯亮着,总出热风)

代码 代码
	                    					const int InfraredSensorPin = A0;
const int LM35Pin = A4;

const int relaySmallPin = 10;
const int relayBigPin = 11;

const int LedDisp = 13;
const int touchPin = A5;

uint16_t temp = 0;
static bool  touched = false;// 使用静态变量利于保留触摸状态
///////////////////////////////////
void setup()
{ 
  pinMode(InfraredSensorPin,INPUT);
  pinMode(LM35Pin,INPUT);
  pinMode(touchPin,INPUT);
  pinMode(relaySmallPin,OUTPUT);
  pinMode(relayBigPin,OUTPUT);
  pinMode(LedDisp,OUTPUT);
  
  digitalWrite(LedDisp,LOW);
}
////////////////////////////////////
void loop()
{
  touched = digitalRead(touchPin);
  temp = analogRead(LM35Pin)*(5/10.24);
  if(digitalRead(InfraredSensorPin) == LOW)  
  {
    digitalWrite(LedDisp,HIGH);
    digitalWrite(relayBigPin,HIGH);
    if( temp < 18 || touched == true )
    {
      digitalWrite(relaySmallPin,HIGH);
    }
    else
    {
      digitalWrite(relaySmallPin,LOW);
    }    
  }
  else  
  {
    digitalWrite(LedDisp,LOW);
    digitalWrite(relayBigPin,LOW);
  }
}
	                    				
Makelog作者原创文章,未经授权禁止转载。
2
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]