嵌入式人工智能(34-基于树莓派4B的红外传感器、紫外传感器、激光传感器)

这三种光传感器都是不可见光传感器,光是由电场和磁场交替传播而形成的波动现象。光是一种电磁辐射,属于电磁波的一种。下图是电磁波的频谱范围,生活中多数光是看不到的,但是确真实存在,本文介绍几种光传感器,这几种光传感器实验比较简单,和树莓派的连接和之前介绍过的传感器也灭有什么不同,因此实验部分只做红外传感器,红外传感器也是用的比较多的,象智能小车的避障、循迹都采用红外传感器。

1、红外传感器

红外传感器(Infrared Sensor)是一种能够感知和测量红外线(Infrared Radiation)的设备。红外线是一种电磁辐射,波长比可见光长,无法被人眼直接看到。红外传感器利用红外线的特性,可以探测目标物体的温度、距离、运动等信息。

红外传感器广泛应用于各个领域,如家电、安防、医疗、工业等。在家电中,红外传感器常用于电视机、空调等设备的遥控功能,通过接收遥控器发出的红外信号来实现设备的操作。在安防领域,红外传感器可以用于监控系统,通过感知人体的红外辐射来触发报警。在医疗领域,红外传感器可以用于体温计,通过测量人体发出的红外线来测量体温。在工业领域,红外传感器可用于检测物体的温度,判断物体是否存在异常情况。

 2、紫外传感器

紫外线是阳光中波长为 100~400nm 的光线。在自然界中,紫外线的主要光源是太阳。在太阳光谱上,紫外线的频率高于可见光线,可以分为UVA(紫外线 A,波长 320~400nm,长波)、UVB(波
280~320nm,中波)、UVC(波长100~280nm,短波)3种。
其中,UVA 的致癌性最强,晒红及晒伤作用是 UVB 的 1000 倍。UVC 一般会被臭氧层阻隔。过
量的紫外线照射会让皮肤产生大量自由基,导致细胞膜的过氧化反应,使黑色素细胞产生更多的黑色素,并往上分布到表皮角质层,造成黑色斑点。紫外线是造成皮肤皱纹、老化、松弛及黑斑的最大凶手,因此如何检测紫外线的强度对我们的健康十分必要。

VEML6075紫外传感器能够将日光的UV光强度转换成数字信号,准确地测量信号强度。即使长时间暴露在阳光的紫外辐射下,VEML6075紫外线传感器依然具有良好的性能,在-40℃~+85℃温度范围内具有很高的温度补偿稳定性。VEML6075紫外线传感器功耗低,具有关机模式,功耗可降低到800nA,工作电压为3.3V~5V,非常适合便携式电子产品和可穿戴设备,可用于气象站、火焰探测等领域。

3、激光传感器

激光传感器(Laser Sensor)是一种利用激光的高方向性、高单色性、高亮度、速度快、精度高、量程大和抗干扰能力强等特点实现目标检测和测距的传感器。它通过发射激光束并接收反射回来的光信号,通过测量光的传播时间或光的相位差来确定目标的位置、形状、距离和速度等信息。

激光传感器通常由激光发射器、光电二极管接收器、信号处理电路和数据输出接口等组成。激光发射器一般采用半导体激光器,能够发射出稳定、高能量、狭窄束的激光光束。接收器一般采用光电二极管或光电二极管阵列,能够接收并转换激光光束反射回来的光信号。信号处理电路负责对接收到的光信号进行放大、滤波、模数转换等处理,然后通过数据输出接口传输给用户系统。

激光传感器具有高精度、高分辨率、高速度、长测距范围的特点。它可以应用于工业自动化、机器人导航、测绘勘探、环境检测、安全监控等领域。在工业领域中,激光传感器可以用于测量物体的位置、形状、尺寸等参数,实现自动化生产和质量检测。在机器人导航中,激光传感器可以用于地图构建、环境感知和避障,提高机器人的自主导航能力。在测绘勘探中,激光传感器可以通过扫描地面或建筑物来获取地形、地貌等信息。在环境检测中,激光传感器可以用于气体浓度监测、颗粒物检测等。

