Arduino智能垃圾桶

2023-05-16

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);
        }
  
 
}


实物

在这里插入图片描述



补充 舵机和超声波 调试

舵机


接线

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);
        }
    }
  
}


通过串口工具调试舵机的转动角度
输入 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);
    
    return  pulseIn(Echo,HIGH);
  }
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);
}


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



为什么接收到的脉冲信号要除以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可能更精确


在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino智能垃圾桶 的相关文章

  • Arduino I2S 正弦波

    我正在开发一个项目 我想通过组合不同的正弦波来生成 简单 声音 我使用的是 arduino mkrZero 因为它内置了 I2S 接口 并且似乎有足够的处理能力来满足我的需求 I have wired my system exactly l
  • ARDUINO 常数有什么用?以前是22,现在是100

    我正在使用热电偶并下载了 MAX6675 库 我想知道以下几行中 ARDUINO 常量的值是做什么用的 if ARDUINO gt 100 lcd write byte 0 else lcd print 0 BYTE endif lcd p
  • PySerial 从 Arduino 读取线路的延迟

    我正在使用带有基本 DigitalReadSerial 设置的 arduino uno 如下所述 http arduino cc en Tutorial DigitalReadSerial http arduino cc en Tutori
  • Android 和 Arduino 都通过蓝牙接收奇怪的值

    我正在 Android 端使用 BluetoothChat 代码使用聊天框向 Arduino UNO 发送开 关信号 我发送 110 119 或下面定义的其他情况 但是当我显示接收到的值时 它显示奇怪的Arduino 串行监视器中的值 即
  • Python自动选择串口(适用于Arduino)

    目前 Python 程序必须知道设备 Arduino 位于哪个端口 然后 Python 才能与设备进行通信 Problem 每当设备拔出并重新插入时 其 COM 端口都会发生变化 因此必须再次向 Python 提供正确的串行端口 以便它找到
  • ESP32 Arduino-ide如何获取唯一id

    我试图自动为每个 esp32 设置一个唯一的 id 在我使用提供该方法的 ESP IDF 框架对设备进行编程之前esp efuse mac get default 这将返回一个 8 字节值 该值在我手上的所有设备上都是唯一的 在arduin
  • C++:将成员函数作为普通函数指针传递的闭包

    我正在尝试调用外部库的成员函数 该函数接受函数指针作为参数 Timer every unsigned long period void callback void 但不幸的是我想传递的参数是一个成员函数 void MyClass the m
  • 终止导致设备或资源繁忙的进程:“/dev/ttyUSB0”?

    我使用以下 Python 代码连接到我的 Arduino 板 device glob glob dev ttyUSB 0 time sleep 1 arduino serial Serial device 115200 timeout 5
  • 带/不带类的回调函数指针 C++

    我被困 我正在尝试形成一个函数 它将吃掉无类函数指针和对象中的函数指针 这是我当前的代码 希望能解释更多 它应该在 Arduino 上运行 所以我不能使用大型库 首先 我在 Arduino 上使用这个库 SimpleTimer A time
  • 为什么使用 libnfc 和 PN532 SHIELD 时“找不到 NFC 设备”

    我在 ArchLinux 上安装了 libnfc 并通过我的 Adafruit PN532 arduino SHIELD 使用它 nfc list返回消息 未找到 NFC 设备 我在 etc nfc devices d pn532 conf
  • AVRDUDE Android Arduino ioctl 错误

    我之前的问题 Android 无法使用 AVRDUDE 与 Arduino 通信 https stackoverflow com questions 15596376 android cannot talk to arduino using
  • 在 Arduino 上将整数/小数转换为十六进制?

    如何将整数或小数变量转换为十六进制字符串 我可以做相反的事情 将十六进制转换为整数 但我无法找出其他方法 这是为了Serial print 数组中的十六进制值 查看 Arduino 字符串教程here http arduino cc en
  • 是否可以在 Arduino 上运行 ZeroMQ

    我想知道是否可以通过 ZeroMQ 与 Arduino 进行通信 我想使用 Arduino 来控制一些设备 并希望将大部分应用程序放在计算机上 为此 如果 Arduino 和控制器可以通过 Zeromq 以及 WiFi 或以太网扩展板进行通
  • Python串口通信

    我正在开发一个 Arduino 项目 由于内存限制 我将其与 Python 脚本连接起来 在Python方面 我有一个二维矩阵 其中包含各自的x y坐标值 并且在此列表中有26000个坐标对 因此 为了向大家澄清数据结构 pathlist
  • 无法将 minicom 的输出保存到文件中

    当我使用Minicom从串口捕获数据时 我需要将大数据保存到一个文件中 名为minicom cap 但是 如果我按 Ctrl A 和 L 来捕获文件 则失败 没有创建文件 minicom cap之前并不存在 我的下载目录已正确创建 我的操作
  • Arduino Uno 上传失败

    我收到了一个 arduino uno 和一些代码 作为我正在从事的项目的一部分 我以前从未与他们合作过 所以这对我来说是一次全新的体验 我正在使用他们网站上的 Arduino 应用程序 当我编译代码时 它工作正常 然而 当我上传时 我收到错
  • 如何将 Android 应用程序正确连接到支持蓝牙的 Arduino 微控制器上的 RFCOMM 套接字?

    我正在与我大学的一些学生合作开发一个简单的蓝牙 Android 应用程序 该应用程序将用于与连接有蓝牙模块的 Arduino 微控制器进行串行通信 RFCOMM 据我所知 我正在使用正确的蓝牙地址和 UUIDRFCOMM SPP 00001
  • Arduino 引导加载程序

    有人可以解释一下如何Arduino引导加载程序 http code google com p arduino source browse tags 0019 hardware arduino bootloaders atmega ATmeg
  • 使用 arduino 客户端/python 服务器通过以太网转储数据

    我正在使用 arduino 以太网从传感器读取数据 然后想将数据发送到另一栋建筑物中的计算机以驱动 python 软件中的逻辑 控制 我决定在 python arduino 中绘制一个简单的草图 仅通过以太网将文本从 arduino 发送到
  • 无需移动即可连接 Arduino 伺服系统

    我正在使用Arduino伺服定时器2 https github com nabontra ServoTimer2库 因为我还需要使用虚拟线 https www pjrc com teensy td libs VirtualWire html

