Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Helio Takeo Aisawa

Outro Portão automático RFId + Motor de Passo + sensor infravermelho

Recommended Posts

olá, estou fazendo uma programação de um portão automático com abertura por RFId + motor de passo e o sensor infravermelho que bloqueará o motor quando o veículo estiver passando pelo portão...

consegui fazer uma parte do programa o RFId + Motor de Passo, mas nçao consigo encaixar o sensror IR... alguém poderia me ajudar/?

segue o código até o momento...

 

#include <SPI.h>
#include <MFRC522.h>
#include <AccelStepper.h>
#define HALFSTEP 8
#define sensor 7          //Define sensor infra-vermelho como 7

// Definições do pino do motor
#define motorPin1  2     // IN1 on the ULN2003 driver 1
#define motorPin2  3     // IN2 on the ULN2003 driver 1
#define motorPin3  4     // IN3 on the ULN2003 driver 1
#define motorPin4  5     // IN4 on the ULN2003 driver 1

//Inicialize com a sequência de pinos IN1-IN3-IN2-IN4 para usar o AccelStepper com 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);

#define SS_PIN 10
#define RST_PIN 9
// Definicoes pino modulo RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); 

// Leds indicadores acesso liberado ou negado
int led_liberado = 6;
int led_negado = 1;

int pino_sensor = 7;
int estado_sensor = 0;

void setup() {
  pinMode(led_liberado, OUTPUT);
  pinMode(led_negado, OUTPUT);
  stepper1.setMaxSpeed(1000.0);
  stepper1.setAcceleration(100.0);
  stepper1.setSpeed(100);
  stepper1.moveTo(2048);           // definição do número de passos _ 1 volta= 2048 passos

  // Inicia a serial
  Serial.begin(9600);
  pinMode(sensor, INPUT); //Configura o pino 7 como entrada
  
  // Inicia  SPI bus
  SPI.begin();
  // Inicia MFRC522
  mfrc522.PCD_Init(); 
  // Mensagens iniciais no serial monitor
  Serial.println("Aproxime o seu cartao do leitor...");
  Serial.println();
  }//--(end setup )---

void loop() {
  
// Aguarda a aproximacao do cartao
  if ( ! mfrc522.PICC_IsNewCardPresent()) 
  {
    return;
  }
  // Seleciona um dos cartoes
  if ( ! mfrc522.PICC_ReadCardSerial()) 
  {
    return;
  }
  // Mostra UID na serial
  Serial.print("UID da tag :");
  String conteudo= "";
  byte letra;
  for (byte i = 0; i < mfrc522.uid.size; i++) 
  {
     Serial.print(mfrc522.uid.uidByte < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte, HEX);
     conteudo.concat(String(mfrc522.uid.uidByte < 0x10 ? " 0" : " "));
     conteudo.concat(String(mfrc522.uid.uidByte, HEX));
  }
  Serial.println();
  Serial.print("Mensagem : ");
  conteudo.toUpperCase();
  
  // Testa se o cartao1 foi lido
  if (conteudo.substring(1) == "9B 66 84 59"){
  //Muda a direção quando o stepper atinge a posição de destino
  stepper1.runToNewPosition(-2048);           // rotação sentido anti-horário

   Serial.println("Cartao1 - Acesso liberado !");
   Serial.println();
   delay(1000);
   {
    stepper1.runToNewPosition(2048);          // rotação sentido horário
    delay(2000);
    } 
 
   }
   

 

Editado por DiF
Botão CODE <>

Compartilhar este post


Link para o post
Compartilhar em outros sites

porquê-como-quando-onde está o sensor no seu programa? Não vejo no loop. Se não souberes nem isso, acho que precisas um pouco + de ajuda.

Uma alternativa seria por interrupção. Algum arduineiro pode te orientar como proceder. Ajudaria ele também se publicasses o esquema

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Boa tarde Isadora, obrigado pelo pronto atendimento...não a pus porque não sei programa-lá...

    você teria como me indicar um orientador para que eu possa desenvolver esse projeto?

    obrigado pela sua atenção.

     

    eu tenho esta seguinte citação no void loop...

    void loop() {

    estado_sensor = digitalRead(pino_sensor);
    if (estado_sensor == 0)

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    16 horas atrás, Helio Takeo Aisawa disse:

    não a pus porque não sei programa-lá...

    suspeitei desde o princípio...

     

    Baseando só nisso...

    Em 22/01/2018 às 11:03, Helio Takeo Aisawa disse:

    sensor infravermelho que bloqueará o motor quando o veículo estiver passando pelo portão...

    e nisso...

    16 horas atrás, Helio Takeo Aisawa disse:

    estado_sensor = digitalRead(pino_sensor);
    if (estado_sensor == 0)

    ..., penso que deves colocar o funcionamento do sistema baseado na condição do sensor. Algo como

    if (estado_sensor == 0)
    {
    faz_o_que_tem_que_fazer();
    }
    else
    {
    para_motor();//ou
    motor_home();//ou
    standby();//ou 
    algo_do_gênero();
    }

    Se achar que ctrl-c ctrl-v vai funcionar, receba um tradicional cascudo virtual e sério, precisa de + ajudas do que acha que precisas

    Registre-se: não programo arduínos. Alguém do ramo pode te ajudar melhor

    abç

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Olá, eu fiz da seguinte forma, coloquei um relé para desligar o motor...

    realmente desta forma o sensor funciona ao detectar o objeto, em seguida o relé desliga o motor e quando o sensor não capta mais o objeto, o relé não volta a funcionar...

    está correto a linha de raciocinio?

    segue a linha de programação, obrigado pela atenção:

     

      // Testa se o cartao1 foi lido
      if (conteudo.substring(1) == "9B 66 84 59"){
      //Muda a direção quando o stepper atinge a posição de destino
      stepper1.runToNewPosition(-2048);           // rotação sentido anti-horário

       Serial.println("Cartao1 - Acesso liberado !");
       Serial.println();
       delay(100);
       {
       estado_sensor = digitalRead(pino_sensor);
       if (estado_sensor == 0)
       {//Desligar Motor
       digitalWrite(pin1, LOW);
       // Envia mensagem para o Serial Monitor
       Serial.println("Movimento detectado!");
       delay(1000);}
       else   {
       // Ligar Motor
       digitalWrite(pin1, HIGH);
       }  
       stepper1.runToNewPosition(2048);          // rotação sentido horário
       delay(2000);
        } 
        }
       else {  
        Serial.println(" Accesso negado...!");
        delay(1000);
      } 
       stepper1.run();
    }

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Amigo motor de passo pra parar basta você parar de dar pulsos de passo pra ele. Nem precisa relé. Estou vendo stepper1.run. Por acaso existe algum stepper1.stop?

    Mas o relé pode ter seu lugar sim. P.ex. na alimentação do driver do stepmotor

     

    Tente fazer um fluxograma que contemple todas as condições do seu sistema. Ou até mesmo algo mais simples como um pseudo código algo como

    inicia()

    loop

    verifica_cartão()

    verfica_se_tem_carro_atraves_do_sensor()

    volta_ao loop

    Descrevi bem simples mesmo pois o sistema de estar na sua cabeça ok?

     

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×