Ligar por telefone Linha direta: +8618073152920
Ligar por telefone
Português
Contato/ CONTATO
Atendimento ao cliente +8618073152920
Changsha Zoko Link Technology Co., Ltd.

E-mail: sales@niubol.com

Telefone / WhatsApp: +8615367865107

Endereço: Sala 102, Distrito D, Parque Industrial de Houhu, Distrito de Yuelu, Cidade de Changsha, Província de Hunan, China

Localização:Início >> Blogs >> Suporte Técnico

Suporte Técnico

Código Arduino do sensor de umidade do solo

Data:2024-06-29 21:07:28 Visualizações:5468

Sensor de umidade do solo 8 em 1Rs485 para arduino

Neste guia, exploraremos como fazer a interface de um sensor de umidade e temperatura do solo 8 em 1 com Arduino usando o protocolo RS485. Esta configuração nos permitirá monitorar o teor de umidade e a temperatura do solo, parâmetros cruciais para a agricultura e jardinagem.

Sensores de umidade do solo medem o conteúdo volumétrico de água no solo. Ao compreender os níveis de humidade, os agricultores e jardineiros podem tomar decisões informadas sobre a irrigação, garantindo o crescimento ideal das plantas. A temperatura do solo também desempenha um papel significativo na saúde das plantas, afetando o crescimento das raízes e a absorção de nutrientes.

Sensor de solo de integração 8 em 1.jpg

Para este projeto, utilizaremos o sensor de umidade e temperatura do solo Niubol8 em 1, que é projetado especificamente para medições no solo.

Portanto, estamos usando Sensor de Solo de Nível Industrial para este projeto. Para fazer a interface do sensor com o Arduino, usaremos o protocolo de comunicação RS485. Os dados do Sensor de Umidade e Temperatura do Solo serão apresentados em uma tela OLED conectada ao Arduino.

Aqui estão os 4 fios para o sensor:

Fio Marrom:  VCC (5V-24V)

Fio Preto: GND

Fio Amarelo:RS485-A

Fio Azul:RS485-B

Requisitos:

Hardware

DFRduino UNO R3 (ou similar) x 1

Escudo RS485 para Arduino x1

Sensor de solo RS485(temperatura e umidade eECe salinidade ePhe NPK) x 1

Programas:

IDE do Arduino

Aqui está um mapeamento de conexão entre o MAX485 e o sensor de temperatura de umidade do solo.

VCC -> 5V (Sensor de Solo)

GND  -> GND (Sensor de Solo)

A (MAX485) -> Pino A do sensor de solo (cor amarela)

B (MAX485) -> Pino B do sensor de solo (cor azul)

Conexão do sensor de temperatura de umidade do solo com Arduino. Você pode usar uma placa de ensaio para montagem e fios jumper para conectar o sensor e o módulo RS485 ao Arduino.

Código fonte/programa para leitura de umidade e temperatura do solo 8 em 1

Programa de código-fonte para leitura do sensor de umidade do solo.txt


#include

// Define os pinos para comunicação RS485

#define RO 2

#define DI3

#define RE8

#define DE 7

#define RESPONSE_FRAME_SIZE 21

char sensorDataTextBuffer[200];

estrutura SoilSensorData

{

bool isSensorTimeout{false};

bool é válido{false};

temperatura flutuante{-1.0};

umidade flutuante{-1.0};

condutividade interna não assinada{-1};

flutuarph{-1.0};

unsigned int nitrogênio{-1};

fósforo int não assinado{-1};

unsigned int potássio{-1};

salinidade int não assinada{-1};

};

classe SoilSensor

