Pesquisar neste blog:

07/01/2025

Como Impedir que a Tela do Celular Desligue ou Bloqueie em um Aplicativo Android

Você já desenvolveu um aplicativo Android e se perguntou como evitar que a tela do celular desligue, hiberne ou ative a tela de bloqueio enquanto o app estiver aberto? Essa funcionalidade é especialmente útil para aplicativos de leitura, jogos ou monitoramento, onde o comportamento padrão de economia de energia pode atrapalhar a experiência do usuário.

Neste post, vou mostrar como implementar essa funcionalidade de maneira simples no Android Studio.

Mantendo a Tela Sempre Ativa no Android

A solução para impedir que a tela desligue é adicionar a flag FLAG_KEEP_SCREEN_ON na Activity do seu aplicativo. Essa configuração informa ao sistema operacional que, enquanto essa tela estiver ativa, ele deve evitar o bloqueio ou o desligamento automático.

Passo a Passo:

  1. Abra o método onCreate() da sua Activity

    Adicione o seguinte código no método onCreate() para aplicar a configuração assim que a Activity for aberta:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // Impede que a tela desligue enquanto esta Activity estiver visível
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
  2. Reverter o Comportamento (Opcional)

    Se for necessário permitir que o sistema volte a bloquear a tela quando o usuário sair da Activity, você pode limpar a configuração no método onDestroy():

    @Override
    protected void onDestroy() {
        super.onDestroy();
        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }
  3. Testando o Aplicativo

    Compile e rode seu aplicativo. Verifique se a tela permanece ativa enquanto a Activity está visível, mesmo que você não interaja com o dispositivo.

Por Que Usar Esta Abordagem?

Essa solução é simples, eficaz e não exige permissões especiais no Android. É perfeita para aplicativos que exigem interação constante ou que não podem ser interrompidos pelo bloqueio da tela.

Cuidados Importantes:

  • Evite deixar essa configuração ativa em todas as telas do aplicativo. Mantenha-a apenas onde realmente for necessário, para evitar consumo excessivo de bateria.
  • Garanta que o comportamento volte ao normal quando o usuário sair do aplicativo.

Conclusão

Manter a tela sempre ativa em um aplicativo Android é uma tarefa fácil e pode melhorar muito a experiência do usuário em situações específicas. Com o uso de WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, você garante que o sistema mantenha a tela ligada enquanto a Activity estiver visível.

Gostou da dica? Tem alguma dúvida ou sugestão? Deixe seu comentário abaixo!

Protegendo Arquivos Sensíveis em Servidores Compartilhados


Protegendo Arquivos Sensíveis em Servidores Compartilhados

Em servidores compartilhados, como os oferecidos pela Hostinger, é comum encontrar a pasta public_html, que é a raiz pública do site. Qualquer arquivo ou pasta dentro dela pode ser acessado via navegador, tornando-a inadequada para armazenar informações sensíveis, como chaves de acesso. Neste artigo, vou explicar como proteger esses dados e garantir a segurança do seu servidor.

1. Armazenando Arquivos Sensíveis no Diretório Privado

Arquivos importantes, como chaves de acesso, devem ser armazenados fora da pasta public_html, no diretório raiz do servidor. Por exemplo:


/home/username/
    private/          # Pasta para arquivos sensíveis
        key.txt       # Arquivo com chave de acesso
    public_html/      # Pasta pública do site
        index.php     # Arquivo principal do site
    

Exemplo de código PHP para acessar arquivos:


<?php
$keyPath = __DIR__ . '/../private/key.txt'; // Caminho relativo
$key = file_get_contents($keyPath);
echo "Chave carregada com sucesso.";
?>
    

2. Configurando Permissões Seguras

Para proteger os arquivos sensíveis, é essencial configurar as permissões corretamente:

  • Pasta private: Use permissão 700 (somente o proprietário pode ler, escrever e executar).
    chmod 700 /home/username/private
  • Arquivo de chave: Use permissão 600 (somente o proprietário pode ler e escrever).
    chmod 600 /home/username/private/key.txt

3. Configurando Permissões para public_html

