Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03
Na sociedade moderna, um aumento no número de passageiros ferroviários significa que as empresas ferroviárias devem fazer mais para otimizar as redes para atender à demanda. Neste projeto, mostraremos em pequena escala como os sensores de temperatura, água da chuva e vibração em uma placa Arduino podem potencialmente ajudar a aumentar a segurança dos passageiros.
Este Instructable mostrará passo a passo a fiação para os sensores de temperatura, água da chuva e vibração no arduino, bem como mostrará o código MATLAB necessário para executar esses sensores.
Etapa 1: peças e materiais
1. Um computador com a versão mais recente do MATLAB instalada
2. Placa Arduino
3. Sensor de temperatura
4. Sensor de água da chuva
5. Sensor de vibração
6. luz LED vermelha
7. luz LED azul
8. Luz LED Verde
9. RBG LED Light
10. Campainha
11. 18 fios macho-macho
12. 3 fios fêmea-macho
13. 2 fios fêmea-fêmea
14. 6 resistores de 330 ohm
15. 1 resistor de 100 ohm
Etapa 2: Fiação do sensor de temperatura
Acima está a fiação e o código MATLAB para a entrada do sensor de temperatura também.
Os fios do terra e 5V só precisam passar para o negativo e o positivo, respectivamente, uma vez para toda a placa. De agora em diante, todas as conexões de aterramento virão da coluna negativa e quaisquer conexões de 5 V virão da coluna positiva.
O código abaixo pode ser copiado e colado para o sensor de temperatura.
%% SENSOR DE TEMPERATURA% Para o sensor de temperatura, usamos a seguinte fonte junto com
% Material do site EF230 para modificar nosso sensor de temperatura para permitir ao usuário
% de entrada e 3 saídas de luz LED com um gráfico.
% Este esboço foi escrito por SparkFun Electronics, % com muita ajuda da comunidade Arduino.
% Adaptado para MATLAB por Eric Davishahl.
% Visite https://learn.sparkfun.com/products/2 para obter informações sobre SIK.
limpar tudo, clc
tempPin = 'A0'; % Declarando o pino analógico conectado ao sensor de temperatura
a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno');
% Definir função anônima que converte a tensão em temperatura
tempCfromVolts = @ (volts) (volts-0,5) * 100;
amostragemDuração = 30;
samplingInterval = 2; % Segundos entre as leituras de temperatura
% definir vetor de tempos de amostragem
samplingTimes = 0: samplingInterval: samplingDuration;
% calcula o número de amostras com base na duração e no intervalo
numSamples = comprimento (samplingTimes);
% pré-alocar variáveis temporárias e variáveis para o número de leituras que irá armazenar
tempC = zeros (numSamples, 1);
tempF = tempC;
% usando a caixa de diálogo de entrada para armazenar as temperaturas máximas e mínimas do trilho
dlg_prompts = {'Insira a temperatura máxima', 'Insira a temperatura mínima'};
dlg_title = 'Intervalos de temperatura do trilho';
N = 22;
dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, comprimento (dlg_title) + N]);
% Armazenando as entradas do usuário e exibindo que a entrada foi gravada
max_temp = str2double (dlg_ans {1})
min_temp = str2double (dlg_ans {2})
txt = sprintf ('Sua entrada foi gravada');
h = msgbox (txt);
waitfor (h);
% Para que o loop leia as temperaturas um número específico de vezes.
para índice = 1: numSamples
% Leia a tensão em tempPin e armazene como volts variáveis
volts = readVoltage (a, tempPin);
tempC (índice) = tempCfromVolts (volts);
tempF (índice) = tempC (índice) * 9/5 + 32; % Converter de Celsius para Fahrenheit
% Se as declarações para fazer luzes LED específicas piscarem dependendo de qual condição for atendida
if tempF (índice)> = max_temp% LED vermelho
writeDigitalPin (a, 'D13', 0);
pausa (0,5);
writeDigitalPin (a, 'D13', 1);
pausa (0,5);
writeDigitalPin (a, 'D13', 0);
elseif tempF (índice)> = min_temp && tempF (índice) <max_temp% LED verde
writeDigitalPin (a, 'D11', 0);
pausa (0,5);
writeDigitalPin (a, 'D11', 1);
pausa (0,5);
writeDigitalPin (a, 'D11', 0);
elseif tempF (índice) <= min_temp% LED azul
writeDigitalPin (a, 'D12', 0);
pausa (0,5);
writeDigitalPin (a, 'D12', 1);
pausa (0,5);
writeDigitalPin (a, 'D12', 0);
fim
% Exibe as temperaturas à medida que são medidas
fprintf ('A temperatura em% d segundos é% 5.2f C ou% 5.2f F. / n',…
samplingTimes (índice), tempC (índice), tempF (índice));
pause (samplingInterval)% atraso até a próxima amostra
fim
% Traçando as leituras de temperatura
figura 1)
plot (samplingTimes, tempF, 'r- *')
xlabel ('Tempo (segundos)')
ylabel ('Temperatura (F)')
título ('Leituras de temperatura do RedBoard')
Etapa 3: Saída do sensor de temperatura
Acima está a fiação e o código MATLAB para a saída do sensor de temperatura.
Para este projeto, usamos três luzes LED para a saída do nosso sensor de temperatura. Usamos um vermelho para se as faixas estivessem muito quentes, um azul se estivessem muito frias e um verde se estivessem no meio.
Etapa 4: entrada do sensor de água da chuva
Acima está a fiação para o sensor de água da chuva e o código MATLAB está postado abaixo.
%% sensor de água
limpar tudo, clc
a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno');
waterPin = 'A1';
vDry = 4,80; % Tensão quando não há água presente
amostragemDuração = 60;
samplingInterval = 2;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = comprimento (samplingTimes);
% Para que o loop leia a tensão por um período específico de tempo (60 segundos)
para índice = 1: numSamples
volt2 = readVoltage (a, waterPin); % Leia a tensão do análogo do pino de água
% If declaração para soar uma campainha se água for detectada. Queda de tensão = água
se volt2 <vDry
playTone (a, 'D09', 2400)% função playTone do MathWorks
% Exibir um aviso aos passageiros se água for detectada
waitfor (warndlg ('Seu trem pode atrasar devido aos perigos da água'));
fim
% Exibe a tensão medida pelo sensor de água
fprintf ('A tensão em% d segundos é% 5.4f V. / n',…
samplingTimes (índice), volt2);
pausar (samplingInterval)
fim
Etapa 5: Saída do sensor de água da chuva
Acima está a fiação de uma campainha que emite um bipe sempre que muita água cai na pista. O código da campainha está embutido no código da entrada de água da chuva.
Etapa 6: entrada do sensor de vibração
Acima está a fiação para o sensor de vibração. Sensores de vibração podem ser importantes para sistemas ferroviários no caso de queda de pedras em uma via. O código MATLAB está postado abaixo.
%% Sensor de vibração limpar tudo, clc
PIEZO_PIN = 'A3'; % Declarando o pino analógico conectado ao sensor de vibração a = arduino ('/ dev / tty.usbserial-DA017PNO', 'uno'); % Inicializando o tempo e o intervalo para medir a amostragem de vibraçãoDuração = 30; % Seconds samplingInterval = 1;
samplingTimes = 0: samplingInterval: samplingDuration;
numSamples = comprimento (samplingTimes);
% Usando o código da seguinte fonte, nós o modificamos para ligar um
% LED roxo se for detectada vibração.
% SparkFun Tinker Kit, RGB LED, desenvolvido por SparkFun Electronics, % com muita ajuda da comunidade Arduino
% Adaptado para MATLAB por Eric Davishahl
% Inicializando o pino RGB
RED_PIN = 'D5';
GREEN_PIN = 'D6';
BLUE_PIN = 'D7';
% Para o loop para registrar as mudanças de tensão do sensor de vibração ao longo de um
% de intervalo de tempo específico (30 segundos)
para índice = 1: numSamples
volt3 = readVoltage (a, PIEZO_PIN);
% If declaração para ligar um LED roxo se vibração for detectada
se volt3> 0,025
writeDigitalPin (a, RED_PIN, 1);
% Criando uma luz roxa
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 1);
else% Desligue o LED se nenhuma vibração for detectada.
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
fim
% Exibe a tensão conforme ela é medida.
fprintf ('A tensão em% d segundos é% 5.4f V. / n',…
samplingTimes (índice), volt3);
pausar (samplingInterval)
fim
% Corte a luz quando a medição de vibrações é feita
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
Etapa 7: Saída do sensor de vibração
Acima está a fiação para a luz LED RBG usada. A luz acenderá em roxo quando vibrações forem detectadas. O código MATLAB para a saída está embutido no código para a entrada.
Etapa 8: Conclusão
Depois de seguir todas essas etapas, você agora deve ter um arduino com a capacidade de detectar temperatura, água da chuva e vibrações. Ao observar como esses sensores funcionam em pequena escala, é fácil imaginar como eles podem ser vitais para os sistemas ferroviários na vida moderna!
Recomendado:
Introdução aos sensores de vibração e temperatura sem fio de longo alcance: 7 etapas
Introdução aos sensores de vibração e temperatura sem fio de longo alcance: Às vezes, a vibração é a causa de problemas sérios em muitas aplicações. De eixos e rolamentos da máquina ao desempenho do disco rígido, a vibração causa danos à máquina, substituição antecipada, baixo desempenho e inflige um grande impacto na precisão. Monitorando
Detector de chuva usando Arduino e sensor de gota de chuva: 8 etapas
Detector de chuva usando Arduino e sensor de gota de chuva: Neste tutorial vamos aprender como detectar uma chuva usando um sensor de chuva e fazer um som usando um módulo de campainha e display OLED e Visuino. Assistir ao vídeo
Dados do sensor de vibração e temperatura sem fio para MySQL usando Node-RED: 40 etapas
Dados do sensor de vibração e temperatura sem fio para MySQL usando Node-RED: Apresentando o sensor de vibração e temperatura industrial de IoT de longo alcance da NCD, ostentando um alcance de até 2 milhas com o uso de uma estrutura de rede mesh sem fio. Incorporando um sensor de vibração e temperatura de 16 bits de precisão, este dispositivo trans
Monitoramento de integridade estrutural de infraestruturas civis usando sensores de vibração sem fio: 8 etapas
Monitoramento da saúde estrutural de infraestruturas civis usando sensores de vibração sem fio: A deterioração do antigo edifício e da infraestrutura civil pode levar a situações fatais e perigosas. O monitoramento constante dessas estruturas é obrigatório. O monitoramento de integridade estrutural é uma metodologia extremamente importante na avaliação de
Como proteger e proteger seu telefone e gadget: 4 etapas
Como proteger e proteger seu telefone e gadget: de uma pessoa que perdeu quase tudo (exagerado, é claro). Então, hora da confissão, como dizia minha frase anterior, sou MUITO desajeitada. Se algo não estiver ligado a mim, há uma grande chance de que eu o extravie, esqueça que está em algum lugar