红外传感器使用

news2025/2/28 15:29:42

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

文章目录

  • 前言
  • 一、红外传感器?
  • 二、使用步骤
    • 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 time

import 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.coloradmin.cn/o/155338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux命令学习

1、linux目录结构 linux目录结构是一个树状结构 当我们直接打开ubuntu的控制台,进入的是 home 目录下的创建的用户,这里是真正的 家 目录 或者在安装 ssh 服务器之后可以直接通过 windows 命令行 访问 ubuntu 的ssh服务器,进入的是 home 目录…

【规范】我们是怎么做MySQL数据库安全管理的?

一、背景说明 MySQL作为数据库管理系统,里面保存企业的重要业务数据,因此保证数据库的安全性非常重要,如何保证数据库的安全性呢?用户和用户权限管理是一个很重要的方面。 MySQL数据库具有非常高的安全性,为我们提供…

Vue 2 即将成为过去

自从 2020 年 9 月 18 日 Vue 3 正式发布以来,已经有两年多时间了,终于在 2022 年 2 月 7 日 Vue 作者发布了一则消息:Vue 3 将成为新的默认版本。与此同时,Vue 相关官方周边的核心库 latest 发布标签将指向其 Vue 3 的兼容版本。…

从0到1完成一个Vue后台管理项目(二十一、网上地图资源、树形控件及路由权限分析、路由守卫)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

JAVA SE 详解类和对象

类和对象 面向对象的初步认知 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。 面 向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向…

ArcGIS基础实验操作100例--实验79分区统计降雨量

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验79 分区统计降雨量 目录 一、实验背景 二、实验数据 三、实验步骤 (1&am…

【VUE2-02】vue2的指令和vue2的缺点

文章目录一、vue条件渲染 v-if二、vue循环渲染 v-for三、vue的事件 v-on四、vue的双向绑定 v-model五、VUE2的缺点5.1 vue底层原理解决方案在上节 【VUE2-01】vue2的起步,中写hello world!例子的时候使用了一个指令 v-bind绑定元素属性一、vue条件渲染 v-if v-if控…

米筐量化终端是什么?

米筐量化终端大家应该也能想象到是应用的终端,是系统执行的终端环节,如果是用在量化方面,那它就是策略定制的终端,是方便投资者输入量化策略执行出来发最终优质目的,精确到细分股票的账户成交量,股价以及融…

java8 第七章-----多线程

7.1、线程基本知识 进程与线程: 进程(Process)是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构…

cobaltstrike的安装与基础使用

数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 Cobalt Strike是什么? Cobalt Strike(简称CS)是一款团队作战渗…

Python学习笔记——列表

Python列表函数&方法函数:len(list):列表元素个数max(list):返回列表元素最大值min(list):返回列表元素最小值list(seq):将元组转换为列表方法list.append(obj):在列表末尾添加新的对象list.count(obj)…

字典树总结

字典树 一、概念 字典树 (Trie) 是一种用于实现字符串快速存储和检索的多叉树结构; Trie 的每个节点都拥有若干个字符指针,若在插入或检索字符串时扫描到一个字符 ccc ,就沿着当前节点的 ccc 字符指针,走向该指针指向的节&…

支持向量机(SVM)入门(六,解决遗留问题)

但也出现了如下结果,看来任务没完没了(svm深似海?),还得下功夫:前面我们的支持向量机到此便止步了,一晃两年,这几天有空,顺便研究了一下,问题有进展&#xff…

基于yolov5-v7.0开发构建汽车车损实例分割检测识别分析系统

在之前的文章中我们已经做了很多基于yolov5完成实例分割的项目,感兴趣的话可以自行移步阅读:《基于YOLOv5-v7.0的药片污染、缺损裂痕实例分割检测识别分析系统》《基于yolov5-v7.0开发构建裸土实例分割检测识别模型》《基于yolov5-v7.0开发实践实例分割模…

NSThead的进阶使用和简单探讨

概述 NSThread类是一个继承于NSObjct类的轻量级类。一个NSThread对象就代表一个线程。它需要管理线程的生命周期、同步、加锁等问题,因此会产生一定的性能开销。 使用NSThread类可以在特定的线程中被调用某个OC方法。当需要执行一个冗长的任务,并且不想…

文件minio进阶 分页查询

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、minio使用二、代码1.mino版本是最新的,那么pom中也要最新的2. 部分代码总结前言 就是现在通过minio管理文件,然后不需要其他信息,所以我也就没有用传统方式…

探究视频标注如何支持自动驾驶汽车

自动驾驶汽车技术有望使我们的道路更安全,同时提高运输和交付服务的效率。安全性和可靠性是自动驾驶汽车广泛采用所必需的关键因素。为了保证汽车在现实复杂的交通条件下导航能够有效运行,必须使用标注数据来训练基于计算机视觉的模型,这些数…

verilog学习笔记- 10)按键控制 LED 灯实验

目录 简介: 实验任务: 硬件设计: 程序设计: 下载验证 : 总结与反思: 简介: 按键开关是一种电子开关,属于电子元器件类。我们的开发板上有两种按键开关:第一种是本实…

NeRF制作数据集最后的踩坑

之前对数据集渲染的时候一直出现模糊的问题: 学长说可能是摄像机和poses没有对应。但是为什么会这样呢 后来我发现,确实在制作的过程中,某一步出了问题,导致下标的数字,跟理想的不一样: 原来的12&#xf…

基于yolov5-v7.0开发构建工业机械齿轮瑕疵实例分割检测识别分析系统

在之前的文章中我们已经做了很多基于yolov5完成实例分割的项目,感兴趣的话可以自行移步阅读:《基于YOLOv5-v7.0的药片污染、缺损裂痕实例分割检测识别分析系统》《基于yolov5-v7.0开发构建裸土实例分割检测识别模型》《基于yolov5-v7.0开发实践实例分割模…