激光测距芯片VL53L0X采用940nm垂直腔面发射激光器(Vertical-Cavity Surface-Emitting Laser,简称VCSEL)发射出激光,激光碰到障碍物后反射回来被VL53L0X接收到,测量激光在空气中的传播时间,进而得到距离。

4、实验代码与现象

本次实验只做红外传感器实验,接线比较简单,它只有3根线,out引脚接树莓派GPIO21(BOARD40),当用手遮挡,打印检测到障碍物,否则,没有检测到。

import time
import RPi.GPIO as GPIO# 指定编号规则为BOARD
GPIO.setmode(GPIO.BOARD)
# 使用的GPIO引脚
gpio_pin = 40
# 将第40个引脚设置为输入模式
GPIO.setup(gpio_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)def loop_detect():while True:# 当检测是否输出低电平信号if GPIO.input(gpio_pin) == 0:print("检测到障碍物")else:print("未检测到障碍物")time.sleep(0.5)if __name__ == '__main__':try:loop_detect()except KeyboardInterrupt:print("程序结束!")finally:GPIO.cleanup()

(1)智能小车的红外避障

其主要是通过红外传感器可精确地测量和障碍物的距离这一特性来实现的。在使用该模块测量距离时,其工作原理与超声波传感器类似,由红外发射管和红外接收管组成。发射管发射红外线,当前面没有障碍物时,红外线就一直往前照射,一旦遇到障碍物后,红外光就反射回来被接收管接收,经过比较器电路处理之后,输出指示灯亮起,同时在信号输出接口输出一低电平的数字信号,也可通过电位器旋钮调节检测距离,有效距离范围大概为 2~30cm。红外线的反射光越强,则说明障碍物的距离愈近。

当用手遮挡并且范围在20cm之内(感应距离主要看灵敏度阈值调整)指示灯会亮,传感器给树莓派一个低电平信号,当检测到低电平信号后,启动相应左转或右转功能。

如上图,这个车是2个红外模块,左右各一个,由于是面对读者,图左边的红外实际上定义为SensorRight,图右边的红外实际上定义为SensorLeft,2个传感器不停检测前方是否有障碍。有障碍产生低电平信号0,没有障碍变量值为1。

        while True:
            SR_2 = GPIO.input(SensorRight)
            SL_2 = GPIO.input(SensorLeft)
            if SL_2 == True and SR_2 == True:
                print( "t_up")
                t_up(50,0)
            elif SL_2 == True and SR_2 ==False:
                print( "Left")
                t_left(50,0)
            elif SL_2==False and SR_2 ==True:
                print( "Right")
                t_right(50,0)
            else:
                t_stop(0.5)
                t_down(50,1)

该段程序代码实现的功能:

两边的红外均未检测出障碍,小车前进;

右边的红外检测到障碍,左边的未检测出障碍,小车左转;

左边的红外检测到障碍,右边的未检测出障碍,小车右转;

两边的红外均检测出障碍,小车停止运动。

(2)智能小车的红外循线(循迹)

红外巡线是一种常见的机器人技术,用于实现自动巡线功能。通过红外传感器检测地面上的巡线带,在机器人上进行反馈控制,从而实现沿着巡线带行驶的功能。

红外线的反射光越强,则说明障碍物的距离愈近。但当障碍物表面是黑色时,红外线容易被吸收,从而使反射光的强度减弱,这是它的不足之处,对于其他颜色的障碍物,红外线都有很好的反射效果。正是这一特点,因此小车可以用红外传感器做循迹,这个轨迹是黑色线才行。(超声波传器发射出的超声波也很有可能被吸音墙面吸收,并且速度受温度和风向的干扰)