A pasta public_html deve ter permissões configuradas para garantir que o servidor web possa acessá-la e exibir os arquivos publicamente, mas evitando que usuários não autorizados alterem seu conteúdo. As configurações típicas são:

  • Código Octal: 750 ou 755.
  • Quando usar 755: Se o servidor é configurado para que o usuário do servidor web (geralmente www-data, apache, ou nginx) esteja no grupo do proprietário da pasta.
    chmod 755 public_html
  • Quando usar 750: Se o servidor web é executado pelo mesmo usuário proprietário da pasta.
    chmod 750 public_html
  • Proteção adicional:
    • Certifique-se de que o proprietário da pasta seja o seu usuário de hospedagem.
    • O grupo deve incluir o usuário do servidor web:
      chown -R seu_usuario:grupo_do_servidor_web public_html
    • Arquivos dentro da public_html devem ter permissão 644:
      chmod 644 public_html/index.php
    • Arquivos JavaScript (.js) dentro da public_html também devem ter permissão 644:
      chmod 644 public_html/scripts/app.js
    • Pastas dentro da public_html devem ter permissão 755:
      chmod 755 public_html/css

4. Protegendo com .htaccess

Adicionar um arquivo .htaccess pode fornecer uma camada extra de proteção caso a pasta seja movida acidentalmente.


Order Allow,Deny
Deny from all
    

Ou, para versões modernas do Apache:


<IfModule mod_authz_core.c>
    Require all denied
</IfModule>
    

5. Permissões do .htaccess

Para o arquivo .htaccess dentro de public_html, use permissão 644. Isso garante que o servidor web possa lê-lo, mas evita alterações por usuários não autorizados:

chmod 644 /home/username/public_html/.htaccess

6. Resumo das Boas Práticas

  • Armazene arquivos sensíveis fora de public_html.
  • Configure permissões adequadas:
    • 700 para pastas privadas.
    • 600 para arquivos sensíveis.
    • 755 ou 750 para public_html.
    • 644 para arquivos dentro de public_html, como .htaccess, arquivos PHP e JavaScript.
  • Use .htaccess para evitar acessos indevidos.
  • Acesse arquivos com caminhos relativos ou absolutos no PHP.

Com essas práticas, você pode proteger seus arquivos sensíveis mesmo em um ambiente compartilhado. Se tiver dúvidas ou quiser compartilhar sua experiência, deixe um comentário abaixo! 😊

04/12/2024

Uno das Frações

 O Uno das Frações foi especialmente desenvolvido para trabalhar a habilidade: "Identificar Frações Equivalentes".



  • Recomendado para: 6º e 7º ano;
  • Baralho: 140 cartas;
  • Participantes: 2 a 8;
  • Sentido de jogo: horário e anti-horário;
  • Distribuição: cada jogador recebe 7 cartas;
  • Objetivo: descartar todas as cartas.


As orientações estão no documento, mas podem ser adaptadas pelos participantes.
Se tiver sugestões ou encontrar alguma inconsistência favor deixar nos comentários.
Boa atividade!!!

16/11/2024

Porta 80 e 443 estão abertas? Firebase não funciona na minha rede?

POSTAGEM EM TESTE... NÃO RECOMENDO EXECUTAR AINDA.

Em alguns  o firebase só funciona ao compartilhar a internet do celular.Neste sentido, é importante que as portas 80 e 443 estejam liberadas e também tentaremos adicionar os principais endereços do firebase em sites seguros.

1) No "Windows PowerShell" digite:

Test-NetConnection -ComputerName google.com -Port 80

Test-NetConnection -ComputerName google.com -Port 443


Se retornar:

ComputerName     : google.com

RemoteAddress    : xxxx:xxx:xxxx:xxx::xxxx

RemotePort       : 443

InterfaceAlias   : Ethernet

SourceAddress    : xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx

TcpTestSucceeded : True


O valor de TcpTestSucceeded  definido como True que a porta 443 está liberada.


2) Se, mesmo no modo desenvolvedor do PowerShell tiver problemas ao executar scripts:


Veja a atual política:

Get-ExecutionPolicy -List

Libere para execução do script .ps1

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Após execução lembre-se de votlar para Resctricted. 

Set-ExecutionPolicy Restricted -Scope CurrentUser

 

3) Crie um arquivo de script "acesso.ps1" contendo:

# Script para configurar portas e domínios confiáveis no Windows Firewall e Registro

 

Write-Host "Abrindo a porta 443 para Acesso Firebase HTTPS no Firewall..."

