Produtos
Atendimento ao cliente +8618073152920Telefone / WhatsApp: +8615367865107
Endereço: Sala 102, Distrito D, Parque Industrial de Houhu, Distrito de Yuelu, Cidade de Changsha, Província de Hunan, China
Suporte Técnico
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.
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.
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, 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
Sensor combinado de temperatura do ar e umidade relativa
Sensor de Temperatura de Umidade do Solo para irrigação| NBL-S-THR
Sensor de pHde solo RS485solo Instrumento de teste medidor de pH do solo para agricultura | NBL-S-PH
Sensor de Velocidade do Vento Saída Modbus / RS485 /Analógico/0-5V/4-20mA
Pluviômetro com balde basculante para monitoramento climático automático RS485sensor de chuva / Exterior / aço···
Sensor de Radiação Solar Piranômetro 4-20mA/ RS485
Escaneie o QR code com o WhatsApp
Número do WhatsApp:+8615367865107
(Clique para copiar e adicionar no WhatsApp)