引言
本文介绍了如何基于Arduino制作超声波测距仪和温湿度监视,使用的零部件如下:
- Arduino Nano
- SR-04超声波测距模块
- I2C 0.91 OLED
- DH11温湿度传感器
使用的Arduino库包括Adafruit_SSD1306
,Adafruit-GFX-Library
,DHTlib
。Adafruit_SSD1306
和Adafruit-GFX-Library
用于OLED屏控制,DHTlib
用于DH11温湿度传感器。
零部件简介
SR-04超声波测距模块
SR-04超声波测距模块测距精确,还很便宜,在各种DIY中广泛应用。模块的测距原理比较简单,首先在TRIG
控制口发一个10US以上的高电平,然后在ECHO
接收口等待高电平输出,一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,该值即为声音来回的时间,根据下面的公式就可计算出距离。
测试距离=(声音来回时间乘以声速)/2
声音在各介质中传播速度不同,正常使用SR-04超声波测距模块均在空气中,所以该处声速取 340 m/s 。
注意SR-04超声波测距模块最大测距为4.5米,精度0.2厘米。
DH11温湿度传感器
DHT11温湿度传感器包括一个电阻式感湿元件和一个NTC测温元件,可以检测周围环境的湿度和温度。如果想要更高的测量范围和测量精度,可以选择DHT22温湿度传感器。
- DHT11参数
湿度测量范围 | 湿度测量误差 | 温度测量范围 | 温度测量误差 |
---|---|---|---|
20%-80% | ±5% | 0度-50度 | ±2度 |
- DHT22参数
湿度测量范围 | 湿度测量误差 | 温度测量范围 | 温度测量误差 |
---|---|---|---|
0%-100% | ±2% | -40度-125度 | ±0.5度 |
超声波测距
接线
代码
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64);
int trigPin = 6;
int echoPin = 7;
long aver[3];
long duration, distance;
void setup()
{
delay(100);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHIT