前言
继续打磨之前的家庭温湿计,增加空气质量传感器和OLED屏的显示。
目标
实现OLED显示 温度、湿度、空气质量
配件
0.96寸蓝色 黄蓝双色 白色 I2C IIC通信 显示器 OLED液晶屏模块

MQ-135空气质量传感器模块

MB-102专用电源模块3.3V/5V

面包板

接线

给个宏观图,线太多,这里文字发下吧。
- OLED 屏和 ESP8266对应的接线
ESP8266 | OLED |
---|---|
D1 | SCL |
D2 | SDA |
3V | VCC |
GND | GND |

- MQ-135 的接线.
MQ-135需要5v供电,esp8266无法满足。我这里通过面包板来供电。
ESP8266 | MQ-135 |
---|---|
A0 | A0 |
D0 | D3 |
注意,开发调试时,esp8266使用的usb,通常GND没插的,而MQ-135插在面包板上,此时,可能出现a0读取的值异常,原因是
esp8266的GND 没有连接。记得esp8266也插上面包板,二者GND要联通。
代码部分
代码逻辑:
接之前的逻辑,在上报数据时,OLED显示值即可。
空气质量传感器读取
int airpollution = 0;
int airwarn = 1;
Serial.print("ADC Value: ");
airpollution = analogRead(A0);
Serial.println(airpollution);//读取A0脚的数据,输出0-1023 值越大,则污染越重
airwarn = digitalRead(pinMQ2);
Serial.print("TTL Value: ");
Serial.println(airwarn);//读取d3脚的数据,输出0和1 1表示出现污染。
OLED屏幕值显示
u8g2.setFont(u8g2_font_wqy12_t_gb2312);
u8g2.setFontDirection(0);
u8g2.clearBuffer();
u8g2.setCursor(0, 15);
char firstLine[50];
sprintf(firstLine, "温度: %s℃ ", ts);
u8g2.print(firstLine);
u8g2.setCursor(0, 35);
char secondLine[50];
sprintf(secondLine, "湿度: %s%% ", hs);
u8g2.print(secondLine);
u8g2.setCursor(0, 60);
char threeLine[50];
sprintf(threeLine, "空气质量: %d ", airpollution);
u8g2.print(threeLine);
u8g2.sendBuffer();
最终结果

腾讯连连界面

注意:腾讯连连的自定义界面存在局限,例如上图的时间是字符串,是无法显示的。需要自定义开发h5界面。
网友评论