0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

设计一个封闭环境内的眼刺激系统

云深之无迹 来源:云深之无迹 2023-12-03 11:15 次阅读

设计一个封闭环境内的眼刺激系统:

7cc592c8-912c-11ee-939d-92fbcf53809c.jpg

一个人完整的视角

7ceb7394-912c-11ee-939d-92fbcf53809c.jpg

人在水平面的视野,单眼视野界限为标准视线每侧94°~104°。双眼视区大约在每侧62°以内的区域,在这个区域里还包括辨别字的视线角度为10°~20°,辨别字母的视线角度为5°~30°,在各自的视线范围以外,字和字母趋于消失。对于特定的颜色的辨别,视线角度为30°~60°。

7d1af182-912c-11ee-939d-92fbcf53809c.jpg

垂直平面的视野是:假定标准视线是水平的,定为0°,则最大视区为视平线以上50°和视平线以下70°。颜色辨别界限为视平线以上30°,视平线以下40°,实际上人的自然视线是低于标准视线的,在一般状态下,站立时自然视线低于水平线10°,坐着时自然视线低于水平视线15°。

眼垂直视野可以看到标准视线上约50°、下约70°的范围,水平视野可以左右104°的范围。人在眼睛不转动的情况下视野是十分有限的,能够集中注意力水平视野是40°,垂直视野15°。

7d2fd16a-912c-11ee-939d-92fbcf53809c.jpg

我再补充一个纵深视野:

1、0.2-11m之间,我们能获得一个“真实”3D的视野,这也是我们的舒适景深;

2、11-20m间,我们依然能够通过双眼在视网膜上成像的差别,获得一个“边缘”的3D视野;

3、而20米之外的事物,我们只能得到一个“扁平”的2D视野,因为景象通过双眼的成像差别太小,无法分辨。

7d4947da-912c-11ee-939d-92fbcf53809c.jpg

其实这说的更没说一样

主要刺激光源(3000-3500K):

将主要刺激光源安置在眼罩内部,以确保照明均匀且集中在用户的视野中。

尽量避免直接光照用户的眼睛,可以考虑使用漫射器材或将光源隐藏在眼罩的设计中,以防止强烈光线对用户眼睛的刺激。

背景光源(850纳米):

背景光源可以被用来模拟夜视或者在VR场景中提供某种环境信息

与主光源相比,背景光源的亮度可以相对较低,以确保不会对用户体验造成干扰。

考虑采用柔和的背景照明,以避免过于刺眼或不自然的效果。

灯光布局和均匀性:

确保灯光布局均匀,以避免在眼罩内产生不均匀的亮度或阴影。

考虑使用多个光源来增加照明的均匀性,特别是在眼罩内覆盖范围较大的情况下。

对背景光源和刺激光源进行不同的光学评价可能是基于实验、应用或观察需求而定的。以下是一些常见的因素,这些因素可能导致对它们的光学评价存在差异:

感知效果:

刺激光源通常是实验中要引起注意的主要光源,其颜色、强度和变化可能对实验结果产生直接影响。因此,对刺激光源的评价可能更关注其在实验中产生的感知效果。

背景光源可能更侧重于提供一种环境、背景或辅助信息,其颜色和亮度可能被调整以创造某种氛围,而不是成为实验的主要焦点。

颜色温度:

刺激光源的颜色温度可能会更直接地影响观察者的认知和情绪。在许多实验和应用中,颜色的选择对于调查不同条件下的感知和行为反应非常重要。

背景光源的颜色温度则可能更多地取决于设计的整体氛围和实验的目的。它通常被设计成辅助刺激光源,以创造更逼真的环境。

亮度和对比度:

刺激光源可能需要更高的亮度和对比度,以确保在实验中引起足够的关注和反应。

背景光源通常会以相对较低的亮度出现,以避免干扰实验者或观察者对刺激光源的关注。

3000-3500K,表示这个 LED 灯泡的光的色温在3000到3500开尔文之间。这对应于暖白色光,适合用于舒适的环境照明。 850纳米(NM),表示这个光源的波长为850纳米。这是红外光谱中的近红外范围。

刺激光源和背景光源对瞳孔测量有一定的影响,这取决于它们的亮度、颜色和变化。

刺激光源的影响:

亮度:刺激光源的高亮度可能导致瞳孔收缩,尤其是在较暗的环境中。这可能会对瞳孔测量的基线产生影响。

