跳转至

单片机外设使用

847 个字 37 行代码 预计阅读时间 4 分钟

加速度

MPU6050

MPU6050 是一款集成了三轴加速度计和三轴陀螺仪的 6 轴运动传感器。它可以测量加速度、角速度以及温度,广泛应用于姿态检测、运动追踪等场景。

主要特点:

  • 内置 16 ADC,可以同时输出 6 个轴的数据
  • 可测量范围:
  • 加速度 : ±2g、±4g、±8g、±16g 可选
  • 角速度 : ±250、±500、±1000、±2000°/s 可选
  • 内置数字运动处理器 (DMP),可直接输出姿态角
  • 工作电压 : 3.3V-5V
  • 通信方式 : I2C 接口,标准地址 0x68

引脚说明:

  • VCC: 供电引脚 (3.3V-5V)
  • GND: 接地
  • SCL: I2C 时钟线
  • SDA: I2C 数据线
  • INT: 中断引脚
  • XDA/XCL: 用于外接磁力计的 I2C 接口 ( 可选 )

超声波

HC-SR04

HC-SR04 是一种常见的超声波距离测量传感器,通过超声波的传播时间来测量物体的距离。它的工作原理基于超声波反射回来的时间来计算距离。

工作步骤:

  1. 发送超声波信号:当有脉冲电压触发时(就是控制板给 Trig 引脚发送高电频,探头里的晶片就会振动,这会产生一个超声波信号(通常是 40kHz 的声波( 逆压电效应 )

    正压电效应:某些晶体材料在交变拉压应力作用下,产生交变电场的效应称 之为正压电效应(就是机械能转换成电能) 逆压电效应:当晶体材料在交变电场作用下,产生伸缩变形的效应称为逆压电效应。(就是电能转换成机械能)

  2. 超声波传播与反射:超声波信号在空气中传播,当遇到物体时会发生反射。反射回来的超声波信号被传感器的 Echo(回波)引脚 接收。

  3. 测量回波时间:传感器通过 Echo 引脚 测量从发送信号到接收回波信号所需的时间。这个时间通常以微秒(μs)为单位(pausein()函数以微秒为单位,反映了信号从发射到接收所经历的往返时间。

  4. 计算距离:利用声音在空气中的传播速度,可以根据回波时间计算距离。声速在空气中的速度约为 343 / 秒,或者 0.0343 cm/μs。因为超声波是来回传播的,所以下来的总时间需要除以 2 来得到物体的单程距离。

\[ \text{距离 (cm)} = \frac{\text{回波时间 (μs)} \times \text{声速 (0.0343 cm/μs)}}{2} \]

引脚与连线

  1. VCC:供电引脚,连接到 5V
  2. GND:接地引脚,连接到 GND
  3. Trig(触发引脚):控制信号的输入引脚,用来发出短脉冲触发超声波发送。
  4. Echo(回波引脚):接收超声波反射信号的输出引脚,返回高电平信号的持续时间,表示回波的时间。

代码

#define TRIG_PIN 2   // 设置Trig引脚为2,可以自定义
#define ECHO_PIN 3  // 设置Echo引脚为3,可以自定义

void setup() {
  // 初始化串口通信
  Serial.begin(9600);
  
  // 设置Trig和Echo引脚模式
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

void loop() {
  // 发出超声波信号
  digitalWrite(TRIG_PIN, LOW); 
  delayMicroseconds(2);         // 将 `Trig` 引脚设置为低电平,确保传感器准备好接收触发信号。 
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);        //将 `Trig` 引脚设置为高电平,持续 10 微秒来发射超声波。
  digitalWrite(TRIG_PIN, LOW);
  
  // 计算回波信号传回的时间
  long duration = pulseIn(ECHO_PIN, HIGH);  //使用 `pulseIn()` 函数测量从 `Echo` 引脚返回的高电平持续时间,这个时间代表超声波信号从发射到接收的往返时间。
  
  // 计算距离(单位:cm)
  long distance = duration * 0.034 / 2;
  
  // 输出距离到串口监视器
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  // 延时100毫秒后再次测量
  delay(100);
}

温度

DHT11

DHT11 是一款应用非常广泛的温湿度采集元件,传感器包括一个电阻式感湿元件和一个 ntc 测温元件 - 在温度上的测量范围是0-50摄氏度,在湿度上的测量范围是20-90%

Arduino 使用

下载完成后可通过 : 文件 / 示例 /DHT sensor library /DHTtester,打开示例程序并修改。 - 需要在程序中修改数据输入引脚和传感器型号

修改设备型号和接收引脚
#define DHTPIN 3

#define DHTTYPE DHT11 //DHT11