Tutorial Sistema de rega
ÍNDICE 1 Versão... 5 2 Introdução... 5 3 Pré-requisitos... 5 4 Material necessário... 7 5 Guia passo a passo... 9 5.1 Ligar sensor de humidade ao arduino... 9 5.2 Ligar relé ao arduino... 9 5.3 Mapear arduino com o mqtt... 10 5.4 Configurar RemotusService... 11 5.5 Android... 12 5.5.1 Configuração... 12 5.5.2 Adicionar cartão... 12 5.5.3 Adicionar sensor... 12 5.5.4 Adicionar novo sensor para o sector a regar... 13 5.5.5 Adicionar novo ação para iniciar e parar a rega manualmente... 13 6 Esquema... 15 6.1 Esquema electronico com o Arduino... 15 6.2 Tópicos mqtt... 15 7 Ficheiros de configuração... 17 7.1 Arduino2mqtt... 17 7.2 RemotusService... 18 8 Referências... 19
1 VERSÃO Autor Descrição Data Versão Pedro Lopes Inicio do documento 06-08-2013 0.1 2 INTRODUÇÃO Tutorial para controlo de um sistema de com o Remotus, com sensor de humidade, com a possibilidade de ser ativar e desativar o sistema com ação do utilizador. A rega de jardins pode ser controla de várias maneiras, dependendo das condições que cada caso tem. Este tutorial explica como implementar um sistema de rega, onde a existe um furo (poço) com uma bomba elétrica. Por esta razão a rega só vai funcionar depois das 22h (quando a energia é mais barata) se por acaso o solo não esteja húmido. 3 PRÉ-REQUISITOS Este tutorial assume que está familiarizado com o Raspberry Pi, Arduino e o Remotus. É necessário ter: Raspberry Pi com o remotus e o mosquitto instalado Dispositivo Android 4.0 ou superior. Arduino com Firmata standard
4 MATERIAL NECESSÁRIO Qtd Imagem Descrição 1 Arduino Uno (http://arduino.cc/en/main/arduinoboarduno, http://www.inmotion.pt/store/arduino-uno-rev-3) 2 8 Relés para arduino 5V (http://dx.com/p/8-channel-5v-relaymodule-shield-for-arduino-148811 1 Sensor de humidade no solo (http://dx.com/p/freaduino-soilhumidity-sensor-for-arduino-white-147817) 1 Breadboard (http://www.inmotion.pt/store/breadboard-830- points-self-adhesive) Fios (http://dx.com/pt/p/breadboard-jumper-cable-wires-forelectronic-diy-65-cable-pack-121345)
5 GUIA PASSO A PASSO 5.1 LIGAR SENSOR DE HUMIDADE AO ARDUINO O sensor de humidade devolve um valor conforme a seguinte tabela Valor Descrição 0--300 Solo seco 300-700 Solo húmido 700-950 Solo em Nesta abordagem vamos autorizar a rega quando o valor da humidade for inferior a 300. O site do sensor tem mais informação sobre de como usar este sensor (http://www.elecfreaks.com/wiki/index.php?title=octopus_soil_moisture_sensor_brick) Pin V G S Descrição 5V GND Valor de sensor, liga ao pino A0 do Arduino (analógico) 5.2 LIGAR RELÉ AO ARDUINO O sistema de rega normalmente é ligado por sectores e rega um de cada vez, para acionar as válvula elétricas temos de usar relés, 1 rele por cada válvula.
Remotus: Tutorial sistema de rega Pin Vcc gnd In1 In2..8 Descrição 5V GND Pino 1 liga ao pino 4 digital do arduino Pinos de 2 a 8 não usados neste tutorial 5.3 MAPEAR ARDUINO COM O MQTT É uma boa prática usar um tópico para saber o estado do Arduino, como o arduino2mqtt permite esta configuração vamos usar o tópico /arduino/1/estado. No ficheiro JSON esta configuração fica: "start": "retained": true, "message": "1", "topic": "/arduino/1/estado", "qos": 0, "will": "retained": true, "message": "0", "topic": "/arduino/1/estado", "qos": 0 O sensor de humidade que está ligado no pin 0 analógico do Arduino vai ser publicado no tópico /arduino/1/humidade_solo, o valor vai ficar retido no MQTT e o tipo é ANALOG porque é uma informação analógica de dados. O bloco de configuração JSON fica: "retained": true, "topic": "/arduino/1/humidade_solo", "qos": 0, "pin": 0, "digitaltype": "ANALOG", "active": true O relé vai ficar ligado ao pin 4 do Arduino e vai ser publicado no tópico /arduino/1/rega/1, o valor não vai ficar retido é sempre processado quando inicia pelo sistema. O tipo é OUTPUT porque é uma saída de dados. O bloco de configuração JSON fica: "retained": false, "topic": /arduino/1/rega/1", "qos": 0, "pin": 4, "digitaltype": "OUTPUT", "active": true 10
Remotus: Tutorial sistema de rega 5.4 CONFIGURAR REMOTUSSERVICE Tal como arduino2mqtt o remotusservice também deve ter um tópico configurado com estado, vamos usar o /remotusservice/estado. Para abrir ou fechar o portão vamos configurar a condição ConditionTimer e configurar o padrão de agendamento conforme o horário pretendido, para efeitos de tutorial vai ser usado o schedulingpattern": "* 22 * * " para iniciar a rega todos os dias às 22Horas. Para teste pode mudar este valor para */1 * * * * para minuto a minuto. Consultar o manual do Remotos para mais informações sobre este padrão de agendamento (cron). No tópico "/arduino/1/humidade_solo vamos ter o valor da humidade, como só queremos iniciar a rega quando o solo está seco a condição fica condition": "/arduino/1/humidade_solo<300". O bloco de configuração JSON fica: "class": "ConditionTopic", "name" : "Rega", "schedulingpattern": "* 22 * * *", "condition": "/arduino/1/humidade_solo<300", "actions": [ "class": "ActionPublish", "topic": "/arduino/1/rega/1", "name" : "liga a rega setor 1", "retainded": false, "qos": 0, "value": "1", "delay": 0 ] Para parar a regra, podemos optar por várias soluções, a mais simples é configurar um regra para parar de regrar depois de 10 minutos, (600000 milissegundos). O bloco de configuração JSON fica: "class": "ConditionTopic", "name" : "Rega sector 1", "topics": [ "/arduino/1/rega/1" ], "condition": "/arduino/1/rega/1==1", "actions": [ "class": "ActionPublish", "topic": "/arduino/1/rega/1", "name" : "desliga sector 1", "retainded": false, "qos": 0, "value": "0", "delay": 600000 ] 11
Remotus: Tutorial sistema de rega 5.5 ANDROID 5.5.1 Configuração A primeira coisa a configurar é o endereço do servidor MQTT, porto, utilizador e a palavra-passe. O tópico do cartão é onde vai ficar guardada a configuração, cada vez que alterada é enviada para o servidor MQTT 5.5.2 Adicionar cartão Tocar no para adicionar o cartão e indicar o nome: O resultado será este: 5.5.3 Adicionar sensor Tocar em e escolher Adicionar sensor e depois escolher Normal. Preencher a informação conforme a figura: As imagens tem de estar num web site. 12
Remotus: Tutorial sistema de rega O resultado será este: 5.5.4 Adicionar novo sensor para o sector a regar Tocar em e escolher Adicionar sensor e depois escolher On/off. Preencher a informação conforme a figura: O resultado final será este: 5.5.5 Adicionar novo ação para iniciar e parar a rega manualmente 13
Remotus: Tutorial sistema de rega Para adicionar uma nova ação a este sensor, faça um toque longo no no sensor e escolha adicionar ação. Das opções disponíveis escolha On/Off, e preencha conforme a figura: O resultado será este: 14
6 ESQUEMA 6.1 ESQUEMA ELECTRONICO COM O ARDUINO 6.2 TÓPICOS MQTT Tópico /arduino/1/estado arduino/1/rega/1 /arduino/1/humidade_solo /remotusservice/estado Descrição Estado do arduino2mqtt. Valor 1 quando está ligado, valor 0 (zero) quando não esta ligado Valor 1 para ligar o relé, 0 (zero) para desligar Valor de 0 a 1023. Humidade do solo Estado do remotusservice. Valor 1 quando está ligado, valor 0 (zero) quando não esta ligado
7 FICHEIROS DE CONFIGURAÇÃO 7.1 ARDUINO2MQTT "version": 1, "serial": "rate": 57600, "name": "/dev/ttyacm0", "mqtt": "password": "ze", "user": "pedro", "uri": "tcp://127.0.0.1:1883", "start": "retained": true, "message": "1", "topic": "/arduino/1/estado", "qos": 0, "will": "retained": true, "message": "0", "topic": "/arduino/1/estado", "qos": 0, "digitalpins": [ "retained": true, "topic": "/arduino/1/rega/1", "qos": 0, "pin": 4, "digitaltype": "OUTPUT", "active": true ], "analogpins": [ "retained": true, "topic": "/arduino/1/humidade_solo", "analogtype": "ANALOG", "qos": 0, "pin": 0, "active": true, "threshold": 30 ]
Remotus: Tutorial sistema de rega 7.2 REMOTUSSERVICE "version": 1, "mqtt": "url": "tcp://127.0.0.1:1883", "username": "Pedro", "password": "ze", "start": "topic": "/remotusservice/estado", "message": "1", "retainded": true, "qos": 0, "will": "topic": "/remotusservice/estado", "message": "0", "retainded": true, "qos": 0, "config": "topic": "/remotusserver/config", "qos": 0, "variables": "values": [ "/arduino/1/rega/1": "0", "/arduino/1/humidade_solo": "0", ], "conditions": [ "class": "ConditionTopic", "name" : "Rega 1 em 1 minuto", "schedulingpattern": "*/1 * * * *", "condition": "/arduino/1/humidade_solo<300", "actions": [ "class": "ActionPublish", "topic": "/arduino/1/rega/1", "name" : "liga a rega setor 1", "retainded": false, "qos": 0, "value": "1", "delay": 0 ], "class": "ConditionTopic", "name" : "Rega sector 1", "topics": [ "/arduino/1/rega/1" ], "condition": "/arduino/1/rega/1==1", "actions": [ "class": "ActionPublish", "topic": "/arduino/1/rega/1", "name" : "desliga sector 1", "retainded": false, "qos": 0, "value": "0", "delay": 500 ] ] 18
8 REFERÊNCIAS Arduino site official http://www.arduino.cc o http://arduino.cc/en/tutorial/button Desenho de circuitos electrónicos http://fritzing.org/ Raspberry Pi http://www.raspberrypi.org/ Sensor de humidade http://www.elecfreaks.com/wiki/index.php?title=octopus_soil_moisture_sensor_brick Mosquitto http://mosquitto.org/