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. Figura 1: A Família Arduino 1
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 que o Arduino está conectado na porta USB do computador. 2
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. void pinmode (int pin, 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 (int pin) Le um valor do pino digital pin. O valor retornado pode ser igual a HIGH ou LOW. void digitalwrite (int pin, int value) Escreve um valor em um pino digital. value pode ser HIGH ou LOW. int analogread (int pin) Le um valor do pino analógico pin. O valor retornado será um valor entre 0 e 1023. void analogwrite (int pin, int value) Escreve um valor analógico no pino pin. value deve estar entre 0 e 255. void Serial.begin (long speed) 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. void Serial.println (val) Envia val pela porta serial. val pode ser dado de qualquer tipo. void delay (long interval) Pausa o programa durante interval milisegundos. 3
Listagem 1: Exemplo de estrutura de código para o Arduino. void setup () { / Esta f u n ç ã o é chamada quando o programa começa. Ela basicamente define as ligações da placa. Além disso qualquer código de i n i c i a l i z a ç ã o deve ser inserido aqui. / } void loop () { / Aqui é onde o código principal deve f i c a r. Esta função f i c a sendo executada repetidamente. Ela deve l e r os sensores e atuar de acordo com os valores l i d o s. Ela somente para de executar quando o c i r c u i to for desligado. / } 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. 4
Referências [1] https://www.arduino.cc/. Accessed: 2015-08-30. [2] David Griffiths. Head first C. O Reilly, USA, 2012. 5