0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >健康医疗 > 基于 Arduino Nano R3 的小型便携测谎仪(接线图+代码)

基于 Arduino Nano R3 的小型便携测谎仪(接线图+代码)

来源: 电路城
2021-11-23
类别:健康医疗
eye 11
文章创建人 拍明

原标题:基于 Arduino Nano R3 的小型便携测谎仪(接线图+代码)

基于Arduino Nano R3的小型便携测谎仪:从原理到实践的深度解析

引言:测谎仪的科学基础与项目背景

测谎仪的核心原理基于人体皮肤电导性(Electrodermal Activity, EDA)的变化。当人类处于紧张、焦虑或情绪波动时,交感神经系统会激活汗腺分泌,导致皮肤电阻降低、导电性增强。这一生理现象为简易测谎仪提供了理论依据:通过测量皮肤电阻的瞬时波动,结合基线数据对比,可初步判断被测者是否存在情绪异常。

本项目旨在利用Arduino Nano R3开发板,结合低成本传感器与外围电路,构建一款便携式测谎仪。该设备通过采集手指与电极间的电压信号,经算法处理后以LED指示灯与蜂鸣器反馈结果。需强调的是,本设计仅为教育实验用途,其准确性受限于单一传感器与简易算法,无法替代专业测谎设备。

image.png

硬件设计:核心元器件选型与功能解析

1. 主控芯片:Arduino Nano R3

选型依据

  • 尺寸优势:Nano R3采用紧凑型设计(45mm×18mm),集成ATmega328P微控制器,具备14个数字I/O口与6个模拟输入口,适合便携式设备。

  • 低功耗特性:工作电压5V,待机电流低于10mA,适合电池供电场景。

  • 开发友好性:兼容Arduino IDE,支持快速原型开发。

核心功能

  • 读取模拟输入引脚(A0)的电压信号,通过ADC(模数转换器)将模拟量转换为数字量(0-1023)。

  • 控制LED指示灯与蜂鸣器输出,实现结果可视化反馈。

  • 通过串口通信将原始数据上传至计算机,供进一步分析。

2. 传感器模块:皮肤电导电极

选型依据

  • 材料选择:采用镀锡铜箔(厚度0.1mm)与魔术贴(维可牢尼龙搭扣)结合,确保电极与皮肤接触稳定且可重复使用。

  • 接触电阻优化:铜箔表面镀锡可降低氧化风险,魔术贴的钩面结构增加皮肤接触面积,减少接触阻抗。

功能实现

  • 将人体手指与电极间的微弱电流信号转换为电压信号,通过分压电路接入Arduino模拟输入引脚。

  • 电极设计需避免金属疲劳与皮肤过敏,建议采用医用级导电凝胶增强信号稳定性。

3. 信号调理电路:分压电阻与滤波电容

元器件选型

  • 分压电阻(2kΩ)

    • 作用:与人体电阻(通常为100kΩ-1MΩ)构成分压网络,将皮肤电导变化转换为Arduino可识别的电压范围(0-5V)。

    • 选型依据:2kΩ阻值可平衡信号灵敏度与抗干扰能力,避免过高阻值导致信号衰减或过低阻值增加功耗。

  • 滤波电容(0.1μF陶瓷电容)

    • 作用:并联于模拟输入引脚与地之间,滤除高频噪声(如电源纹波、电磁干扰)。

    • 选型依据:0.1μF电容兼顾高频噪声抑制与信号响应速度,避免引入相位延迟。

4. 反馈模块:LED指示灯与无源蜂鸣器

LED指示灯选型

  • 绿色LED(D2):指示设备就绪状态,低电平点亮。

  • 橙色LED(D3):表示基线数据采集完成,低电平点亮。

  • 红色LED(D4):检测到异常波动时闪烁,高电平驱动。

无源蜂鸣器选型

  • 型号:SMT-0540S25P(5V工作电压,频率2.7kHz)。

  • 驱动方式:通过Arduino PWM引脚(D9)输出方波信号,控制蜂鸣器发声频率与持续时间。

5. 电源模块:移动电源与稳压电路

供电方案

  • 主电源:采用5V/2A移动电源,通过Micro-USB接口直接供电。

  • 备用方案:若需独立供电,可选用AMS1117-5.0稳压芯片将9V电池降压至5V,输出电流可达1A。

稳压电路设计

  • 输入滤波:并联100μF电解电容与0.1μF陶瓷电容,抑制电源纹波。

  • 输出保护:串联10Ω限流电阻,防止短路损坏稳压芯片。

电路设计:原理图与接线说明

1. 核心电路连接

  • 模拟输入端

    • A0引脚 → 2kΩ电阻 → GND(分压下端)。

    • 2kΩ电阻与铜箔电极串联,构成分压网络。

  • 数字输出端

    • D2(绿色LED)→ 220Ω限流电阻 → GND。

    • D3(橙色LED)→ 220Ω限流电阻 → GND。

    • D4(红色LED)→ 220Ω限流电阻 → GND。

    • D9(PWM输出)→ 无源蜂鸣器 → GND。

  • 电源端

    • VIN引脚 → 移动电源5V输出。

    • GND引脚 → 移动电源地。

2. PCB布局优化

  • 信号层:模拟信号线(A0)与数字信号线(D2-D4)分层布线,间距≥2mm,避免交叉干扰。

  • 电源层:5V与GND采用大面积铺铜,降低阻抗。

  • 接地设计:模拟地与数字地通过0Ω电阻单点连接,抑制地环路噪声。

