Índice:

Detector de temperatura e contador de passageiros da estrada de ferro do deserto: 5 etapas
Detector de temperatura e contador de passageiros da estrada de ferro do deserto: 5 etapas

Vídeo: Detector de temperatura e contador de passageiros da estrada de ferro do deserto: 5 etapas

Vídeo: Detector de temperatura e contador de passageiros da estrada de ferro do deserto: 5 etapas
Vídeo: NR-12 Acidente em torno 2024, Julho
Anonim
Detector de temperatura e contador de passageiros da estrada de ferro do deserto
Detector de temperatura e contador de passageiros da estrada de ferro do deserto

Propósito:

Temperatura: Este instrutível irá ensiná-lo a configurar e programar um Arduino RedBoard (usando o MATLAB) para detectar a temperatura de uma ferrovia. Quando uma temperatura insegura para os passageiros é atingida, uma mensagem de aviso soa, as campainhas disparam e um sinal de aviso acende.

Contador de passageiros: Esta parte irá ensiná-lo a usar um botão para contar os passageiros e soar um aviso quando a capacidade máxima for atingida.

Recursos:

  • Usa o botão para contar os passageiros que entram no trem
  • Usa TMP36 (sensor de temperatura) para detectar a temperatura da ferrovia
  • Usa uma luz LED vermelha para avisar a estação ferroviária
  • Usa campainhas para soar o alarme
  • Envia um e-mail de alerta com um gráfico de temperatura x tempo
  • Mensagens de aviso pop-up no MATLAB

Etapa 1: Materiais e suprimentos

Materiais e Suprimentos
Materiais e Suprimentos
  • 1 laptop
  • MATLAB 2017
  • Baixe o Arduino Toolbox
  • Sparkfun RedBoard
  • 1 cabo de alimentação
  • Breadbord
  • 14 fios
  • 1 Piezo Buzzer
  • 1 botão de pressão
  • 2 resistores de 10k ohm
  • 1 sensor TMP36
  • Luz LED vermelha
  • Sinal impresso em 3D (opcional)

Etapa 2: Configuração da placa

Configuração da placa
Configuração da placa

Siga a configuração acima

Etapa 3: escrever o código

Loop While: para garantir que o código continue testando a temperatura e sentindo o status do botão (pressionado ou não), colocamos o código no loop while por um período de tempo especificado.

Usando o TMP36: Determinamos a temperatura lendo a tensão e convertendo-a em graus Fahrenheit, usando fatores de conversão. Em seguida, usamos uma instrução if para reproduzir um tom e soar / enviar alertas se a temperatura for maior ou igual à temperatura máxima definida

Usando o botão: com uma instrução if, podemos testar se o botão foi pressionado usando readDigitalPin. Este comando retornará um Booleano (1 ou 0). Se a resposta for 0, o botão foi pressionado e o contador de passageiros aumenta e exibe uma mensagem de boas-vindas. Então, quando a capacidade máxima é atingida, uma mensagem de aviso soa.

Etapa 4: copie o código

% De entradas: pressionando o botão, sensor de temperatura

% De saídas: luzes, campainhas, alerta de áudio, e-mails, gráficos

% Objetivo: Este produto foi projetado para ajudar a garantir a segurança e o conforto dos passageiros viajando de trem pelo deserto.

% De uso: Detectando o número de passageiros usando um botão, e% detectando o calor usando um sensor de temperatura e fazendo um gráfico e enviando os números de passageiros e o gráfico de temperatura para a estação de trem

configurePin (a, 'D2', 'pullup'); % em versões futuras usam configurePin

tempo = 200;

e = 0;

x = 0

enquanto tempo> 0

button_status = readDigitalPin (a, 'D2'); % é igual a zero quando o botão é pressionado, caso contrário, é igual a 1

tensão = readVoltage (a, 'A0');% pino depende de onde o colocamos

tempCelcius = (voltagem * 100) -50; % fornecido no manual do sensor

tempF (tempo) = (tempCelcius * 1.8) +32% da fórmula de conversão conhecida

máx = 120; % graus F

writeDigitalPin (a, 'D11', 1);

rem = mod (e, 2);

se tempF (tempo)> = max

writeDigitalPin (a, 'D11', 0);

writeDigitalPin (a, 'D9', 1);

playTone (a, 'D9', 2400,.5)

pausa (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5)

pausa (.5)

writeDigitalPin (a, 'D9', 1);

playTone (a, 'D9', 2400,.5)

pausa (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5)% toca "sirene"

z = 'Superaquecimento.m4a'; % Isto coloca o arquivo de som em uma variável

[dados, freq] = leitura de áudio (z); % Carrega dados do arquivo de som

o = audioplayer (dados, freq); % Cria um objeto para controlar a reprodução do arquivo de áudio

o.play ()% Toca arquivo de áudio

o.playblocking ()% Toca o arquivo e espera que ele termine

fim

if button_status == 0 && rem == 0

e = e + 1

msgbox ('Bem-vindo a bordo!');

elseif button_status == 0 && rem == 1

e = e + 1

msgbox ('Bienvenido a bordo!');

fim

se e == 5

writeDigitalPin (a, 'D11', 0);

se x == 0

playTone (a, 'D6', 600, 1);

s = 'Warning_EF.m4a'; % Isto coloca o arquivo de som em uma variável

[dados, freq] = audioread (s); % Carrega dados do arquivo de som

o = audioplayer (dados, freq); % Cria um objeto para controlar a reprodução do arquivo de áudio

% o.play ()% Toca arquivo de áudio

o.playblocking ()% Toca o arquivo e espera que ele termine

msgbox ('Capacidade máxima')

x = x + 1

fim

elseif e> = 6

playTone (a, 'D6', 2400, 0);

fim

tempo = tempo - 1;

% pausa (0,1);

% se e == 5 && max (tempF)> = 120

% tempo = 0

% fim

fim

ee = num2str (e)

t = [1: 200];

tempF2 = fliplr (tempF);

plot (t, tempF2);

título ('Tempo vs. Temperatura')

ylabel ('Temperatura (F)')

xlabel ('Tempo (s)')

saveas (gcf, 'tempplot.jpg')

mail = '[email protected]'

senha = 'Srsora123 #'

host = 'smtp.gmail.com'

setpref ('Internet', 'SMTP_Server', host);

setpref ('Internet', 'E_mail', mail);

setpref ('Internet', 'SMTP_Username', mail);

setpref ('Internet', 'SMTP_Password', senha);

props = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'true');

props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');

props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail (mail, 'Hello Train Station! Existem tantos passageiros no trem', ee, 'tempplot.jpg')

Etapa 5: Resultados

Recomendado: