从智能垃圾桶模型引发的思考?

背景:

随着人们的生活水平不断提高,家居生活现代化是个必然的趋势。智能垃圾桶很好的解决了无需接触垃圾桶就可投放垃圾,防止交叉感染等问题。减少生活当中各种病菌交叉感染的几率;无异味溢出。但其存在需要经常更换电池,电池寿命问题。

目的:

第一:通过这篇文章,大致能了解目前市面上智能垃圾桶的工作原理。

第二:当使用电池供电,可能对于此产品来讲,功耗会偏大。采用外部供电方式,是否能满足需求。

第三:设计一个产品模型可能不需要考虑很多因素,但设计一款产品考虑因素还有哪些,讨论一下。

实验材料

Arduino控制板      9G舵机     超声波模块

什么是Arduino控制板

它是一款便捷灵活、方便上手的开源型平台。对于初学者是一款极易上手的硬件。

超声波模块的工作原理

通过Trig引脚发一个 10US 以上的高电平,就可以在Echo接收口等待高电平输出;一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了。

可能您对此还有疑惑,我们将其换成程序流程:

a.单片机引脚触发Trig测距,给至少 10us 的高电平信号;

b.模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回;

c.有信号返回,通过 IO 输出一高电平,并单片机定时器计算高电平持续的时间;

d.超声波从发射到返回的时间.

计算公式:测试距离=(高电平时间*声速(340M/S))/2;

接下来,我们来上系统连接图

舵机连接图如下:

橙色:信号线 D9   红色:5V    灰色:GND

超声波模块连接如下:

GND——GND

Echo——数字信号 D2

Trig——数字信号  D3

GND——GND

连接好以后,就要编写程序了

#include <Servo.h>   //调用库函数

Servo servo;      //定义舵机变量名

int servoPin = 9;   //定义舵机接口9,只有9或者10可用

int trigPin =2;    // // trig接2端口

int echoPin = 3;   // echo接3端口

long duration, distance;   //定义变量,用于存取数据

long aver[3];   //定义数组,用于存取数据

void setup() {

servo.attach(servoPin);   //设定舵机的接口,9或者10接口可利用

pinMode(trigPin, OUTPUT);   //设置为输出模式 触发

pinMode(echoPin, INPUT);   //设置其为输入模式  回声

servo.write(0);    //用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°。

delay(1000);     //延时1S;

servo.detach();  //使舵机与其接口分离,该接口9可继续被用作PWM接口。

}

//超声波测距,子程序

void measure() {

digitalWrite(trigPin, LOW);//给一个低电平

delayMicroseconds(5);//时间为5毫秒

digitalWrite(trigPin, HIGH);//给一个高电平

delayMicroseconds(15);//时间为15毫秒

digitalWrite(trigPin, LOW);//再给一个低电平

duration = pulseIn(echoPin, HIGH);//接收高电平时间

distance = duration *0.034 / 2;//计算距离

}

void loop() {

//将测量数值记录在数组里面

for (int i=0;i<=2;i++) {

measure();

aver[i]=distance;

delay(50);

}

//算三次的平均值

distance=(aver[0]+aver[1]+aver[2])/3;

Serial.println(distance);   //打印

//如果距离小于40,转动舵机70°

if (distance<40) {

servo.attach(servoPin); //设定舵机的接口,9接口可利用

delay(1);

servo.write(70);  //转动舵机70°

delay(5000);  //延时5秒

servo.write(0);    //转回0°

delay(1000);//延时1秒

servo.detach();      //使舵机与其接口分离,该接口9可继续被用作PWM接口。

}

}

