Arduino智能垃圾桶

这个小项目是基于Arduino设计的一款感应式智能开盖垃圾桶这个项目只要一点C语言的基础,懂得一点点物联网知识就可以,是一个刚入行物联网值得练手的小项目。


硬件准备

  • Arduino UNO
  • HC-SR04超声波模块
  • SG90舵机
  • 杜邦线若干


工作原理

当手靠近垃圾桶时,超声波传感器测出两者之间的距离,距离小于设定的阈值,舵机转动,垃圾桶盖打开。


接线方式

Arduino5VGND引脚5引脚8引脚2
舵机VCC(红)GND(黑/褐)信号线(白/黄)
超声波传感器VCCGNDTrigEcho


代码

#include<Servo.h>
#define Trig 8
#define Echo 2
#define DuoPIN 5
Servo myDuoJi;
long gettime()
{
    digitalWrite(Trig,HIGH);
    delayMicroseconds(10);
    digitalWrite(Trig,LOW);
    return  pulseIn(Echo,HIGH);
  }
void initChaoShengBo()
{
    pinMode(Echo,INPUT);
    pinMode(Trig,OUTPUT);
  }
void setup() {
  initChaoShengBo();
  myDuoJi.attach(DuoPIN);
  Serial.begin(115200);

}

void loop() {
//获取距离
long dis;
dis = gettime()/58;
if(dis <10){
myDuoJi.write(90);
delay(1500);
}
else{
myDuoJi.write(180);
}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38


实物

在这里插入图片描述



补充 舵机和超声波 调试

舵机


接线

Arduino5VGND引脚5
舵机VCC(红)GND(黑/褐)信号线(白/黄)

舵机代码调试

#include<Servo.h>
#define DuoPIN 5
Servo myDuoJi;
void setup() {

myDuoJi.attach(DuoPIN);
Serial.begin(115200);
}

void loop() {
int cmd;
if(Serial.available()>0){
cmd = Serial.read();
if(cmd 1){
myDuoJi.write(90);
}
if(cmd 0){
myDuoJi.write(180);
}
}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22


通过串口工具调试舵机的转动角度
输入 0 或者输入 1 来控制舵机的转动(调整合适的角度)



超声波传感器

接线方式

Arduino5VGND引脚8引脚2
超声波传感器VCCGNDTrigEcho


代码
#define Trig 8
#define Echo 2
#define BEEP 5
long gettime()
{
    // 产生一个10us的高脉冲去触发TrigPin
    digitalWrite(Trig,HIGH);
    delayMicroseconds(10);
    digitalWrite(Trig,LOW);
<span class="token keyword">return</span>  <span class="token function">pulseIn</span><span class="token punctuation">(</span>Echo<span class="token punctuation">,</span>HIGH<span class="token punctuation">)</span><span class="token punctuation">;</span>

}
void initChaoShengBo()
{
pinMode(Echo,INPUT);
pinMode(Trig,OUTPUT);
}
void setup() {
initChaoShengBo();
pinMode(BEEP,OUTPUT);
digitalWrite(BEEP,HIGH);
Serial.begin(115200);//波特率设置为115200

}

void loop() {
//获取距离
long dis;
dis = gettime()/58;// 检测脉冲宽度,并计算出距离
Serial.print(dis);
Serial.println(“cm”);
if(dis<10){
digitalWrite(BEEP,LOW);
}
else{
digitalWrite(BEEP,HIGH);
}
delay(500);
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39


通过串口工具的可以接收到超声波测的距离



为什么接收到的脉冲信号要除以58得到距离?


distance_cm=(us)/58

声音在干燥、摄氏 20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。
或者,我们作一下单位换算,34,300除以1,000,000厘米/微秒。
即为:0.0343厘米/微秒
再换一个角度,1/(0.0343 厘米/微秒)

即:29.15 微秒/厘米。
这就意味着,每291.5微秒表示10CM的距离。1厘米就是29.15微秒。
但是发送后到接收到回波,声音走过的是2倍的距离呀。
所以实际距离就是1厘米,对应58.3微秒。
实际上整个测距过程是测的发出声波到收到回波的时间,你的程序里的第一个distance实际上是时间us。
所以换成距离cm,要除以58。当然除以58.3可能更精确


在这里插入图片描述

Arduino创意制作 自动垃圾桶设计说明: 完整制作安装视频:https://v.youku.com/v_show/id_XMzIzMzY0OTI3Mg==.html 第1步:组件 为了创造这个,我们需要一个在铰链上有盖开口的桶。这是从家庭用品买来的,叫做洗衣粉桶。作为Arduino的董事会,我拿了Nano模型。伺服驱动器对于金属减速器是理想的。下一个是 超声波距离传感器和一个3指电池的电池舱。 Arduino NANO 量程传感器 伺服 电池盒 方块 MOSFET强烈建议使用电解电容器10V 470-1000 uF 电阻100欧姆 电阻10千欧姆 第2步:硬件 首先我们摆脱封面上多余的塑料。这是一个闩锁和手柄。距离传感器完美地装入盒子中,只有连接引脚伸出。我们将删除它们。首先,我们将削减引脚的塑料。在伺服驱动器上,我们将电线延伸至垃圾箱前端。而且我们根据这个简单的电路来连接所有的东西。传感器将从Arduino的一个引脚供电,以免焊接一堆导线到电源引脚,因为伺服器已经连接在那里。 现在我们把所有的东西放在案例中。首先,我们将为传感器打孔。我用刀标记了这些中心。首先,我用普通的钻孔钻出中心的精度,然后用台阶钻把它扩大。用热胶填满所有东西。电池盒上粘有双面胶带,伺服驱动器的导线会通过侧孔外出。 第3步:伺服和盒装 现在用砂纸伺服侧和箱盖在这个地方清理。我们用普通的即时胶粘在一起。我们还可以用电缆扎带加强它。还需要在电线下面制作凹槽,以免卡住。当然,伺服驱动器必须进入水桶,不要紧贴任何东西。电线沿着水桶的边缘用热胶固定。 盒子本身用螺丝和螺母固定在桶上。这是必要的,以便传感器梁不会抓住篮子盖。为此,您可以在上方的螺丝下放置几个螺母。 第4步:机制 首先,我从冰淇淋棒做起。但它太厚了,不让盖子自由关闭。然后,我用一个金属罐子做罐头做同样的事情。伺服驱动器杆上部固定有一个回形针。这件作品用超强的胶水和苏打水粘在金属条上。 那么,让我们登上它。非常小心地将伺服转动到极限位置并将摇臂固定在打开的盖子的位置上。那么,现在我们的桶关闭和打开。这样做要小心,因为中国的这个产品可以打破,反之工作。原则上,硬件部分已经准备就绪,让我们继续编程。首先,我们将写一个简单的算法,不节能。 第5步:在XOD中编程 我使用基于视觉的编程语言XOD,它基于节点。节点是代表传感器,电机或继电器等某些物理设备的块,或者是一些操作(如添加,比较或文本串联)。您可以在我的关于垃圾桶的视频中观看XOD制作whisky项目的所有过程。另外第一张照片是一个简单的XOD程序没有一些“迟滞”,第三张照片是用它。 您可以在GitHub的项目页面下载XOD垃圾桶项目。 正如你已经注意到,要创建这个设备,我们不需要任何编程语言的知识。我们只需要正确地思考工作的逻辑,知道程序中存在哪些节点。这是阅读文档几个晚上的任务。在xod中,我们清楚地看到了数据的传输方式,数据的传输方式以及传输方式。创建代码的长片是Arduino迷的下一步。您可以从这里开始使用函数式编程。 所以,它的作品!我们来谈谈节能。 第6步:节能 硬件修改 所以,我们有3个能源消费者,Arduino本身,传感器和伺服驱动器。为了让Arduino减少使用电池,您需要关闭在电源开启时不断发光的“pwr”LED。只要切断通往它的轨道。 接下来在电路板背面有一个电压调节器,我们也不需要它,咬掉它的左脚。现在睡眠模式下的Arduino需要几十个微安。传感器可以直接由Arduino打开和关闭。 但待机模式下的伺服器消耗大量能量。因此,我们将在电子天气预报器的视频中使用mosfet晶体管。你可以从这个列表中选取任何一个mosfet。还需要一个100欧姆和10千欧姆的电阻。我将在视频下的描述中留下项目组件的完整列表。 新的电路看起来像这样,伺服电源通过mosfet。在运动开始时,伺服需要大电流,因此您需要将电容器置于电源输入端。 第7步:编程 Arduino IDE 这项工作的逻辑如下。不幸的是,xod还没有添加电源模式,所以我在Arduino IDE中经典地编写了固件,在那里我用“LowPower”库管理系统。唤醒,给传感器供电,获得距离,关闭传感器。如果需要打开和关闭盖子,请将电源连接到伺服器,打开并重新关闭电源。 您可以从GitHub项目页面下载Arduino IDE草图 (代码见上传附件。) 第8步:结论 现在,处于待机模式的电路消耗大约0.1毫安,并可以从指纹电池长时间安全工作。但看看是怎么回事?为了稳定运行,你需要一个高于3.6伏的电压,也就是每个电池高于1.2伏。 从图表来看碱性电池,可以看出电池正好放电一半,即大约1.1安培小时。那在待机状态下工作约460天,不错?但电池将只消耗一半的电量,然后可以插入电视机的遥控器中。但
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值