ESP32学习笔记——五合一土壤传感器

五合一土壤传感器的介绍

测量参数:土壤电导率(EC 值)、温度、水分、PH 值

测量量程:0~20000μS/cm、-40~80℃、0-100%、3~9PH

测量精度:0-10000us/cm 范围内为±3%FS;10000-20000us/cm范围内为±5%FS,@(棕壤,60%RH,25℃)、±0.5℃、0-50%内±2%,@(棕壤,30%,25℃)50-100%内±3%,@(棕壤,60%,25℃)、±0.3PH

分 辨 率:1μS/cm、0.1℃、0.1%、0.1

输出信号:RS485(ModBus-RTU 协议) 第 2页

供电电压:4.5~30V DC

工作范围:-30℃~70℃

稳定时间:通电后 1 秒

响应时间:<1 秒

使用方法

设备可连接各种载有差分输入的数据采集器,数据采集卡,远程数据采集模块等设备,接线说明如下图:

RS485 信号(默认地址 01):

标准 Modbus-RTU 协议,波特率:9600;校验位:无;数据位:8;停止位:1 

下面是读取含水量、温度值、电导率、pH值、氮含量、磷含量、钾含量的一组地址

0x01,0x03,0x00,0x00,0x00,0x07,0x04,0x08

由于含水量、温度值、电导率、pH值读出来的数据已经被放大十倍,因此我们还要对这些数据进行处理,将这些数据缩小原来的十分之一。

本次是ESP32在Arduino框架下写的代码,用到了ESP32的17和18号引脚

代码

#include <SoftwareSerial.h>
#include <Arduino.h>
unsigned char item[8] = {0x01,0x03,0x00,0x00,0x00,0x07,0x04,0x08};  //16进制测温命令
SoftwareSerial soilSerial(17, 18);  // RX, TX

float water,soil_temp,conductivity,pH,N,P,K;
int soil_data[40];

void setup()
{
  soilSerial.begin(9600);
  Serial.begin(9600);
}

void loop()
{
  int i=0;
  delay(500);  // 放慢输出频率
  for (i = 0 ; i < 8; i++) {  
    soilSerial.write(item[i]);   // write输出
  }
  delay(100);  // 等待测温数据返回
  i=0;
  while (soilSerial.available()) {//从串口中读取数据
    unsigned char in = (unsigned char)soilSerial.read();  // read读取
    Serial.print(in, DEC);
    Serial.print(',');
    soil_data[i]=in;
    i++;
  }
  i=0;
  Serial.println();
  for (i=0;i<17;i++)
  {
    Serial.print(soil_data[i]);
    Serial.print(" ");
  }
  Serial.println();
  water=float(soil_data[4])/10;//含水量
  soil_temp=float(soil_data[6])/10;//温度值℃
  conductivity=float(soil_data[8])/10;//电导率
  pH=float(soil_data[10])/10;//pH值
  N=float(soil_data[12]);//氮含量 mg/kg
  P=float(soil_data[14]);//磷含量 mg/kg
  K=float(soil_data[16]);//钾含量 mg/kg
  Serial.println(water);
  Serial.println(soil_temp);
  Serial.println(conductivity);
  Serial.println(pH);
  Serial.println(N);
  Serial.println(P);
  Serial.println(K);
}

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜雨星辰487

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值