Pesquisar neste blog:

01/04/2025

Gerar documentos individuais em word na mala direta.

 

O código abaixo gera documentos individuais, em docx, para cada um dos registros em um documento do Word com mala direta (Correspondência). O campo "Escola" deve existir na mala direta, pois será o nome do arquivo docx que será mesclado individualmente (apenas com os dados da referida linha). O nome da Macro sugerido é "exp". 


Sub exp()

    Dim docOrig As Document

    Dim docNovo As Document

    Dim campoEscola As String

    Dim i As Integer

    Dim pastaDestino As String

    

    ' Define o documento principal como o ativo

    Set docOrig = ActiveDocument


    ' Certifique-se de que há uma mala direta configurada

    If docOrig.MailMerge.DataSource.RecordCount = 0 Then

        MsgBox "Nenhum registro encontrado na mala direta.", vbExclamation, "Erro"

        Exit Sub

    End If


    ' Define a pasta onde os arquivos serão salvos

    pastaDestino = docOrig.Path

    If pastaDestino = "" Then pastaDestino = Environ("USERPROFILE") & "\Documents"


    ' Percorre todos os registros da mala direta

    With docOrig.MailMerge

        For i = 1 To .DataSource.RecordCount

            ' Define o registro atual para a mala direta

            .DataSource.ActiveRecord = i

            

            ' Obtém o valor do campo "Escola"

            campoEscola = Trim(.DataSource.DataFields("Escola").Value)


            ' Substitui caracteres inválidos para nomes de arquivos

            campoEscola = Replace(campoEscola, "/", "-")

            campoEscola = Replace(campoEscola, "\", "-")

            campoEscola = Replace(campoEscola, ":", "-")

            campoEscola = Replace(campoEscola, "*", "-")

            campoEscola = Replace(campoEscola, "?", "-")

            campoEscola = Replace(campoEscola, """", "-")

            campoEscola = Replace(campoEscola, "<", "-")

            campoEscola = Replace(campoEscola, ">", "-")

            campoEscola = Replace(campoEscola, "|", "-")


            ' Verifica se o campo não está vazio

            If campoEscola <> "" Then

                ' Cria uma cópia do documento original apenas para o registro atual

                docOrig.Range.Copy


                ' Cria um novo documento e cola o conteúdo da cópia

                Set docNovo = Documents.Add

                docNovo.Range.Paste

                

                ' Salva o novo documento com o nome da Escola

                docNovo.SaveAs2 FileName:=pastaDestino & "\" & campoEscola & ".docx", FileFormat:=wdFormatDocumentDefault

                

                ' Fecha o novo documento

                docNovo.Close False

            End If

        Next i

    End With


    MsgBox "Documentos exportados com sucesso! Verifique a pasta: " & pastaDestino, vbInformation, "Concluído"

End Sub


06/03/2025

Erros 4xx e 5xx: O Que São e Como Corrigir?

 Se você já navegou na internet e encontrou páginas com mensagens como "404 Not Found" ou "500 Internal Server Error", então já se deparou com os famosos erros 4xx e 5xx. Mas o que eles significam? Vamos entender melhor!

🔹 Erros 4xx – Problemas no Lado do Cliente

Os erros 4xx ocorrem quando há algo errado na solicitação feita pelo usuário. Isso pode ser um link quebrado, falta de permissões ou até um erro de digitação na URL.

Principais erros 4xx:

400 - Bad Request → A solicitação foi malformada ou contém dados inválidos.
401 - Unauthorized → O acesso exige autenticação.
403 - Forbidden → O servidor bloqueou o acesso ao recurso.
404 - Not Found → A página solicitada não existe ou foi removida.
405 - Method Not Allowed → O método HTTP utilizado (GET, POST, etc.) não é permitido.
408 - Request Timeout → O tempo para responder a solicitação expirou.
429 - Too Many Requests → Muitas requisições em um curto período.

🔹 Como corrigir?

  • Verifique a URL digitada.
  • Limpe o cache do navegador.
  • Confira permissões de acesso, se aplicável.
  • Caso seja um erro do seu site, corrija links quebrados e configure redirecionamentos.

🔹 Erros 5xx – Problemas no Servidor

Os erros 5xx indicam falhas do servidor ao processar uma solicitação válida.

Principais erros 5xx:

500 - Internal Server Error → Erro genérico do servidor.
502 - Bad Gateway → O servidor recebeu uma resposta inválida ao encaminhar a requisição.
503 - Service Unavailable → O servidor está sobrecarregado ou em manutenção.
504 - Gateway Timeout → O servidor não recebeu uma resposta a tempo de outro servidor.

🔹 Como corrigir?

  • Tente recarregar a página após alguns minutos.
  • Se for dono do site, revise os logs do servidor.
  • Verifique configurações do .htaccess, banco de dados e plugins.
  • Entre em contato com a hospedagem caso o problema persista.

Conclusão

Os erros 4xx e 5xx podem parecer assustadores, mas muitas vezes são fáceis de resolver. Se você gerencia um site, é essencial monitorá-los para garantir uma boa experiência para os visitantes.

Gostou do conteúdo? Compartilhe e deixe seu comentário! 🚀

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!!!

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. 

SIGA-NOS