quinta-feira, 15 de dezembro de 2016

Exibindo a temperatura a partir de um NTC e LCD 16x2




INTRODUÇÃO:

Como atividade de conclusão do módulo III e, consequentemente, das atividades da disciplina de Algoritmos e Estruturas de Dados, avançamos com um projeto, cuja ideia era desenvolver, a partir dos conhecimentos adquiridos ao longo do semestre, uma atividade com o microcontrolador Arduino. O projeto desenvolvido pelo grupo consistia em um medir a temperatura ambiente, bem como as suas variações, a partir de um sensor e exibi-la em um display LCD.


COMPONENTES UTILIZADOS:

• Arduino Mega
• Protoboard
• NTC
• LCD 16x2
• Resistor 10kOhms
• Fios jumper


MONTAGEM DO PROJETO:

Para a montagem do projeto, foram montados dois circuitos independentes. O primeiro, como visto na imagem abaixo, é responsável por alimentar o NTC, que identifica a temperatura ambiente, cuja montagem é a mesma utilizada na atividade do módulo II., Já o segundo circuito alimenta o display LCD, que posteriormente imprimiria em seu visor o valor da temperatura identificado pelo NTC. Imagens das montagens do circuito podem ser vistas abaixo:

 (Ligação do NTC)

 (Ligação do LCD 16x2)

(Montagem do circuito)

(Montagem do circuito)


CÓDIGO:

O código utilizado na IDE do Arduino se assemelha bastante com o código utilizado na atividade do módulo II, cujo objetivo era medir a temperatura a partir do NTC e exibi-la no "Serial Monitor" do Arduino. A única diferença, nesse caso, está nos comandos do LCD, tal como lcd.print(temperature), cujo objetivo é exibir no LCD o valor da variável temperatura, captado pelo NTC.





VÍDEOS:







SERIAL.BEGIN

terça-feira, 13 de dezembro de 2016

Bóia de Nível


Tendo em vista os problemas de falta de água nos últimos anos o uso de sistemas de capitação da água da chuva tem sido muito procurado. Um sistema muito utilizado e o de cisternas que ficam no nível do solo pois se utiliza o telhado como área de capitação.
O nosso projeto se baseia em um sistema com uma chave de nível ativando motobombas. Assim podendo controlar um sistema de cisternas.
O sistema cisternas funciona da seguinte maneira:


Código:

//Método setup, executado uma vez ao ligar o Arduino.
void setup() {
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(btn1,INPUT);
  pinMode(btn2,INPUT);
  pinMode(btn3,INPUT);
}

//Método loop, executado enquanto o Arduino estiver ligado.
void loop() {

  s_btn1 = digitalRead(btn1);
  s_btn2 = digitalRead(btn2);
  s_btn3 = digitalRead(btn3);
 

  if (s_btn1 == HIGH) {
    digitalWrite(led1,HIGH);
    digitalWrite(led2,LOW);
    digitalWrite(led3,LOW);
  } else if(s_btn2 == HIGH){
    digitalWrite(led1,LOW);
    digitalWrite(led2,HIGH);
    digitalWrite(led3,LOW);
  } else if(s_btn3 == HIGH){
    digitalWrite(led1,LOW);
    digitalWrite(led2,LOW);
    digitalWrite(led3,HIGH);
  }    

}

Projeto:


Trabalho com Arduino - Módulo 3




Quando nos foi passado esse trabalho referente ao módulo 3, buscamos juntar o útil ao agradável, visto que já estávamos com um projeto envolvendo o arduino em andamento.

O nosso projeto visa controlar o acendimento de um led utilizando um Módulo RF por meio de transmissão e recepção. Tivemos bastante dificuldade no entendimento de algumas bibliotecas e funções do arduino, que até então eram desconhecidas para nós, como a do módulo (virtualwire), bibliotecaessa que descobrimos na internet. Porém, apesar da dificuldade, conseguimos executar o programa.


Circuito Arduino Módulo RF 433 MHz - Transmissor

Código Transmissão:


#include <VirtualWire.h>

//Define pinos Led e Botao
const int ledPin = 13;
const int pino_botao = A0;