编程思路:初始状态,小车位于车道线中间,左右的红外模块均检测不到黑线(持续产生低电平信号0,检测到黑线则产生高电平信号1,和避障相反),当右侧的红外检测到黑线,说明小车往左偏,右转;当左侧的红外检测到黑线,说明小车往右偏,左转。不太可能出现同时检测出黑线的情况。

有了这个思路和上面代码的样例,相信写出红外巡线的代码很容易了把。

如果是用树莓派做视觉小车的巡线,可以考虑另一种实现方式,毕竟树莓派的CPU功能还是比较强悍的,现在的树莓派已有第5代产品,性能是树莓派4B的2-3倍,完全可以用图像处理的方式来实现小车的循线。不管是黑线白线,单车道线还是双车道线都可以,毕竟使用了OpenCv图像处理库,那便可以随心所欲驰骋在人工智能和物联网的世界里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876886.shtml

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

相关文章

C++从入门到起飞之——友元内部类匿名对象对象拷贝时的编译器优化 全方位剖析!

🌈个人主页:秋风起,再归来~🔥系列专栏:C从入门到起飞 🔖克心守己,律己则安 目录 1、友元 2、内部类 3、 匿名对象 4、对象拷⻉时的编译器优化 5、完结散花 1、友元 • 友元提供…

基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台

在现代招聘领域,数据驱动的决策已成为提升招聘效率和质量的关键因素。基于爬虫技术和机器学习算法,结合Django框架和Bootstrap前端技术,我们开发了一套完整的招聘数据分析与可视化系统。该系统旨在帮助企业从海量招聘信息中提取有价值的数据&…

学习Numpy的奇思妙想

学习Numpy的奇思妙想 本文主要想记录一下,学习 numpy 过程中的偶然的灵感,并记录一下知识框架。 推荐资源:https://numpy.org/doc/stable/user/absolute_beginners.html 💡灵感 为什么 numpy 数组的 shape 和 pytorch 是 tensor 是…

等保2.0测评 — 容器测评对象选取

之前有小伙伴提问到,关于容器到底要测评哪些内容,也就是测评对象的选取。 首先要区分的是容器与容器集群这两个概念。容器集群概念可参考该篇文章。 不使用容器扩展要求情况 当仅使用容器技术时,采用安全通用要求,无需使用容器…

昇思25天学习打卡营第15天|探索 Diffusion 扩散模型:从构建到应用的全过程

目录 环境配置 构建Diffusion模型 位置向量 ResNet/ConvNeXT块 Attention模块 组规一化 条件U-Net 正向扩散 数据准备与处理 训练过程 推理过程 环境配置 首先进行环境配置、库的导入和一些设置操作,具体代码如下: %%capture captured_output …

土体的有效应力原理

土体的有效应力原理 有效应力原则1. 总应力的测定2. 孔隙水压力的测定3. 有效应力的确定 有效应力的重要性 土体中的有效应力原理是卡尔太沙基在1936年提出的重要理论之一。它是总应力和孔隙水压力之间的差值。下面简要说明土壤中有效应力的更多特征和测定。 有效应力原则 有…

人工智能入门第一篇:简单理解GPU和CPU

目录 1,GPU就是显卡吗2,CPU和GPU到底是什么区别3,CUDA是什么4,为什么人工智能离不开GPU 1,GPU就是显卡吗 ‌不是,显卡和‌GPU是两个相关但不完全相同的概念,GPU是显卡的核心部分,但…

Google Test 学习笔记(简称GTest)

文章目录 一、介绍1.1 介绍1.2 教程 二、使用2.1 基本使用2.1.1 安装GTest (下载和编译)2.1.2 编写测试2.1.3 运行测试2.1.4 高级特性2.1.5 调试和分析 2.2 源码自带测试用例2.3 TEST 使用2.3.1 TestCase的介绍2.3.2 TEST宏demo1demo2 2.3.3 TEST_F宏2.3…