New-NetFirewallRule -DisplayName "Acesso Firebase HTTPS" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow -Profile Any

New-NetFirewallRule -DisplayName "Acesso Firebase HTTPS" -Direction Outbound -LocalPort 443 -Protocol TCP -Action Allow -Profile Any


Write-Host "Pressione Enter para continuar após abrir a porta 443:"

Read-Host


Write-Host "Abrindo a porta 80 para Acesso Firebase HTTP no Firewall..."

New-NetFirewallRule -DisplayName "Acesso Firebase HTTP" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow -Profile Any

New-NetFirewallRule -DisplayName "Acesso Firebase HTTP" -Direction Outbound -LocalPort 80 -Protocol TCP -Action Allow -Profile Any


Write-Host "Pressione Enter para continuar após abrir a porta 80:"

Read-Host


Write-Host "Adicionando sites do Firebase como confiáveis..."


# Caminho base para domínios confiáveis no Registro

$basePath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains"


# Lista de domínios a serem configurados

$domains = @(

    "firebaseio.com",

    "googleapis.com",

    "googleusercontent.com",

    "firebaseapp.com",

    "cloudfunctions.net",

    "firestore.googleapis.com",

    "fcm.googleapis.com"

)


# Cria caminhos no Registro para cada domínio, se não existirem

foreach ($domain in $domains) {

    $domainPath = Join-Path $basePath $domain

    if (-not (Test-Path $domainPath)) {

        Write-Host "Criando caminho para $domain..."

        New-Item -Path $domainPath -Force | Out-Null

    }

}


# Configura cada domínio como confiável (Zona 2)

foreach ($domain in $domains) {

    Write-Host "Adicionando $domain como confiável..."

    Set-ItemProperty -Path "$basePath\$domain" -Name "*" -Value 2

}


Write-Host "Pressione Enter para continuar após adicionar os sites confiáveis:"

Read-Host


Write-Host "Configuração concluída com sucesso!"

4) Execute o arquivo "acesso.ps1" no PowerShell aberto como administrador (navegar até o endereço onde o arquivo está salvo):

    .\acesso.ps1


5) Após execução é possível verificar se os endereços firebase estão na lista dos confiáveis:

Get-ChildItem -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains" -Recurse | Select-Object PSChildName, Property, GetValue 

ou:


Get-ChildItem -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains" -Recurse


 onde:

Cada domínio pode estar associado a uma zona de segurança. Elas são numeradas da seguinte forma:

  • 0: Computador local.
  • 1: Intranet local.
  • 2: Sites confiáveis.
  • 3: Internet.
  • 4: Sites restritos.


Espero que resolva o seu problema de conexão.

Em alguns casos é necessário configurar o próprio roteador.


 





07/06/2024

Caixa em MDF para Esp32-CAM - Modelo para corte à laser

Pensando em fazer uma caixa em MDF para o seu ESP32-CAM?

A  construção foi feita da seguinte maneira: 

14/05/2024

Jogo Quarteto dos Números Racionais.

 O jogo Quarteto dos Números Racionais é uma adaptação do Aprender Sempre, volume II, página 115 e contempla a representação dos números racionais na forma de gráficos, frações, porcentagens e decimais.


Clique aqui para baixar o jogo em PDF.

Bom trabalho!!!

05/04/2024

Relógio do computador não sincroniza de maneira alguma. O que fazer?

Caso o relógio do seu computador não sincroniza de maneira alguma, segue o código para executar no terminal de comandos (cmd) como administrador. Aqui o servidor de data/hora será "pool.ntp.org".

@echo off
echo Sincronizando com servidor NTP...
echo.
rem Verificar se o serviço Windows Time está em execução
sc query w32time | find "RUNNING" >nul
if errorlevel 1 (
    echo Iniciando o serviço Windows Time...
    net start w32time
)
rem Defina o endereço do servidor NTP desejado
set servidor_ntp=pool.ntp.org
rem Sincronize a data e hora com o servidor NTP
w32tm /config /manualpeerlist:%servidor_ntp% /syncfromflags:manual /reliable:YES /update
w32tm /resync
echo.
echo Data e hora sincronizadas com sucesso com o servidor NTP: %servidor_ntp%
pause