int valor_botao;
char Valor_CharMsg[4]; 
//Armazena estado led = ligar/desligar
int estado = 0;

void setup() 
{
  Serial.begin(9600);   
  pinMode(ledPin,OUTPUT);
  pinMode(pino_botao,INPUT);
  //Pino ligado ao pino DATA do transmissor RF
  vw_set_tx_pin(4);
  //Velocidade de comunicacao (bits por segundo)
  vw_setup(5000);
  Serial.println("Trasmissao modulo RF - Acione o botao...");
}

void loop() 
{
  //Verifica o estado do push-button
  valor_botao = digitalRead(pino_botao);
  //itoa(valor_botao,Valor_CharMsg,10);
  
  //Caso o botao seja pressionado, envia dados
  if (valor_botao == 0)
  {
    //Altera o estado do led
    estado = !estado;
    //Converte valor para envio
    itoa(estado,Valor_CharMsg,10);
    //Liga o led da porta 13 para indicar envio dos dados
    digitalWrite(13, true);
    //Envio dos dados
    vw_send((uint8_t *)Valor_CharMsg, strlen(Valor_CharMsg));
    //Aguarda envio dos dados
    vw_wait_tx();
    //Desliga o led da porta 13 ao final da transmissao
    digitalWrite(13, false);
    Serial.print("Valor enviado: ");
    Serial.println(Valor_CharMsg);
    delay(500);
  }
}



Circuito Arduino Módulo RF 433 MHz - Receptor




Código Recepção:

#include <VirtualWire.h>

//Define pino led
int ledPin = 5;

int valor_recebido_RF;
char recebido_RF_char[4]; 

void setup() 
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
  //Pino ligado ao pino DATA do receptor RF
  vw_set_rx_pin(7);
  //Velocidade de comunicacao (bits por segundo)
  vw_setup(5000); 
  //Inicia a recepcao  
  vw_rx_start();
  Serial.println("Recepcao modulo RF - Aguardando...");
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
    
    if (vw_get_message(buf, &buflen)) 
    {
    int i;
        for (i = 0; i < buflen; i++)
       {            
          //Armazena os caracteres recebidos  
          recebido_RF_char[i] = char(buf[i]);
       }
       recebido_RF_char[buflen] = '\0';
       
       //Converte o valor recebido para integer
       valor_recebido_RF = atoi(recebido_RF_char);
         
       //Mostra no serial monitor o valor recebido
       Serial.print("Recebido: ");
       Serial.print(valor_recebido_RF);
       //Altera o estado do led conforme o numero recebido
       if (valor_recebido_RF == 1)
       {
         digitalWrite(ledPin, HIGH);
         Serial.println(" - Led aceso !");
       }
       if (valor_recebido_RF == 0)
       {
         digitalWrite(ledPin, LOW);
         Serial.println(" - Led apagado !");
       }
    }
}




Grupo G2
       

Controle de luz utilizando LDR

Controle de luz utilizando LDR


São dois circuitos:

- LDR 10k resistor de 10k

- Relé-Lâmpada

A FUNÇÃO DO ARDUÍNO: 

Fazer a interligação do dois circuitos.

COMO FUNCIONA:

LDR -> Arduino -> Relé-Lâmpada

-> O LDR é um sensor de luminosidade que vai captar a luminosidade do ambiente e tranformar ela em um valor de resistência;
-> O Arduino vai ler esse valor informado pelo LDR e vai colocar ele no parametro if do código:
-> Dependo do que o if retornar (verdadeiro ou faso) o Arduino vai emitir um sinal para o relé que irá ligar ou desligar a lâmpada;


(montagem e testes do circuito)

Para que não ocorresse interferência da luz gerada pela lâmpada sobre o LDR, foi direcionado o LDR para um lado oposto ao da lâmpada.

CIRCUITO EM FUNCIONAMENTO:



O circuito também poderia ser aprimorado para que o nível de luminosidade do ambiente possa ser alterado manualmente pelo Potenciômetro atravées de ajuste fino no próprio sistema. O potenciometro ficaria em série com o LDR.

CÓDIGO:



Créditos: GRUPO G1.