原创 用pH传感器和ESP32制作一个智能pH检测仪

2022-3-23 12:03 5726 13 13 分类: MCU/ 嵌入式 文集: 方案
本项目是一个基于IoT技术的智能pH测量仪,使用了一个pH传感器和ESP32 WiFi模块,pH读数通过ThingSpeak可视化服务器显示。项目物料清单如下:
ESP32开发板 (ESP-WROOM-32)
PH传感器
9V电池或DC适配器
跳线
面包板


项目清单中的pH传感器是一款比较先进的工业级电极,这是专门为Arduino、ESP8266、ESP32和其他MCU而设计的线性模拟工具,测量范围0-14pH。ESP32是内置12-bit ADC的32位芯片, 可进行高精度的测量。

PH传感器检测包


项目连接器板上的LED可用作电源指示器。该板子带有BNC-type连接器和PH传感器接口。使用时,将pH sensor与BNC连接器连接,再将PH接口插入MCU板的任一模拟输入端口即可。如果已经编程就绪,就很容易获得pH值,也可以通过万用表来测量输出电压。


高分辨率pH探针可按照用户定义的间隔对液体取样,并将结果发送到远端服务器,响应时间少于1分钟,应用场景有养鱼缸、水厂、实验室等。

PH传感器带有BNC连接器的工业级pH电极,电源指示器LED,和一个校准PH探针。技术规格如下:
模块电压:DC 9.00V 1A
测量范围:0-14PH
测量精度:±0.1pH
响应时间: 1min
输出:模拟电压0.5V to 3V
Alkali误差: 0.2PH
内阻: 250MO


本仪器事先进行了校准,测量结果与温度成正比。如果PH传感器探针连接状态改变了,就需要重新校准:PH4 = 1.5V, PH7 = 2.0V & PH9 = 2.5V。校准时,让PH传感器探针直立并保持较长一段时间。如果该传感器在2-3天内多次使用过,测量结果就会更加精准。

在测试中将PH探针浸入溶液之前,要先用去离子水冲洗传感器的试管,然后用薄绉纸擦拭干净。要获得稳定测量结果,大约需要30-40秒时间。

一旦测量读数完成,在收储PH探针之前,要再用去离子水冲洗探针,用薄绉纸将表面溶液擦拭干净,然后盖上保护盖进行保管。

注意,PH传感器探针的试管尖非常敏感,禁止用手触碰,也不能放在地上。该灯泡型的外壳非常脆弱,不用时应按规定妥善保管。

用ESP32接口测试PH传感器

制作IoT pH检测仪之前,要先将其与ESP32 WiFi模块按照如下电路图连接并测试。


该pH传感器使用外接9V电池,或者9V DC电源供电。将pH传感器信号板的输出连接到ESP32的VP引脚,这个引脚可作为A0引脚使用。传感器的输出范围为0.5-3V,可与ESP32的模拟引脚一起使用。

基本测试代码

pH传感器是模拟传感器,需要将模拟输出转换成数字pH值。下面是一组简单ESP32 & pH传感器代码,拷贝并将这些代码黏贴到Arduino IDE。

从开发板管理器选择ESP32和COM端口后,就可以上传代码了。

const int potPin=A0;
float ph;
float Value=0;

void setup() {
 // put your setup code here, to run once:
 Serial.begin(115200);
 pinMode(potPin,INPUT);
 delay(1000);
}
void loop(){

   Value= analogRead(potPin);
   Serial.print(Value);
   Serial.print(" | ");
   float voltage=Value*(3.3/4095.0);
   ph=(3.3*voltage);
   Serial.println(ph);
   delay(500);
}


上传代码后,打开Serial Monitor,传感器数值就出现了。

刚才我们测量的是柠檬汁,Ph值范围为2.8~3.0。我们也测量了一个常用洗衣液,其Ph值大于8。我们也测量了一杯牛奶,其Ph值会为5左右。


如果传感器探针与测量套装保持完整的话,我们就没有必要对其进行校准了。否则,如果连接状态改变了,就要微调Ph模块中的5K电位器,按照前述方法进行校准。


制作智能pH检测仪

接下来,我们重写代码构建一个基于IoT的pH检测仪,通过这个pH检测仪我们可在世界上任何地方监视目标的pH值。

项目使用Thingspeak服务器在线监视pH数据。ThingSpeak是一个面向IoT项目的工具,首先应登录https://thingspeak.com并注册一个账号,然后开设一个新通道,为pH读数数据创建一个新装置。

接着,创建API Key。后面更改程序和设定数据时需要这个Key。

下面是基于pH Sensor & ESP32的智能pH测量仪代码:

String apiKey = "*************";
const char *ssid = "*************";
const char *password = "*************";


这需要黏贴并拷贝前面的API Key来升级API密码,同时更新Wi-Fi信用、Wi-Fi名称,以及一个后期可变更的密码。

拷贝以下代码并上传到ESP32开发板:

#include
const int potPin=A0;
float ph;
float Value=0;

String apiKey = "*************"; // Enter your Write API key from ThingSpeak
const char *ssid = "*************"; // replace with your wifi ssid and wpa2 key
const char *password = "*************";
const char* server = "api.thingspeak.com";// don't change this

WiFiClient client;


void setup() {
 // put your setup code here, to run once:
 Serial.begin(115200);
 pinMode(potPin,INPUT);
 delay(1000);

 Serial.print("Connecting to ");
 Serial.println(ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(2000);
   Serial.print(".");
 }
 // Print local IP address and start web server
 Serial.println("");
 Serial.println("WiFi connected.");
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
 
}

void loop() {
 // put your main code here, to run repeatedly:
Value= analogRead(potPin);
Serial.print(Value);
Serial.print(" | ");
float voltage=Value*(3.3/4095.0);
ph=(3.3*voltage);
Serial.println(ph);
delay(500);

if (client.connect(server, 80)) // "184.106.153.149" or api.thingspeak.com
  {
     String postStr = apiKey;
     postStr += "&field1=";
     postStr += String(ph);
     postStr += "\r\n";
   
     client.print("POST /update HTTP/1.1\n");
     client.print("Host: api.thingspeak.com\n");
     client.print("Connection: close\n");
     client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
     client.print("Content-Type: application/x-www-form-urlencoded\n");
     client.print("Content-Length: ");
     client.print(postStr.length());
     client.print("\n\n");
     client.print(postStr);
   }    
}

上传完成后,ESP32将尝试连接WiFi网络。每隔15秒,传感器就向Thinkspeak server上传数据。我们可在Thinkspeak控制面板看到上传的数据结果。


如果你对模拟Ph传感器的测量结果不满意,也可以采用科学仪器级别的Ph传感器,通过它们的I2C & UART接口获得更精准的测量结果。

作者: 硬之城Allchips, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3975615.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /2 下一条