Projeto 01
Adriano Joaquim de Oliveira Cruz
Instituto de Matemática
UFRJ
©2015 Adriano Cruz
30 de agosto de 2015
1
Introdução
Este projeto é baseado no Laboratório 01 do Livro Head First C [2]. A idéia é fazer com que as próprias plantas nos avisem quando elas precisam de serem regadas. Para realizar este projeto vamos usar o computador Arduino (ver em https://www.arduino.cc/) [1].
O sistema monitor de plantas tem um sensor que mede a humidade do solo da planta. Se a planta precisa ser regada, um led acende até que a planta seja regada e a cadeia de caracteres “Por favor água!” é enviada repetidamente para o computador. Quando a planta for regada o led apaga e a cadeia “Obrigado Zé” é enviada para o computador.
2
Arduino: O Hardware
Arduino é uma plataforma open-source para criação de protótipos eletrônicos, baseada em hardware e software fácil usar. Foi criada para artistas, projetistas, hobbistas ou qualquer um interessado em criar objetos interativos e inteligentes. Todos os projetos no Arduino são controlados por código escrito em C. Arduino é um projeto iniciado na Itália em 2005. Uma comunidade ativa de desenvolvedores de software e hardware se formou em torno deste projeto. A Figura 1 mostra exemplares de placas de Arduino de diferentes configurações.
A Figura 2 mostra uma das versões do Arduino, o Uno, que é o que usaremos em nosso projeto. O Arduino Uno tem 14 pinos para entrada e saída de dados digitais. Estas entradas/saídas servem para ler valores de sinais ligados ou desligados ou para controlar atuadores colocando-os no estado ligado ou desligado. O circuito também tem 6 entradas de dados analógicos que podem ser usados para ler voltagens de um sensor. O circuito pode receber potência a partir da porta USB de um computador ou de uma bateria externa.
Figura 2: O Arduino Uno
3
Arduino: O Software
Para escrever o código do nosso projeto devemos usar o ambiente integrado de desenvolvimento do Arduino (IDE). Esta IDE permite editar, verificar, compilar e testar o código dos projetos. Todas estas etapas são executadas no próprio computador do desenvolvedor. Ela também permite que o código resultante seja transferido, via USB, para o Arduino para execução. A IDE també tem um monitor serial para permitir dados que são produzidos no Arduino possam ser enviados e mostrados no computador. A IDE é grátis e pode ser baixada do site do Arduino (www.arduino.cc/en/Main/Software). A Figura 3 mostra a aparência da IDE.
4
Tarefas
O seu código em C deve executar as tarefas descritas a seguir.
Ler valores do sensor de humidade: o sensor de humidade está conectado a uma entrada analógica. O seu programa deve ler dados desta entrada. O valor que servirá para definir se a planta deve ser regada ou não deve ser obtida por exeperimentação.
Acender e apagar o led: o led deve ser conectado a um pino digital. Quando a planta não precisa de mais água, escreva no pino digital do led de modo que ele apague. Quando for para regar acenda o led. Uma melhoria pode ser fazer o led piscar.
Escrever na porta serial: quando a planta precisar de água escreva a cadeia “Por favor água!” na porta serial do computador. Quando a planta receber água suficiente escreva “Obrigado Zé!”. Considere
Figura 3: A IDE do Arduino
O código C no Arduino tem uma estrutura própria e portanto temos de segui-la. O seu programa deve parecer com o código mostrado na Listagem 1.
A seguir mostramos algumas funções que serão bastante úteis durante o desenvolvimento do projeto. • voidpinMode(intpin, int mode)
Diz ao Arduino se o pino digital pin deve funcionar como entrada ou saída. O mode pode ser igual a INPUT ou OUTPUT.
• int digitalRead(intpin)
Le um valor do pino digital pin. O valor retornado pode ser igual a HIGH ou LOW. • voiddigitalWrite(intpin,intvalue)
Escreve um valor em um pino digital. value pode ser HIGH ou LOW. • int analogRead(intpin)
Le um valor do pino analógico pin. O valor retornado será um valor entre 0 e 1023. • voidanalogWrite(intpin,intvalue)
Escreve um valor analógico no pino pin. value deve estar entre 0 e 255. • voidSerial.begin (longspeed)
Diz ao Arduino para começar a enviar e receber dados seriais na velocidade speed bits por segundo. Normalmente se usa a velocidade 9600 bits por segundo.
• voidSerial.println (val)
Envia val pela porta serial. val pode ser dado de qualquer tipo. • voiddelay(long interval)
Listagem 1: Exemplo de estrutura de código para o Arduino.
v o i d setup( ) {
/∗
Esta f u n ç ã o é chamada quando o programa começa . Ela b a s i c a m e n t e d e f i n e a s l i g a ç õ e s da p l a c a . Além d i s s o q u a l q u e r c ó d i g o de i n i c i a l i z a ç ã o deve s e r i n s e r i d o a q u i . ∗/ } v o i d loop( ) { /∗
Aqui é onde o c ó d i g o p r i n c i p a l deve f i c a r . Esta f u n ç ã o f i c a sendo e x e c u t a d a r e p e t i d a m e n t e .
Ela deve l e r o s s e n s o r e s e a t u a r de a co r do com o s v a l o r e s l i d o s . Ela somente pa r a de e x e c u t a r quando o c i r c u i t o f o r d e s l i g a d o . ∗/
}
5
Lista de Material
• 1 Arduino UNO ou outro mais potente. • 1 led.
• 1 resitência de xxx Ω.
• 1 protoboard ou uma placa para protótipagem (para quem sabe soldar). • Fios compatíveis com o protoboard.
• Uma planta para ser regada. • Dois pregos grandes.
6
Entrega do Trabalho
O desenvolvimento do projeto deverá ser feito obrigatoriamente por um grupo de três alunos. Grupos maiores não serão aceitos e grupos menores serão aceitos somente se a divisão dos grupos obrigar esta configuração.
A entrega do trabalho será durante uma aula prática em data a ser definida. O grupo deve levar a planta no estado em que pede para ser regada e demonstrar que após a rega ela agradece. O grupo deve entregar um relatório do desenvolvimento do projeto.
A nota do trabalho não necessariamente será a mesma para todos os alunos do grupo. Os alunos deverão responder perguntas sobre o projeto durante a sua apresentação. A nota de cada aluno será função do relatório, do funcionamento do projeto e das respostas dadas durante a apresentação.
Referências
[1] https://www.arduino.cc/. Accessed: 2015-08-30. [2] David Griffiths. Head first C. O’Reilly, USA, 2012.