本文介绍了基于Arduino的无线/蓝牙温湿度和距离测量系统,包括下位机和上位机。
下位机功能有温湿度和距离采集,OLED显示处理,LED显示报警,蓝牙模块可与手机等蓝牙设备交互,无线模块(HC-12模块 433M)可与上位机(需要另外一块HC-12模块加TTL转USB转接)交互。
上位机(Python)功能与下位机(Arduino)交互,将信息呈现,保存数据并生成BI report分析。
所需硬件:Arduino UNO单片机/SR-04超声波测距模块/DH11温湿度传感器/I2C 0.96 OLED/蓝牙模块HC-08/无线433M模块HC-12(配对使用)/发光二极管与限流电阻/9V电池与电池扣/面包板与杜邦线若干。
零部件简介
SR-04超声波测距模块
SR-04超声波测距模块测距精确,还很便宜,在各种DIY中广泛应用。模块的测距原理比较简单,首先在TRIG控制口发一个10US以上的高电平,然后在ECHO接收口等待高电平输出,一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,该值即为声音来回的时间,根据下面的公式就可计算出距离。
测试距离=(声音来回时间乘以声速)/2
声音在各介质中传播速度不同,正常使用SR-04超声波测距模块均在空气中,所以该处声速取 340 m/s 。
注意SR-04超声波测距模块最大测距为4.5米,精度0.2厘米。
DH11温湿度传感器
DHT11温湿度传感器包括一个电阻式感湿元件和一个NTC测温元件,可以检测周围环境的湿度和温度。如果想要更高的测量范围和测量精度,可以选择DHT22温湿度传感器。
蓝牙通信模块HC-08
该模块实际就是串口的透传模式。可以快捷实现手机与下位机通信。
无线通信模块HC-12
该模块能够在多个Arduino开发板之间进行远程无线通信,距离可达1.8km。也是串口透传模式
下位机arduino代码
#include
#include
#include
#include
#define DHTTYPE DHT11
#define DHTPIN 2
#define trigPin 3
#define echoPin 4
#define ledout 5
long aver[3];
long duration, distance;
DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(128, 64); //OLED屏设置
//SoftwareSerial HC08(7, 6); // HC-12 TX Pin, HC-12 RX Pin
SoftwareSerial HC12(7, 6); // HC-12 TX Pin, HC-12 RX Pin
void setup() {
pinMode(ledout,OUTPUT);
Serial.begin(9600);
//HC08.begin(9600); // Serial port to HC08
HC12.begin(9600); // Serial port to HC12
delay(100);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(WHITE);
display.setRotation(0);
display.setTextWrap(false);
display.dim(0);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
dht.begin(); //DHT开始工作
}
void measure() {
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(15);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
duration = pulseI