wincc 远程和PLC通讯方案

有 5个污水厂 的数据需要集中监控到1个组态软件上,软件是WINCC。每个污水厂监控系统都是独立的,已经投入运行了, 分站也是WINCC 和西门子PLC 。采用巨控远程模块的话,有两种方式:一种是从现场的PLC取数据,一种是从分站…

2019数字经济公测大赛-VMware逃逸

文章目录 环境搭建漏洞点exp 环境搭建 ubuntu :18.04.01vmware: VMware-Workstation-Full-15.5.0-14665864.x86_64.bundle 这里环境搭不成功。。patch过后就报错,不知道咋搞 发现可能是IDA加载后的patch似乎不行对原来的patch可能有影响,重新下了patch&…

【8月EI会议推荐】第四届区块链技术与信息安全国际会议

一、会议信息 大会官网:http://www.bctis.nhttp://www.icbdsme.org/ 官方邮箱:icbctis126.com 组委会联系人:杨老师 19911536763 支持单位:中原工学院、西安工程大学、齐鲁工业大学(山东省科学院)、澳门…

科大讯飞语音转写demo go语言版

上传了一个语音文件,识别效果。 package audioimport ("bytes""crypto/hmac""crypto/md5""crypto/sha1""encoding/base64""encoding/json""fmt""io/ioutil""net/http"…

【图文详解】Spring是如何解决循环依赖的?

Spring是如何解决循环依赖的呢? 很多小伙伴在面试时都被问到过这个问题,刷到过这个题的同学马上就能回答出来:“利用三级缓存”。面试官接着追问:“哪三级缓存呢?用两级行不行呢?” 这时候如果没有深入研究…

Vs2022+QT+Opencv 一些需要注意的地方

要在vs2022创建QT项目,先要安装一个插件Qt Visual Studio Tools,根据个人经验选择LEGACY Qt Visual Studio Tools好一些,看以下内容之前建议先在vs2022中配置好opencv,配置方式建议以属性表的形式保存在硬盘上。 设置QT路径 打开v…

清华计算几何-算法LowBound和ConvexHull(凸包)-GrahamScan

算法复杂度最低界限LowBound 算法求解复杂度是否存在一个最低界限,有时候想尽一切办法优化一个算法,去优化其复杂度,比如 清华计算几何-ConvexHull(凸包)-求极点InTriangle/ToLeft Test-CSDN博客 清华计算几何-ConvexHull(凸包)-求极边_计…

DeFi革命:揭秘去中心化金融的核心技术与实操指南

目录 DeFi(去中心化金融)综述 基本特点 第一,DeFi 是无许可的金融 第二,DeFi 是无门槛的金融 第三,DeFi 是无人驾驶的金融 典型商业模式 闪电贷 MakerDAO 面临的挑战 DeFi技术要点 椭圆曲线签名 EIP-712:…

模拟依赖关系和 AI 是Vue.js测试的下一个前沿领域

Vue.js 是一个流行的 JavaScript 框架,因此,确保其组件按预期工作至关重要:有效,更重要的是,可靠。模拟依赖项是最有效的测试方法之一,我们将在本文中发现。 模拟依赖项的必要性 模拟依赖项是一种对测试施加…

个人定制化形象生成,FaceChain最新模型部署

FaceChain是阿里巴巴达摩院推出的一个开源的人物写真和个人数字形象的AI生成框架。 FaceChain利用了Stable Diffusion模型的文生图功能,并结合人像风格化LoRA模型训练及人脸相关感知理解模型,将输入的图片进行训练后推理输出生成个人写真图像。 FaceCh…

Live555源码阅读笔记:哈希表的实现(C++)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

算法日记day 20(中序后序遍历序列构造二叉树|最大、合并、搜索二叉树)

一、中序后序序列构造二叉树 题目: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,…