{

público:

Sensor de Solo()

    {

modbus= novo SoftwareSerial(RO, DI);

    }

inicialização nula()

    {

Serial.begin(9600);// Inicializa a comunicação serial para depuração

modbus->início(9600);    // Inicializa a comunicação serial do software a uma taxa de transmissão de 9600

pinMode(RE, SAÍDA); // Define o pino RE como saída

pinMode(DE, SAÍDA); // Define DE pi

    }

void sendDataRequest()

    {

digitalWrite(DE, ALTO);

digitalWrite(RE, ALTO);

atraso(10);

// Envia o quadro de solicitação para o sensor de solo

modbus->write(soilSensorRequest, sizeof(soilSensorRequest));

    }

    

Leitura de dados do SoilSensor()

    {

SoloSensorData soloSensorData;

// Finaliza o modo de transmissão e configura o modo de recepção para RS485

digitalWrite(DE,BAIXO);

digitalWrite (RE, BAIXO);

atraso(10);

//Aguarde a resposta do sensor ou tempo limite após 1 segundo

startTime longo não assinado = milis();

while (modbus->available() < RESPONSE_FRAME_SIZE && milis() - startTime < 1000)

      {

atraso(1);

      }

if (modbus->available() >= RESPONSE_FRAME_SIZE) // Se uma resposta válida for recebida

      {

//Lê a resposta do sensor

índice de bytes = 0;

while (modbus->available() && índice < RESPONSE_FRAME_SIZE)

        {

soloSensorResponse[index]=modbus->ler();

índice++;

        }

soloSensorData = computaData();

      }

mais

      {

soloSensorData.isSensorTimeout = verdadeiro;

      }

retornar soloSensorData;

    } 

~SoilSensor()

    {

se (modbus!= nullptr) excluir modbus;

excluir[] soloSensorResponse;

    }

privado:

const byte soloSensorRequest[8]={0x01, 0x03, 0x00, 0x00, 0x00, 0x08, 0x44, 0x0C};

SoftwareSerial*modbus= nullptr;

byte soloSensorResponse[RESPONSE_FRAME_SIZE];

int convertBytesToDecimal (deslocamento interno não assinado)

    {

retornar soloSensorResponse[offset]* 256 + soloSensorResponse[offset + 1];

    }

SoilSensorData computaData() const

    {

SoloSensorData soloSensorData;


if (soilSensorResponse[0]!= 1 || soloSensorResponse[1]!= 3 || soloSensorResponse[2]!= 16)

      {

soloSensorData.isValid = falso;

retornar soloSensorData;

      }

soloSensorData.isValid = verdadeiro;

soloSensorData.temperature = convertBytesToDecimal(3) / 10.0; //graus Celsius

soloSensorData.humidity = convertBytesToDecimal(5) / 10.0; //porcentagem

soloSensorData.conductivity = convertBytesToDecimal(7);// microSiemens por centímetro

soloSensorData.ph= convertBytesToDecimal(9) / 100,0;

soloSensorData.nitrogen = convertBytesToDecimal(11); // miligrama por quilograma

soloSensorData.fósforo = convertBytesToDecimal(13); // miligrama por quilograma

soloSensorData.potassium = convertBytesToDecimal(15); // miligrama por quilograma

soloSensorData.salinity = convertBytesToDecimal(17); // miligrama por quilograma

retornar soloSensorData;

    }

 };


Sensor de solo; Sensor de solo;

void writeSensorDataToString(SoilSensorData & sensorData)

{

se (sensorData.isSensorTimeout)

  {

sprintf(sensorDataTextBuffer, "Dados incompletos ou tempo limite do sensor");

  }

mais

  {

se (sensorData.isValid)

    {

char* tempStr = malloc(6 * sizeof(char));

char* umidadeStr = malloc(6 * sizeof(char));

char* phStr = malloc(6 * sizeof(char));

dtostrf(sensorData.temperatura, 4, 1, tempStr);

dtostrf(sensorData.humidade, 4, 1, umidadeStr);

dtostrf(sensorData.ph, 4, 2, phStr);

condutividade automática = sensorData.conductivity;

automático n = sensorData.nitrogen;

automático p = sensorData.fosforo;

auto k = sensorData.potássio;

salinidade automática = sensorData.salinity;

sprintf(sensorDataTextBuffer, "Temperatura: %s; Umidade: %s;Condutividade: %u;PH: %s; N: %u; P: %u; K: %u; Salinidade: %u", tempStr, umidadeStr, condutividade, phStr, n, p, k, salinidade);

if (tempStr! = NULL) free(tempStr);

if (humidadeStr! = NULL) free(humidadeStr);

if (phStr! = NULO) free(phStr);

    }

mais

    {

sprintf(sensorDataTextBuffer, "Dados lidos do sensor são inválidos");

    }

  }

}