随机推荐

  • 编写一个C语言程序,将大写字母变成小写字母

    编写一个C语言程序 xff0c 将大写字母变成小写字母 include lt stdio h gt int main int i 61 1 char c1 c2 c1 61 A while i lt 27 c2 61 c1 43 32 pr
  • 选择法排序和冒泡法排序

    一 思路 1 选择法排序 1 把第一位和其他所有位比较 xff0c 只要比第一位小的 xff0c 就换到第一个位置来 xff0c 比较数组长度 1次后 xff0c 第一位就是最小的 2 再从第二位和剩余的其他所有位进行比较 xff0c 只要
  • 在pycharm中输入import torch 报错怎么解决

    大家在学习深度学习过程中 xff0c 会安装pytorch xff0c 但是明明安装了对应的pytorch xff0c 在pycharm中编写代码import torch时还报错 我们也已经选择了conda xff0c 选对了对应的Pyth
  • 在Ubuntu22.04条件下,如何打开树莓派4B的串口

    打开串口 树莓派4B一共有6个串口 xff0c 之前的版本只有2个串口 这6个串口中 xff0c 有5个时硬件串口 xff0c 还有个mini串口 xff0c 这5个硬件串口在我们需要使用外设时 但是 xff0c 默认情况下 xff0c 5
  • 编写Python语言,使用循环求解1到100之间数的偶数和

    a 61 1 sum 61 0 while a lt 61 100 if a 2 61 61 0 sum 43 61 a a 43 61 1 print 39 1和100之间的偶数的和为 39 sum
  • 编写Python语言,求100到999之间的水仙花数

    for sum in range 100 1000 bai 61 sum 100 shi 61 sum 10 10 ge 61 sum 10 if bai 3 43 shi 3 43 ge 3 61 61 sum print sum 39
  • 用到树莓派进行串口通信,使用方法ser.inwaiting()时遇到错误:OSError:[Errno 25] Inappropriate ioctl for device怎么解决

    其实 xff0c 出现这个问题是因为没有禁用蓝牙串口 xff0c 解决方法也很简单 xff0c 将蓝牙串口关闭即可 xff0c 具体方法如下 xff1a 1 打开终端 xff0c 输入 xff1a cd boot firmware进入新的文
  • Windows右键自定义

    Windows右键自定义 使用注册表一 设置名称和快捷键二 设置图片三 设置调用命令四 测试 其他文件类型 xff08 目录 文件 驱动器以及一些行为 xff09 特定文件后缀只对当前用户生效二级菜单参考 使用注册表 这里先做一个对任意文件
  • Linux服务器安装图形化界面和使用Vncserver远程连接

    Linux安装图形化界面Server with GUI 输入命令查看有哪些软件可以安装 yum grouplist 安装Server with GUI yum groupinstall Server with GUI 如果服务器中安装了do
  • pip下载镜像源汇总

    为了每次不用到处查找镜像源 xff0c 所以做个经常会使用的镜像源汇总 xff1a 清华大学 xff1a https pypi tuna tsinghua edu cn simple 阿里云 xff1a http mirrors aliyu
  • [最全]解决ModuleNotFoundError: No module named ‘pip‘(Windows/Linux系统;原生环境/Conda环境)

    问题简述 在使用python的过程中遇到命令行出现ModuleNotFoundError No module named 39 pip 39 的报错 是很要命的一件事 因为pip是安装库文件命令 出了问题会导致没有办法安装需要的环境 而且使
  • tar.gz包的安装方法

    tar gz 以 tar gz为扩展名的是一种压缩文件 xff0c 在Linux和OSX下常见 xff0c Linux和OSX都可以直接解压使用这种压缩文件 windows下的WinRAR也可以使用 xff0c 相当于常见的RAR和ZIP格
  • Git常用命令及方法大全

    Git常用命令及方法大全 下面是我整理的常用 Git 命令清单 几个专用名词的译名如下 Workspace xff1a 工作区Index Stage xff1a 暂存区Repository xff1a 仓库区 xff08 或本地仓库 xff
  • debian最小化安装后的配置

    本次安装的是debian11 xff0c 安装时只选择标准工具 xff0c 安装成功后希望使用suckless系列软件 xff0c 包括dwm和st 配置内容依次为 xff1a 配置wifi 配置无线网络 在 etc network int
  • Vue中的computed和watch的区别和使用

    1 computed使用和介绍 computed计算属性 xff1a 只能对最终结果进行运算功能 xff0c 只计算一次 xff0c 具有缓存功能 xff0c 能实现计算属性与普通属性之间的双向绑定 computed的作用 1 减少模板中的
  • 【蓝桥杯省赛JavaB组真题详解】成绩统计(2020)

    题目描述 成绩统计 小蓝给学生们组织了一场考试 xff0c 卷面总分为 100 分 xff0c 每个学生的得分都是一个 0 到 100 的整数 如果得分至少是 60 分 xff0c 则称为及格 如果得分至少为 85 分 xff0c 则称为优
  • ThinkPad相机打开后显示为灰色相机斜杠不可用

    打开相机显示如图 xff1a 网络上一堆驱动啥问题导致 xff0c 有些人就火急火燎的去安装驱动啥的 xff0c 没必要 xff0c 一般来说不是驱动的问题 xff0c 只是对ThingPad操作不熟悉而已 解决办法 xff1a 点击下图电
  • 【bcrypt】go使用bcrypt进行加密和验证

    前言 项目开发过程中 xff0c 在注册这一块 xff0c 少不了对用户密码的加密 xff0c 今天使用bcrypt来实现对密码的加密和验证 bcypt加密和md5加密的不同点在于 xff0c 后者更安全 xff0c 对于同一字符串每次生成
  • 【深度学习环境01】 Windows10+WSL2迁移d盘+ Ubuntu 22

    前言 Windows10 xff1a Win系统稳定度舒适度没话说 xff0c 之前用双系统Linux实在太折腾 xff0c 我要布置环境用来开发程序的 xff0c 不是每次安装软件就要debug WSL2迁移d盘 xff1a Wsl是Wi
  • Arduino智能垃圾桶

    Arduino智能垃圾桶 硬件准备工作原理接线方式代码实物补充 舵机和超声波 调试舵机超声波传感器 这个小项目是基于Arduino设计的一款感应式智能开盖垃圾桶这个项目只要一点C语言的基础 xff0c 懂得一点点物联网知识就可以 xff0c