O ponto mais interessante do RuView não é “ver através das paredes” como uma câmera invisível. É transformar pequenas mudanças no sinal Wi-Fi em pistas sobre presença e movimento — uma abordagem que pode ser útil quando câmeras e dispositivos vestíveis não são opções. Mas há uma diferença importante entre detectar que algo mudou numa sala e identificar com precisão o que uma pessoa está fazendo. Na prática, o segundo problema é bem mais difícil.
Segundo o Sapo.pt, o projeto open source já ultrapassou 95 mil estrelas no GitHub e explora sinais Wi-Fi para detectar ocupação, acompanhar movimentos e investigar padrões relacionados a sinais vitais. A ideia merece atenção, mas eu separaria três coisas antes de avaliar os resultados: o que a física permite, o que o hardware consegue medir e o que os modelos conseguem inferir com confiabilidade.
Como o RuView usa CSI para detectar presença e movimento
Um roteador transmite ondas de rádio que se propagam pelo ambiente e refletem em paredes, móveis e pessoas. O receptor não recebe apenas um caminho direto entre transmissor e antena: recebe uma combinação de múltiplos caminhos, conhecida como multipath.
Quando alguém se move, altera ligeiramente esses caminhos. O efeito pode aparecer em medidas do canal Wi-Fi, como a Channel State Information (CSI), ou Informação do Estado do Canal. Em vez de registrar somente a intensidade geral do sinal, a CSI descreve como diferentes componentes do sinal foram afetadas pelo canal de comunicação.
Em termos simplificados, a CSI pode incluir amplitude e fase por subportadora OFDM. Como o Wi-Fi divide a transmissão em várias subportadoras, essas medidas oferecem mais detalhe do que um indicador comum de intensidade, como RSSI. O RSSI pode dizer que o sinal ficou mais fraco; a CSI pode mostrar que certas partes do canal mudaram de maneira diferente de outras.
Isso não significa que o sistema forme uma imagem da pessoa. Ele observa variações e tenta associá-las a eventos. Uma pessoa atravessando a sala pode gerar uma assinatura temporal diferente de uma sala vazia. Respirar, porém, produz movimentos muito menores, que podem ser mascarados por ruído, ventilação, tráfego de rede ou outra pessoa se mexendo.
O que o projeto promete — e o que não devemos presumir
De acordo com a descrição divulgada pelo Sapo.pt, o RuView trabalha com sensores de baixo custo baseados em ESP32 e apresenta experiências de detecção de presença, entradas e saídas, caminhada, posição sentada e quedas. O projeto também menciona estimativas de postura, pontos corporais e padrões associados a respiração e frequência cardíaca.
Essas capacidades não devem ser interpretadas como equivalentes a uma câmera ou a um equipamento médico. Um modelo que reconhece padrões em um conjunto de testes não necessariamente mantém a mesma precisão em outra casa, com outro roteador, outro posicionamento de antenas ou uma disposição diferente dos móveis. Em projetos de sensoriamento, o ambiente faz parte do sistema.
Também vale distinguir detecção de classificação. Detectar presença é responder “há uma alteração compatível com alguém no ambiente?”. Classificar uma atividade é responder “essa alteração corresponde a uma queda, caminhada ou outra ação?”. Cada nível exige dados, validação e critérios de erro mais rigorosos que o anterior.
CSI, câmeras, sensores PIR e mmWave: qual abordagem escolher?
| Tecnologia | Vantagem principal | Limitação prática |
|---|---|---|
| Wi-Fi CSI | Não exige câmera nem objeto vestível; pode aproveitar sinais de rádio existentes. | Depende de hardware compatível, posicionamento, processamento e calibração do ambiente. |
| Câmera | Fornece informação visual rica e facilita inspeção dos resultados. | Cria preocupações de privacidade, iluminação, oclusão e armazenamento de imagens. |
| Sensor PIR | É simples, barato e eficiente para indicar movimento. | Em geral não identifica bem postura, atividade ou presença imóvel. |
| Radar mmWave | É adequado para detectar movimento e, em alguns sistemas, micro movimentos. | Exige hardware específico e integração própria; não é automaticamente uma solução plug-and-play. |
| Dispositivo vestível | Fica próximo da pessoa e pode medir sinais com sensores dedicados. | Depende de adesão, bateria e uso contínuo do dispositivo. |
Na minha avaliação, CSI faz mais sentido quando a prioridade é sensoriamento sem contato e existe disposição para experimentar. Para acender uma luz quando alguém entra, um PIR costuma ser mais simples e previsível. Para monitorar uma queda com consequência real, eu não trataria uma demonstração de CSI como sistema suficiente sem validação independente e uma estratégia de redundância.
Na Prática: como testar um detector simples de movimento com CSI
Um teste inicial pode começar sem tentar reconhecer atividades complexas. A meta é verificar se uma janela de medidas varia mais quando há movimento do que quando o ambiente está parado. O exemplo abaixo recebe um arquivo CSV com uma coluna chamada amplitude, calcula a variância em janelas consecutivas e sinaliza janelas mais instáveis.
O código é um baseline didático, não uma implementação do RuView nem um classificador pronto para produção. A saída depende do formato real exportado pelo seu dispositivo; em alguns fluxos, será necessário extrair amplitude de valores complexos de CSI antes de gerar o CSV.
import csv
import statistics
import sys
WINDOW_SIZE = 20
VARIANCE_THRESHOLD = 0.02
def read_amplitudes(path):
values = []
with open(path, newline="", encoding="utf-8") as file:
for row in csv.DictReader(file):
try:
values.append(float(row["amplitude"]))
except (KeyError, ValueError):
continue
return values
def detect_motion(values):
for end in range(WINDOW_SIZE, len(values) + 1):
window = values[end - WINDOW_SIZE:end]
variance = statistics.pvariance(window)
state = "movimento" if variance > VARIANCE_THRESHOLD else "estável"
print(f"amostra {end}: variância={variance:.5f} estado={state}")
if __name__ == "__main__":
if len(sys.argv) != 2:
raise SystemExit("Uso: python detector.py csi_amplitude.csv")
samples = read_amplitudes(sys.argv[1])
if len(samples) < WINDOW_SIZE:
raise SystemExit(f"São necessárias pelo menos {WINDOW_SIZE} amostras válidas.")
detect_motion(samples)
Para executar, salve como detector.py e use um CSV com cabeçalho amplitude e valores numéricos abaixo dele. O limiar é arbitrário: precisa ser estimado com medições do próprio ambiente. Um valor que funciona numa sala pode gerar falsos positivos em outra.
- Confirme o hardware e a coleta. Verifique se o dispositivo e o firmware realmente expõem CSI. Não assuma que qualquer ESP32, qualquer roteador ou qualquer versão de firmware fornecerá o mesmo formato de dados.
- Registre o ambiente vazio. Colete uma linha de base por tempo suficiente para observar variações normais, incluindo interferência e tráfego de rede.
- Faça movimentos controlados. Teste uma pessoa parada, caminhando e saindo da área. Mude uma variável por vez para entender o sinal.
- Separe treino e validação. Avalie o detector em sessões diferentes das usadas para ajustar o limiar. Caso contrário, você mede adaptação ao teste, não generalização.
- Registre falsos positivos e falsos negativos. Para automação residencial, um falso alerta pode ser inconveniente; para monitoramento de segurança, deixar de detectar um evento pode ser muito mais grave.
Erros comuns ao desenvolver aplicações com Wi-Fi CSI
- Confundir RSSI com CSI. RSSI é uma medida agregada de intensidade; não substitui os dados detalhados do canal usados em abordagens de sensoriamento CSI.
- Escolher um limiar sem medir o ruído. Ventiladores, portas, animais, outros dispositivos e tráfego de rede podem alterar as leituras. Um limiar fixo escolhido “no olho” tende a falhar fora da demonstração.
- Treinar e testar no mesmo cenário. Se os dois conjuntos vêm da mesma sessão e da mesma posição, o modelo pode aprender características acidentais daquele ambiente. Testar em outro dia ou com outro posicionamento ajuda a revelar esse problema.
- Prometer localização ou reconhecimento universal. Frequência, largura de banda, antenas, distância e geometria da sala influenciam o canal. O comportamento observado numa casa não garante o mesmo resultado numa planta diferente.
- Tratar sinais vitais como medição clínica. Estimar respiração ou frequência cardíaca a partir de movimentos minúsculos é especialmente sensível a ruído e movimento corporal. Não use uma experiência de software como substituta de equipamento médico.
- Ignorar privacidade porque não há câmera. Um sistema sem imagens ainda pode inferir ocupação, rotina e presença. Proteja os dados, limite retenção e explique aos moradores o que está sendo medido.
Implicações para quem desenvolve software
O desafio não termina no sensor. Uma aplicação confiável precisa cuidar da aquisição dos dados, sincronização temporal, filtragem, detecção de falhas e observabilidade. Eu manteria os dados brutos disponíveis durante a fase de desenvolvimento, com retenção limitada e controles de acesso, para investigar por que um evento foi classificado incorretamente.
Também evitaria acoplar a lógica do produto diretamente ao formato específico de um firmware. Uma camada de ingestão que normaliza timestamps, identificadores de sensor e amostras facilita trocar hardware e comparar versões do processamento. Isso é particularmente importante em projetos open source, onde configuração, dependências e compatibilidade podem mudar entre releases.
Por fim, defina a consequência de cada previsão. Se o sistema apenas ajusta uma automação não crítica, uma classificação aproximada pode ser aceitável. Se dispara um alarme, monitora alguém vulnerável ou influencia uma decisão de saúde, a tolerância a erro muda completamente. O requisito deve orientar o limiar, a validação e a necessidade de sensores complementares.
Perguntas frequentes sobre RuView e Wi-Fi CSI
O RuView consegue realmente ver através das paredes?
Não no sentido visual de produzir uma imagem detalhada como uma câmera. A abordagem analisa alterações em sinais de rádio que podem atravessar ou contornar obstáculos e tenta inferir presença ou movimento. O resultado depende do ambiente, do hardware e do processamento.
Preciso de um roteador especial para usar CSI?
Você precisa de uma combinação de hardware e firmware que permita obter medidas CSI compatíveis com o fluxo do projeto. A compatibilidade não é garantida para todo roteador ou placa ESP32. Confira a documentação e teste a coleta antes de planejar a aplicação.
Wi-Fi CSI consegue medir batimentos cardíacos com precisão médica?
Não se deve presumir isso. O projeto pode explorar padrões relacionados a respiração e frequência cardíaca, mas transformar esses padrões em medições clínicas confiáveis exige validação rigorosa, condições controladas e comparação com instrumentos apropriados.
É melhor usar CSI ou um sensor mmWave?
Depende do objetivo e do orçamento de integração. CSI pode aproveitar infraestrutura Wi-Fi e é interessante para pesquisa e prototipagem. mmWave usa hardware dedicado e pode ser mais adequado quando se busca sensoriamento por radar. Compare precisão, custo, disponibilidade de dados e esforço de implantação no seu cenário.
Eu vejo o RuView como um projeto promissor para explorar sensoriamento sem câmera, não como uma solução mágica que elimina a necessidade de testes. Para desenvolvedores, a oportunidade está em entender os limites do sinal, medir os erros e construir aplicações com requisitos honestos. Gostou? Me segue no GitHub e deixa um comentário se tiver dúvida ou quiser aprofundar algum ponto.