O padrão de instalação do windows "time.windows.com" pode ser reestabelecido com o seguinte comando:

@echo off
echo Restaurando a sincronização com o servidor de tempo original do Windows...
echo.
rem Verificar se o serviço Windows Time está em execução
sc query w32time | find "RUNNING" >nul
if errorlevel 1 (
    echo Iniciando o serviço Windows Time...
    net start w32time
)
rem Definir o servidor de tempo original do Windows
w32tm /config /manualpeerlist:time.windows.com /syncfromflags:manual /reliable:YES /update
w32tm /resync
echo.
echo Sincronização restaurada com sucesso com o servidor de tempo original do Windows.
pause

Se preferir salve o código em um arquivo ".bat" e execute-o como administrador.

Testei no Windows 11 e deu tudo certo. Em outras versões conto com a sua colaboração para colocar nos comentários se funcionou ou não.

Um abraço. 

 

Limpar a fila de impressão após erro ao imprimir (sem ter que reiniciar o computador)

Para limpar a fila de impressão salve o texto abaixo em um arquivo, depois modifique sua extensão para ".bat"

@echo off
echo Parando o Spooler de Impressão...
net stop spooler
echo.
echo Limpando a fila de impressão...
del %systemroot%\System32\spool\printers\* /Q
echo.
echo Iniciando o Spooler de Impressão...
net start spooler
echo.
echo A fila de impressão no seu Windows agora deve ser limpa.
echo.
echo Pressione Enter para sair...
pause > nul
exit

Clique com o botão direito no arquivo criado e execute-o como administrador. Assim reiniciará o Spooler de Impressão e é só mandar novamente. Veja duas dicas a seguir:

Dica 1:

Talvez para renomear a extensão do arquivo é necessário não ocultar as extensões comuns dos arquivos no Windows Explorer da seguinte maneira:


No Windows 11, nos três pontinhos  e depois em "Opções".

Deixar desmarcado a opção de "Ocultar as extensões dos tipos de arquivos conhecidos"

Lembrando que a extensão de um arquivo geralmente são os últimos dígitos que estão após o ponto. No nosso exemplo o arquivo que você criar será "nome_do_arquivo.bat" e todos os comando que estão dentro dele serão executados.

Dica 2:
Executar (dar duplo clique) em um arquivo .bat pode abrir uma porta para a segurança do seu computador. Neste sentido, sempre verifique o conteúdo deste arquivo para entender o que ele faz antes de executar. Para ver o conteúdo clique com o direito e coloque em editar, assim o conteúdo não será executado e sim aberto em um editor de texto.






18/12/2023

Sensor de distância com visor e buzina no Arduino Uno.


Materiais necessários. 

Quantidade Material
1 Arduino Uno R3
1 Módulo Display 7 Segmentos - TM1637
1 Buzina 5v
1 Sensor ultrassônico

Sugestão de código: Exibe a distância em centímetros no visor e começa a "buzinar" ao chegar próximo de um obstáculo. A buzina é acionada em 30 cm e aumenta a frequência ao diminuir a distância.

Clique aqui para baixar o código.


30/09/2023

Backup do Firestore/Firebase localmente no Windows.

Ao utilizar o "Export" do "Google Cloud" para criar um backup o nome do arquivo terá ":", exemplo: "2023-09-30T14:08:15_75111". Por conta destes dois pontos, ao tentar baixá-lo no Windows com o "gsutil", você receberá a mensagem:

 "A sintaxe do nome do arquivo, do nome do diretório ou do rótulo do volume está incorreta:"

Considerando que você: 

  1. Já está no plano Blaze:
  2. O G-Suit  já está instalado: https://cloud.google.com/sdk/gcloud?hl=pt-br 
    Já entrou com a sua "conta de e-mail" e selecionou o "projeto".
  3. Já criou um "Bucket" na mesma região do banco de dados ( exemplo: "southamerica-east1")  https://console.cloud.google.com/storage

Agora, em dois passos, seu problemas serão solucionados:

Passo 1) Exportar o backup do banco de dados com um nome coerente (sem :)

https://cloud.google.com/sdk/gcloud/reference/firestore/export

Exemplo:

  • Bucket: backupgeral
  • Pasta que será criada dentro do bucket: 2023set
gcloud beta firestore export gs://backupgeral/2023set

