ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用arduino做一个智能垃圾桶

2019-10-14 16:55:09  阅读:883  来源: 互联网

标签:myservo 舵机 arduino 感应 垃圾桶 智能 模块


这几天工作忙得差不多了,有点时间继续折腾我的arduino,上次从TB买的arduino 套件中有一个人体热能感应模块,就是用来感应人体接近信号的。今天我们用这个东东来做一个简易的智能垃圾桶。要实现的功用是:当有人接近时,垃圾能用自动打开盖子,人离开时,盖子能自动关闭。

一、所需材料和工具:

1 Arduino单片机 我用的是Arduino Nano
用arduino做一个智能垃圾桶
2 人体热能感应模块
我用的是一个杂牌的,但接线和使用方式和HC-SR501一样
用arduino做一个智能垃圾桶
3 舵机 SG90
用arduino做一个智能垃圾桶
4 翻盖式垃圾桶 最好是小一点的。
用arduino做一个智能垃圾桶
5 手机充电头和mini USB电源线 直接给单片机供电用的,不是我们手机个常用的microUSB接口或TYPE C接口。
用arduino做一个智能垃圾桶
6 导线
7 热熔胶枪
8 电烙铁
9 刀片及其它工具
说明:
1、因为SG90舵机的扭矩很小(可以理解为这个舵机没多大劲),只能推动小垃圾桶的盖子,如果垃圾桶过大,我们就需要扭矩更大的舵机,并需要给舵机单独供电。
2、我的arduiono套件随机赠送的人体热能感应模块是一个杂牌的东东,但接线和使用方法与HC-SR501相同。

二、程序代码

代码很简单,只有几行。

#include <Servo.h>//舵机所需类的头文件
/*
 * 本例结合人体红外感应模块和舵机实现对垃圾桶的自动控制。
 * 当人接近或离开垃圾桶时,单片机根据信号强度的变化,操作舵机旋转到指度角度,实现垃圾桶的自动开关。
 * 人体红外感应模块型号为HC-SR501,三条线分别为+5伏,地线和输出信号口,输出信号接A3
 * 舵机用型号为sg90,本舵机有三条线,红为+5伏,褐色为GND,橙色为信号给,本例接pin9
 * 本例在arduino nano上实验通过
*/

Servo myservo;  // 创建舵机对象来控制舵机
int angle_pos = 0; 
int pin_sensory= A3;//设置A3接人体感应信号的out口

int value; 
void setup() 
{   
   // 初始化串口通信
   Serial.begin(9600); 
   Serial.println("Signal Intensity:");
   // 把连接在引脚9上的舵机赋予舵机对其控制
   myservo.attach(9);  
   pinMode(pin_sensory,INPUT);
   myservo.write(angle_pos);

} 
void loop() 
{ 
      value= analogRead(pin_sensory); 
      Serial.println(value);
      angle_pos=myservo.read(); 
      if (value>=400)//当值大于400时,舵机转到90度,垃圾桶开盖。
      //这个值需要自己根据不同距离调整,距离越近,信号越强,经验数据:在距离探头20公分时,强度值约800,人离开后,强度值约40。
      {
         myservo.write(90);//舵机转到90度
         delay(50);
      }

      else
      {
        delay(50);
        myservo.write(0);//舵机回到0度

      }

        delay(1000);
}

三、线路连接

实物连接如下图:
用arduino做一个智能垃圾桶
说明一下:
1、SG-90舵机上有三条线,一般情况下棕色是地线,接GND,红色是V+,接正5伏,橙色为控制线,我接在9号接口。
舵机有两种驱动方式,第一种方式是无驱动的,可以用在所有可用的端口上,但程序代码比较复杂,用起来相对麻烦,第二种是有驱动的,代码非常简单,但只能接在9、10两个口上,本例中使用第二种方式(所在我们代码的开头第一行就引用了舵机驱动类的头文件)。
2、HC-SR501人体热能感应模块也有三个接口,上面标的有,VCC接正5伏,GND接地线,OUT我接在A3上。
3、本来还想加一个LED指示灯,用来在夜间指示垃圾桶的位置,但感应模块上有一个蓝色的指示灯,在人体接近时就会自动点亮,所以这个就省了。

四、安装和调试

1、写入程序,这个都会,我用的是arduino IDE(1.8.5版的),将上面的代码复制进去,在面包板上按上图接好,编译后直接点击上传就行了。
用arduino做一个智能垃圾桶

用arduino做一个智能垃圾桶
2、改装垃圾桶
我找的垃圾桶是那种翻盖的桌上小垃圾桶,盖子像一个翘翘板。将盖子从限位销中取出来,用刀片将限位销去掉,然后在限位销的位置打孔。
然后找一个用完的水笔芯(之所以选择水笔芯,是因为他的粗细刚好能套在舵机主轴的齿轮上,而且结合得非常紧。)穿过刚才打的孔和垃圾桶盖子上的孔,并用热熔胶固定。
用arduino做一个智能垃圾桶
然后在垃圾外侧固定舵机、单片机和感应模块,为了外面美观一些,我用3D打印机做了一个小盒子放单片机和感应模块,没有的朋友可以用一个雪茄盒或其它材料代替。
将舵机主轴插入水笔芯的孔中,并用热熔胶将舵机和小盒子固定住。
需要注意的时,舵机主轴固定在水笔芯的时候要注意舵机的0度和90度位置,以免出现初始化时垃圾桶盖子关不严的情况。
用arduino做一个智能垃圾桶

五、运行效果

使用miniUSB线和手机充电头给arduino通过5伏直流电,就可以运行了,运行情况见以下视频连接。看起来拉风吧!
https://v.youku.com/v_show/id_XNDM5Nzk3MTQ1Mg==.html?spm=a2h3j.8428770.3416059.1

标签:myservo,舵机,arduino,感应,垃圾桶,智能,模块
来源: https://blog.51cto.com/6273125/2442334

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有