红外传感器使用

news/2024/12/1 0:35:00/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、红外传感器?
  • 二、使用步骤
    • 1.确保驱动已经安装
    • 2.安装GPIO工具
    • 3.安装GPIO的Python支持
    • 4.Python3代码
    • 5.测试结果
  • 总结


前言

最近在做一个项目需要用到红外距离传感器,设备如果检测到有人靠近就亮屏,规定时间检测不到人就自动息屏。也许这个方法通过其它方法也能做到,只不过用红外的话一方面灵敏度高,另一方面功耗低,节省成本。今天的使用在OrangePi上完成,树莓派原理差不多,只需要稍微配置下就行。这篇文章主要以OrangePi来演示,树莓派的话大家可以自行研究,相信不需要改动太多。


一、红外传感器?

红外线传感器是利用红外线来进行数据处理的一种传感器,有灵敏度高等优点,红外线传感器可以控制驱动装置的运行。
红外线传感器常用于无接触温度测量,气体成分分析和无损探伤,在医学、军事、空间技术和环境工程等领域得到广泛应用。例如采用红外线传感器远距离测量人体表面温度的热像图,可以发现温度异常的部位。
我们今天用的红外线传感器的用途是触发式的,本身不能测距,只要有物体靠近到预设距离就会触发信号。
在这里插入图片描述

二、使用步骤

不同的设备,像树莓派和OrangePi可能有着不同的GPIO排列,这篇文章是适用于OrangePi的,也是适用于树莓派和其它拥有GPIO接口的设备。代码采用Python3编写,通俗易懂,如果用在单片机上可能要使用C语言编写。

1.确保驱动已经安装

这篇文章不过多地描述驱动,如果驱动没有安装请按照官方提供的方法安装下驱动,如果已经安装请忽略。

2.安装GPIO工具

打开一个shell输入以下命令,如果正常显式,就说明工具已经安装。

#读取所有gpio插口状态
gpio readall+------+-----+----------+------+---+OrangePi 4+---+---+--+----------+-----+------+| GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |+------+-----+----------+------+---+----++----+---+------+----------+-----+------+|      |     |     3.3V |      |   |  1 || 2  |   |      | 5V       |     |      ||   64 |   0 | I2C2_SDA |   IN | 0 |  3 || 4  |   |      | 5V       |     |      ||   65 |   1 | I2C2_SCL |   IN | 0 |  5 || 6  |   |      | GND      |     |      ||  150 |   2 |     PWM1 |   IN | 0 |  7 || 8  | 1 | IN   | I2C3_SCL | 3   | 145  ||      |     |      GND |      |   |  9 || 10 | 1 | ALT2 | I2C3_SDA | 4   | 144  ||   33 |   5 | GPIO1_A1 |   IN | 0 | 11 || 12 | 1 | IN   | GPIO1_C2 | 6   | 50   ||   35 |   7 | GPIO1_A3 |   IN | 0 | 13 || 14 |   |      | GND      |     |      ||   92 |   8 | GPIO2_D4 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO1_C6 | 9   | 54   ||      |     |     3.3V |      |   | 17 || 18 | 0 | IN   | GPIO1_C7 | 10  | 55   ||   40 |  11 | SPI1_TXD | ALT2 | 1 | 19 || 20 |   |      | GND      |     |      ||   39 |  12 | SPI1_RXD | ALT2 | 1 | 21 || 22 | 0 | IN   | GPIO1_D0 | 13  | 56   ||   41 |  14 | SPI1_CLK | ALT3 | 1 | 23 || 24 | 1 | ALT3 | SPI1_CS  | 15  | 42   ||      |     |      GND |      |   | 25 || 26 | 0 | IN   | GPIO4_C5 | 16  | 149  ||   64 |  17 | I2C2_SDA |   IN | 0 | 27 || 28 | 0 | IN   | I2C2_SCL | 18  | 65   ||      |     |  I2S0_RX |      |   | 29 || 30 |   |      | GND      |     |      ||      |     |  I2S0_TX |      |   | 31 || 32 |   |      | I2S_CLK  |     |      ||      |     | I2S0_SCK |      |   | 33 || 34 |   |      | GND      |     |      ||      |     | I2S0_SI0 |      |   | 35 || 36 |   |      | I2S0_SO0 |     |      ||      |     | I2S0_SI1 |      |   | 37 || 38 |   |      | I2S0_SI2 |     |      ||      |     |      GND |      |   | 39 || 40 |   |      | I2S0_SI3 |     |      |+------+-----+----------+------+---+----++----+---+------+----------+-----+------+| GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |+------+-----+----------+------+---+OrangePi 4+---+---+--+----------+-----+------+

