Grove - Sensor de Nível de Água

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.
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âmetro | Valor |
|---|---|
| Tensão de entrada | 3.3V / 5V |
| Precisão de medição | ±5mm |
| Faixa de temperatura de operação | -40°C a 105°C |
| Endereços I2C | 0x78 e 0x77 |
| Interface | I2C |
| Dimensões | 20mm x 133mm |
Visão Geral de Hardware
Plataformas Suportadas
| Arduino | Raspberry Pi |
|---|---|
|
|
Primeiros Passos
Brincar com Arduino
Materiais necessários
| Seeeduino V4.2 | Base Shield | Grove - Water Level Sensor |
|---|---|---|
|
|
|
| Adquira agora | Adquira agora | Adquira 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.

Software
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+mao 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.

Visualizador de Esquemático Online
Recursos
- [ZIP] Arquivo esquemático do Grove - Water Level Sensor (10CM)
- [PDF] ATtiny1616-1617-Automotive-Data-Sheet
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.