颜色:不同颜色的光源可能会导致瞳孔有不同的反应。一些颜色可能引起更强烈或更迅速的瞳孔反应。

背景光源的影响:

亮度:背景光源的高亮度可能导致瞳孔收缩,尤其是在相对较暗的环境中。背景光源的亮度水平与刺激光源的亮度之间的对比可能影响瞳孔测量的灵敏性。

颜色:背景光源的颜色可能影响瞳孔的基础大小和对刺激光源颜色变化的响应。一些颜色可能导致瞳孔对刺激光源的反应更为显著。

光源变化的影响:

变化频率:如果刺激光源或背景光源有频繁的变化(例如闪烁),这可能导致瞳孔的相应变化。这在进行某些类型的瞳孔反应实验时需要特别注意。

持续性变化:长时间的光源变化可能导致瞳孔适应,使其在测量过程中产生动态的响应。

里面控制的参数就是亮度和闪烁了,接下来就是写一些代码:

const int warmWhiteLED = 9;  // 连接暖白LED的引脚
const int infraredLED = 10;  // 连接红外LED的引脚


void setup() {
  pinMode(warmWhiteLED, OUTPUT);
  pinMode(infraredLED, OUTPUT);
}


void loop() {
  // 控制暖白LED
  analogWrite(warmWhiteLED, 128);  // 设置PWM值来调整亮度
  delay(1000);  // 延时1秒


  // 控制红外LED
  digitalWrite(infraredLED, HIGH);  // 开启LED
  delay(500);  // 延时0.5秒
  digitalWrite(infraredLED, LOW);  // 关闭LED
  delay(500);  // 延时0.5秒
}

最简单的Arduino

const int warmWhiteLED = 9;  // 连接暖白LED的引脚
const int infraredLED = 10;  // 连接红外LED的引脚


void setup() {
  pinMode(warmWhiteLED, OUTPUT);
  pinMode(infraredLED, OUTPUT);
}


void loop() {
  // 控制暖白LED的亮度
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(warmWhiteLED, brightness);  // 设置PWM值来调整亮度
    delay(10);  // 延时10毫秒,可调整过渡的速度
  }


  delay(1000);  // 延时1秒


  // 控制红外LED的亮度和闪烁
  for (int brightness = 0; brightness <= 255; brightness++) {
    analogWrite(infraredLED, brightness);  // 设置PWM值来调整亮度
    delay(10);  // 延时10毫秒,可调整过渡的速度
  }


  delay(1000);  // 延时1秒


  for (int brightness = 255; brightness >= 0; brightness--) {
    analogWrite(infraredLED, brightness);  // 设置PWM值来调整亮度
    delay(10);  // 延时10毫秒,可调整过渡的速度
  }


  delay(1000);  // 延时1秒
}

使用for循环变得更丝滑一些。

这里就是想着也可以提前预设一些刺激的规则,在树莓派上面可以这样写:

import RPi.GPIO as GPIO
import time


# 定义LED引脚
warm_white_led_pin = 17  # 适应您的硬件设置
infrared_led_pin = 18  # 适应您的硬件设置


# 初始化GPIO设置
GPIO.setmode(GPIO.BCM)
GPIO.setup(warm_white_led_pin, GPIO.OUT)
GPIO.setup(infrared_led_pin, GPIO.OUT)


# 定义LED控制函数
def set_led_brightness(pin, brightness):
    # 控制LED亮度,brightness范围0-100
    pwm = GPIO.PWM(pin, 100)  # 频率设置为100Hz
    pwm.start(brightness)


def blink_led(pin, frequency, duration):
    # 控制LED闪烁,frequency为频率,duration为持续时间
    pwm = GPIO.PWM(pin, frequency)
    pwm.start(50)  # 亮度设置为50%
    time.sleep(duration)
    pwm.stop()


# 定义预先设计好的刺激规则
def apply_stimulus_rule(rule):
    if rule == "rule1":
        set_led_brightness(warm_white_led_pin, 50)
        blink_led(infrared_led_pin, 2, 5)
    elif rule == "rule2":
        set_led_brightness(warm_white_led_pin, 75)
        blink_led(infrared_led_pin, 5, 7)
    # 添加其他规则...


# 测试
apply_stimulus_rule("rule1")


# 清理GPIO设置
GPIO.cleanup()

可能对于所以树莓派控制这样简单的功能性价比不高,可以在MCU上面实现:

