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
 
(18 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 2: Linha 2:
[[MIC2| << Página do curso ]]  
[[MIC2| << Página do curso ]]  


----------------
=Trabalho Ana Paula=
==Protótipo==
===Hardware/Eletrônica===
===Partes Mecânicas===
==Firmware==


----------------
----------------
=Trabalho Davi=
=AULA DE PROJETO 2=
 
==Protótipo==
 
[[image: MIC2Proj2Davi.png|center]]
 
===Hardware/Eletrônica===
 
===Partes Mecânicas===
 
[  Projeto 2 Alimentador de peixes Davi]
 
==Firmware==
 
---------------
 
=Trabalho Júlia=
 
==Protótipo==
 
===Hardware/Eletrônica===


[[image: MIC2Proj2Julia.png|center]]
==TEMA PROPOSTO: ''Sistema de monitoramento de horta'' - HORTA MICROCONTROLADA==


===Partes Mecânicas===


Vídeos do dispositivo:
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.


[https://www.youtube.com/watch?v=4sYeGSxLtCQ  Parte 1]
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.


[https://www.youtube.com/watch?v=mCwHZBoE7Hs  Parte 2]
O sistema também poderá fazer armazenamento em memória e traçado dos parâmetros, em display.


==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 Nelson=
==ESPECIFICAÇÕES DE PROJETO==


==Protótipo==


[[image: MIC2Proj2Nelson.png|center]]
===TEMPO DE PROJETO:===


===Hardware/Eletrônica===
'''A apresentação deverá ser feita, impreterivelmente, das 13:30h até às 16:00h do dia <u>06/02/25</u>'''.


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


==Firmware==
===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!
=Trabalho Thiago=


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


[[image: MIC2Proj2Thiago.png|center]]
Todo componente perdido ou avariado deverá ser, obrigatoriamente, substituído pelo aluno, sob pena de ser reprovado na disciplina, por comportamento inapropriado.


===Hardware/Eletrônica===


[https://photos.app.goo.gl/M98G3ZXSBWFQRawB6  Projeto 2 Alimentador de peixes Thiago]
===ESPECIFICAÇÕES DO PROTÓTIPO:===


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


==Firmware==
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.


  #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==
===APRESENTAÇÃO:===


===Hardware/Eletrônica===
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.


===Partes Mecânicas===
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.




==Firmware==
==AVALIAÇÃO==




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 534: 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 >