configuração nula()

{

soloSensor.initialize();

}


loop vazio()

{

soloSensor.sendDataRequest();

SoilSensorData sensorData = soloSensor.read();

writeSensorDataToString(sensorData);

Serial.println(sensorDataTextBuffer);

atraso(2000); //Aguarde um segundo antes da próxima iteração do loop

}


Obrigado a Phil Ogun pelo código!

O Sensor de Solo 8 em 1 é um sensor que integra vários parâmetros como temperatura, umidade, condutividade, NPK, salinidade ePH. Com esse sensor, os usuários podem acessar facilmente vários dados importantes do solo, ajudando-os a compreender melhor a condição do solo e a fazer ajustes e tomar decisões adequadas.

Ao medir a constante dielétrica do solo, ele pode refletir de forma direta e estável o teor real de umidade de vários solos. É adequado para monitoramento da umidade do solo, experimentos científicos, irrigação com economia de água, estufas, flores e vegetais, pastagens, teste rápido do solo, cultivo de plantas, tratamento de esgoto, agricultura fina e outras ocasiões.A fonte de alimentação de entrada do sensor, sonda de detecção, saída de sinal três partes são completamente isoladas, seguras e confiáveis, aparência bonita, fácil de instalar, a sonda é feita de aço inoxidável, resistência à corrosão, desempenho estável.

Folha de dados do sensor de solo:

1. Folha de dados do sensor de umidade e temperatura do soloNBL-S-THR

NBL-S-THR-Soil-temperature-and-moisture-sensors-Instruction-Manual-V4.0.pdf

2. Folha de dados do sensorECde temperatura e umidade do soloEC

NBL-S-TMC-Soil-temperature-and-moisture-conductivity-sensor.pdf

3. Folha de dados do sensor de umidade e temperatura do soloNBL-S-TM

NBL-S-TM-Soil-temperature-and-moisture-sensor-Instruction-Manual-4.0.pdf

4.  Sensor integrado de temperatura do solo, umidade, condutividade e salinidadeNBL-S-TMCS

NBL-S-TMCS-Soil-Temperature-Humidity-Conductivity-and-Salinity-Sensor.pdf

5.  Temperatura do soloNBL-S-TMCS-7, Umidade, NPK, condutividade e sensor integradopH

Manual do sensor composto de solo 7 em 1.pdf

4.NBL-S-TMCS-8Temperatura do solo, Umidade, NPK,pH, Sensor integrado de condutividade e salinidade

Manual do sensor composto de solo 8 em 1.pdf

Recomendações relacionadas

Catálogos de sensores e estações meteorológicas

Catálogo de sensores agrícolas e estações meteorológicas - NiuBoL.pdf

Catálogo de estações meteorológicas - NiuBoL.pdf

Catálogo de sensores agrícolas - NiuBoL.pdf

Catálogo de sensores de qualidade da água - NiuBoL.pdf

Produtos relacionados

Envie seus requisitos. Vamos discutir seu projeto e encontrar a solução adequada.

Nome*

Telefone*

E-mail*

Empresa*

País*

Mensagem

Online
Contato
E-mail
Topo
XCódigo Arduino do sensor de umidade do solo-Suporte Técnico-Estações meteorológicas automáticas, sensores industriais e soluções IoT para agricultura, água e ambiente | NiuBoL

Escaneie o QR code com o WhatsApp

Número do WhatsApp:+8615367865107

(Clique para copiar e adicionar no WhatsApp)

Abrir WhatsApp

O número do WhatsApp foi copiado. Abra o WhatsApp para consultar os detalhes!
WhatsApp