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:5520

Sensor de umidade do solo 8 em 1 Rs485 para arduino

Neste guia, exploraremos como conectar um Sensor de Umidade e Temperatura do Solo 8 em 1 com o Arduino usando o protocolo RS485. Esse sistema nos permitirá monitorar o teor de umidade e a temperatura do solo, que são parâmetros cruciais para agricultura e jardinagem.

Sensores de umidade do solo medem o teor volumétrico de água no solo. Ao compreender os níveis de umidade, agricultores e jardineiros podem tomar decisões informadas sobre 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.

Integração 8-em-1 Sensor.jpg

Para este projeto, utilizaremos o Sensor de Umidade e Temperatura do Solo Niubol 8 in1, projetado especificamente para medições no solo. 

Por isso, estamos utilizando o Sensor de Solo de Grau Industrial para este projeto. Para conectar o sensor ao 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 do 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

RS485 Shield para Arduino x1

RS485 Sensor de Solo (Temperatura, Umidade, ECSalinidade, pH e NPK) x 1

Software:

Arduino IDE

Aqui está um mapeamento de conexão entre MAX485 e o Sensor de Temperatura de Umidade do Solo.

VCC -> 5V (Sensor de Solo)

GND -> GND (Sensor de Solo)

A (MAX485) - Sensor de Solo > Pino A (cor amarela)

B (MAX485) -> Sensor de Solo B Pino (cor azul)

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

Código-fonte/Programa para Leitura de Umidade e Temperatura do Solo 8 em 1 

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


#include

Defina os pinos para comunicação RS485

#define RO 2

#define DI 3

#define RE 8

#define DE 7

21 de #define RESPONSE_FRAME_SIZE

char sensorDataTextBuffer[200];

struct SoilSensorData

{

bool isSensorTimeout {false};

bool isValid {false};

temperatura de flutuação {-1,0};

umidade flutuante {-1,0};

condutividade int sem sinal {-1};

flutuar ph {-1.0};

nitrogênio int não sinalado {-1};

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

int, potássio não sinalado {-1};

salinidade int não sinalada {-1};

};

classe SoloSensor

{

Público:

SoilSensor()

{

modbus = new SoftwareSerial(RO, DI);

}

void inicialize()

{

Serial.begin (9600); Inicializar comunicação serial para depuração

modbus->begin(9600); Inicializar comunicação serial por software a taxa de 9600 bauds

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

pinMode(DE, OUTPUT); Defina DE pi

}

void sendDataRequest()

{

digitalWrite (DE, ALTO);

digitalWrite (RE, ALTO);

atraso(10);

Envie o quadro de requisição para o sensor de solo

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

}

SoilSensorData read()

{

SoilSensorData soilSensorData;

Encerre o modo de transmissão e defina para o modo de recepção para RS485

digitalWrite (DE, BAIXO);

digitalWrite (RE, BAIXO);

atraso(10);

Espere a resposta do sensor ou faça um tempo de espera após 1 segundo

largada longa não assinada Tempo = millis();

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

{

atraso(1);

}

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

{

Leia a resposta do sensor

índice de bytes = 0;

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

{

soilSensorResponse[index] = modbus->read();

index++;

}

soilSensorData = computeData();

}

senão

{

soilSensorData.isSensorTimeout = true; 

}

return soilSensorData;

~SoloSensor()

{

se (modbus!= nullptr) delete modbus;

delete[] soilSensorResponse;

}

Privado:

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

SoftwareSerial* modbus = nullptr;

byte soilSensorResponse[RESPONSE_FRAME_SIZE];

int convertBytesToDecimal(deslocamento int unsign)

{

retorno soloSensorResposta[deslocamento] * 256 + soloSensorResposta[offset + 1];

}

SoilSensorData computeData() const

{

SoilSensorData soilSensorData;


se (RespostaSensorSolar[0]!= 1 || RespostaSensorSolar[1]!= 3 || RespostaSensorSolar[2]!= 16)

{

soilSensorData.isValid = false;

return soilSensorData;

}

soilSensorData.isValid = verdadeiro;

soilSensorData.temperature = convertBytesToDecimal(3) / 10.0; Graus Celcius

soilSensorData.umidade = converterBytesToDecimal(5) / 10.0; Percentual

soilSensorData.conductividade = convertendoBytesToDecimal(7); microSiemens por centímetro

soilSensorData.ph = convertBytesToDecimal(9) / 100.0;

soilSensorData.nitrogen = convertBytesToDecimal(11); miligrama por quilograma

soilSensorData.phosphorus = convertBytesToDecimal(13); miligrama por quilograma

soilSensorData.potássio = converterBytesToDecimal(15); miligrama por quilograma

soilSensorData.salinidade = convertendoBytesToDecimal(17); miligrama por quilograma

return soilSensorData;

}

 };


SoilSensor soilSensor;

void writeSensorDataToString(SoilSensorData & sensorData)

{

if (sensorData.isSensorTimeout)

{

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

}

senão

{

if (sensorData.isValid)

{

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

Char* umidadeStr = malloc(6 * tamanhode(char));

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

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

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

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

autocondutividade = sensorData.condutividade;

auto n = sensorData.nitrogênio;

auto p = sensorData.phosphorus;

auto k = sensorData.potássio;

auto-salinidade = sensorData.salinidade;

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

se (tempStr!= NULL) livre(tempStr);

se (umidadeStr!= NULO) livre(umidadeStr);

se (phStr!= NULL) livre(phStr);

}

senão

{

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

}

}

}


configuração do void() 

{

 soilSensor.initialise();

}


loop void() 

{

soilSensor.sendDataRequest();

SoilSensorData sensorData = soilSensor.read();

writeSensorDataToString(sensorData);

Serial.println(sensorDataTextBuffer);

atraso (2000); Espere um segundo antes da próxima iteração do ciclo

}


Obrigado ao Phil Ogun pelo código!

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

Ao medir a constante dielétrica do solo, ele pode refletir direta e estabilidade o teor real de umidade de vários solos. É adequado para monitoramento da umidade do solo, experimentos científicos, irrigação econômica, estufas, flores e hortaliças, pastagens de gramíneas, teste de solo, cultivo de plantas, tratamento de esgoto, agricultura de qualidade e outras ocasiões. A fonte de alimentação de entrada do sensor, a sonda de detecção e a saída do sinal 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 e desempenho estável.

Ficha de Dados do Sensor de Solo:

1. NBL-S-THRFicha técnica do Sensor de Temperatura e Umidade do Solo

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

2. NBL-S-TMCFicha técnica de Temperatura, Umidade ECSensor do Solo

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

3. NBL-S-TMFicha técnica do Sensor de Temperatura e Umidade do Solo

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

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

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

5. NBL-S-TMCS-7Temperatura do Solo, Umidade, NPK, Condutividade e pH-Sensor Integrado

7-in-1-Soil-Composite-Sensor-Manual.pdf

4. NBL-S-TMCS-8Sensor Integrado de Temperatura, Umidade, NPK, pH, Condutividade e Salinidade do Solo

8-in-1-Soil-Composite-Sensor-Manual.pdf

ec ec nbl-s-thr nbl-s-tm nbl-s-tmc nbl-s-tmcs-7 nbl-s-tmcs-8

(ec, nbl-s-thr, nbl-s-tm, nbl-s-tmc, nbl-s-tmcs-7, nbl-s-tmcs-8)

(ec, nbl-s-thr, nbl-s-tm, nbl-s-tmc, nbl-s-tmcs-7, nbl-s-tmcs-8)

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