Pular para o conteúdo principal

Grove - Sensor de Nível de Água

pir

O Grove Water Level Sensor é um sensor muito preciso que pode ser útil em aplicações de medição de nível de água. Ele é completamente à prova d'água e usa almofadas capacitivas para detectar níveis de água de até 10 cm.

Usamos almofadas capacitivas na PCB do módulo e fizemos um revestimento conformal sobre a PCB para fazer com que o sensor seja protegido contra umidade, poeira, produtos químicos e altas temperaturas. Acreditamos que esta técnica permitirá que você faça medições de nível de água precisas (precisão de ±5 mm) facilmente.

pir

Características

  • Fácil de usar (usa conector Grove sem necessidade de solda)
  • Baseado em detecção capacitiva
  • À prova d'água
  • Revestimento Conformal
  • Resistente à corrosão
  • Detecta níveis de água de até 10 cm
  • Interface I2C

Especificações

ParâmetroValor
Tensão de entrada3.3V / 5V
Precisão de medição±5mm
Faixa de temperatura de operação-40°C a 105°C
Endereços I2C0x78 e 0x77
InterfaceI2C
Dimensões20mm x 133mm

Visão Geral de Hardware

Plataformas Suportadas

ArduinoRaspberry Pi

pir

pir

Primeiros Passos

Brincar com Arduino

Materiais necessários

Seeeduino V4.2Base ShieldGrove - Water Level Sensor

pir

pir

pir

Adquira agoraAdquira agoraAdquira agora

Além disso, você pode considerar o nosso novo Seeeduino Lotus M0+, que é equivalente à combinação de Seeeduino V4.2 e Baseshield.

Conexão de Hardware

  • Passo 1. Conecte o Grove - Water Level Sensor à porta I2C do Grove - Base Shield.

  • Passo 2. Conecte o Grove - Base Shield ao Seeeduino.

  • Passo 3. Conecte o Seeeduino a um PC via cabo USB.

pir

Software

nota

Se esta é a primeira vez que você trabalha com Arduino, recomendamos fortemente que veja Getting Started with Arduino antes de começar.

  • Passo 1. Abra a Arduino IDE e crie um novo arquivo, depois copie o código a seguir para o novo arquivo.
#include <Wire.h>

#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
#define SERIAL SerialUSB
#else
#define SERIAL Serial
#endif

unsigned char low_data[8] = {0};
unsigned char high_data[12] = {0};


#define NO_TOUCH 0xFE
#define THRESHOLD 100
#define ATTINY1_HIGH_ADDR 0x78
#define ATTINY2_LOW_ADDR 0x77

void getHigh12SectionValue(void)
{
memset(high_data, 0, sizeof(high_data));
Wire.requestFrom(ATTINY1_HIGH_ADDR, 12);
while (12 != Wire.available());

for (int i = 0; i < 12; i++) {
high_data[i] = Wire.read();
}
delay(10);
}

void getLow8SectionValue(void)
{
memset(low_data, 0, sizeof(low_data));
Wire.requestFrom(ATTINY2_LOW_ADDR, 8);
while (8 != Wire.available());

for (int i = 0; i < 8 ; i++) {
low_data[i] = Wire.read(); // receive a byte as character
}
delay(10);
}

void check()
{
int sensorvalue_min = 250;
int sensorvalue_max = 255;
int low_count = 0;
int high_count = 0;
while (1)
{
uint32_t touch_val = 0;
uint8_t trig_section = 0;
low_count = 0;
high_count = 0;
getLow8SectionValue();
getHigh12SectionValue();

Serial.println("low 8 sections value = ");
for (int i = 0; i < 8; i++)
{
Serial.print(low_data[i]);
Serial.print(".");
if (low_data[i] >= sensorvalue_min && low_data[i] <= sensorvalue_max)
{
low_count++;
}
if (low_count == 8)
{
Serial.print(" ");
Serial.print("PASS");
}
}
Serial.println(" ");
Serial.println(" ");
Serial.println("high 12 sections value = ");
for (int i = 0; i < 12; i++)
{
Serial.print(high_data[i]);
Serial.print(".");

if (high_data[i] >= sensorvalue_min && high_data[i] <= sensorvalue_max)
{
high_count++;
}
if (high_count == 12)
{
Serial.print(" ");
Serial.print("PASS");
}
}

Serial.println(" ");
Serial.println(" ");

for (int i = 0 ; i < 8; i++) {
if (low_data[i] > THRESHOLD) {
touch_val |= 1 << i;

}
}
for (int i = 0 ; i < 12; i++) {
if (high_data[i] > THRESHOLD) {
touch_val |= (uint32_t)1 << (8 + i);
}
}

while (touch_val & 0x01)
{
trig_section++;
touch_val >>= 1;
}
SERIAL.print("water level = ");
SERIAL.print(trig_section * 5);
SERIAL.println("% ");
SERIAL.println(" ");
SERIAL.println("*********************************************************");
delay(1000);
}
}

void setup() {
SERIAL.begin(115200);
Wire.begin();
}

void loop()
{
check();
}
  • Passo 3. Envie o demo. Se você não sabe como enviar o código, verifique How to upload code.

  • Passo 4. Abra o Serial Monitor da Arduino IDE clicando em Tool-> Serial Monitor. Ou pressione as teclas ctrl+shift+m ao mesmo tempo. Configure o baud rate para 115200.

  • Passo 5. O resultado deve ser assim quando o sensor estiver na água:

FAQ

Q1# Aplicações úteis?

A1: Aqui fornecemos uma aplicação simples usando o Grove - Water Level Sensor com Buzzer e módulo LED para detecção de nível de água. Por favor, verifique o código completo aqui.

pir

Visualizador de Esquemático Online

Recursos

Suporte Técnico e Discussão de Produto

Atualizável para Sensores Industriais

Com o controlador S2110 e o registrador de dados S2100 da SenseCAP, você pode facilmente transformar o Grove em um sensor LoRaWAN®. A Seeed não só ajuda você na prototipagem, mas também oferece a possibilidade de expandir seu projeto com a série SenseCAP de robustos sensores industriais.

O invólucro IP66, a configuração via Bluetooth, a compatibilidade com a rede global LoRaWAN®, a bateria interna de 19 Ah e o forte suporte do APP tornam o SenseCAP S210x a melhor escolha para aplicações industriais. A série inclui sensores para umidade do solo, temperatura e umidade do ar, intensidade de luz, CO2, EC e uma estação meteorológica 8 em 1. Experimente o mais recente SenseCAP S210x no seu próximo projeto industrial de sucesso.

Loading Comments...