如果命令正常出结果说明GPIO工具已经安装,可以进行下一步了,如果没有需要先安装GPIO工具。

sudo apt update
sudo apt install git
git clone https://github.com/orangepi-xunlong/wiringOP
cd wiringOP
./build clean
./build

编译完成输入gpio readall来测试下是否成功了,如果成功了就进入下一步,没有成功就检查错误原因。

3.安装GPIO的Python支持

这篇文章演示代码是在Python3上实现的,所以需要GPIO的Python支持。执行以下命令就可以在OrangePi设备上安装GPIO包了

sudo pip3 install --upgrade OPi.GPIO

安装完成后就可以编写Python代码测试了。

4.Python3代码

# 红外传感器(infrared ray)
import timeimport OPi.GPIO as GPIO
import orangepi.pi4# 默认使用BOARD模式,在我的OrangePi上就是官方描述的物理插针,不同的设备可能不一样,以官方文档为准
BOARD = orangepi.pi4.BOARD
GPIO.setmode(BOARD)# 需要操作的针脚,随便找一个IN针脚就可以了,注意插针的物理排列和序号的对应关系
IN= 15  # in 对应针脚15# 设置输入PIN,模块上是OUT,我们这个地方需要接IN
GPIO.setup(IN, GPIO.IN)# 测试比较简单,直接返回out的值就行了
def start_test():return GPIO.input(IN)try:while True:value = start_test()print("value: " + str(value))time.sleep(0.1)
except KeyboardInterrupt:GPIO.cleanup()

5.测试结果

没有触发感应:

value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1
value: 1

将手遮挡住:

value: 0
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0
value: 0

默认状态指示灯是灭的,触发距离感应指示灯亮,值变为0.


总结

1、务必先将板子关机掉电再插传感器,防止短路
2、VCC不要插错位置,防止短路烧坏板子或传感器,3.3V和5V都可以。
3、通过电位器旋转来控制触发距离,默认会有一定的距离偏差。


http://www.ppmy.cn/news/338820.html

相关文章

Android红外线遥控

Android API Demos中有红外线遥控的小例子,在网上找了很久相关的资料,发现比较少,或许找的方法不对。 Github上有一个与之相关的开源项目https://github.com/timnew/AndroidInfrared,还没来得及学习。希望有相关资料或学习项目的大…

手机的红外线功能有可能淘汰

逛手机论坛的,就功能而言,吾发现有几个很受关注: TYPE-C接口。这个接口好用,也推出很久了,现在很多新机还是MicroUSB接口。 NFC。比如刷公交,非常方便。 红外线。说是用来遥控。 之前一文吾认为NFC可能逐步…

手机红外方案介绍

红外知识介绍的网站(https://www.sbprojects.net/knowledge/ir/index.php),包含各种红外协议,其中常见是是nec协议。 图1是红外的发射电路,图2是红外的接收电路,图3和图4是nec协议 9毫秒脉冲+4.5毫秒低电平…

HTML5期末大作业:电影网站设计——电影介绍(11页) 大学生电影网页作品 电影网页设计作业模板 学生网页制作源代码下载

HTML5期末大作业:电影网站设计——电影介绍(11页) 大学生电影网页作品 电影网页设计作业模板 学生网页制作源代码下载 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 …

东东动态夏目猫咪老师404官网html源码

介绍: 非常好看的一款404页面,右键记事本就可以修改文字~ 按钮忘记插入超级链接了自己加一下,不然不会跳转哈! 网盘下载地址: http://kekewl.net/jGfERMG5xaG 图片:

手撸架构,Nginx 面试40问

技术栈传送门JAVA 基础手撸架构,Java基础面试100问_vincent-CSDN博客JAVA 集合手撸架构,JAVA集合面试60问_vincent-CSDN博客JVM 虚拟机手撸架构,JVM面试30问_vincent-CSDN博客并发编程手撸架构,并发编程面试123问_vincent-CSDN博客…

面试必备:Spring 面试 63 问!

作者 | 夏目 blog.csdn.net/wuzhiwei549/article/details/122324261 Sping原理 Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack&#x…

面试攻略!Java 基础面试 100 问

点击关注公众号,回复“1024”获取2TB学习资源! 面向对象的特征有哪些方面? 抽象(Encapsulation):封装的目的是为了保证变量的安全性,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员 如果不进行封装&…