Rascunho
O projeto alcança a sua concretização física. Esta fase envolve a integração harmoniosa de todas as etapas anteriores, materializando uma maquete representativa da casa automatizada.
O desenvolvimento do projeto chega à sua realização física. A materialização da maquete representativa da casa automatizada depende da integração harmoniosa das etapas anteriores durante esta fase. A maquete será utilizada para exemplificar na prática o funcionamento conjunto dos sistemas de iluminação, ventilação e controlo do portão da garagem no contexto.
Chegou a altura de juntarmos todas as etapas realizadas até ao momento numa maquete. No entanto, há que ter em atenção os seguintes aspetos:
- 1
- Material a usar Fazer o levantamento de todo o material necessário à construção da maquete, desde componentes eletrónicos a componentes não eletrónicos;
- 2
- Portas digitais Verificar o número de portas digitais a usar para determinar o número de PCF8574 que vamos necessitar usar para o projeto;
- 3
- Utilização de Relés Para controlar o funcionamento das ventoinhas (ligar/desligar), será necessário dois relés, um para cada veitoinha. Este componente recebe o sinal do Arduino, gerindo a energia da fonte externa para a ventoinha;
- 4
- Chip L293D Para contolar o motor de passo nos sentidos horário e anti-horário para abrir e fechar o portão, é essencial utilizar o chip L293D para facilitar esse controlo bidirecional.
1. Material a ser usado na etapa
Antes de dar início a qualquer etapa, o nosso primeiro passo deve ser o levantamento do material que vamos necessitar para a execução da mesma. Neste caso, vamos precisar do seguinte material:
2. Circuito a ser utilizado
Veja, na imagem abaixo, o esquema do circuito criado para ser utilizado na breadboard:
3. Código a Utilizar
Vamos por começar por incluir as bibliotecas PCF8574, Stepper e SoftwareSerial.
Em seguida, criamos os objetos Bluetooth e pcfBotoes.
Para simplificar a interação com o PCF8574, criamos dois arrays: o primeiro contém as portas do PCF que serão utilizadas, e o segundo especifica o modo de operação de cada uma dessas portas. Além disso, declaramos uma constante que armazena o número de portas em uso no PCF, permitindo a criação de ciclos para manipulação eficiente do dispositivo.
Para simplificar a interação com as portas digitais do Arduino e o estado de cada um dos dispositivos, criamos três arrays: o primeiro contém as portas do Arduino que serão utilizadas, o segundo especifica o modo de operação de cada uma dessas portas e o terceiro com a indicação se o dispositivo se encontra ligado ou desligado. Além disso, declaramos uma constante que armazena o número de portas digitais em uso no Arduino, permitindo a criação de ciclos para manipulação eficiente do dispositivo, e uma variável para receber o valor de cada um dos botões usados no sistema.
Por fim, para o motor de passo, declaramos uma constante com o número de passos necessários para que o veio do motor complete uma volta, criamos o objeto myStepper, especificando o número de passos por volta e as portas digitais associadas, declaramos uma variável 'aberto' do tipo booleana, que indica se o portão está aberto ou fechado, uma constante 'limitBt', com a posição do array que contém a indicação da porta digital que está a ser usada pela Chave Fim de Curso, e 'valueLMB' do tipo inteiro, que recebe o valor proveniente da Chave Fim de Curso.
No bloco de código void setup(), inicializamos o monitor de série, para facilitar a monitorização do nosso código, e iniciamos a comunicação série com o módulo Bluetooth, configurando a taxa de baud. Definimos modo das portas digitais do PCF e do Arduino e indicamos a velocidade do motor de passo.
Em seguida, inicializamos o sistema, garantindo que as luzes e as ventoinhas estão desligadas e o portão está fechado.
Dentro do bloco de código void loop(), começamos por ler os valores provenientes dos botões, chamando a função leituraBotoes(), e do Bluetooth.
Tendo os valores lidos, implementamos a lógica para ligar ou desligar as luzes da casa, ventoinhas e abrir ou fechar o portão da garagem, garantindo a atualização contínua do array booleano 'estadoDivisao[]'.
Como podemos ver, foram desenvolvidas várias funções para simplicar o código. Passemos à explicação de cada uma delas:
leituraBotoes() - Serve exclusivamente para ler o estado de cada um bos botões utilizado no sistema;
ligaDesligaLuz() - Esta função recebe dois parâmetros: value - valor do botão; divisao - índice do array portasARD com indicação do LED a ligar ou a desligar, ao mesmo tempo, este índice serve para atualizar o array estadoDivisão[] com o estado do dispositivo.
fechaPortaoAutomatico() - Esta é utilizada para fechar o portão de garagem, desce o portão 10 passos de cada vez até que a Chave Fim de Curso seja pressionada.
abreFechaPortaoGaragem() - Como o próprio nome indica, serve para abrir e fechar o portão da garagem. Esta é executada sempre que o botão da garagem seja pressionado, isto é, que o seu valor, passado por parâmetro (valueBtPortão), seja 1.
Conclusão
Após a conclusão da Etapa 5, alcançamos a materialização do projeto através da programação de uma maquete que integra de maneira harmoniosa todas as funcionalidades desenvolvidas. É possível perceber nesta maquete uma integração completa entre a automatização dos sistemas de iluminação, ventilação e abertura do portão. Isso faz dela mais que uma simples representante física palpável; é um exemplo concreto da alta eficiência alcançada ao utilizar o Arduino para automatizar processos residenciais. Assim sendo, esta etapa tem o propósito de validar tanto a viabilidade técnica completa do projeto quanto enfatizar o sucesso da interconexão e integração entre as várias partes que compõem o sistema domótico.