用arduino做一个智能垃圾桶

摘要:
这些天我几乎很忙。我有一些时间继续打扰我的arduino。上一次我从TB购买arduino套件时,有一个人体热能感应模块,用于感应人体接近信号。今天我们用这个做一个简单的智能垃圾桶。要实现的功能是:当有人靠近时,垃圾可以自动打开盖子,当人离开时,盖子可以自动关闭。1、 所需材料和工具:1 Arduino SCM我使用Arduino Nano 2人体热能传感模块我使用品牌名称,但

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

  一、所需材料和工具:

  1 Arduino单片机 我用的是Arduino Nano

  2 人体热能感应模块

  我用的是一个杂牌的,但接线和使用方式和HC-SR501一样

  3 舵机 SG90

  4 翻盖式垃圾桶 最好是小一点的。

  5 手机充电头和mini USB电源线 直接给单片机供电用的,不是我们手机个常用的microUSB接口或TYPE C接口。

  6 导线

  7 热熔胶枪

  8 电烙铁

  9 刀片及其它工具

  说明:

  1、因为SG90舵机的扭矩很小(可以理解为这个舵机没多大劲),只能推动小垃圾桶的盖子,如果垃圾桶过大,我们就需要扭矩更大的舵机,并需要给舵机单独供电。

  2、我的arduiono套件随机赠送的人体热能感应模块是一个杂牌的东东,但接线和使用方法与HC-SR501相同。

  二、程序代码

  代码很简单,只有几行。

  #include //舵机所需类的头文件

  /*

  * 本例结合人体红外感应模块和舵机实现对垃圾桶的自动控制。

  * 当人接近或离开垃圾桶时,单片机根据信号强度的变化,操作舵机旋转到指度角度,实现垃圾桶的自动开关。

  * 人体红外感应模块型号为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);

  }    郑州男科医院:http://nkmobile.zztjyy.com/郑州男科医院哪家好:http://nkmobile.zztjyy.com/郑州同济做包皮手术多少钱:http://nkmobile.zztjyy.com/

  三、线路连接

  实物连接如下图:

  说明一下:

  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版的),将上面的代码复制进去,在面包板上按上图接好,编译后直接点击上传就行了。

  2、改装垃圾桶

  我找的垃圾桶是那种翻盖的桌上小垃圾桶,盖子像一个翘翘板。将盖子从限位销中取出来,用刀片将限位销去掉,然后在限位销的位置打孔。

  然后找一个用完的水笔芯(之所以选择水笔芯,是因为他的粗细刚好能套在舵机主轴的齿轮上,而且结合得非常紧。)穿过刚才打的孔和垃圾桶盖子上的孔,并用热熔胶固定。

  然后在垃圾外侧固定舵机、单片机和感应模块,为了外面美观一些,我用3D打印机做了一个小盒子放单片机和感应模块,没有的朋友可以用一个雪茄盒或其它材料代替。

  将舵机主轴插入水笔芯的孔中,并用热熔胶将舵机和小盒子固定住。

  需要注意的时,舵机主轴固定在水笔芯的时候要注意舵机的0度和90度位置,以免出现初始化时垃圾桶盖子关不严的情况。

  五、运行效果

  使用miniUSB线和手机充电头给arduino通过5伏直流电,就可以运行了,运行情况见以下视频连接。看起来拉风吧!

免责声明:文章转载自《用arduino做一个智能垃圾桶》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java switch 枚举移动通信网络中的 GTP 协议下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

STM32通过ULN2003对步进电机进行控制

1 前言 本实验是基于STM32103芯片和ULN2003进行对步进电机的控制。 2 ULN2003的基本介绍 2.1 ULN2003的概述 ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成。一般采用DIP—16 或SOP—16 塑料封装。 ULN2003的主要特点: ULN2003 的每一对达林顿都串联一个2.7K 的基极电...

【雕爷学编程】Arduino动手做(54)---大按键点动模块

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验,不管能否成功,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。  【Arduino】168种传感器模块系列实验(资料+代码+图形...

(stm32f103学习总结)—stm32定时器中断

一、定时器介绍STM32F1的定时器非常多,由2个基本定时器(TIM6、TIM7)、4个通 用定时器(TIM2-TIM5)和2个高级定时器(TIM1、TIM8)组成。基本定 时器的功能最为简单,类似于51单片机内定时器。通用定时器是在基本 定时器的基础上扩展而来,增加了输入捕获与输出比较等功能。高级定 时器又是在通用定时器基础上扩展而来,增加了可编程死区互...

Arduino—运算符

赋值运算符: =    +=   -+     *=      /= %=       取余等于 &=    与等于 &=(与等于)对某个变量的值按位进行与运算,例如:G&=x,将G变量的值与x变量的值做AND运算,其结果放入G变量,与G=G&x表达式相同。 |=     (或等于)对某个变量的值按位进行或运算,例如:HI...

【雕爷学编程】Arduino动手做(60)---WS2812直条8位模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感...

STM32液晶显示HT1621驱动原理及程序代码

1、HT1621电路分析       HT1621为32×4即128点内存映像LCD驱动器,包含内嵌的32×4位显示RAM内存和时基发生器以及WDT看门狗定时器.       HT1621驱动电路如下图所示: 图1           与单片机相连接控制的有9脚CS,3脚WR,12脚DATA,其功能描述如下表。 图2 2、字符显示原理        ...