Após o comando acima, todos  os dados do Firestore irão para a pasta "2023set" dentro do bucket "gbackupgeral". Abra  https://console.cloud.google.com/storage e verifique o sucesso.

Passo 2) Para fazer download navegue até a pasta desejada onde será feito o download exemplo: 
"cd C:\Users\meunome\Desktop" e digite o seguinte comando:

gsutil -m cp -r "gs://backupgeral" .

Pronto... será criada a pasta localmente em seu computador com o nome "backupgeral" e terá tudo que foi criado no "passo 1".

Espero que tenha conseguido baixar os seus arquivos. 
Um abraço.




07/07/2023

APP de Controle de Notas Fiscais enviadas.

APP grátis com ferramentas para vendedores. (clique na imagem abaixo)

  • Leitor de código de barras das notas fiscais com redirecionamento para SEFAZ (opção 44 - NOTAS FISCAIS) ;
  • Grave os dados escaneados (bipados) e tenha o controle de quando  (data e hora) foi bipado;
  • Se o código já estiver no banco de dados, receberá o aviso de que o código foi bipado;
  • Banco de dados local (fica somente no celular);
  • Possibilidade de exportar/importar os dados em ".csv"  (arquivo separado por vírgulas que abre no Excel);

 

06/06/2023

Bingo do Corpo Humano

Clique aqui para baixar o PDF

O bingo do corpo humano contém 40 cartelas, e apresenta 27 órgãos do corpo humano embaralhados. Nas cartelas estão os nomes dos órgãos em letra bastão e cursiva. Jogo especial para o 6º ano do Ensino Fundamental.
Cartela de bingo com os órgãos humanos.

As "pedras" que serão sorteadas possuem dicas que definem os órgãos. Por exemplo:

  • BEXIGA URINÁRIA: Órgão responsável por armazenar a urina.
  • BRÔNQUIOS: Órgãos que são as principais vias que conduzem o ar para dentro e para fora dos pulmões.
Recomendações:
  • Combinar com antecedência os prêmios (quem preencher toda a cartela primeiro ganhará...);
  • Distribuir uma cartela por aluno e agrupá-los em duplas ou trios para jogar.

Bom trabalho!!!

23/05/2023

Começando um projeto em Python no Windows.

