{"id":28252865,"url":"https://github.com/nicolasraf/vigia_das_aguas-embarcatech","last_synced_at":"2025-10-08T06:59:59.712Z","repository":{"id":283906900,"uuid":"931831624","full_name":"NicolasRaf/Vigia_Das_Aguas-EmbarcaTech","owner":"NicolasRaf","description":"Final project of the Embarcatech preparation program with embedded systems, this project refers to the final work of the first part, before a possible residency by the program.","archived":false,"fork":false,"pushed_at":"2025-03-23T21:42:24.000Z","size":62,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-15T20:37:06.212Z","etag":null,"topics":["bitdoglab","c","embedded-systems","raspberry-pi-pico-w"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NicolasRaf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-12T23:31:54.000Z","updated_at":"2025-03-23T21:42:27.000Z","dependencies_parsed_at":"2025-03-23T00:33:37.342Z","dependency_job_id":null,"html_url":"https://github.com/NicolasRaf/Vigia_Das_Aguas-EmbarcaTech","commit_stats":null,"previous_names":["nicolasraf/vigia_das_aguas-embarcatech"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NicolasRaf/Vigia_Das_Aguas-EmbarcaTech","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasRaf%2FVigia_Das_Aguas-EmbarcaTech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasRaf%2FVigia_Das_Aguas-EmbarcaTech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasRaf%2FVigia_Das_Aguas-EmbarcaTech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasRaf%2FVigia_Das_Aguas-EmbarcaTech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NicolasRaf","download_url":"https://codeload.github.com/NicolasRaf/Vigia_Das_Aguas-EmbarcaTech/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NicolasRaf%2FVigia_Das_Aguas-EmbarcaTech/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278903035,"owners_count":26065786,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitdoglab","c","embedded-systems","raspberry-pi-pico-w"],"created_at":"2025-05-19T16:16:53.729Z","updated_at":"2025-10-08T06:59:59.704Z","avatar_url":"https://github.com/NicolasRaf.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vigia das Águas: Sistema para Prevenção de Enchentes\n\nProjeto final desenvolvido para o curso de Análise e Desenvolvimento de Sistemas do Instituto Federal de Educação, Ciência e Tecnologia do Piauí – Campus Teresina Central. O objetivo é implementar um sistema de monitoramento em tempo real do nível da água em rios e outros corpos d'água, contribuindo para a prevenção de enchentes.\n\n[Link para documentação completa](https://docs.google.com/document/d/1IkiMZ2We-Jzd_8WtnYCGIQL5CQdvDJh0wnUJxQ2tYYc/edit?usp=sharing)\n\n## Sumário\n\n- [Objetivos do Projeto](#objetivos-do-projeto)\n- [Descrição do Funcionamento](#descrição-do-funcionamento)\n  - [Modos de Funcionamento](#modos-de-funcionamento)\n  - [Níveis de Alarme](#níveis-de-alarme)\n  - [Interfaces e Telas](#interfaces-e-telas)\n- [Justificativa](#justificativa)\n- [Especificação do Hardware](#especificação-do-hardware)\n  - [Componentes Utilizados](#componentes-utilizados)\n  - [Pinagem Utilizada](#pinagem-utilizada)\n- [Especificação do Firmware](#especificação-do-firmware)\n- [Execução do Projeto](#execução-do-projeto)\n\n## Objetivos do Projeto\n\nO projeto tem como objetivo principal desenvolver um sistema que:\n\n- Realize o monitoramento em tempo real do nível da água em rios e corpos d’água;\n- Colete dados precisos da distância da água por meio de sensores, permitindo a avaliação dos níveis e a taxa de aumento;\n- Emita alertas visuais e sonoros para notificar comunidades ribeirinhas em situações de risco;\n- Seja uma solução de baixo custo e fácil implantação, utilizando a placa BitDogLab com Raspberry Pi Pico W e o sensor ultrassônico HC-SR04;\n- Tenha um software modular e eficiente, desenvolvido em linguagem C, facilitando a manutenção e a expansão do sistema.\n\n## Descrição do Funcionamento\n\nO sistema é implementado com a placa didática BitDogLab, que integra o microcontrolador Raspberry Pi Pico W, e utiliza o sensor ultrassônico HC-SR04 para medir a distância até a superfície da água. As leituras são realizadas em intervalos configuráveis, e os dados são processados para determinar se o nível da água está em condições normais ou se há risco iminente.\n\n### Modos de Funcionamento\n\n- **Modo Primário (Média das Leituras):**  \n  Calcula a média de todas as leituras coletadas em um período, atenuando ruídos e valores atípicos para uma medição mais estável e confiável.\n\n- **Modo Secundário (Última Leitura):**  \n  Exibe a leitura mais recente do sensor, oferecendo uma resposta imediata às variações rápidas do nível da água, embora possa ser mais suscetível a ruídos.\n\n### Níveis de Alarme\n\nO sistema define três estados de alarme baseados na distância medida pelo sensor:\n\n- **Estado Seguro:**  \n  Distância ≥ 40 cm – LED verde aceso, sem alerta sonoro.\n- **Modo de Atenção:**  \n  20 cm ≤ Distância \u003c 40 cm – Combinação de LEDs (verde e vermelho) com alarme sonoro de intensidade média.\n- **Nível de Emergência:**  \n  Distância \u003c 20 cm – LED vermelho aceso e alarme sonoro com notas frequentes e de alta intensidade.\n\n### Interfaces e Telas\n\n- **Tela Principal:**  \n  Exibe a distância (média ou última leitura), o tempo até a próxima medição e a taxa de crescimento do nível da água, calculada através de regressão linear com base nas últimas 10 leituras.\n\n- **Tela de Logs:**  \n  Mostra as últimas 10 leituras para permitir a análise de tendências e identificação de variações críticas.\n\n- **Tela de Opções:**  \n  Permite a configuração do intervalo de leitura (com opções que variam de 1 segundo a 30 minutos) e a troca entre os modos de operação.\n\n## Justificativa\n\nA implementação do Vigia das Águas responde à necessidade crescente de monitoramento dos níveis de água para prevenir enchentes, proteger comunidades ribeirinhas e combater o negacionismo climático. O sistema busca oferecer dados precisos e confiáveis para ações emergenciais e planejamento a longo prazo, considerando a intensificação dos eventos extremos devido ao aquecimento global.\n\n## Especificação do Hardware\n\n### Componentes Utilizados\n\n- **Placa BitDogLab com Raspberry Pi Pico W:**  \n  Possui o microcontrolador RP2040 e integra sensores e atuadores, como o display OLED.\n\n- **Sensor Ultrassônico HC-SR04:**  \n  Emite pulsos ultrassônicos e mede o tempo de retorno para calcular a distância com precisão de aproximadamente 3 mm, funcionando entre 2 cm e 4 metros.\n\n- **Buzzer:**  \n  Dispositivo responsável pela emissão de alertas sonoros em situações de risco.\n\n- **LED RGB:**  \n  Fornece feedback visual, indicando os diferentes níveis de alarme através de cores (verde, amarelo e vermelho).\n\n- **Display OLED:**  \n  Apresenta informações em tempo real sobre o monitoramento do nível da água.\n\n### Pinagem Utilizada\n\n| Componente           | Pino no Raspberry Pi Pico W (BitDogLab) | Função                                 |\n|----------------------|-----------------------------------------|----------------------------------------|\n| HC-SR04 Trigger      | GPIO 17                                 | Envio do sinal ultrassônico            |\n| HC-SR04 Echo         | GPIO 16                                 | Recepção do sinal ultrassônico         |\n| Buzzer               | GPIO 21                                 | Emissão de alertas sonoros             |\n| LED Verde            | GPIO 11                                 | Indicação de estado seguro             |\n| LED Vermelho         | GPIO 13                                 | Indicação de emergência                |\n| Display OLED (SDA)   | GPIO 14                                 | Comunicação I2C – Dados                |\n| Display OLED (SCL)   | GPIO 15                                 | Comunicação I2C – Clock                |\n\n## Especificação do Firmware\n\nDesenvolvido em linguagem C, o firmware utiliza o SDK oficial do Raspberry Pi Pico W e a biblioteca pico-ssd1306 para o display OLED. Suas principais funcionalidades incluem:\n\n- **Inicialização dos Periféricos:**  \n  Configuração do sensor ultrassônico, display OLED e outros componentes logo após a energização.\n\n- **Leitura e Processamento dos Dados:**  \n  Realiza leituras periódicas do sensor e processa os dados para determinar o nível da água e calcular a taxa de crescimento usando a seguinte equação de regressão linear:\n\n  m = (n *Σ(tᵢ * Lᵢ) − (Σtᵢ)*(ΣLᵢ)) / (n* Σ(tᵢ²) − (Σtᵢ)²)\n\n  Onde:  \n  - m é a taxa de crescimento,  \n  - n é o número de leituras (10),  \n  - tᵢ é o tempo da i-ésima leitura, e  \n  - Lᵢ é o nível da água na i-ésima leitura.\n\n- **Interface de Usuário:**  \n  Permite a interação através dos botões A (troca de modos) e B (exibição dos logs).\n\n- **Controle de Alertas:**  \n  Gerencia os estados de alarme (seguro, atenção, emergência) e aciona LEDs e buzzer conforme os níveis medidos.\n\n## Execução do Projeto\n\nA execução do Vigia das Águas seguiu uma abordagem modular, com as seguintes etapas:\n\n1. **Pesquisa e Levantamento Tecnológico:**  \n   Análise de soluções existentes e viabilidade do uso de sensores ultrassônicos para monitoramento de água.\n\n2. **Escolha e Configuração do Hardware:**  \n   Seleção da placa BitDogLab, Raspberry Pi Pico W, sensor HC-SR04 e demais componentes, considerando custo, eficiência e compatibilidade.\n\n3. **Desenvolvimento do Software:**  \n   Definição das funcionalidades necessárias, como leitura dos sensores, processamento dos dados, interface com o usuário e emissão de alertas.\n\n4. **Estruturação e Modularização do Código:**  \n   Implementação em linguagem C, utilizando o SDK oficial e bibliotecas específicas para integração com o hardware, facilitando a manutenção e futuras expansões.\n\n5. **Testes e Validação:**  \n   Realização de testes em ambiente controlado para garantir a precisão das medições e a eficácia do sistema de alertas, confirmando a utilidade do cálculo por regressão linear.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolasraf%2Fvigia_das_aguas-embarcatech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnicolasraf%2Fvigia_das_aguas-embarcatech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnicolasraf%2Fvigia_das_aguas-embarcatech/lists"}