|
在很多应用中,经常需要测量物体与人、设备或车辆等之间的距离,例如机器人运动控制、车辆控制、盲人手杖、医疗设备等。测量距离有多种方法,其中使用超声波传感器进行测距是最便宜的方法之一。在本篇文章中,我们将使用ATtiny85单片机和OLED显示模块以及HC-SR04超声波传感器来制作一款超声波数字测距仪。我们在自制了PCB电路板,该电路板可用于距离测量、物体检测和许多其他应用。
所需的组件 ● ATtiny85单片机 ● HC-SR04 超声波传感器 ● I2C OLED 显示模块 ● AMS1117 5V 稳压器 ● 3× 10KΩ 电阻 ● 1× 10 µf 电容 ● 9V电池
超声波测距仪的电路图 使用 ATtiny85 的超声波测距仪示意电路图如下:
上图显示了将超声波传感器和 OLED 显示屏以及 Attiny85单片机连接的电路图。 OLED显示屏和 ATtiny85 之间使用 I2C 协议连接。因此,将ATtiny85的SCL引脚 (PB2) 连接到OLED显示屏的SCL引脚。同样,将ATtiny85的SDA引脚(PB0) 连接到OLED显示屏的SDA引脚。超声波传感器的Echo和Trig引脚分别连接到ATtiny85的PB3和PB4。最后,为了给所有组件供电,我们使用了 9V 电池。然后使用AMS117-5V稳压器将9V转换为5V。
制作超声波测距仪的PCB电路板 现在我们有了原理图,可以继续超声波测距仪制作PCB。您可以使用任何PCB软件来设计 PCB。
以下是超声波测距仪PCB顶层和底层的3D视图:
组装并焊接PCB电路板。完整的电路板如下所示:
ATtiny85超声波测距仪的代码说明 该代码使用了 TinyWireM.h 和 TinyOzOLED.h 库。 TinyWireM 库可以从 Arduino IDE 中的库管理器下载并安装。为此,打开 Arduino IDE 并转到 Sketch -> Include Library -> Manage Libraries。搜索 TinyWireM.h 并安装Adafruit提供的TinyWireM库。
TinyOzOLED.h库可以从以下链接下载:https://github.com/SensorsIot/TinyOzOled/blob/master/TinyOzOLED.cpp 。
将库安装到Arduino IDE后,首先在代码中包含所需的库文件。 - #include "TinyWireM.h"
- #include "TinyOzOLED.h"
复制代码接下来,定义超声波传感器的引脚。我们定义了超声波传感器的Trig和Echo引脚,如下所示。 - const int trigPin = 4; //P4
- int echoPin = 3; //P3
复制代码
在 setup() 函数中,我们将ATtiny85引脚定义为输入/输出,并开始ATtiny85和OLED之间的通信。 - void setup() {
- TinyWireM.begin();
- OzOled.init();
- OzOled.clearDisplay();
- OzOled.setNormalDisplay();
- OzOled.sendCommand(0xA1);
- OzOled.sendCommand(0xC8);
- pinMode(trigPin, OUTPUT);
- }
复制代码
在 loop() 函数中,我们首先使用超声波传感器测量距离,然后将其显示在OLED显示屏上。要使用超声波传感器测量距离,首先,您必须将Trig引脚设置为低电平,并保持2 µs。要产生超声波,请将Trig引脚设置为高电平,并保持10 µs。之后,使用pulseIn() 函数读取飞行时间,然后将读数存储到变量duration的中。 pulseIn() 函数有2个参数,第一个是echo引脚的名称,第二个是echo引脚的状态。在获得距离后,我们将其显示在OLED显示屏上。 - digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
- pinMode(echoPin, INPUT);
- duration = pulseIn(echoPin, HIGH);
- cm = microsecondsToCentimeters(duration);
- OzOled.printString("Distance:", 3, 4);
- OzOled.printNumber(cm, 0, 12, 4);
复制代码
测试超声波测距仪 组装好PCB并对ATtiny85进行编程后,我们现在可以测试超声波测距仪了。使用 9V 为电路板供电并等待测量的距离显示在OLED显示屏上。您可以使用刻度尺或卷尺来检查测量的距离是否正确。
希望您喜欢本篇文章并学到了一些有用的东西,如果你有任何问题,请随时在本帖下面进行回复。
|