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: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.
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.
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
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
Solo pH sensor RS485 instrumento de teste de solo 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 de balde basculante para monitoramento do clima sensor de chuva automático RS485 / Externo / aço i···
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)