如何使用ATtiny85单片机制作便携式超声波测距仪
2022-07-25 来源:csdn
在很多应用中,经常需要测量物体与人、设备或车辆等之间的距离,例如机器人运动控制、车辆控制、盲人手杖、医疗设备等。测量距离有多种方法,其中使用超声波传感器进行测距是最便宜的方法之一。在本篇文章中,我们将使用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显示屏上。您可以使用刻度尺或卷尺来检查测量的距离是否正确。

- 【回帖赢50元京东卡】模拟电子与储能解决方案大讨论(4月新活动)
- 这蜂鸣片电路要怎么改才能将声音加到最大? 升压电感的参数怎么求得?
- 现在还有哪些电子产品没被 AI 占领?
- 🤯15块钱捡的游戏手柄拆完我傻了:成本居然100+?这成色居然是垃圾!
- 【产品众创计划】诚邀社区开发者共创下一代开发板
- 分享一本经典的电子教程,Electronics Principles and Applications, 9th Edition
- 外围电阻计算问题
- ARM嵌入式学习资源分享——《ARM嵌入式体系结构与接口技术》.pdf
- PCB十年精髓,嘉立创《PCB设计与制造》应用教材完整版!
- 树莓派4新增3GB内存版本