以上写有程序及注释,可根据自己需求修改参数(主要是修改舵机角度以及延时时间—servo.write(70);  //转动舵机70°       delay(5000);  //延时5秒)

根据上述描述过程,我们就可以实现自动感应扔垃圾的需求。当然,我们可以将超声波检测模块更换成热释红外模块、触摸模块。

感想

通过制作智能垃圾桶模型,我们知道了智能垃圾桶的实现原理,在垃圾桶上安装一个传感器模块,用来检测外部环境的变化,当外部环境发生变化时,做出反应,以达到智能的效果。

在制作模型时,选用模块安装固定还相对容易,但用在现实生活中就相对比较困难,首先,普通垃圾桶没有盖子,有盖子的垃圾桶舵机安装有问题等,还有就是供电问题,Arduino可采用9V或12V充电器进行外部供电,但会受地方限制;如采用电池供电,由于模块耗电量大而容易经常更换电池。

思考

智能的真正目的是使人们的生活更加方便,而采用Arduino控制板,能否将产品做出来,解决我们生活当中的痛点,以方便我们的生活吗?

原文地址:https://www.cnblogs.com/fqhy/p/12287903.html

时间: 2024-10-09 03:07:53

从智能垃圾桶模型引发的思考?的相关文章

由Node.js事件驱动模型引发的思考

引言 近段时间听说了Node.js,很多文章表述这个事件驱动模型多么多么优秀,应用在服务器开发中有很大的优势,本身对此十分感性去,决定深入了解一下,由此也引发了一些对程序设计的思考,记录下来. 什么是Node.js Node.js在官网上是这样定义的:"一个搭建在Chrome JavaScript运行时上的平台,用于构建高速.可伸缩的网络程序.Node.js采用的事件驱动.非阻塞I/O模型使它既轻量又高效,是构建运行在分布式设备上的数据密集型实时程序的完美选择." Node.js的事件

《技术、沟通、协作,引发的思考》

<技术.沟通.协作,引发的思考> 01. 有些朋友私信问我,最近又在忙什么,很少看到我活跃了.其实,我在憋大招!我花了很多心思在项目上, 可以说,这是我工作以来,最重要的时刻,成败在此一举! 02. 我按着倒序来表述,也能谈谈我对于文章主题的思考.接下来的两周时间,我会与我的项目小团队,完美的与"理财运营中心"(我在互联网金融行业)实现功能联调测试.上线以后,整个公司理财营销业务的20%~50%的用户流量将正式走我们所开发的"智能营销体系(这是一个大数据挖掘应用的

【ROC曲线】关于ROC曲线、PR曲线对于不平衡样本的不敏感性分析说引发的思考

ROC曲线 在网上有很多地方都有说ROC曲线对于正负样本比例不敏感,即正负样本比例的变化不会改变ROC曲线.但是对于PR曲线就不一样了.PR曲线会随着正负样本比例的变化而变化.但是没有一个有十分具体和严谨地对此做出过分析和论证(至少我没有找到). 此处记为结论1: 结论1:PR曲线会随着正负样本比例的变化而变化:但是ROC曲线不会. 此处我就这一问题进行了详细的分析论证,并在这个过程中引发了很多思考. 首先,如何分析这个问题呢? 看下ROC曲线是由TPR和FPR组成的 下面我们这样来分析这个问题

代做毕业设计1:智能窗户模型

摘 要 本课题将以"智能窗户模型设计"作为研究课题,拟将设计一款全新的智能窗户.当传感器感受到外界刺激的时候,会通过所设计的电路反馈到单片机,最后通过电机去实现窗户的自动开启和关闭.在硬件上系统采用的是以新塘公司旗下的一款N76E003单片机为核心,结合雨滴传感,微动开关,减速电机等元器件构建系统硬件框架,在软件上采用C语言等构建软件代码.这款智能化的窗户真正打破常规窗户设计的桎梏,大大提升了人们的生活质量.而且最主要的是核心硬件采用的是新塘公司旗下的N76E003单片机在价格上有很强

运维管理中IT故障定位、预警与智能恢复模型建立和应用实践解密

运维管理中IT故障定位.预警与智能恢复模型建立和应用实践解密各位大伽先不要说我理的对不对,我们来说用网管软件与IT运维管理系统来做IT的监测管理,先来看下面以SITEVIEW  ITOSS为例的一张图,图最能说明模型的意图:  我们可以从左向右,从上向下来看一下,一开始是需要采集,也即监测源端,监测源包括比如关键的服务器.网络设备.网络.日志和核心的业务应用系统,IT的环境.数据中心.机房环境等等.监测的参数就看如图SITEVIEW ITOSS一体化平台包括的五大模块功能中需要的参数状态数据,这

曲演杂坛--一条DELETE引发的思考

原文:曲演杂坛--一条DELETE引发的思考 场景介绍: 我们有一张表,专门用来生成自增ID供业务使用,表结构如下: CREATE TABLE TB001 ( ID INT IDENTITY(1,1) PRIMARY KEY, DT DATETIME ) 每次业务想要获取一个新ID,就执行以下SQL: INSERT INTO TB001(DT) SELECT GETDATE(); SELECT @@IDENTITY 由于这些数据只需保留最近一天的数据,因此建立一个SQL作业来定期删除数据,删除脚

一次部署HTTPS的相关事件引发的思考

前言: 上周五快要下班的时候,突然收到通知客户希望了解一下部署HTTPS的流程,这种事情谁听了都会有几分诧异的.因为这件事虽然和工作有一定的相关度,但平时不会走这个方向,实际上也较少接触.此外,客户手下应该不缺人,做运维和开发的肯定比我更懂这个,但情况却和我想的不一样. 正文: 客户有需求,就应该尽量满足!因此,尽管之前对Apache.Tomcat的一些配置不熟,也未有过自己部署HTTPS的经验[当然失败的尝试还是有的],便趁着周末了解了一下相关的东西,在本地搭建了环境.实践表明,当你对一个东西

UPDATE 时主键冲突引发的思考【转】

假设有一个表,结构如下: root@localhost : yayun 22:59:43> create table t1 ( -> id int unsigned not null auto_increment, -> id2 int unsigned not null default '0', -> primary key (id) -> )engine=myisam; Query OK, 0 rows affected (0.00 sec) root@localhost

Navicat连接mysql出现2003——can&#39;t connect to mysql server on localhost(10061)引发的思考)

一:起因 (0)最近由于病了一场,闲暇时间(即生病期间)一直思考如下问题: 思考一:如何做一名合格的程序猿,怎么才能成为一名名副其实的程序猿? 思考二:还有就是到底,值不值得熬夜加班去搞研发(或转型或做相对轻松的其它IT岗位~~~对于这个问题,我一时无法给出答案,希望各位帮我分析一下,不胜感激!!!) (1)如果没有做到这一点你怎么能说,你是一名合格的程序猿 —— 安装程序或者运行开发程序... http://d.dxy.cn/detail/7870458http://d.dxy.cn/deta