一起玩儿物联网人工智能小车(ESP32)——55. 利用光敏电阻实现追光小车(一)

本文主要是介绍一起玩儿物联网人工智能小车(ESP32)——55. 利用光敏电阻实现追光小车(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要:本文介绍使用光敏电阻实现追光小车

要想实现追光小车,首先需要找到可以反应光强的传感器。测量光强最常使用且价格便宜的就是光敏电阻和光敏二极管了。

光敏电阻器常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电场的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。常见的光敏电阻如下图所示:

光敏电阻属半导体光敏器件,除具灵敏度高,反应速度快,光谱特性及阻值一致性好等特点外,在高温,多湿的恶劣环境下,还能保持高度的稳定性和可靠性,可广泛应用于照相机,太阳能庭院灯、草坪灯、路灯自动开关以及各种光控玩具,光控灯饰,灯具等光自动开关控制领域。

这次用在追光小车上使用的是光敏电阻模块,该模块如下图所示。

这种光敏电阻模块通常有两种,一种是3个引脚的,另一种是4个引脚的。两者的区别在于,3引脚的只有一个数字量输出,也就是只能输出高低电平两种状态,而4引脚的多了一个模拟量输出引脚,通过该引脚能够得到光敏电阻在光敏电阻前端分压电路中的电压值,通过这个电压值,可以得到光强的变化情况。因此,3引脚的通常用于根据光线控制灯亮灭的场合,而4引脚的则可以用在需要测量光线变化情况的场景。

我们在这里使用的是4引脚的光敏电阻模块,如下图所示:

在上图中可以看到,最左侧为一个光敏电阻,中部有一个灵敏度调节电位器,这个电位器的作用就是调节后端数字量输出口DO的变化的阈值,也就是当照射在光敏电阻上的光强达到多少时,DO的输出进行高低电平的切换。在控制路灯的应用中,可以通过调节此电位器来调节亮灯的时机。光敏电阻模块靠右侧还有两个LED指示灯,上面的是电源指示灯,下面的是DO输出指示灯。当光敏电阻接收到的光强大于事先的设定时,该LED会点亮。模块的最右侧为外接引脚,具体定义说明如下:

序号

标识

名称

说明

1

VCC

电源正极

3.3V~5V

2

GND

电源负极

3

DO

开关信号输出

表示光强是否大于事先设定值

4

AO

模拟信号输出

光敏电阻两端的电压输出,光强越强,电压值越小。

下面就来把光敏电阻模块与ESP32开发板连接起来,先来测试一下基本功能吧。在这里要使用的是模拟量接口AO,因为我们需要读取光强的变化以及进行多个光敏电阻模块采集到的光强进行比较,以此来决定小车的运动方向。具体的连接方式如下表所示:

光敏电阻模块

ESP32扩展板

VCC

+3.3V(注意这里别接错了)

GND

GND

AO

P34

这里的模拟量读取其实就是电压值的读取,这个在之前已经介绍过了,使用Arduino提供的标准函数analogRead()就可以了。具体程序代码如下所示:

void setup() {

  // put your setup code here, to run once:

  Serial.begin(115200);

}

void loop() {

  // put your main code here, to run repeatedly:

  Serial.println( analogRead(34) );

  delay(1000);

}

编译、运行该程序,就可以看到读入电压的数值了。如下图所示:

可以看到这个输出值,并不是具体的电压值,是要经过转换之后才会得到光敏电阻模块模拟输出引脚的电压值。由于这个转换是线性的,而我们只需要得到光强的变化情况,所以在后边的程序中,我们并不会转化为电压值再进行比较,而是直接使用这个值就可以进行各种比较、判断的操作了。

由于这是光电转换器件,在生产的时候会有一些离散性,或者模块采用了不同型号的光敏电阻,或者是产品质量的原因,导致不同的光敏电阻模块输出的电压相差较大,不利于后边进行比较、判断工作。因此最好是提前把每一个光敏电阻都接到ESP32开发板上,测试一下电压输出的情况,找一些一致性比较好的光敏电阻模块来使用,否则会影响小车的追光效果。

在选择光敏电阻模块的时候,需要注意以下几点:

  1. 最好在相对比较暗的环境中进行,周边环境不要太明亮,尤其不要阳光直射。因为光越强,光的变化越不明显。
  2. 通常情况下,在完全黑暗的时候,ESP32开发板采集到的数据应该是模数转换的最大值——4095,因为这个时候,光敏电阻的阻值应该是1M欧到10M欧。
  3. 在光线最强的时候,光敏电阻的采集值应该只有100左右,甚至更低,因为这个时候光敏电阻的阻值只有几百到几千欧。

4. 在剔除了最大和最小值偏离太大的光敏电阻模块之后,同时将这些光敏电阻模块接到ESP32开发板上,然后测试不同的光强下,输出保持基本一致的几个光敏电阻模块作为下一步的实验使用。

选择合适的光敏电阻模块非常的重要,对下一步实验的成功起着非常关键的作用。好了,本篇文章就到这里了,下一篇将完成追光小车的开发工作。

这篇关于一起玩儿物联网人工智能小车(ESP32)——55. 利用光敏电阻实现追光小车(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684306

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG