任务名称
2017年_I 题:可见光室内定位装置
任务要求
难度

一、任务

设计并制作可见光室内定位装置,其构成示意图如图 1 所示。参赛者自行搭建不小于 80cm×80cm×80cm 的立方空间(包含顶部、底部和 3 个侧面)。顶部平面放置 3 个白光 LED,其位置和角度自行设置,由 LED 控制电路进行控制和驱动;底部平面绘制纵横坐标线(间隔 5cm),并分为 A、B、C、D、E 五个区域,如图 2 所示。要求在 3 个 LED 正常照明(无明显闪烁)的情况下,测量电路根据传感器检测的信号判定传感器的位置。 

二、要求

1.基本要求
(1)传感器位于 B、D 区域,测量电路能正确区分其位于横坐标轴的上、下区域。
(2)传感器位于 C、E 区域,测量电路能正确区分其位于纵坐标轴的左、右区域。
(3)传感器位于 A 区域,测量显示其位置坐标值,绝对误差不大于 10cm。
 (4)传感器位于 B、C、D、E 区域,测量显示其位置坐标值,绝对误差不大于 10cm。
(5)测量电路 LCD 显示坐标值,显示分辨率为 0.1cm。

2.发挥部分
(1)传感器位于底部平面任意区域,测量显示其位置坐标值,绝对误差不大于 3cm。
(2)LED 控制电路可由键盘输入阿拉伯数字,在正常照明和定位(误差满足基本要求(3)或(4))的情况下,测量电路能接收并显示 3 个 LED 发送的数字信息。
(3)LED 控制电路外接 3 路音频信号源,在正常照明和定位的情况下,测量电路能从 3 个 LED 发送的语音信号中,选择任意一路进行播放,且接收的语音信号均无明显失真。
(4)LED 控制电路采用+12V 单电源供电,供电功率不大于 5W。
(5)其他。

三、说明
1.LED 控制电路和测量电路相互独立。
2.顶部平面不可放置摄像头等传感器件。
3. 传感器部件体积不大于 5cm×5cm×3cm,用“┼”表示检测中心位置。
4. 信号发生器或 MP3 的信号可作为音频信号源。
5. 在 LED 控制电路的 3 个音频输入端、测量电路的扬声器输入端和供电电路端预留测试端口。
6. 位置绝对误差:式中x 、 y为测得坐标值,x0、y0 为实际坐标值。
7. 每次位置测量开始后,要求 5s 内将测得的坐标值锁定显示。
8. 测试环境:关闭照明灯,打开窗帘,自然采光,避免阳光直射。

评审标准

参考答案

GPT-4o给出的设计方案:


一、系统构成

  1. LED控制电路:

    • 使用三个LED灯(LED1、LED2、LED3)放置在顶面,各自沿X轴方向以20cm的间隔排列。
  2. 传感器系统:

    • 传感器放置在底部中心位置,对外部光信号进行感知。传感器模块安装在底部标定图所示的不同区域(A, B, C, D, E 和F区域)进行测试。
  3. 测量电路:

    • 测量电路连接传感器,接收传感器信号并传递至LCD显示屏。测量电路包括信号放大、滤波和模数转换等功能。显示出当前传感器所在的区域以及光强度。

二、设计步骤

  1. LED控制电路设计:

    • 描述LED控制电路,使LED1、LED2、LED3各自独立地能够被控制和点亮。
    • 放置LED灯的电源电路模块,保证每个LED正常工作。
  2. 传感器系统设计:

    • 选择适合的光传感器,能够敏感地探测到LED灯的光信号。
    • 将传感器安装在底部中心位置,通过不同区域(A, B, C, D, E和F)进行测试。
  3. 测量电路设计:

    • 使用信号放大器和滤波器提高信号质量,确保光传感器输出的信号在传输中不失真。
    • 增加模数转换器(ADC),将模拟信号转换为数字信号。
  4. 显示电路设计:

    • 使用LCD显示器,实时显示传感器所在区域的光强度信息。
    • 编写相应的控制程序,通过单片机或微控制器实时读取ADC数据,并在LCD上显示框架坐标及光强读数。
  5. 安装和调试:

    • 安装所述传感器、LED灯、测量电路及LCD显示器进行实际测试。
    • 调整各电路参数,确保测量值准确无误。确保传感器信号的采集和LED信号信息和显示功能模块正常工作。
    • 验证系统在不同实验条件下,各LED灯点亮时,测量出的位置和光强信息的准确性。

通过单片机或微控制器来实现实时读取ADC(模数转换器)数据,并在LCD上显示框架坐标及光强读数,以下是实现这个过程的详细步骤和示例代码。

硬件连接

  • 光传感器连接到ADC模块的输入端。
  • ADC模块的输出端连接到单片机或微控制器。
  • LCD显示模块连接到单片机或微控制器。

编程实现步骤:

  • 步骤1: 初始化硬件初始化ADC模块和LCD显示模块,以及任何必需的GPIO(通用输入/输出)端口。
  • 步骤2: 读取ADC数据从ADC模块读取模拟信号并转换为数字信号,这里可能需要进行多次读取和取平均值以提高稳定性。
  • 步骤3: 数据处理将读取的ADC值转换为实际的光强度数值,并根据需求计算出框架坐标。
  • 步骤4: 显示数据LCD显示模块上显示处理后的光强度数值和框架坐标。

(示例代码)以Arduino为例:

#include <LiquidCrystal.h>

// 引脚定义
const int sensorPin = A0; // 光传感器接入ADC0引脚
const int lcdRs = 7, lcdEn = 8, lcdD4 = 9, lcdD5 = 10, lcdD6 = 11, lcdD7 = 12; // LCD引脚定义

// 初始化LiquidCrystal库(使用LCD的适当引脚)
LiquidCrystal lcd(lcdRs, lcdEn, lcdD4, lcdD5, lcdD6, lcdD7);

void setup() {
  // 初始化LCD, 设置显示行数和列数
  lcd.begin(16, 2);
  // 初始化串口通信
  Serial.begin(9600);
  // 配置传感器引脚为输入模式
  pinMode(sensorPin, INPUT);
}

void loop() {
  // 读取ADC值并进行处理
  int adcValue = analogRead(sensorPin);
  float voltage = adcValue * (5.0 / 1023.0); // 将ADC值转换为电压
  float lightIntensity = map(voltage, 0.0, 5.0, 0, 100); // 假设光强度为0-100的范围

  // 显示读取的ADC值和相应的光强度数值
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("ADC Value: ");
  lcd.print(adcValue);
  
  lcd.setCursor(0, 1);
  lcd.print("Light Int: ");
  lcd.print(lightIntensity);
  lcd.print("%");

  // 打印到串口监视器(可选)
  Serial.print("ADC Value: ");
  Serial.print(adcValue);
  Serial.print(", Light Intensity: ");
  Serial.print(lightIntensity);
  Serial.println("%");

  // 每秒更新一次显示
  delay(1000);
}

本题考察的知识点:

  1. LED控制及应用:LED灯的独立控制与驱动电路设计,如何实现点亮和光强调节。
  2. 光传感器应用:如何选择和使用光传感器,对不同位置光信号进行检测和量化。
  3. 信号测量与处理:信号放大、滤波和模数转换等过程,确保传感器输出信号稳定并准确传输。
  4. 数据采集与可视化:利用单片机或微控制器实时采集传感器数据,并通过LCD显示器进行数据可视化处理。
  5. 系统集成与调试:各部分模块的连接与综合调试,确保整个系统的协调和稳定运行。
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号