AULA 11 - Microcontroladores - Eng: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
imported>Fargoud
Sem resumo de edição
 
(11 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 4: Linha 4:


----------------
----------------
=Trabalho Bernardo =
=AULA DE PROJETO 2=


==Protótipo==
==TEMA PROPOSTO: ''Sistema de monitoramento de horta'' - HORTA MICROCONTROLADA==


Construído com motor de passo e controlado por IR/controle remoto


[https://drive.google.com/file/d/1HqMIbjNGdu6Z450rAH8eF7w19jGAKLfs/view?usp=sharing  Vídeo do protótipo]
O aluno deverá projetar, construir e apresentar (código e ''hardware'') um sistema de monitoramento de um ou mais parâmetros relacionados à cultivo de plantas (temperatura, umidade do solo, umidade do ar, luminosidade, cor das folhas, reflexão da luz, etc) e alguma intervenção em função destes parâmetros.


==Firmware==
O arduino lerá valor(es) de sensor(es) e, de acordo com padrões pré-estabelecidos, poderá fazer irrigação, aquecimento, resfriamento, abertura ou fechamento de coberturas, portas, etc, para melhorar as condições da horta.


#include <Stepper.h>
O sistema também poderá fazer armazenamento em memória e traçado dos parâmetros, em display.
#include <IRremote.h>
// Definição de Pinos
#define STEPS 512
#define pinLed2 53
#define pinLed 34
#define RECV_PIN 32
#define pinBuzzer 30
#define pinIN4 28
#define pinIN3 26
#define pinIN2 24
#define pinIN1 22
// Definição de Objetos
IRrecv irrecv(RECV_PIN); //PASSA O PARÂMETRO PARA A FUNÇÃO irrecv
decode_results results; //VARIÁVEL QUE ARMAZENA OS RESULTADOS (SINAL IR RECEBIDO)
Stepper stepper(STEPS, pinIN1, pinIN2, pinIN3, pinIN4);
// Prototipagem de funções
void piscaled(); void apito(); void lerIr(); void automatico();
// Definição de variáveis
int vel = 30, meiavolta = 1024, tempo = 0, armazenatempo = 0, timer = 8000;
// respectivamente, a velocidade de rotação do stepper, o valor que faz ele rotacionar 180º, variavel para
comparação de tempo, variavel para armazenamento de tempo, tempo em milisegundos.
bool estado;
// variável de estado, para pushbutton, da função timer
void setup() {
  stepper.setSpeed(vel);
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(pinBuzzer, OUTPUT);
  pinMode(pinLed, OUTPUT);
  pinMode(pinLed2, OUTPUT);
}
void loop() {
  lerIr(); // FUNÇÃO DE LEITURA DOS COMANDOS DO CONTROLE
  automatico(); // FUNÇÃO DE ALIMENTAÇÃO AUTOMATICA
}
void apito() {
  for (int i = 0; i < 3; i++) { // SOA O BUZZER, CONFIRMANDO O ABASTECIMENTO DE ALIMENTO
    digitalWrite(pinBuzzer, HIGH);
    delay(100);
    digitalWrite(pinBuzzer, LOW);
    delay(100);
  }
}
void piscaled() { // PISCA O LED AZUL DUAS VEZES, CONFIRMAR RECEBIMENTO DE SINAL.
  digitalWrite(pinLed, HIGH);
  delay(50);
  digitalWrite(pinLed, LOW);
  delay(50);
  digitalWrite(pinLed, HIGH);
  delay(50);
  digitalWrite(pinLed, LOW);
  delay(50);
}
void lerIr() {
  if (irrecv.decode(&results)) {
    if (results.value == 0xFFC23D || results.value == 0x5BFA89D3) { //QUANDO ESSES VALORES FOREM LIDOS DO
CONTROLE, EXECUTAM A FUNÇÃO DE DAR COMIDA
      Serial.println("PLAY | DAR COMIDA");
      piscaled();
      stepper.step(meiavolta);
      delay(1000);
      stepper.step(meiavolta);
      delay(1000);
      apito();
    }
    if (results.value == 0xFFA857 || results.value == 0x6E570BF3) { //QUANDO ESSES VALORES FOREM LIDOS DO 
CONTROLE, EXECUTAM A FUNÇÃO DE AUMENTAR O TIMER EM 1 SEG
      Serial.println("VOLUME+ | AUMENTAR TIMER");
      timer = timer + 1000;
      piscaled();
    }
    if (results.value == 0xFFE01F || results.value == 0xA166B553) { //QUANDO ESSES VALORES FOREM LIDOS DO
CONTROLE, EXECUTAM A FUNÇÃO DE DIMINUIR O TIMER EM 1 SEG
      Serial.println("VOLUME- | DIMINUIR TIMER");
      timer = timer - 1000;
      piscaled();
    }
    if (results.value == 0xFF629D || results.value == 0x51AA59D3) { //QUANDO ESSES VALORES FOREM LIDOS DO
CONTROLE, O MOTOR DÁ UM PEQUENO PASSO PARA REAJUSTE DO EIXO
      Serial.println("CH | PEQUENO PASSO PARA REAJUSTE");
      piscaled();
      stepper.step(64);
    }
    if (results.value == 0xFF4AB5 || results.value == 0x8010D93) { //QUANDO ESSES VALORES FOREM LIDOS DO CONTROLE,
LIGA A FUNÇÃO TIMER
      Serial.println("8 | LIGAR TIMER");
      if (!estado) { // SE  O ESTADO FOR 0, ELE ZERA O TEMPO DE COMPARAÇÃO, ARMAZENA O TEMPO DE EXECUÇÃO
MOMENTANEO, E MUDA ESTADO PARA "HIGH"
        tempo = 0;
        armazenatempo = millis();
        estado = !estado;
        digitalWrite(pinLed2, estado); // LED VERMELHO, CONFIRMA A LIGAÇÃO DA FUNÇÃO TIMER
      } else {
        estado = !estado; // ESSA PARTE SERVE PARA CASO VOCÊ QUEIRA DESATIVAR O TIMER, DESLIGANDO TAMBÉM O LED.
        digitalWrite(pinLed2, estado);
      }
      piscaled();


    }
    if (results.value == 0xFFA25D || results.value == 0xCC718833) {
      Serial.println("CH- | DIMINUIR VELOCIDADE DO PASSO"); //QUANDO ESSES VALORES FOREM LIDOS DO CONTROLE,
DIMINUI VELOCIDADE DO MOTOR, AUMENTA A PRECISÃO DO MOTOR E AUMENTA A QUANTIDADE DE RAÇÃO.
      piscaled();
      if (vel > 5) {
        vel = vel - 5;
        stepper.setSpeed(vel);
      }
      Serial.println(vel);
    }
    if (results.value == 0xFFE21D || results.value == 0xB5A7E1D7) {
      Serial.println("CH+ | AUMENTAR VELOCIDADE DO PASSO"); //QUANDO ESSES VALORES FOREM LIDOS DO CONTROLE,
AUMENTA A VELOCIDADE DO MOTOR, MAS DEIXA O SISTEMA MAIS INSTAVEL
      piscaled();
      if (vel < 60) {
        vel = vel + 5;
        stepper.setSpeed(vel);
      }
      Serial.println(vel);
    }
    // ESSAS FUNÇÕES DE AJUSTE, CH, CH+, CH- EXISTEM, POIS O MOTOR RESPONDE DIFERENTE A CADA NIVEL DE TENSÃO (5-
12V).
    irrecv.resume(); //AGUARDA O RECEBIMENTO DE UM NOVO SINAL IR
  }
}
void automatico() {  // ESSA FUNÇÃO IRA DEPOSITAR O ALIMENTO, QUANDO ESTIVER LIGADA A FUNÇÃO TIMER, ASSIM, A CADA
TEMPO DE TIMER (AJUSTÁVEL) IRÁ ALIMENTAR.
  tempo = millis() - armazenatempo; // TEMPO DE EXECUÇÃO ATUAL MENOS O TEMPO DE EXECUÇÃO ARMAZENADO.
  if (tempo > timer && estado) { // QUANDO O TEMPO DE COMPARAÇÃO FOR MAIOR QUE O TEMPO DO TIMER, E A FUNÇÃO TIMER
ESTIVER LIGADA, EXECUTA A ALIMENTAÇÃO.
    stepper.step(meiavolta);
    delay(1000);
    stepper.step(meiavolta);
    delay(1000);
    armazenatempo = millis(); // ARMAZENA O TEMPO DE EXECUÇÃO ATUAL, MANTENDO A ALIMENTAÇÃO AUTOMATICA.
    apito();
  }
}


---------------


=Trabalho Júlia=
==ESPECIFICAÇÕES DE PROJETO==


==Protótipo==


===Hardware/Eletrônica===
===TEMPO DE PROJETO:===  


[[image: MIC2Proj2Julia.png|center]]
'''A apresentação deverá ser feita, impreterivelmente, das 13:30h até às 16:00h do dia <u>06/02/25</u>'''.


===Partes Mecânicas===


Vídeos do dispositivo:
===COMPONENTES:===


[https://www.youtube.com/watch?v=4sYeGSxLtCQ  Parte 1]
O aluno pode adquirir seus próprios componentes e materiais, ou solicitar uma lista de componentes ao Almoxarifado do Curso, com Wagner ou Rafael, com antecedência mínima de 48 h, com relação ao dia da apresentação!


[https://www.youtube.com/watch?v=mCwHZBoE7Hs  Parte 2]
Componentes solicitados após o prazo terão que ser adquiridos pelo próprio aluno.  


==Firmware==
Todo componente perdido ou avariado deverá ser, obrigatoriamente, substituído pelo aluno, sob pena de ser reprovado na disciplina, por comportamento inapropriado.


  #include <LiquidCrystal.h> //Inclui biblioteca do LCD
  #include <Stepper.h>
   
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  const int stepsPerRevolution = 500;
  //Inicializa a biblioteca utilizando as portas de 8,9,10 e 13 para
  //ligacao ao motor
  Stepper myStepper(stepsPerRevolution, 8,10,9,13); 
 
  int segundo,minuto,hora,dia,mes,ano;
  unsigned long UtlTime;
 
  void setup(){
  //Determina a velocidade inicial do motor
    myStepper.setSpeed(60);
   
    //Para o LCD
    UtlTime=0; 
    minuto=0; 
    hora=0; 
    dia=0; 
    mes=0; 
    ano=0; 
    Serial.begin(9600);
    lcd.begin(16, 2);     
   
    lcd.setCursor(0,0); 
    lcd.print(" Data e hora "); 
    lcd.setCursor(0,1); 
    lcd.print(" com Arduino"); 
    delay (2000);
 
    //Configura o minuto 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Minuto: "); 
    Serial.print("\nEntre Minuto:"); 
    while(minuto==0){   
      if (Serial.available() > 0){     
      minuto= Serial.parseInt();
      Serial.print(minuto);   
      } 
    } 
    lcd.print(minuto); 
    delay(1000);
    //Configura a hora 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Hora: "); 
    Serial.print("\nEntre Hora:");
    while(hora==0){   
      if (Serial.available() > 0){     
      hora= Serial.parseInt();
      Serial.print(hora);   
      } 
    } 
    lcd.print(hora); 
    delay(1000);
    //Configura o Dia 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Dia: "); 
    Serial.print("\nEntre Dia:"); 
    while(dia==0) 
    {   
      if (Serial.available() > 0){     
        dia= Serial.parseInt();
        Serial.print(dia);   
      } 
    } 
    lcd.print(dia); 
    delay(1000);   
   
    //Configura o mês 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Mes: "); 
    Serial.print("\nEntre Mes:"); 
    while(mes==0) 
    {   
      if (Serial.available() > 0){     
        mes= Serial.parseInt();
        Serial.print(mes);   
      } 
    } 
    lcd.print(mes); 
    delay(1000);   
   
    //Configura o Ano 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Ano: "); 
    Serial.print("\nEntre ano:"); 
    while(ano==0){   
      if (Serial.available() > 0){     
        ano= Serial.parseInt();
        Serial.print(ano);   
      } 
    } 
    lcd.print(ano); 
    delay(1000);   
    lcd.clear();
  }
 
  void EscreveDataHora(){ 
    if(millis()-UtlTime<0){   
      UtlTime=millis(); 
    } 
    else{   
      segundo=int((millis()-UtlTime)/1000); 
    } 
    if(segundo>59){   
      segundo=00;
      lcd.clear();   
      minuto++;   
      UtlTime=millis();   
      if(minuto>59){     
        hora++;
        lcd.clear();     
        minuto=00;     
        if(hora>23){       
          dia++;       
          hora=00;       
          if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12){         
            if(dia>31){           
              dia=1;           
              mes++;           
              if(mes>12){             
              ano++;             
              mes=1;           
              }
            }     
          }       
        else if(mes==2){         
          if(ano%400==0){           
            if(dia>29){             
              dia=1;             
              mes++;           
            }         
          }       
            else if((ano%4==0)&&(ano%100!=0)){           
              if(dia>29){             
                dia=1;             
                mes++;           
              }         
            }         
            else{           
              if(dia>28){             
                dia=1;             
                mes++;           
              }         
            }       
          }       
        else{         
          if(dia>30){           
            dia=1;           
            mes++;         
          }       
        }     
      }   
    } 
  }   
    lcd.setCursor(0,0); 
    lcd.print("Data "); 
    lcd.print(dia); 
    lcd.print("/"); 
    lcd.print(mes); 
    lcd.print("/"); 
    lcd.print(ano); 
    lcd.setCursor(0,1); 
    lcd.print("Hora "); 
    lcd.print(hora); 
    lcd.print(":"); 
    lcd.print(minuto); 
    lcd.print(":"); 
    lcd.print(segundo);
  }
  void SelecionaHoraAlimentaPET(){
    //Seleciona a hora da refeição
    int h=15;
    //Seleciona os minutos da refeição
    int m=15;
     
    //Mostra no DISPLAY
    if(hora==h&&minuto==m&&segundo>=30){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(" Hora da racao ");
      lcd.setCursor(0,1);
      lcd.print(" Bom apetite! ");
      //Liga o motor
      LigaMotor();
    }
    else{
      lcd.clear();
      EscreveDataHora();
    }
  }
  void LigaMotor(){
  //O motor faz 2 giros completos
  for (int i = 0; i<=2; i++)
  {
    myStepper.step(2048);
    delay(2000);
  }
  delay(2000);
}
 
  void loop(){
    EscreveDataHora();
    SelecionaHoraAlimentaPET();
  }
---------------


=Trabalho Nelson=
===ESPECIFICAÇÕES DO PROTÓTIPO:===  


==Protótipo==
Com exceção do display e teclado, todo restante do ''hardware'' deverá ser desenvolvido pelo próprio aluno.


[[image: MIC2Proj2Nelson.png|center]]
O ''firmware'' poderá conter partes de códigos de outrem, mas deverá, obrigatoriamente, conter pelo menos 50% de código de autoria do próprio aluno.


===Hardware/Eletrônica===
Não é imprescindível que o protótipo funcione, mas a coerência no desenvolvimento, e habilidade em aproveitar o que foi aprendido nas aulas anteriores serão avaliadas.


===Partes Mecânicas===
[  Projeto 2 Alimentador de gatos Nelson]


==Firmware==


-------------------
===APRESENTAÇÃO:===
=Trabalho Thiago=


==Protótipo==
Cada aluno disporá de ate 40 min para montar e apresentar seu protótipo, durante a Aula de Apresentação. Este deverá explicar as dificuldades que encontrou, e as soluções que aplicou para lidar com estas dificuldades.


[[image: MIC2Proj2Thiago1.png|center]]
Os demais alunos devem utilizar esta oportunidade para aprender com o trabalho do colega, e a frequência e comportamento perante a apresentação dos outros também será avaliada.
[[image: MIC2Proj2Thiago2.png|center]]


===Hardware/Eletrônica===
Por fim, o aluno deverá sugerir utilizações práticas para seu protótipo e aprimoramentos neste, de forma que sua funcionalidade e aplicabilidades sejam incrementadas.


[https://photos.app.goo.gl/M98G3ZXSBWFQRawB6  Vídeo Projeto 2 Alimentador de peixes Thiago]


===Partes Mecânicas===
==AVALIAÇÃO==
 
==Firmware==
 
 
  #include <LiquidCrystal.h> //Inclui biblioteca do LCD
  #include <Stepper.h>
     
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  const int stepsPerRevolution = 500;
  //Inicializa a biblioteca utilizando as portas de 8,9,10 e 13 para
  //ligacao ao motor
  Stepper myStepper(stepsPerRevolution, 8,10,9,13); 
 
  int segundo,minuto,hora,dia,mes,ano;
  unsigned long UtlTime;
 
  void setup(){
  //Determina a velocidade inicial do motor
    myStepper.setSpeed(60);
   
    //Para o LCD
    UtlTime=0; 
    minuto=0; 
    hora=0; 
    dia=0; 
    mes=0; 
    ano=0; 
    Serial.begin(9600);
    lcd.begin(16, 2);     
   
    lcd.setCursor(0,0); 
    lcd.print(" Data e hora "); 
    lcd.setCursor(0,1); 
    lcd.print(" com Arduino"); 
    delay (2000);
 
    //Configura o minuto 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Minuto: "); 
    Serial.print("\nEntre Minuto:"); 
    while(minuto==0){   
      if (Serial.available() > 0){     
      minuto= Serial.parseInt();
      Serial.print(minuto);   
      } 
    } 
    lcd.print(minuto); 
    delay(1000);
    //Configura a hora 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Hora: "); 
    Serial.print("\nEntre Hora:");
    while(hora==0){   
      if (Serial.available() > 0){     
      hora= Serial.parseInt();
      Serial.print(hora);   
      } 
    } 
    lcd.print(hora); 
    delay(1000);
 
    //Configura o Dia 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Dia: "); 
    Serial.print("\nEntre Dia:"); 
    while(dia==0) 
    {   
      if (Serial.available() > 0){     
        dia= Serial.parseInt();
        Serial.print(dia);   
      } 
    } 
    lcd.print(dia); 
    delay(1000);   
   
    //Configura o mês 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Mes: "); 
    Serial.print("\nEntre Mes:"); 
    while(mes==0) 
    {   
      if (Serial.available() > 0){     
        mes= Serial.parseInt();
        Serial.print(mes);   
      } 
    } 
    lcd.print(mes); 
    delay(1000);   
   
    //Configura o Ano 
    lcd.clear(); 
    lcd.setCursor(0,0); 
    lcd.print("Ano: "); 
    Serial.print("\nEntre ano:"); 
    while(ano==0){   
      if (Serial.available() > 0){     
        ano= Serial.parseInt();
        Serial.print(ano);   
      } 
    } 
    lcd.print(ano); 
    delay(1000);   
    lcd.clear();
  }
 
  void EscreveDataHora(){ 
    if(millis()-UtlTime<0){   
      UtlTime=millis(); 
    } 
    else{   
      segundo=int((millis()-UtlTime)/1000); 
    } 
    if(segundo>59){   
      segundo=00;
      lcd.clear();   
      minuto++;   
      UtlTime=millis();   
      if(minuto>59){     
        hora++;
        lcd.clear();     
        minuto=00;     
        if(hora>23){       
          dia++;       
          hora=00;       
          if(mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12){         
            if(dia>31){           
              dia=1;           
              mes++;           
              if(mes>12){             
              ano++;             
              mes=1;           
              }
            }     
          }       
        else if(mes==2){         
          if(ano%400==0){           
            if(dia>29){             
              dia=1;             
              mes++;           
            }         
          }       
            else if((ano%4==0)&&(ano%100!=0)){           
              if(dia>29){             
                dia=1;             
                mes++;           
              }         
            }         
            else{           
              if(dia>28){             
                dia=1;             
                mes++;           
              }         
            }       
          }       
        else{         
          if(dia>30){           
            dia=1;           
            mes++;         
          }       
        }     
      }   
    } 
  }   
    lcd.setCursor(0,0); 
    lcd.print("Data "); 
    lcd.print(dia); 
    lcd.print("/"); 
    lcd.print(mes); 
    lcd.print("/"); 
    lcd.print(ano); 
    lcd.setCursor(0,1); 
    lcd.print("Hora "); 
    lcd.print(hora); 
    lcd.print(":"); 
    lcd.print(minuto); 
    lcd.print(":"); 
    lcd.print(segundo);
  }
 
  void SelecionaHoraAlimentaPET(){
    //Seleciona a hora da refeição
    int h=15;
    //Seleciona os minutos da refeição
    int m=15;
   
    //Mostra no DISPLAY
    if(hora==h&&minuto==m&&segundo>=30){
      lcd.clear();
      lcd.setCursor(0,0);
      lcd.print(" Hora da racao ");
      lcd.setCursor(0,1);
      lcd.print(" Bom apetite! ");
      //Liga o motor
      LigaMotor();
    }
    else{
      lcd.clear();
      EscreveDataHora();
    }
  }
  void LigaMotor(){
  //O motor faz 2 giros completos
  for (int i = 0; i<=2; i++)
  {
    myStepper.step(2048);
    delay(2000);
  }
  delay(2000);
}
 
  void loop(){
    EscreveDataHora();
    SelecionaHoraAlimentaPET();
  }
------------
 
=Trabalho Vitor=
 
==Protótipo==
 
===Hardware/Eletrônica===
 
===Partes Mecânicas===
 
 
 
==Firmware==




O aluno será avaliado da seguinte maneira:


# Qualidade do protótipo - '''PESO 4''' - será avaliado, principalmente, o empenho do aluno em propor soluções criativas, complexas e interessantes. O funcionamento do protótipo é desejável, mas não imprescindível. A professora vai tentar quantificar o número de horas despendidas no projeto, por meio da complexidade do ''hardware'' e ''firmware'' apresentados.
# Organização - '''PESO 3''' - organização e disciplina são imprescindíveis para um profissional da área de TI. Será avaliada a capacidade do aluno em gerenciar seu tempo e seu projeto, especificando prazos e metas para o atingimento de seus objetivos.
# Apresentação - '''PESO 3''' - seja como empregado de uma empresa de TI, seja como aluno de um programa de pós-graduação, seja como empresário, um profissional de Engenharia deve saber apresentar seu produto/projeto. Assim, a professora vai avaliar o entusiasmo e empenho do aluno em defender seu projeto, nos aspectos técnico e pessoal.


Material auxiliar: [https://www.sta-eletronica.com.br/artigos/arduinos/utilizando-o-modulo-rfid-com-o-arduino-uno Utilizando o módulo RFID]




Linha 670: Linha 71:
{| border="1" cellpadding="5" cellspacing="0"  
{| border="1" cellpadding="5" cellspacing="0"  
! style="background: #cdc5bf;" | [[AULA 10 - Microcontroladores - Eng| < Projeto 2 - Alimentador automático de ''pets'']]  
! style="background: #cdc5bf;" | [[AULA 10 - Microcontroladores - Eng| < Projeto 2 - Alimentador automático de ''pets'']]  
! style="background: #cdc5bf;" | AULA 11 -  Projeto 2 - Protótipos dos Alunos - Apresentação
! style="background: #cdc5bf;" | AULA 11 -  Projeto 2 - Apresentação
! style="background: #cdc5bf;" | [[AULA 12 - Microcontroladores - Eng| Projeto 3 - Sistema de segurança residencial > ]]
! style="background: #cdc5bf;" | [[AULA 12 - Microcontroladores - Eng| Projeto 3 - Sistema de segurança residencial > ]]
|}
|}

Edição atual tal como às 14h40min de 5 de dezembro de 2024

<< Página do curso



AULA DE PROJETO 2

TEMA PROPOSTO: Sistema de monitoramento de horta - HORTA MICROCONTROLADA

O aluno deverá projetar, construir e apresentar (código e hardware) um sistema de monitoramento de um ou mais parâmetros relacionados à cultivo de plantas (temperatura, umidade do solo, umidade do ar, luminosidade, cor das folhas, reflexão da luz, etc) e alguma intervenção em função destes parâmetros.

O arduino lerá valor(es) de sensor(es) e, de acordo com padrões pré-estabelecidos, poderá fazer irrigação, aquecimento, resfriamento, abertura ou fechamento de coberturas, portas, etc, para melhorar as condições da horta.

O sistema também poderá fazer armazenamento em memória e traçado dos parâmetros, em display.


ESPECIFICAÇÕES DE PROJETO

TEMPO DE PROJETO:

A apresentação deverá ser feita, impreterivelmente, das 13:30h até às 16:00h do dia 06/02/25.


COMPONENTES:

O aluno pode adquirir seus próprios componentes e materiais, ou solicitar uma lista de componentes ao Almoxarifado do Curso, com Wagner ou Rafael, com antecedência mínima de 48 h, com relação ao dia da apresentação!

Componentes solicitados após o prazo terão que ser adquiridos pelo próprio aluno.

Todo componente perdido ou avariado deverá ser, obrigatoriamente, substituído pelo aluno, sob pena de ser reprovado na disciplina, por comportamento inapropriado.


ESPECIFICAÇÕES DO PROTÓTIPO:

Com exceção do display e teclado, todo restante do hardware deverá ser desenvolvido pelo próprio aluno.

O firmware poderá conter partes de códigos de outrem, mas deverá, obrigatoriamente, conter pelo menos 50% de código de autoria do próprio aluno.

Não é imprescindível que o protótipo funcione, mas a coerência no desenvolvimento, e habilidade em aproveitar o que foi aprendido nas aulas anteriores serão avaliadas.


APRESENTAÇÃO:

Cada aluno disporá de ate 40 min para montar e apresentar seu protótipo, durante a Aula de Apresentação. Este deverá explicar as dificuldades que encontrou, e as soluções que aplicou para lidar com estas dificuldades.

Os demais alunos devem utilizar esta oportunidade para aprender com o trabalho do colega, e a frequência e comportamento perante a apresentação dos outros também será avaliada.

Por fim, o aluno deverá sugerir utilizações práticas para seu protótipo e aprimoramentos neste, de forma que sua funcionalidade e aplicabilidades sejam incrementadas.


AVALIAÇÃO

O aluno será avaliado da seguinte maneira:

  1. Qualidade do protótipo - PESO 4 - será avaliado, principalmente, o empenho do aluno em propor soluções criativas, complexas e interessantes. O funcionamento do protótipo é desejável, mas não imprescindível. A professora vai tentar quantificar o número de horas despendidas no projeto, por meio da complexidade do hardware e firmware apresentados.
  2. Organização - PESO 3 - organização e disciplina são imprescindíveis para um profissional da área de TI. Será avaliada a capacidade do aluno em gerenciar seu tempo e seu projeto, especificando prazos e metas para o atingimento de seus objetivos.
  3. Apresentação - PESO 3 - seja como empregado de uma empresa de TI, seja como aluno de um programa de pós-graduação, seja como empresário, um profissional de Engenharia deve saber apresentar seu produto/projeto. Assim, a professora vai avaliar o entusiasmo e empenho do aluno em defender seu projeto, nos aspectos técnico e pessoal.

Material auxiliar: Utilizando o módulo RFID



<< Página do curso

< Projeto 2 - Alimentador automático de pets AULA 11 - Projeto 2 - Apresentação Projeto 3 - Sistema de segurança residencial >