import machine
import time


# 定义LED引脚
warm_white_led_pin = 19  # 适应您的硬件设置
infrared_led_pin = 18  # 适应您的硬件设置


# 初始化LED引脚
warm_white_led = machine.PWM(machine.Pin(warm_white_led_pin), freq=1000, duty=0)
infrared_led = machine.PWM(machine.Pin(infrared_led_pin), freq=1000, duty=0)


# 定义LED控制函数
def set_led_brightness(led, brightness):
    # 控制LED亮度,brightness范围0-1023
    led.duty(brightness)


def blink_led(led, frequency, duration):
    # 控制LED闪烁,frequency为频率,duration为持续时间
    led.freq(frequency)
    time.sleep(duration)
    led.freq(0)


# 定义预先设计好的刺激规则
def apply_stimulus_rule(rule):
    if rule == "rule1":
        set_led_brightness(warm_white_led, 512)
        blink_led(infrared_led, 2, 5)
    elif rule == "rule2":
        set_led_brightness(warm_white_led, 768)
        blink_led(infrared_led, 5, 7)
    # 添加其他规则...


# 测试
apply_stimulus_rule("rule1")


# 清理
warm_white_led.deinit()
infrared_led.deinit()

那么也可以加入一些远程控制的功能,使用串口:

import machine
import time
import ustruct


# 定义LED引脚
warm_white_led_pin = 19  # 适应您的硬件设置
infrared_led_pin = 18  # 适应您的硬件设置


# 初始化LED引脚
warm_white_led = machine.PWM(machine.Pin(warm_white_led_pin), freq=1000, duty=0)
infrared_led = machine.PWM(machine.Pin(infrared_led_pin), freq=1000, duty=0)


# 初始化串口
uart = machine.UART(0, baudrate=115200, tx=17, rx=16)  # 适应您的硬件设置


# 定义LED控制函数
def set_led_brightness(led, brightness):
    # 控制LED亮度,brightness范围0-1023
    led.duty(brightness)


def blink_led(led, frequency, duration):
    # 控制LED闪烁,frequency为频率,duration为持续时间
    led.freq(frequency)
    time.sleep(duration)
    led.freq(0)


# 定义通过串口控制LED的函数
def control_led_via_serial():
    while True:
        if uart.any():
            data = uart.read(4)  # 期望接收4字节数据
            if data:
                brightness, frequency = ustruct.unpack('hh', data)
                set_led_brightness(warm_white_led, brightness)
                blink_led(infrared_led, frequency, 1)  # 1秒的闪烁示例


# 启动串口控制
control_led_via_serial()

过串口接收两个16位整数,分别代表LED的亮度和频率。

这两个值使用ustruct.unpack解包。可以通过串口发送相应的二进制数据来控制LED。

import struct


brightness = 512
frequency = 2


data = struct.pack('hh', brightness, frequency)
uart.write(data)

上位机这里可以这样写,这篇文章写的很仓促,很多功能没有考虑到,如果有需要的或者更加专业的建议可以告诉我。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 光源
    +关注

    关注

    3

    文章

    691

    浏览量

    67695
  • 代码
    +关注

    关注

    30

    文章

    4710

    浏览量

    68190
  • 视网膜
    +关注

    关注

    0

    文章

    34

    浏览量

    12754
  • vr
    vr
    +关注

    关注

    34

    文章

    9628

    浏览量

    149942

原文标题:设计一套眼内刺激系统.上-光源

