Escolar Documentos
Profissional Documentos
Cultura Documentos
SÃO PAULO
2018
ANA CAROLINA PASTORELLI
BRUNA RIBEIRO DE OLIVEIRA
ESDRAS RODRIGUES PINTO
JHONNY KELVEM DE OLIVEIRA
JOSÉ DIEGO FAGUNDES SILVA
MARIANA VIEIRA DA SILVA
THIAGO DE SOUZA BUZETTO
SÃO PAULO
2018
ANA CAROLINA PASTORELLI
BRUNA RIBEIRO DE OLIVEIRA
ESDRAS RODRIGUES PINTO
JHONNY KELVEM DE OLIVEIRA
JOSÉ DIEGO FAGUNDES SILVA
MARIANA VIEIRA DA SILVA
THIAGO DE SOUZA BUZETTO
BANCA EXAMINADORA
_______________________
Prof. Nome do Professor avaliador
________________________
Prof. Nome do Professor avaliador
________________________
Prof. Nome do Professor avaliador
Dedicamos este trabalho a Deus,
à nossa família e aos nossos amigos.
AGRADECIMENTOS
Charles Chaplin
RESUMO
The search for quality of life, health and well-being has been transforming the
behavior of Brazilians. This change is quite expressive when we talk about food. We
observed that the population is increasingly opting for urban gardens because of the
high cost of food, quality and large quantity of fertilizers and pesticides that are
harmful to health and the environment. This made the intake of organic products
grow considerably. As they are considered healthier and more natural, consumers
are increasingly looking for these products, moving the market and boosting, mainly,
family farming. In this context, the intelligent hydroponic planting system was
developed with the aim of facilitating the daily life of people who want to consume
organic products in a practical way and reducing expenses. The automated system
monitors with its sensors the temperature, humidity, water level and light necessary
for the development of the planting in internal environment, like houses and
apartments, thus avoiding the human intervention in the control of these variables.
The hydroponic system will be used for irrigation of the plants, since this one
presents a series of advantages such as production in small areas, use of low
amount of water, reduction of the number of operations during the cycle of the crop
and anticipation of the harvest. With a control system made by Arduino, it is possible
to store the data collected during planting and to organize them to facilitate the
understanding of the target audience.
1 INTRODUÇÃO ....................................................................................................... 14
2 REFERENCIAL TEÓRICO..................................................................................... 19
REFERÊNCIAS ......................................................................................................... 76
1 INTRODUÇÃO
1.2 Problema
1.3 Justificativa
Atualmente, a população está optando cada vez mais por hortas urbanas
devido ao alto custo dos alimentos, qualidade e pela grande quantidade de
fertilizantes e agrotóxicos que são prejudiciais à saúde e ao meio ambiente.
“Vem crescendo o número de pessoas que se interessam em manter uma
horta em casa ou apartamento. A prática pode ser influência de maior consciência
ambiental, somada à busca por alimentos orgânicos” (IDEC, 2008, p.34).
Segundo o Dossiê Abrasco (Associação Brasileira de Saúde Coletiva) um
alerta sobre o impacto dos agrotóxicos na saúde, 70% dos alimentos in natura
consumidos no país estão contaminados por agrotóxicos. Desses, segundo a Anvisa,
28% contém substâncias não autorizadas.
Segundo Garattoni e Lacerda (2018) “o Brasil é campeão mundial dos
pesticidas: a cada ano, usa-se 1 bilhão de litros deles para produzir nossa comida. E
o congresso está se mobilizando para que o pais possa usar ainda mais”.
Ainda segundo Garattoni e Lacerda (2018) o uso de agrotóxicos cresceu 700%
no Brasil nos últimos 40 anos, sendo que no mesmo período a área plantada
cresceu apenas 78%. A Figura 1 a seguir, mostra o gráfico da porcentagem de
alimentos que obedecem às normas estabelecidas pela Anvisa, sobre o limite de
segurança do uso dos agrotóxicos:
18
Resíduos na comida
20%
Obedecem
Não obedecem
80%
Ter uma horta sem uso de agrotóxicos em casa possibilita que as pessoas
consumam alimentos frescos e saudáveis aproveitando melhor seus nutrientes e
possibilita também uma economia devido à redução de desperdícios.
O que impede algumas pessoas de terem o cultivo dos próprios alimentos é a
necessidade de disponibilidade de tempo para os cuidados do plantio.
Com a automatização do sistema de um plantio, é possível que:
➢ O tempo necessário para cultivar alimentos seja reduzido, pois haverá
todo o controle necessário automatizado;
➢ A qualidade do alimento seja melhorada e a produtividade elevada
(resultado da eficácia do controle de temperatura, iluminação e umidade,
tornando o ambiente ideal para o plantio suprindo sua real necessidade
sem desperdícios);
➢ Os custos sejam reduzidos uma vez que se torna desnecessário o uso de
agrotóxicos (um dos motivos do aumento do preço final do produto);
➢ O desperdício de água seja reduzido utilizando um reservatório com
sistema de reabastecimento automático contribuindo com o meio ambiente;
➢ Todo o processo de plantio é simplificado, assim gera-se uma
aproximação das pessoas e um incentivo ao consumo mais consciente e
natural.
19
2 REFERENCIAL TEÓRICO
Uma das espécies mais procuradas por quem está disposto a ter uma horta
dentro de casa são as Hortaliças.
Hortaliça é um termo agrícola utilizado para nomear uma planta herbácea em
que uma ou mais partes são utilizadas para alimentação em sua forma natural
(ANVISA, apud JUNIOR, 1978). Segundo Makishima (1993) as “hortaliças são
plantas alimentares que se caracterizam pelo seu alto teor de vitaminas e sais
minerais”.
O consumo de hortaliças traz uma série de benefícios por serem ricas em fibras,
vitaminas e sais minerais, e também por serem alimentos leves. Seu cultivo pode ser
feito tanto em ambientes abertos quanto em ambientes fechados, como por exemplo,
as estufas.
As estufas são estruturas onde se pode criar e/ou manter microclimas favoráveis
ao cultivo de plantas, independente das condições existentes. Nesse tipo de
estrutura, as condições ambientais podem ser melhor controladas (BEZERRA, 2003,
p. 11).
“Fatores como o solo, abundância de água, temperatura, ventos e umidade do ar
interferem diretamente no processo de crescimento das plantas podendo dificultar,
ou até mesmo, impedir sua criação, dependendo do clima da região onde as
mesmas são cultivadas” (BARRETO; SANTOS. 2012, p. 19).
Portanto, o uso de estufas para criar ambientes controlados e protegidos é uma
solução muito utilizada para o sucesso do cultivo de hortaliças independente da
região.
20
As influências de cada fator no cultivo das plantas serão descritos nos tópicos a
seguir:
2.2.1 Temperatura
Diz Cermeño citado por Junior (2016, p. 22) que a variação da temperatura é um
fator de extrema importância pois ela tem influência direta no desenvolvimento das
plantas, interferindo nos processos de transpiração, respiração, fotossíntese,
germinação, crescimento, floração e frutificação.
Cada planta possui uma faixa de temperatura ideal para seu desenvolvimento
que, se não for respeitada, pode causar sérios danos ou até mesmo a morte das
mesmas.
Cardoso (2010) diz que a temperatura pode acelerar ou retardar o
desenvolvimento de cada planta funcionando como um controlador de crescimento.
Segundo SIGRIMIS citado por Cardoso (2010), “pesquisas na área de
horticultura indicam que o desenvolvimento e crescimento da maioria das plantas
respondem positivamente se expostos a uma temperatura média durante um
determinado período”.
Conforme observado na Tabela 1, a maioria das hortaliças tem a temperatura
ideal de cultivo entre 15º e 25ºC.
21
Segundo Seemann e Prados, citado por Cardoso (2010), “os valores de umidade
relativa do ar no interior das estufas variam de maneira bastante acentuada e estão
diretamente relacionados aos valores de temperatura do ar. Sendo assim, para um
mesmo conteúdo de vapor d’água no ar, a umidade relativa é inversamente
proporcional à temperatura”. Durante o dia, a umidade do ar diminui no interior da
estufa devido ao aumento da temperatura. Já durante a noite, a umidade do ar é
elevada por conta da queda de temperatura verificada no interior da estufa.
2.2.3 Ventilação
2.2.4 Luminosidade
Diz HOPKINS citado por JUNIOR que a luz é fundamental para a sobrevivência
das plantas, pois através do fenômeno da fotossíntese, as plantas transformam
moléculas de água e dióxido de carbono em energia química e liberam
simultaneamente o oxigênio, renovando e purificando o ar. Estas moléculas são,
então, utilizadas pelas plantas em sua respiração. A luminosidade, em termos da
agricultura, caracteriza-se pela quantidade de luz incidente nas plantas. Sendo este
um fator importante não apenas para sua sobrevivência, mas também para seu
desenvolvimento, já que o excesso – ou falta – podem gerar efeitos adversos em
seu crescimento.
23
2.2.5 Irrigação
“A irrigação é uma técnica milenar que tem por objetivo fornecer a quantidade
necessária de água à planta no momento em que ela necessita e na quantidade
exata” (CASTRO, 2003, p. 4).
Segundo Frizzone (2017), existem, basicamente, quatro métodos de irrigação:
1. Irrigação por aspersão – a aplicação da água ao solo resulta da
subdivisão de um jato d’água lançado sob pressão no ar atmosférico;
2. Microirrigação, ou irrigação localizada – a aplicação da água é feita por
emissores que operam sob pressão e localizam o volume de água
necessário nas áreas de interesse;
3. Irrigação por superfície – utilizam a superfície do solo para conduzir a
água que deve ser aplicada à área a ser irrigada;
4. Irrigação subterrânea – consiste na aplicação de água ao subsolo capaz
de proporcionar um fluxo satisfatório de água à zona radicular da planta.
Segundo Furlani citado por Santos (2008), a hidroponia, termo derivado de duas
palavras de origem grega, hidro = água e ponia = trabalho, é uma técnica que está
se desenvolvendo rapidamente, especialmente no cultivo de hortaliças, por ser uma
técnica alternativa de cultivo protegido, na qual o solo é substituído por uma solução
aquosa, contendo apenas os elementos minerais necessários aos vegetais.
No passado, diz Alberoni citado por Dal’Sotto (2013), a produção de alimentos
em nível comercial era pequena e as pessoas produziam suas hortaliças em casa.
Hoje, com um aumento incontrolável da população, com o crescimento das cidades
24
Compilar
Executar
Novo
Abrir
biblioteca
Área de
código
Salvar
Área de
status
Fonte: Autoria própria, 2018.
32
3 MATERIAIS E METODOS
3.1 Funções
Sensor de Temperatura
e Umidade MICROCONTROLADOR
Cooler
Diz Goto e Tivelli citado por Santos et al (2010, p. 84) que o clima é um fator
que influência a produção de hortaliças e plantas. E em algumas regiões no verão,
as altas temperaturas interferem na qualidade e produção das hortaliças e criam
condições favoráveis para o aparecimento de doenças.
A temperatura é o controle mais importante em uma estufa, por exercer uma
função essencial no crescimento e desenvolvimento das plantas. A temperatura mais
favorável depende de cada tipo de espécie de planta cultivada. Temperaturas muito
altas reduzem o crescimento das plantas, fazendo com que elas murchem e morram,
por outro lado, temperaturas muito baixas limitam o crescimento das plantas.
Para o controle da temperatura vamos utilizar um sensor de temperatura e um
sistema de refrigeração, para ter um controle completo dentro da estufa.
O sensor de temperatura utilizado neste projeto foi o DHT11 que permite fazer
leituras de temperaturas entre 0 a 50° Celsius, e o elemento sensor de temperatura
é um termistor do tipo NTC. Ele será usado com um microcontrolador Arduino,
através de um serial de uma via. O microcontrolador será programado para uma
34
faixa de variação de temperatura, onde o sensor irá captar a variação de calor dentro
da estufa e enviar sinais constantes para monitoramento sobre a temperatura para o
Arduino, e quando houver uma variação de temperatura fora da escala pré-
programada a placa irá interpretar, comparar e executar as ações nele programadas.
3.1.2 Refrigeração
Pastilha Peltier
Dissipador
Cooler
3.1.2.2 Cooler
3.1.3 Umidade do ar
3.1.4 Iluminação
mesmo estiver acabando. Assim as raízes das plantas sempre estarão em contato
com água.
A bomba utilizada é a Brushless DC Pump – AD20P, é uma bomba própria
para água, com uma taxa de vazão de 240 L/H, sendo o suficiente para este projeto.
As características desta modelo são:
Como citado que as raízes das plantas necessitam estar sempre em contato
com a água, foi instalado dois sensores de níveis, que farão a medição da água no
reservatório e no recipiente das raízes. O sensor de nível utilizado foi o sensor tipo
bóia, com contato NF.
Segundo Moraes e Castrucci (2013) os sensores de nível têm a função de
monitorar o nível de um liquido dentro de um reservatório. A medida que o nível do
44
3.2 Estrutura
Entrada Saída
PROCESSO
u(t) y(t
)
Fonte: Autoria própria, 2018.
Entrada Saída
Referência: r(t) Erro: e(t) u(t) y(t)
CONTROLADOR PROCESSO
REALIMENTAÇÃO
Este projeto possui os dois sistemas de controle citados acima: Malha aberta
e malha fechada.
No sistema de bombeamento para movimentação do fluído, é utilizado o
sistema de malha aberta, que funciona com base na sua variável de tempo. Os
sistemas de temperatura, iluminação, irrigação e umidade do ar são controlados por
malha fechada.
3.4 Comunicação
Rosário (2009, p. 58) diz que “para que diferentes dispositivos possam trocar
informações, torna-se imprescindível estabelecer códigos e regras de comunicação,
denominados protocolos digitais”.
O protocolo Modbus é uma estrutura de mensagem aberta, utilizada para
comunicação entre dispositivos mestre – escravo / cliente - servidor. Ainda segundo
Rosário (2009) o protocolo Modbus foi muito utilizado industrialmente, foi
desenvolvido pela Modicon nos Estados Unidos em 1979, para uso em seus CLP’s,
mas tornou se rapidamente um padrão industrial.
A Modicon foi posteriormente adquirida pela Schneider e os direitos sobre o
protocolo foram liberados pela Organização Modbus. Muitos equipamentos
industriais utilizam o Modbus como um protocolo de comunicação.
51
➢ RS-232;
➢ RS-485;
➢ Ethernet TCP/IP (MODBUS TCP).
➢ ASCII;
➢ RTU.
Tabela 3 - TAG’s
Variável de
Endereço TAG Programação Descrição Tipo
1 tag001 leitura_ldr Nível de iluminação Leitura
2 tag002 DHT.humidity Nível de umidade Leitura
3 tag003 DHT.temperature Nível de temperatura Leitura
4 tag004 estadosensornivel1 Estado do sensor de nível do recipiente Leitura
Estado do sensor de nível do
5 tag005 estadosensornivel2 reservatório Leitura
6 tag006 estadobomba1 Estado da bomba do recipiente Leitura
7 tag007 estadobomba2 Estado da bomba do reservatório Leitura
8 tag008 estadopastilha1 Estado do sistema de aquecimento Leitura
9 tag009 estadopastilha2 Estado do sistema refrigeração Leitura
10 tag010 temp_maxima Valor de temperatura mínima desejada Escrita
11 tag011 temp_minima Valor de temperatura máxima desejada Escrita
12 tag012 ilumin_minima Valor mínimo de luminosidade Escrita
13 tag013 onoff_bomba1 Liga/desliga bomba recipiente Escrita
14 tag014 onoff_bomba2 Liga/desliga bomba reservatório Escrita
4 TESTES E RESULTADOS
Antes de dar início aos testes práticos, foram realizados testes iniciais em um
simulador chamado Tinkercad. Este é um simulador de circuitos online,
disponibilizado no próprio site da Tinkercad <https://www.tinkercad.com/circuits>, e
que facilita na compreensão dos testes diminuindo assim os prováveis erros na hora
da montagem física.
57
No teste de luminosidade foi testado o sensor LDR, que é um sensor que tem
uma variação na sua resistência dependendo do grau de exposição luminosa. O
objetivo deste teste é a iluminação Led acender quando o ambiente estiver escuro e
desligar quando estiver em um ambiente claro.
A ligação do circuito de iluminação foi feita através de um relé, que é um
dispositivo eletromecânico, que possui diversas aplicações. Seu funcionamento
basicamente se dá quando uma corrente circula pela sua bobina, e gera um campo
eletromagnético que atrai os contatos, e esses contatos abrem ou fecham circuitos.
58
Figura 29 - Relé
No teste foi utilizado uma placa protoboard em conjunto com o arduino, que
estava conectado ao computador, no sistema supervisório, para verificar em tempo
real o funcionamento do sensor LDR. Na Figura 30 abaixo, mostra as ligações feitas
no protoboard ao arduino:
59
O arduino lê um valor na sua porta lógica que está em uma escala de valores
entre 0 e 1024 e entende que se o valor for maior a 200 graus de luminosidade a fita
de Led irá desligar, e se o grau de luminosidade estiver abaixo de 200, a iluminação
da fita de Led será ligada, pois indica que o ambiente está escuro. O arduino foi
programado para uma escala de grau de luminosidade, e quando o sensor LDR
mandar sinais, o arduino irá verificar de acordo com seu programa o grau de
luminosidade e executar as ações nele programadas.
No momento em que o teste foi realizado, foi utilizado o compilador do
arduino, mostrado na Figura 31 a seguir, onde era possível verificar em tempo real o
grau de luminosidade que o sensor LDR indicava, e o acionamento da iluminação da
fita de Led.
60
O ambiente estava claro quando o teste foi realizado, com isso o sensor LDR
indicou um grau de luminosidade de 200 e a iluminação permaneceu desligada.
Após o ambiente ficar escuro, o grau de luminosidade caiu para 74 e a iluminação foi
ligada, e continuou ligada até o grau de luminosidade voltar aos 200 novamente e o
arduino acionar o relé que desligou a fita de Led. Na Figura 32 o gráfico mostra essa
oscilação no estado da luminosidade:
61
Estado da luminosidade
200
Grau de luminosidade
180
160
140
120
100
80
60
40
20
0
Iluminação
Desligada / Ambiente claro Ligada / Ambiente escuro
𝑅 = 10 𝐾
𝑅𝐿𝐷𝑅 = 100 𝐾 𝑒 13,5 𝐾
𝑉𝑐𝑐 = 5 𝑉
𝑅𝐿𝐷𝑅
𝑉𝑠𝑎í𝑑𝑎 = × 𝑉𝑐𝑐 (1)
𝑅𝐿𝐷𝑅 +𝑅
Ambiente escuro:
100 𝐾
𝑉𝑠𝑎í𝑑𝑎 = × 5 = 4,54 𝑉𝑐𝑐 (2)
(100𝐾+10𝐾)
Ambiente claro:
13,5𝐾
𝑉𝑠𝑎í𝑑𝑎 = × 5 = 2,87 𝑉𝑐𝑐 (3)
(13,5𝐾+10𝐾)
O teste com o LDR foi feito com o auxílio do supervisório Elipse Scada, onde
foi visto em tempo real o grau de luminosidade pela interface do supervisório e
verificando assim a eficiência do sensor LDR. A Figura 34 a seguir representa o
gráfico de Luminosidade, mostrando os valores reais do sensor LDR capturados na
hora do teste:
63
Após ser coletado os dados através do compilador, foi feito um gráfico, como
mostra a Figura 37 a seguir, para verificar o aumento da umidade do ar em relação a
temperatura quente. A umidade do ar aumentou na mesma escala que a
temperatura subiu.
Aquecimento da temperatura
70
60
50
40
30
20
10
0
Temperatura (°C) 24 25 25 26
Umidade (%) 60 61 62 63
Resfriamento da Temperatura
80
70
60
50
40
30
20
10
0
1 2 3 4 5 6 7 8 9 10 11 12
Temperatura (°C) 24 23 23 23 22 22 22 21 20 18 16 15
Umidade (%) 65 67 68 69 70 71 72 74 74 75 75 76
Umidade do ar
21%
79%
Neste teste foi testado a bomba de irrigação e o sensor de nível, para verificar
o acionamento da bomba quando o sensor de nível indicar a falta de água no
reservatório e no recipiente onde estarão as raízes das plantas. Em um recipiente
com água foi colocado apenas uma bomba para testar as duas funções
estabelecidas, de circulação e reabastecimento.
Como já citado a bomba utilizada é própria para água e possui uma tensão de
12 V, porém como o Arduino fornece apenas 5 V de tensão, foi utilizado 2 relés
como chave, um para cada bomba. A bomba é acionada pelo relé através do contato
NA que faz a alimentação da bomba e o negativo dela é ligado diretamente na fonte,
com tensão de 12 V também. O acionamento desses relés é feito pelo arduino que o
aciona ou desaciona dependendo do sinal que o sensor tipo bóia enviar para a placa
arduino. Enquanto o sensor tipo bóia estiver acionado a bomba se mantém
desligada, pois isso significa que o reservatório ou recipiente está cheio. E quando o
sensor desaciona a bomba é ligada através dos relés, realizando o reabastecimento
ou circulação da água.
Para o circuito foi utilizado uma placa protoboard com os componentes e
sensor de nível, juntamente ligado ao arduino. Esse sensor envia sinal ao arduino
72
que aciona os relés, para fazer a ligação da bomba. A Figura 44 seguir mostra o
teste feito e as ligações do circuito:
1
5
6
2 1 - Placa Arduino
2- Sensores de nível
3- Bombas
4- Relés para ligação das bombas
5- Relés para ligação das pastilhas
peltier
6- Pastilhas peltier
5 CONSIDERAÇÕES FINAIS
REFERÊNCIAS
ANDRIOLO, J.L. Fisiologia das culturas protegidas. Santa Maria: UFSM, p 142,
1999
ANVISA. Conheça a relação de substâncias autorizadas para uso em
agrotóxicos no Brasil. 2018
Instituto Terra Mater. Produtos sem veneno são sempre mais caros? São Paulo,
2016.
SCOPASA, Vicente. Artigo: História e futuro dos LEDs – 20 anos do LED branco.
Revista Lumiere electric, ed 202, p 88, 2018
APÊNDICE B – Programação
/******************************************************************************
PROGAMAÇÃO ARDUINO - SISTEMA DE PLANTIO INTELIGENTE
*******************************************************************************/
#include <dht.h>
dht DHT;
/* Inicializa o ID do Dispositivo*/
ModbusinoSlave modbusino_slave(1);
uint16_t tab_reg[20];
void setup() {
pinMode(2,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(14,OUTPUT);
pinMode(15,OUTPUT);
}
void loop() {
while(1)
{
/*LDR - Sensor Luminosidade*/
leitura_ldr = analogRead(sensor_ldr);
if (leitura_ldr<ilumin_minima) digitalWrite(led,HIGH);
else digitalWrite(led,LOW);
Serial.println(leitura_ldr);
/*DHT11 - Sensor Temperatura e Umidade*/
Serial.print("Temperatura = ");
Serial.print(DHT.temperature);
Serial.println(" Celsius ");
delay(2000); //Não diminuir o valor abaixo. O ideal é a leitura a cada 2
segundos
// Coolers
{
if (pastilha1 == 1) digitalWrite(cooler1, HIGH);
else digitalWrite(cooler1,LOW);
if (pastilha2 == 1) digitalWrite(cooler2, HIGH);
else digitalWrite(cooler2,LOW);
}
{
case 0:
digitalWrite(Bomba1, LOW);
break;
case 1:
digitalWrite(Bomba1, HIGH);
break;
{
case 0:
digitalWrite(Bomba2, LOW);
break;
case 1:
digitalWrite(Bomba1, HIGH);
break;
tab_reg[0] = leitura_ldr;
tab_reg[1] = DHT.humidity;
85
tab_reg[2] = DHT.temperature;
tab_reg[3] = estadosensornivel1;
tab_reg[4] = estadosensornivel2;
tab_reg[5] = estadobomba1;
tab_reg[6] = estadobomba2;
tab_reg[7] = estadopastilha1;
tab_reg[8] = estadopastilha2;
//Atualizando o Modbus
modbusino_slave.loop(tab_reg, 20);
}
}
Biblioteca DHT
// FILE: dht.h
// VERSION: 0.1.24
// URL: http://arduino.cc/playground/Main/DHTLib
86
//
// HISTORY:
//
#ifndef dht_h
#define dht_h
#include <WProgram.h>
#include <pins_arduino.h> // fix for broken pre 1.0 version - TODO TEST
#else
#include <Arduino.h>
#endif
#define DHTLIB_OK 0
#define DHTLIB_ERROR_CHECKSUM -1
#define DHTLIB_ERROR_TIMEOUT -2
#define DHTLIB_ERROR_CONNECT -3
87
#define DHTLIB_ERROR_ACK_L -4
#define DHTLIB_ERROR_ACK_H -5
#define DHTLIB_DHT11_WAKEUP 18
#define DHTLIB_DHT_WAKEUP 1
#define DHTLIB_DHT11_LEADING_ZEROS 1
#define DHTLIB_DHT_LEADING_ZEROS 6
#ifndef F_CPU
#else
#endif
class dht
{
88
public:
dht() {};
// return values:
// DHTLIB_OK
// DHTLIB_ERROR_CHECKSUM
// DHTLIB_ERROR_TIMEOUT
// DHTLIB_ERROR_CONNECT
// DHTLIB_ERROR_ACK_L
// DHTLIB_ERROR_ACK_H
float humidity;
float temperature;
private:
};
#endif
//
// END OF FILE
//
Biblioteca DHT
#include "SimpleModbusSlave.h"
#include "HardwareSerial.h"
// SimpleModbusSlaveV10
#define BUFFER_SIZE 64
HardwareSerial* ModbusPort;
// function definitions
long baud,
unsigned
char byteFormat,
unsigned
char _slaveID,
91
unsigned
int _holdingRegsSize,
ModbusPort = SerialPort;
holdingRegsSize = _holdingRegsSize;
regs = _regs;
TxEnablePin = _TxEnablePin;
pinMode(TxEnablePin, OUTPUT);
digitalWrite(TxEnablePin, LOW);
(*ModbusPort).begin(baud, byteFormat);
slaveID = _slaveID;
// Modbus states that a baud rate higher than 19200 must use a fixed 750 us
// for inter character time out and 1.75 ms for a frame delay for baud rates
92
T1_5 = 750;
T3_5 = 1750;
else
if ((*ModbusPort).available())
93
while ((*ModbusPort).available())
// serial buffer will be red untill all the data is cleared from the receive
buffer.
if (overflow)
(*ModbusPort).read();
else
if (buffer == BUFFER_SIZE)
overflow = 1;
frame[buffer] = (*ModbusPort).read();
buffer++;
if (overflow)
return errorCount++;
if (buffer > 7)
broadcastFlag = 0;
if (id == 0)
broadcastFlag = 1;
unsigned int crc = ((frame[buffer - 2] << 8) | frame[buffer - 1]); // combine the crc
Low & High bytes
function = frame[1];
95
// crcLo, crcHi
frame[0] = slaveID;
96
frame[1] = function;
frame[2] = noOfBytes;
temp = regs[index];
address++;
address++;
crc16 =
calculateCRC(responseFrameSize - 2);
frame[responseFrameSize - 2] =
crc16 >> 8; // split crc into 2 bytes
frame[responseFrameSize - 1] =
crc16 & 0xFF;
sendPacket(responseFrameSize);
}
97
else
exceptionResponse(3); // exception
3 ILLEGAL DATA VALUE
else
exceptionResponse(2); // exception 2
ILLEGAL DATA ADDRESS
else if (function == 6)
crc16 = calculateCRC(6);
sendPacket(8);
else
exceptionResponse(2); // exception 2
ILLEGAL DATA ADDRESS
regs[index] =
((frame[address] << 8) | frame[address + 1]);
address += 2;
crc16 = calculateCRC(6);
// a function 16 response is
an echo of the first 6 bytes from
if (!broadcastFlag) // don't
respond if it's a broadcast message
sendPacket(8);
else
exceptionResponse(3); //
exception 3 ILLEGAL DATA VALUE
100
else
exceptionResponse(2); // exception
2 ILLEGAL DATA ADDRESS
else
else
errorCount++;
} // incorrect id
return errorCount;
errorCount++;
frame[0] = slaveID;
frame[1] = (function | 0x80); // set MSB bit high, informs the master of
an exception
frame[2] = exception;
sendPacket(5);
temp = 0xFFFF;
102
temp >>= 1;
if (flag)
temp ^= 0xA001;
return temp;
{
103
digitalWrite(TxEnablePin, HIGH);
(*ModbusPort).write(frame[i]);
(*ModbusPort).flush();
delayMicroseconds(T3_5);
digitalWrite(TxEnablePin, LOW);
}
104