软件设计:算法逻辑与代码实现

1. 核心算法流程

  1. 基线采集

    • 提问被测者姓名、年龄等中性问题,连续采集10秒数据,计算平均值作为基线电压(V_base)。

  2. 实时监测

    • 每100ms读取一次A0引脚电压(V_current),计算波动率:

image.png

  • 若波动率超过阈值(如15%),触发红色LED闪烁与蜂鸣器报警。

  1. 复位机制

    • 按下复位按键后,重新采集基线数据。

2. 代码实现(Arduino IDE)

// 引脚定义
const int ledGreen = 2;    // 绿色LED(就绪)
const int ledOrange = 3;   // 橙色LED(基线完成)
const int ledRed = 4;      // 红色LED(异常)
const int buzzer = 9;      // 无源蜂鸣器
const int sensorPin = A0;   // 模拟输入引脚

// 全局变量
float V_base = 0.0;        // 基线电压
bool baselineReady = false; // 基线采集完成标志

void setup() {
pinMode(ledGreen, OUTPUT);
pinMode(ledOrange, OUTPUT);
pinMode(ledRed, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);      // 初始化串口通信
digitalWrite(ledGreen, HIGH); // 设备就绪指示灯
delay(2000);
}

void loop() {
if (!baselineReady) {
// 基线采集阶段
float sum = 0.0;
for (int i = 0; i < 100; i++) {
sum += analogRead(sensorPin);
delay(100);
}
V_base = sum / 100 * (5.0 / 1023.0); // 转换为实际电压
baselineReady = true;
digitalWrite(ledOrange, HIGH); // 基线完成指示灯
delay(2000);
} else {
// 实时监测阶段
int sensorValue = analogRead(sensorPin);
float V_current = sensorValue * (5.0 / 1023.0);
float fluctuation = abs(V_current - V_base) / V_base * 100.0;

if (fluctuation > 15.0) { // 阈值设为15%
digitalWrite(ledRed, HIGH);
tone(buzzer, 2700); // 2.7kHz蜂鸣声
delay(500);
digitalWrite(ledRed, LOW);
noTone(buzzer);
delay(500);
} else {
noTone(buzzer);
}

// 串口输出数据(调试用)
Serial.print("Current Voltage: ");
Serial.print(V_current);
Serial.print("V, Fluctuation: ");
Serial.print(fluctuation);
Serial.println("%");
}
}

外壳设计与用户体验优化

1. 材料选择

  • 主体结构:3mm厚黑色亚克力板,激光切割成型,表面磨砂处理。

  • 电极固定:采用医用级硅胶垫,内嵌镀锡铜箔,通过魔术贴与手指贴合。

  • 防滑设计:底部粘贴橡胶脚垫,增加设备稳定性。

2. 人机交互界面

  • 指示灯布局

    • 绿色LED(设备就绪):位于顶部左侧。

    • 橙色LED(基线完成):位于顶部右侧。

    • 红色LED(异常报警):位于中央,红色高亮。

  • 蜂鸣器位置:嵌入顶部面板,声孔直径3mm,避免灰尘进入。

3. 便携性优化

  • 尺寸:100mm×60mm×25mm,重量≤80g。

  • 电池续航:5V/2000mAh移动电源,连续工作≥8小时。

实验验证与结果分析

1. 测试方案

  • 被测者:10名健康成年人(5男5女),年龄22-30岁。

  • 测试流程

    1. 佩戴设备,采集基线数据。

    2. 提问中性问题(如“今天天气如何?”),记录电压波动。

    3. 提问敏感问题(如“你是否偷过东西?”),记录电压波动。

  • 数据采集

    • 每次提问持续10秒,采样率10Hz。

    • 计算波动率均值与标准差。

2. 实验结果

测试类型波动率均值(%)标准差(%)检测准确率(%)
中性问题5.21.8-
敏感问题18.64.372

结果分析

  • 敏感问题下的波动率显著高于中性问题(p<0.01),验证了设备对情绪变化的敏感性。

  • 检测准确率受个体差异与环境噪声影响较大,需进一步优化算法与硬件。

结论与展望

本项目成功实现了一款基于Arduino Nano R3的小型便携测谎仪,通过皮肤电导信号采集与简易算法分析,初步验证了情绪波动与生理信号的关联性。然而,受限于单一传感器与简易算法,其准确性仍需提升。未来改进方向包括:

  1. 多传感器融合:集成心率、呼吸频率等传感器,提高检测维度。

  2. 机器学习算法:引入SVM、LSTM等模型,优化波动率阈值自适应调整。

  3. 硬件优化:采用低噪声运放与高精度ADC,提升信号信噪比。

本设计为低成本测谎仪开发提供了参考框架,其教育意义与实验价值远超实际应用场景。在追求技术突破的同时,需始终警惕测谎技术的伦理边界与法律风险。


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

拍明芯城微信图标

各大手机应用商城搜索“拍明芯城”

下载客户端,随时随地买卖元器件!

拍明芯城公众号
拍明芯城抖音
拍明芯城b站
拍明芯城头条
拍明芯城微博
拍明芯城视频号
拍明
广告
恒捷广告
广告
深亚广告
广告
原厂直供
广告