ตอนนี้ทดสอบรันโค้ดบน esp 32 30 pin รูปแบบการต่อ คือ จากบอร์ดมี ไฟบวก 1 ไฟลบ 2 สัญญาณ PO(ที่วัดค่า PH) ต่อกับ ขา D34ของ บอร์โ esp และ ขา T2(Temp) ต่อกับขา D35 ของบอร์ด esp
#include <OneWire.h>
#include <DallasTemperature.h>
// กำหนดขาที่จะเชื่อมต่อ DS18B20 Sensor
#define ONE_WIRE_BUS 2 // ตัวอย่างใช้ GPIO 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// กำหนดขาที่จะเชื่อมต่อ pH module
const int analogPhPin = 34; // ใช้ GPIO 34 เป็นขา ADC สำหรับ pH module
const int analogTempPin = 35; // ใช้ GPIO 35 เป็นขา ADC สำหรับเซ็นเซอร์อุณหภูมิอนาล็อก (ถ้ามี)
// ตัวแปรสำหรับเก็บข้อมูลค่าเฉลี่ย
long phTot, temTot;
float phAvg, temAvg;
int x;
// ค่าคงที่สำหรับเส้นตรง (Y = mx + C)
float C = 25.85;
float m = -6.80;
void setup() {
// เริ่มต้นการสื่อสารแบบ Serial
Serial.begin(9600);
// เริ่มต้นการทำงานของ DS18B20
sensors.begin();
// ตรวจสอบจำนวนเซ็นเซอร์ที่เชื่อมต่อ
if (sensors.getDeviceCount() == 0) {
Serial.println("No DS18B20 sensors are connected!");
while (1); // หยุดการทำงานถ้าไม่มีเซ็นเซอร์เชื่อมต่อ
}
}
void loop() {
phTot = 0;
temTot = 0;
phAvg = 0;
temAvg = 0;
// อ่านค่า 10 ตัวอย่างและรวมค่าแต่ละตัวอย่าง
for (x = 0; x < 10; x++) {
phTot += analogRead(analogPhPin);
temTot += analogRead(analogTempPin);
delay(10);
}
// คำนวณค่าเฉลี่ย
phAvg = phTot / 10.0;
temAvg = temTot / 10.0;
// แปลงค่าอนาล็อกเป็นแรงดันไฟฟ้า
float phVoltage = phAvg * (3.3 / 4095.0); // ESP32 ใช้ ADC 12-bit
// float temVoltage = temAvg * (3.3 / 4095.0); // ESP32 ใช้ ADC 12-bit (ถ้าต้องการแปลงค่าอุณหภูมิจากแรงดันไฟฟ้า)
// คำนวณค่า pH จากแรงดันไฟฟ้า
float pHValue = phVoltage * m + C;
// แสดงค่าแรงดันไฟฟ้าและค่า pH
Serial.print("phVoltage = ");
Serial.print(phVoltage);
Serial.print(" ");
Serial.print("pH = ");
Serial.println(pHValue);
// อ่านค่าอุณหภูมิจาก DS18B20
sensors.requestTemperatures();
// ตรวจสอบว่าเซ็นเซอร์อ่านค่าได้หรือไม่
float temperatureC = sensors.getTempCByIndex(0);
if (temperatureC == DEVICE_DISCONNECTED_C) {
Serial.println("Error: Could not read temperature data");
} else {
Serial.print("Temperature is: ");
Serial.print(temperatureC);
Serial.println(" *C");
}
Serial.println("");
// หน่วงเวลา 1 วินาทีก่อนเริ่มวนลูปใหม่
delay(1000);
}
สอบถามเรื่อง บอร์ด E-201-C PH Detection Sensor Module ที่วัด ph กับ temperature พอดีมีปัญหาว่าเหมือนมันไม่เจอตัววัดtemp
#include <DallasTemperature.h>
// กำหนดขาที่จะเชื่อมต่อ DS18B20 Sensor
#define ONE_WIRE_BUS 2 // ตัวอย่างใช้ GPIO 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// กำหนดขาที่จะเชื่อมต่อ pH module
const int analogPhPin = 34; // ใช้ GPIO 34 เป็นขา ADC สำหรับ pH module
const int analogTempPin = 35; // ใช้ GPIO 35 เป็นขา ADC สำหรับเซ็นเซอร์อุณหภูมิอนาล็อก (ถ้ามี)
// ตัวแปรสำหรับเก็บข้อมูลค่าเฉลี่ย
long phTot, temTot;
float phAvg, temAvg;
int x;
// ค่าคงที่สำหรับเส้นตรง (Y = mx + C)
float C = 25.85;
float m = -6.80;
void setup() {
// เริ่มต้นการสื่อสารแบบ Serial
Serial.begin(9600);
// เริ่มต้นการทำงานของ DS18B20
sensors.begin();
// ตรวจสอบจำนวนเซ็นเซอร์ที่เชื่อมต่อ
if (sensors.getDeviceCount() == 0) {
Serial.println("No DS18B20 sensors are connected!");
while (1); // หยุดการทำงานถ้าไม่มีเซ็นเซอร์เชื่อมต่อ
}
}
void loop() {
phTot = 0;
temTot = 0;
phAvg = 0;
temAvg = 0;
// อ่านค่า 10 ตัวอย่างและรวมค่าแต่ละตัวอย่าง
for (x = 0; x < 10; x++) {
phTot += analogRead(analogPhPin);
temTot += analogRead(analogTempPin);
delay(10);
}
// คำนวณค่าเฉลี่ย
phAvg = phTot / 10.0;
temAvg = temTot / 10.0;
// แปลงค่าอนาล็อกเป็นแรงดันไฟฟ้า
float phVoltage = phAvg * (3.3 / 4095.0); // ESP32 ใช้ ADC 12-bit
// float temVoltage = temAvg * (3.3 / 4095.0); // ESP32 ใช้ ADC 12-bit (ถ้าต้องการแปลงค่าอุณหภูมิจากแรงดันไฟฟ้า)
// คำนวณค่า pH จากแรงดันไฟฟ้า
float pHValue = phVoltage * m + C;
// แสดงค่าแรงดันไฟฟ้าและค่า pH
Serial.print("phVoltage = ");
Serial.print(phVoltage);
Serial.print(" ");
Serial.print("pH = ");
Serial.println(pHValue);
// อ่านค่าอุณหภูมิจาก DS18B20
sensors.requestTemperatures();
// ตรวจสอบว่าเซ็นเซอร์อ่านค่าได้หรือไม่
float temperatureC = sensors.getTempCByIndex(0);
if (temperatureC == DEVICE_DISCONNECTED_C) {
Serial.println("Error: Could not read temperature data");
} else {
Serial.print("Temperature is: ");
Serial.print(temperatureC);
Serial.println(" *C");
}
Serial.println("");
// หน่วงเวลา 1 วินาทีก่อนเริ่มวนลูปใหม่
delay(1000);
}