文章出处:【微信号:TT1827652464,微信公众号:云深之无迹】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Rainbow NB-IoT测试仪在封闭环境也能信号检测

    Rainbow NB-IoT封闭环境信号检测Rainbow NB-IoT测试仪具有蓝牙无线数据传输的功能,广泛应用于NB-IoT水表、电表、智能停车、智慧农业等场景的信号测试,尤其是密封环境的测试
    发表于 09-20 09:16

    你是我的环境光传感器

    环境光就很强,从而将亮度调暗。为了解决这个问题,在使用光电晶体管有时需要在玻璃上开小孔,这样给生产带来了麻烦以及增加了成本。 图- 3 新代的
    发表于 08-07 04:45

    怎样利用电机旋转角度和转速双闭环去搭建闭环控制系统

    怎样利用电机旋转角度和转速双闭环去搭建闭环控制系统?双闭环控制系统的结构是由哪些部分组成的?
    发表于 07-22 09:25

    闭环直流调速系统仿真

    闭环直流调速系统仿真(Matlab)答辩人:王玲珑 2011.05.07 双闭环直流调速系统仿真 展示目录 原始调速系统稳定性分析 转速、
    发表于 09-07 06:58

    开环步进电机与闭环步进电机系统对比分析哪一个更好?

    温度下达到热平衡-不到开环系统半。电机发热的显着降低可能意味着机器制造商降低了零件成本,因为他们可以省略额外的保护和冷却子系统。  四、开环与闭环步进电机
    发表于 03-10 10:06

    基于C8051F020的密闭环境温度恒温控制系统设计

    本文给出了种基于C8051F020单片机实现密闭环境温度自动控制的系统方案。将半导体制冷模块置于
    发表于 07-26 16:05 3291次阅读
    基于C8051F020的密<b class='flag-5'>闭环境</b>温度恒温控制<b class='flag-5'>系统</b>设计

    加州大学研发出闭环神经刺激器 可自动检测和预防癫痫发作

    据报道,加州大学伯克利分校的研究人员开发出种无线,自主的闭环神经刺激器。该设备被放置在大脑外部,监测大脑中的电活动,并通过电刺激进行干预以预防癫痫发作。
    发表于 01-13 11:29 2496次阅读

    基于MSP430单片机和NRF24L01的封闭环境检测系统设计

    基于MSP430单片机和NRF24L01的封闭环境检测系统设计
    发表于 10-25 16:40 1次下载

    祥控封闭煤场环境监控系统的功能特点

    济南祥控封闭煤场环境监控系统支持根据现场的实际情况制定和合理的配置,目前已在很多的煤矿和火电企业中被广泛应用。
    的头像 发表于 12-21 15:57 451次阅读
    祥控<b class='flag-5'>封闭</b>煤场<b class='flag-5'>环境</b>监控<b class='flag-5'>系统</b>的功能特点

    什么是封闭煤场环境安全监控系统

    祥控封闭煤场环境安全监控系统集成了煤堆温度实时监测、明火煤监测、挡煤墙测温、可燃及有毒气体监测、粉尘浓度监测等多个子系统,具有数据综合展示,实时显示、报警状态、报警记录查询、历史数据查
    的头像 发表于 01-10 17:38 1678次阅读
    什么是<b class='flag-5'>封闭</b>煤场<b class='flag-5'>环境</b>安全监控<b class='flag-5'>系统</b>?

    封闭煤场安全综合监测控制系统实时检测现场环境和煤温变化

    济南祥控自动化开发的封闭煤场安全综合监测控制系统方面通过安装各类环境检测设备对煤场环境进行数据采集和煤温监测,另
    的头像 发表于 05-19 17:04 1262次阅读
    <b class='flag-5'>封闭</b>煤场安全综合监测控制<b class='flag-5'>系统</b>实时检测现场<b class='flag-5'>环境</b>和煤温变化

    光刻图案化+微流控技术用于封闭环境下细胞行为和机制的研究

    细胞通过限制性三维地形迁移可导致核包膜完整性丧失、DNA损伤和基因不稳定。尽管有这些有害的现象,暂时暴露在封闭环境中的细胞通常不会死亡。
    的头像 发表于 08-08 10:06 1298次阅读
    光刻图案化+微流控技术用于<b class='flag-5'>封闭环境</b>下细胞行为和机制的研究

    封闭煤场安全监控系统

    济南祥控自动化开发的XKCON祥控封闭煤场安全监控系统采用物联网、传感器、数字通信、人工智能及嵌入式系统控制等先进技术,通过对煤场环境进行智能化监测与数据智能分析,从而实现
    的头像 发表于 08-15 17:44 1105次阅读
    <b class='flag-5'>封闭</b>煤场安全监控<b class='flag-5'>系统</b>

    封闭式园区人员定位管理系统的功能和作用

    在当今充满竞争的商业环境中,企业安全和员工管理变得尤为重要。尤其是在封闭式园区这样的环境中,确保员工的安全和准确管理变得尤为关键。为了满足这需求,
    的头像 发表于 08-31 14:39 558次阅读

    闭环增益对系统动态性能的影响

    在自动控制系统中,闭环控制作为种重要的控制方式,通过引入反馈机制来调整系统的输出,使其更好地适应外部环境的变化。
    的头像 发表于 07-30 10:05 1531次阅读