9 年级 · 从 USB 到现场系统:ESP32 水质监测

整合三个传感器

按照学生学习资料,搭建、测试并记录水质监测系统的当前阶段。

这是预备课程资料,请在老师介绍后开始,目前不是已布置的作业。

本课资料

3 页 · 完整说明、示例与作答区域请见学习资料。

在线阅读学习资料正文

如需查看图示、视觉示例与完整排版,请打开上方的学习单。

第 9 课:整合全部三个传感器

接线核查、整合代码与故障排查记录

9 年级 MYP 设计 | 从 USB 到现场系统

姓名:__________________班级/小组:__________________日期:__________________
今日目标 • 整合三个传感器,同时确保供电与信号安全。• 运用有条理的故障隔离方法。

关键术语

术语操作性定义
整合
引脚定义
共地
子系统
故障隔离
假设
证据

1. 引脚与供电表

设备电源地信号引脚附加元件
DS18B203.3VGNDGPIO4通过 6.8k 电阻上拉至 3.3V
EC 模块3.3VGNDAO → GPIO1T1 不使用
浊度模块5VGND分压点 → GPIO210k/20k 分压器

2. 整合检查清单

☐ 接线时已断电。

☐ 所有地线连接到同一个共地网络。

☐ 每个传感器都已单独正常工作。

☐ GPIO1、GPIO2 和 GPIO4 与代码一致。

☐ 浊度分压点已测得低于 3.3V。

☐ 原始 12V 未直接接入 ESP32 或传感器。

3. 整合测试代码

#include <OneWire.h>#include <DallasTemperature.h>#include <DFRobot_EC.h>#include <EEPROM.h>#define DS18B20_PIN 4#define EC_PIN 1#define TURBIDITY_PIN 2OneWire oneWire(DS18B20_PIN);DallasTemperature tempSensor(&oneWire);DFRobot_EC ec;int averageAnalog(int pin) { long total = 0; for (int i = 0; i < 20; i++) { total += analogRead(pin); delay(10); } return total / 20;}void setup() { Serial.begin(115200); EEPROM.begin(32); tempSensor.begin(); ec.begin(); analogReadResolution(12); analogSetPinAttenuation(EC_PIN, ADC_11db); analogSetPinAttenuation(TURBIDITY_PIN, ADC_11db); Serial.println("temp_C,ec_raw,ec_mV,ec_mS_cm,turb_raw,turb_gpio_V");}void loop() { tempSensor.requestTemperatures(); float tempC = tempSensor.getTempCByIndex(0); int ecRaw = averageAnalog(EC_PIN); float ecMV = ecRaw * (3300.0 / 4095.0); float ecMS = ec.readEC(ecMV, tempC); ec.calibration(ecMV, tempC); int turbRaw = averageAnalog(TURBIDITY_PIN); float turbGPIOV = turbRaw * (3.3 / 4095.0); Serial.print(tempC, 2); Serial.print(','); Serial.print(ecRaw); Serial.print(','); Serial.print(ecMV, 1); Serial.print(','); Serial.print(ecMS, 3); Serial.print(','); Serial.print(turbRaw); Serial.print(','); Serial.println(turbGPIOV, 3); delay(2000);}

4. 首次整合读数

读数温度EC 原始值EC(mS/cm)浊度原始值浊度 GPIO 电压(V)
1
2
3

5. 故障排查记录

现象已检查的证据假设所作的一项更改结果
建议顺序:1)电源电压;2)共地;3)信号电压;4)实际引脚;5)代码引脚定义;6)库/编译信息。每次只改变一项。