• Nenhum resultado encontrado

8 METODOLOGIA DE DESENVOLVIMENTO

8.4 DESENVOLVIMENTO DO SOFTWARE DO MICROCONTROLADOR

8.4.2 Operação do dispositivo

O dispositivo proposto por este trabalho deve realizar as seguintes funções: ● Se conectar à rede sem fio local com acesso à internet para publicação dos

valores obtidos do sensoriamento, e para receber comandos.

● Monitorar os sensores de luminosidade, temperatura ambiente, e umidade gravimétrica do solo e publicar no banco de dados para análise futura.

● Controlar o funcionamento da válvula de controle de fluxo, realizando a irrigação quando o solo estiver com umidade gravimétrica abaixo do especificado para o cultivo.

● Recuperar o seu modo de operação em caso de falha momentânea de alimentação.

● Salvar dados localmente em memória não volátil, como o nome e a senha de acesso da rede em que ele deve se conectar.

● Receber e tratar mensagens publicadas especificamente para o dispositivo, nos tópicos em que ele está inscrito. Um exemplo de comando via mensagem é a opção “regar agora” que permite o usuário testar o sistema de irrigação sem passar pelo crivo da lógica dos sensores.

● Receber remotamente os horários de irrigação.

A arquitetura escolhida para este software é dividida em duas partes: Setup e loop. No modo setup, o programa é responsável por configurar alguns parâmetros necessários para o correto funcionamento do dispositivo. São eles:

● Inicializar a comunicação serial transistor transistor logic responsável para depuração do código, em uma velocidade de 115200 bit/s.

● Declarar à quais pinos estão conectados os periféricos presentes no projeto, como sensores,conversor analógico digital, etc.

● Inicializar as bibliotecas dos sensores, responsáveis pela comunicação e/ou obtenção de dados.

● Configurar os tópicos requisitados pela comunicação via protocolo MQTT para publicação de mensagens.

● Inicializar o real time clock do controlador, para se obter a base de tempo utilizada no software.

● Inicializar a memória não volátil do microcontrolador, deixando esta pronta para salvar dados de configuração.

● Inicializar o dispositivo em modo ponto de acesso e aguardar ações do usuário para que ele se conecte à rede local sem fio.

O modo loop é responsável pela leitura contínua dos sensores, verificação do estado da comunicação e verificar a disponibilidade de mensagens nos tópicos inscritos relativo ao protocolo MQTT. Um descritivo pontual das sub funções do modo loop estão descritas abaixo:

● Atualizar os valores dos sensores nas memórias voláteis do microcontrolador. ● Atualizar o real time clock do microcontrolador via Network Time Protocol. ● Publicar os valores dos sensores e informações sobre o estado de operação

do microcontrolador via rede sem fio e protocolo MQTT.

● Verificar a disponibilidade de mensagens publicadas nos tópicos em que o dispositivo está inscrito, como por exemplo o comando “regar agora”.

● Verificar se, pelos valores obtidos dos sensores, a irrigação deve ser feita liberando o fluxo de água pela válvula de controle.

Pela incapacidade do microcontrolador de realizar as equações 6 e 7 necessárias para a conversão dos valores de tensão em umidade gravimétrica do solo, os valores de tesão são publicados no banco de dados e a conversão é por processamento em nuvem.

8.4.2.1 Controle da irrigação

A irrigação é configurada remotamente, na qual, por meio da rede sem fio via protocolo de dados MQTT, o usuário envia ao microcontrolador quais os horários a válvula de controle de fluxo deve ser liberada. Esta funcionalidade tem operação parecida com um despertador convencional, onde o usuário pode configurar o horário de início e a duração da irrigação por gotejamento.

A irrigação é programada no momento da instalação do dispositivo, onde o usuário deve se atentar às condições do ambiente para a correta programação. Porém, visando um controle em malha fechada, o controlador pode tomar a decisão de liberar o fluxo na válvula de controle. Essa decisão é tomada de acordo com a leitura da quantidade de horas de sol direta que a área de cultivo recebe, e a leitura do sensor de umidade gravimétrica do solo.

O microcontrolador contabiliza quantas horas de sol direto a área de cultivo recebeu em um dia. Se o valor ultrapassar três horas de sol direto e o valor do sensor de umidade estiver abaixo do valor mínimo pré-configurado no programa, ele toma a decisão de iniciar a irrigação. Esta irrigação é realizada em três etapas, com duração de 2 minutos cada. Após o fim da primeira etapa, o controlador espera 10 min e inicia a segunda etapa, e o processo é repetido para a terceira etapa. Este controle auxiliar é executado desta maneira para permitir que a água tenha tempo o suficiente para se espalhar pelo solo, proporcionando leituras mais homogêneas e menos pontuais.

8.4.2.2 Publicação e subscrição via MQTT

Conforme citado na seção 8.4.3 deste trabalho, a comunicação via protocolo MQTT funciona pela arquitetura publicação e subscrição. Se um dispositivo pretende captar mensagens via protocolo MQTT, ele subscreve em um tópico definido pelo arquiteto do sistema, e a partir do momento em que a subscrição é validada, ele está apto a ler todas as mensagens que forem enviadas naquele tópico. O mesmo ocorre quanto ao envio de mensagens, onde o dispositivo publica a mensagem em um tópico definido pelo arquiteto do sistema.

Os tópicos que o dispositivo está inscrito para receber mensagens do servidor mostrados na figura 41 são:

● schedules: horários de irrigação.

● pump Enabled: habilitar ou desabilitar o acionamento da válvula de controle de fluxo.

● pump Now: comando “regar agora” que permite o usuário testar o sistema de irrigação.

● resync:comando para esquecer a rede local e a senha configurada.

● new Version: comando que indica uma nova versão de software disponível.

Figura 41: Tópicos de inscrição do dispositivo. Fonte: Autoria própria (2017).

Da mesma maneira, o dispositivo faz publicações em tópicos definidos pelo arquiteto do software quando ele deseja mandar uma mensagem, mostrado na figura 42. Os tópicos de publicação do dispositivo são:

● sensors: tópico onde ele publica os valores de todos os sensores.

● heart beat: responsável para que o servidor saiba que o dispositivo está ativo e conectado. O dispositivo envia uma mensagem vazia no tópico heartbeat a cada 60 segundos, independente da lógica de operação.

● new Version: tópico responsável por receber qual a versão do software do dispositivo.

Figura 42: Tópicos de publicação do dispositivo. Fonte: Autoria própria (2017).

Documentos relacionados