Arduino智能传感器:温湿度与距离的完美监测OLED显示
基于arduino uno开发板对DHT11温湿度传感器和超声波测距模块以及SSD1315OLED显示屏实现智能传感器的实验
·
目录
实验器材:
超声波传感器,Arduino uno,DHT11温湿度传感器,SSD1315 OLED显示屏
一、超声波简介
超声波原理:
利用声音测距,声音在空气中的速度是340m/s(15℃)
当声音传播时,若遇到障碍物时,就会被反弹回来,通过计时反弹回来的时间就可以计算出从发射端到障碍物的距离
二、DHT11温湿度传感器
引脚定义:
工作电压:3V-5.5V宽电压供电
DHT11是一款含有已校准数字信号输出的温湿度复合传感器,采用了自主研发的集成式数字温湿度元件,应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。DHT11传感器内包含一个温湿度测量元件和一个高性能MCU
三、SSD1315手册资料
SSD1315是一款单芯片CMOS OLED/PLED驱动控制芯片,直接从内部128*64位GDDRAM中显示数据,可直接引用SSD1306使用
代码参考
#include <DHT.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN 2
#define DHTTYPE DHT11
#define TRIGGER_PIN A0
#define ECHO_PIN A1
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 init failed"));
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Sensor Monitor");
display.println("Starting up...");
display.display();
delay(1000);
}
void loop() {
delay(2000);
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
unsigned long duration = pulseIn(ECHO_PIN, HIGH);
unsigned int distance = duration / 58;
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("DHT read failed");
display.clearDisplay();
display.setCursor(0, 0);
display.println("Sensor Error!");
display.display();
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\tTemp: ");
Serial.print(t);
Serial.print("℃\tDist: ");
Serial.print(distance);
Serial.println(" cm");
display.clearDisplay();
// 第一行:状态信息
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print(millis()/1000);
display.print("s | ");
display.setCursor(40, 0);
display.print("Refreshing...\n");
// 第二行:温度
display.setTextSize(1);
display.setCursor(0, 22);
display.print("Temp:");
display.setTextSize(1);
display.setCursor(35, 22);
display.print(t);
display.print("C");
// 第三行:湿度
display.setTextSize(1);
display.setCursor(0, 32);
display.print("Humidity:");
display.setTextSize(1);
display.setCursor(55, 32);
display.print(h);
display.print("%");
// 第四行:距离
display.setTextSize(1);
display.setCursor(0, 42);
display.print("Distance:");
display.setTextSize(1);
display.setCursor(55, 42);
display.print(distance );
display.print("cm");
display.display();
}
电路连接:
超声波:
Vcc接5V Gnd接地 Trig接A0 Echo接A1
DHT11:
VCC接3.3v GND接地 DATA接2
OLED1315:
Vcc接5V Gnd接地 SCL SDA分别接开发板的SCL SDA
效果展示
实验电路
更多推荐



所有评论(0)