Para trabalhar com vários projetos na linguagem Python (https://www.python.org/) em uma mesma máquina e reduzir os problemas de conflitos entre versões dos pacotes é conveniente criar um local virtual de instalação de pacotes. Com este ambiente torna-se fácil a configuração de novos computadores para rodar o seu projeto.

Projeto exemplo ola.py:

Em um arquivo texto escreva o seguinte código e depois renomeie para "ola.py" (tome cuidado para não ficar "ola.py.txt"). O resultado após rodar o código será o máximo entre os valores [1,2,5,3], ou seja, 5:
import numpy as np
a = np.array([1,2,5,3])
print(a.max())


Criar um ambiente virtual no Python:

Crie um arquivo "requeriments.txt", na pasta do seu projeto, com todos os pacotes desejados e as respectivas versões (no projeto exemplo será utilizado apenas o numpy):

numpy >= 1.21.2
opencv-python == 4.7.0.68 

No sistema operacional Windows, execute os seguintes comando no terminal de comandos (cmd), mas antes substitua a primeira linha, parte vermelha, com a localização da pasta do seu projeto.
set "mydir=C:\User\...\TestVenv"
cd %mydir%
py -m venv %mydir%
Scripts\activate
pip install -r requeriments.txt --upgrade 

O comando "py -m venv %mydir%" criará algumas pastas e arquivos, incluindo a pasta Scripts. A linha "Scripts\activate" rodará o arquivo "activate.bat", que está dentro da pasta Scripts, para ativar o ambiente virtual, conforme a Figura 1:

Figura 1: Criando, ativando e instalando pacotes no ambiente virtual python.

Outra opção, se não quiser utilizar o arquivo "requeriments.txt", basta instalar os pacotes desejados conforme o seguinte exemplo:
pip install --upgrade numpy

ou definindo a versão desejada com os comparativos lógicos: ">=", "<=" ou "==", conforme exemplo:

         pip install --upgrade setuptools==60.10.0 


Rodando o "ola.py" no ambiente virtual

Com o ambiente ativado execute "py ola.py" e o programa rodará.

Figura 2: rodando o "ola.py" e obtendo o valor "5" impresso na tela.

Obter uma lista dos pacotes:

No Prompt de Comandos "pip list" listará os pacotes instalados.

Para exportar a lista de patoces, em um arquivo texto, execute "pip list>C:\lista.txt". Aqui será criado lista.txt em C:\ ou em outro local que desejar ao editar o caminho do arquivo que está em vermelho.


Remover  pacotes:

Para remover um pacote específico utilize o commando "pip uninstall <nome pacote>" por exemplo para remover o pacote "numpy": 
 pip uninstall numpy


Permissão de acesso:

O meu projeto, que estava no Desktop, apresentou o problema "PermissionError: [WinError 5] Access is denied" durante a instalação do "setuptools==60.10.0". Para contornar o problema movi o projeto para C:\ e tudo funcionou.

Considerações finais:

Sempre que for instalar um novo pacote no ambiente virtual é necessário ativar o ambiente com o comando "Scripts\activate". Caso contrário o pacote será instalado em seu sistema operacional e não no ambiente virtual.

Utilizo as versões 32 bits do Python e durante a instalação do python habilito o inclusão do path (que habilita o comando "py" no prompt). Ao utilizar versões 32 bits e gerar executáveis os mesmos funcionarão em ambos os sistemas 32 ou 64 bits. Atualmente utilizo a versão 3.8.10 - 32 bits do Python.


Um abraço!!!

14/03/2023

IRRIGAÇÃO OPÇÃO 2 - ARDUINO COM SENSOR DE CHUVA, RELÓGIO E DISPLAY (Especial para hortas verticais)

Assista ao seguinte vídeo:

Esta publicação é ideal para hortas verticais. Em hortas não verticais recomendamos a seguinte postagem: ARDUINO COM SENSOR DE UMIDADE, POTENCIÔMETRO E DISPLAY.

Horta vertical com garrafas PET irrigada mediante a utilização do Arduino.


O projeto de irrigação, utilizando o Arduino, é uma excelente oportunidade para as escolas trabalharem  Cultura Maker, Pensamento Computacional e Robótica. No caso de "irrigação de hortas" existe um grande potencial para a interdisciplinaridade, por exemplo: 

  • Biologia - abordar o desenvolvimento e classificação das plantas;
  • Matemática -  trabalhar os custos de produção e consumo de água;
  • Física - explicar o funcionamento do equipamento e conceitos relacionados à eletricidade;
  • História - discutir a evolução da agricultura ao longo dos anos;
  • Química - pesquisar as características do PH do solo (escala de acidez do solo) e os efeitos da poluição (chuva ácida).
A ideia de colocar as garrafas intercaladas (com terra / com água/ com terra / com água...), bem como o furo para escoamento da água (garantindo uma reserva de água) vieram do canal Vamo Ali, em especial no vídeo HORTA VERTIAL | ALTA PRODUTIVIDADE com garrafas  PET. Já o sistema de irrigação e o código disponibilizado abaixo foram de minha autoria. No fundo da garrafa foi colocado pedras para facilitar o escoamento da água. 

Gotejador acima da garrafa, pedra no fundo da garrafa para facilitar o escoamento e reservatório de água abaixo do furo.


Em uma das garrafas é necessário colocar um sensor de chuva com a função de desligar a irrigação.

MATERIAIS SUGERIDOS

Quant.Materiais
1Arduino Uno R3

kit iniciante (~R$150,00)
Kit iniciante (~R$170,00)
1Sensor de Chuva com módulo. (O sensor oxida com facilidade, e pode ser substituído por um par de fios desencapados ligados no módulo)
 
1RTC (Real Time Clock)

1Display LCD 12x2 com módulo I2C (opcional)
1Protoboard 400 pontos (~R$9,00) ou menor (OPCIONAL, pois os fios podem ser emendados)

1Módulo relé 1 canal 5V 10A (~R$8,00)

1Válvula solenoide (~R$35,00) de máquina de lavar  (110V) *ATENÇÃO: LER O TÓPICO DE SEGURANÇA.

1Plugue macho 2 polos (para ligar na tomada)

2 metrosFio 2,5 mm² (preferencialmente 1 metro de cada cor) ou um cabo com dois fios de 1 metro.
1Fonte bivolt 9V / 1A para Arduino (Plugue P4) (~R$25,00)
2terminal fêmea 6mm (para plugar na válvula solenoide)


2Plugue engate rápido para mangueira (1 para torneira e outro para a válvula solenoide)

Pluge torneira (~R$4,00) + Engate (~R$4,00)
*
Os seguintes materiais dependerão da área, do que será plantado e o esquema de irrigação escolhido:
- Caixa de proteção para colocar o Arduino (Veja uma opção com corte à laser);
- Mangueira e conectores;
- Gotejadores / Aspersores.


ESQUEMA DE LIGAÇÃO
Clique na imagem para abrir o PDF com o esquema.


CÓDIGO (Sugestão):

Clique aqui e baixe a sugestão de código.

Clique aqui e baixe a sugestão 2 de código (adicionou-se tempo máximo de  3 min de irrigação nos horários 10h e 16h49.)

Em resumo, nesse código, a irrigação programada ocorrerá às 8:30, 13:30 e 17:00. Nestes horários, a válvula solenoide será acionada pelo Relê e ficará acionada permitindo o fluxo da água. Quando a água escoar pelo furo da garrafa PET e atingir o sensor de chuva a irrigação será cessada e iniciará novamente no próximo horário agendado. Caso acabe a energia, o relógio possuiu uma bateria interna que manterá o horário atualizado e dará continuidade nos ciclos de irrigação, porém, sempre que a energia voltar o sistema iniciará a irrigação.

É necessário instalar as bibliotecas: LiquidCrystal I2C e RTClib no menu "Ferramentas" - "Gerenciar Bibliotecas...".

Localize e instale a Biblioteca "LiquidCrystal I2C".

Localize e instale a Biblioteca "RTClib".


VISOR EM FUNCIONAMENTO

Embora o visor seja opcional é muito interessante observar da data e horário atual, bem como o próximo horário previsto para irrigação. Além disso o valor do sensor de chuva, que pode ser substituído por um par de fios desencapados, é de grande importância para observar se o sistema está em pleno funcionamento. Na figura abaixo temos a foto do visor:

Visor exibindo a data e horário atual "26/06/2023 - 16:08", valor "1019" que é do sensor de chuva (fios desencapados) e "Prox: 16:49" sendo o próximo horário de irrigação.


SEGURANÇA
  1. Recomenda-se atenção especial para a montagem da válvula solenoide que opera em 127 VCA (voltagem em corrente alternada) por conta de choques elétricos. SEMPRE EFETUAR AS LIGAÇÕES COM A ENERGIA DESLIGADA;
  2. Deixar todo equipamento PROTEGIDO DA ÁGUA (chuva ou irrigação);
  3. Na dúvida procure orientações de profissionais qualificados.
CONSIDERAÇÕES APÓS 5 MESES.
  1. No nosso experimento a cebolinha  e almeirão tiveram uma produtividade boa, já a alface não atingiu o seu tamanho pleno, pois produziu o "pendão floral" de maneira antecipada. A rúcula também não se desenvolveu plenamente. (Infelizmente 😭 o sistema ficou inoperante por três dias ensolarados logo após o plantio, pois desligaram da energia equivocadamente);
  2. Biofertilizantes líquidos proveniente de vermicompostagem (compostagem com minhocas) são recomendados para melhorar a produtividade. 

11/08/2022

IRRIGAÇÃO OPÇÃO 1 - ARDUINO COM SENSOR DE UMIDADE, POTENCIÔMETRO E DISPLAY


O projeto de irrigação, utilizando o Arduino, é uma excelente oportunidade para as escolas trabalharem  Cultura Maker, Pensamento Computacional e Robótica. No caso de "irrigação de hortas" existe um grande potencial para a interdisciplinaridade, por exemplo: 

  • Biologia - abordar o desenvolvimento e classificação das plantas;
  • Matemática -  trabalhar os custos de produção e consumo de água;
  • Física - explicar o funcionamento do equipamento e conceitos relacionados à eletricidade;
  • História - discutir a evolução da agricultura ao longo dos anos;
  • Química - pesquisar as características do PH do solo (escala de acidez do solo) e os efeitos da poluição (chuva ácida).

"Vídeo explicativo em produção..."


Assista ao seguinte vídeo com o nosso protótipo:


MATERIAIS SUGERIDOS

Quant. Materiais
1 Arduino Uno R3

kit iniciante (~R$150,00)
Kit iniciante (~R$170,00)
1 Display TM1637 - 4 dígitos (~R$8,00) (OPCIONAL. Utilizado para exibir o valor de referência inicial modificado pelo potenciômetro.)

1 Potenciômetro 10kΩ (~R$3,00) e botão (~R$1,50) 

1
Sensor umidade do solo anticorrosivo (~R$40,00) ou simples (R$8,00) (com módulo que possua saída analógica). Infelizmente o sensor simples é quase que descartável oxida muito rápido.

Outra opção de baixo custo é a construção do seu próprio sensor conforme descrito em https://mundoprojetado.com.br/medindo-a-umidade-do-solo/ . Neste caso recomendo deixar o sensor mais superficial e de 30 em 30 dias fazer uma limpeza dos contatos.

1 Protoboard 400 pontos (~R$9,00) ou menor (OPCIONAL, pois os fios podem ser emendados)

1 Módulo relé 1 canal 5V 10A (~R$8,00)

1 Válvula solenoide (~R$35,00) de máquina de lavar  (110V) *ATENÇÃO: LER O TÓPICO DE SEGURANÇA.

1 Plugue macho 2 polos (para ligar na tomada)

2 metros Fio 2,5 mm² (preferencialmente 1 metro de cada cor) ou um cabo com dois fios de 1 metro.
1 Fonte bivolt 9V / 1A para Arduino (Plugue P4) (~R$25,00)
2 terminal fêmea 6mm (para plugar na válvula solenoide)


2 Plugue engate rápido para mangueira (1 para torneira e outro para a válvula solenoide)

Pluge torneira (~R$4,00) + Engate (~R$4,00)
*
Os seguintes materiais dependerão da área, do que será plantado e o esquema de irrigação escolhido:
- Caixa de proteção para colocar o Arduino (Veja uma opção com corte à laser);
- Mangueira e conectores;
- Gotejadores / Aspersores.


ESQUEMA DE LIGAÇÃO

Clique na imagem para abrir o PDF com o esquema.

CÓDIGO (Sugestão):

Clique aqui e baixe a sugestão de código.

Em resumo, nesse código, o potenciômetro regula um número que varia de 0 a 100 que é exibido no display de quatro dígitos. O referido número é uma referência que é comparada com os valores vindos do sensor de umidade do solo (a umidade do solo, mediante código, foi convertida para um número entre 0 e 110). Quando o valor do sensor de umidade é menor que o número exibido no visor, a irrigação é iniciada pelo acionamento do relê que, por sua vez, liga a válvula solenoide e libera o fluxo de água. A irrigação fica acionada até que o valor do sensor de umidade atinja o valor do visor mais 10.
Neste processo é calculada a média de 50 leituras, tanto do potenciômetro quanto do sensor de umidade, para depois tomar as decisões. Assim, evita oscilações e acionamentos equivocados.
Observe que é apenas uma sugestão de código e que, dentro do possível, é melhor que o grupo de estudantes construa a sua própria lógica e ajuste conforme o desenvolvimento do protótipo.

O comando "#include <TM1637.h>", dentro do código, funcionará ao instalar a biblioteca "Grove 4-Digital Display" no menu "Ferramentas" - "Gerenciar Bibliotecas..." (Menu presente na IDE do Arduino que pode ser baixada em: https://www.arduino.cc/en/software).
Biblioteca para o visor de quatro dígitos.

SEGURANÇA
  1. Recomenda-se atenção especial para a montagem da válvula solenoide que opera em 127 VCA (voltagem em corrente alternada) por conta de choques elétricos. SEMPRE EFETUAR AS LIGAÇÕES COM A ENERGIA DESLIGADA;
  2. Deixar todo equipamento PROTEGIDO DA ÁGUA (chuva ou irrigação);
  3. Na dúvida procure orientações de profissionais qualificados.


Arquivo vetorial para cortadoras à laser clique aqui
O vídeo, a seguir, exibe o referido arquivo na cortadora à laser Sculpfun S9 e a caixa finalizada:
Sculpfun S9 na Amazon

SIGA-NOS