Table des matières:

Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer : 8 étapes (avec photos)
Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer : 8 étapes (avec photos)

Vidéo: Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer : 8 étapes (avec photos)

Vidéo: Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer : 8 étapes (avec photos)
Vidéo: TRONIK AVENTUR 272 - ARROSAGE AUTOMATIQUE avec ARDUINO + SONDE HUMIDITE + POMPE IMMERGEE 2024, Novembre
Anonim
Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer
Utilisation de capteurs de température, d'eau de pluie et de vibrations sur un Arduino pour protéger les chemins de fer

Dans la société d'aujourd'hui, l'augmentation du nombre de passagers ferroviaires signifie que les entreprises ferroviaires doivent faire davantage pour optimiser les réseaux afin de répondre à la demande. Dans ce projet, nous montrerons à petite échelle comment les capteurs de température, d'eau de pluie et de vibrations sur une carte Arduino peuvent potentiellement aider à augmenter la sécurité des passagers.

Ce Instructable montrera étape par étape le câblage des capteurs de température, d'eau de pluie et de vibration sur l'arduino ainsi que le code MATLAB requis pour exécuter ces capteurs.

Étape 1: Pièces et matériaux

1. Un ordinateur avec la dernière version de MATLAB installée

2. Carte Arduino

3. Capteur de température

4. Capteur d'eau de pluie

5. Capteur de vibrations

6. Lumière LED rouge

7. Lumière LED bleue

8. Lumière LED verte

9. Lumière LED RBG

10. Avertisseur sonore

11. 18 fils mâle-mâle

12. 3 fils femelle-mâle

13. 2 fils femelle-femelle

14. 6 résistances de 330 ohms

15. 1 résistance de 100 ohms

Étape 2: Câblage du capteur de température

Câblage du capteur de température
Câblage du capteur de température
Câblage du capteur de température
Câblage du capteur de température

Ci-dessus se trouvent également le câblage et le code MATLAB pour l'entrée du capteur de température.

Les fils de la terre et du 5V n'ont besoin d'être reliés respectivement au négatif et au positif qu'une seule fois pour l'ensemble de la carte. À partir de maintenant, toutes les connexions à la terre proviendront de la colonne négative et toutes les connexions 5V proviendront de la colonne positive.

Le code ci-dessous peut être copié et collé pour le capteur de température.

%% CAPTEUR DE TEMPERATURE % Pour le capteur de température, nous avons utilisé la source suivante avec

% de matériel de site Web EF230 pour modifier notre capteur de température pour permettre à l'utilisateur

% d'entrée et 3 sorties de lumière LED avec un graphique.

%Ce croquis a été écrit par SparkFun Electronics, % avec beaucoup d'aide de la communauté Arduino.

%Adapté à MATLAB par Eric Davishahl.

%Visitez https://learn.sparkfun.com/products/2 pour obtenir des informations sur SIK.

tout effacer, clc

tempPin = 'A0'; % Déclarer la broche analogique connectée au capteur de température

a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');

% Définir une fonction anonyme qui convertit la tension en température

tempCfromVolts = @(volts) (volts-0,5)*100;

Durée d'échantillonnage = 30;

Intervalle d'échantillonnage = 2; % secondes entre les lectures de température

%configurer le vecteur des heures d'échantillonnage

samplingTimes = 0:samplingInterval:samplingDuration;

%calculer le nombre d'échantillons en fonction de la durée et de l'intervalle

numSamples = length(samplingTimes);

% préallouer les variables temporaires et la variable pour le nombre de lectures qu'elle stockera

tempC = zeros(numSamples, 1);

tempF = tempC;

% à l'aide de la boîte de dialogue d'entrée pour stocker les températures de rail max et min

dlg_prompts = {'Enter Max Temp', 'Enter Min Temp'};

dlg_title = 'Intervalles de température des rails';

N=22;

dlg_ans = inputdlg(dlg_prompts, dlg_title, [1, length(dlg_title)+N]);

% Stockage des entrées de l'utilisateur et affichage que l'entrée a été enregistrée

max_temp = str2double(dlg_ans{1})

min_temp = str2double(dlg_ans{2})

txt = sprintf('Votre saisie a été enregistrée');

h=msgbox(txt);

attendre(h);

Boucle % For pour lire les températures un certain nombre de fois.

pour l'index = 1: numÉchantillons

% Lire la tension à tempPin et stocker en tant que volts variables

volts = readVoltage(a, tempPin);

tempC(index) = tempCfromVolts(volts);

tempF(indice) = tempC(indice)*9/5+32; % Convertir de Celsius en Fahrenheit

% Si des instructions pour faire clignoter des voyants LED spécifiques en fonction de la condition remplie

if tempF(index) >= max_temp % LED rouge

writeDigitalPin(a, 'D13', 0);

pause(0,5);

writeDigitalPin(a, 'D13', 1);

pause (0,5);

writeDigitalPin(a, 'D13', 0);

elseif tempF(index) >= min_temp && tempF(index) < max_temp % LED verte

writeDigitalPin(a, 'D11', 0);

pause (0,5);

writeDigitalPin(a, 'D11', 1);

pause (0,5);

writeDigitalPin(a, 'D11', 0);

elseif tempF(index) <= min_temp % LED bleue

writeDigitalPin(a, 'D12', 0);

pause (0,5);

writeDigitalPin(a, 'D12', 1);

pause (0,5);

writeDigitalPin(a, 'D12', 0);

finir

% Afficher les températures telles qu'elles sont mesurées

fprintf('La température à %d secondes est de %5.2f C ou %5.2f F.\n', …

samplingTimes(index), tempC(index), tempF(index));

pause(samplingInterval) %délai jusqu'au prochain échantillon

finir

% Tracer les lectures de température

Figure 1)

plot(samplingTimes, tempF, 'r-*')

xlabel('Temps (Secondes)')

ylabel('Température (F)')

title('Lectures de température du RedBoard')

Étape 3: sortie du capteur de température

Sortie du capteur de température
Sortie du capteur de température
Sortie du capteur de température
Sortie du capteur de température

Ci-dessus se trouve le câblage et le code MATLAB pour la sortie du capteur de température.

Pour ce projet, nous avons utilisé trois lumières LED pour la sortie de notre capteur de température. Nous avons utilisé un rouge si les pistes étaient trop chaudes, un bleu si elles étaient trop froides et un vert si elles étaient entre les deux.

Étape 4: Entrée du capteur d'eau de pluie

Entrée du capteur d'eau de pluie
Entrée du capteur d'eau de pluie
Entrée du capteur d'eau de pluie
Entrée du capteur d'eau de pluie

Ci-dessus se trouve le câblage du capteur d'eau de pluie et le code MATLAB est affiché ci-dessous.

%% Capteur d'eau

tout effacer, clc

a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');

waterPin = 'A1';

vSec = 4,80; % Tension lorsqu'il n'y a pas d'eau présente

Durée d'échantillonnage = 60;

Intervalle d'échantillonnage = 2;

samplingTimes = 0:samplingInterval:samplingDuration;

numSamples = length(samplingTimes);

% Boucle for pour lire la tension pendant un laps de temps spécifique (60 secondes)

pour index = 1: numÉchantillons

volt2 = readVoltage(a, waterPin); % Lire la tension de l'analogique de la broche d'eau

% Si déclaration pour faire retentir un avertisseur si de l'eau est détectée. Chute de tension = eau

si volt2 < vSec

playTone(a, 'D09', 2400) % fonction playTone de MathWorks

% Afficher un avertissement aux passagers si de l'eau est détectée

waitfor(warndlg('Votre train peut être retardé en raison d'obstacles d'eau'));

finir

% Afficher la tension telle qu'elle est mesurée par le capteur d'eau

fprintf('La tension à %d secondes est de %5.4f V.\n', …

samplingTimes(index), volt2);

pause(samplingInterval)

finir

Étape 5: Sortie du capteur d'eau de pluie

Sortie du capteur d'eau de pluie
Sortie du capteur d'eau de pluie

Ci-dessus se trouve le câblage d'un buzzer qui émet un bip chaque fois que trop d'eau tombe sur la piste. Le code du buzzer est intégré au code de l'entrée d'eau de pluie.

Étape 6: Entrée du capteur de vibration

Entrée du capteur de vibration
Entrée du capteur de vibration
Entrée du capteur de vibration
Entrée du capteur de vibration

Ci-dessus se trouve le câblage du capteur de vibrations. Les capteurs de vibrations peuvent être importants pour les systèmes ferroviaires en cas de chute de pierres sur une voie. Le code MATLAB est affiché ci-dessous.

%% Capteur de vibrationsTout effacer, clc

PIEZO_PIN = 'A3'; % Déclarer la broche analogique connectée au capteur de vibration a=arduino('/dev/tty.usbserial-DA017PNO', 'uno'); % Initialisation du temps et de l'intervalle pour mesurer l'échantillonnage des vibrationsDuration = 30; % secondes d'intervalle d'échantillonnage = 1;

samplingTimes = 0:samplingInterval:samplingDuration;

numSamples = length(samplingTimes);

% En utilisant le code de la source suivante, nous l'avons modifié pour activer un

% LED violette si une vibration est détectée.

% SparkFun Tinker Kit, LED RVB, écrit par SparkFun Electronics, % avec beaucoup d'aide de la communauté Arduino

% Adapté à MATLAB par Eric Davishahl

% Initialisation de la broche RVB

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Boucle for pour enregistrer les changements de tension du capteur de vibration sur une

% intervalle de temps spécifique (30 secondes)

pour index = 1: numÉchantillons

volt3 = readVoltage(a, PIEZO_PIN);

% Si instruction pour allumer une LED violette si une vibration est détectée

si volt3>0,025

writeDigitalPin(a, RED_PIN, 1);

% Création d'une lumière violette

writeDigitalPin(a, GREEN_PIN, 0);

writeDigitalPin(a, BLUE_PIN, 1);

sinon % Éteignez la LED si aucune vibration n'est détectée.

writeDigitalPin(a, RED_PIN, 0);

writeDigitalPin(a, GREEN_PIN, 0);

writeDigitalPin(a, BLUE_PIN, 0);

finir

% Affiche la tension telle qu'elle est mesurée.

fprintf('La tension à %d secondes est de %5.4f V.\n', …

samplingTimes(index), volt3);

pause(samplingInterval)

finir

% Couper la lumière lorsque la mesure des vibrations est effectuée

writeDigitalPin(a, RED_PIN, 0);

writeDigitalPin(a, GREEN_PIN, 0);

writeDigitalPin(a, BLUE_PIN, 0);

Étape 7: Sortie du capteur de vibrations

Sortie du capteur de vibrations
Sortie du capteur de vibrations

Ci-dessus se trouve le câblage de la lumière LED RBG utilisée. La lumière brillera en violet lorsque des vibrations sont détectées. Le code MATLAB pour la sortie est intégré dans le code pour l'entrée.

Étape 8: Conclusion

Après avoir suivi toutes ces étapes, vous devriez maintenant avoir un arduino capable de détecter la température, l'eau de pluie et les vibrations. En observant le fonctionnement de ces capteurs à petite échelle, il est facile d'imaginer à quel point ils pourraient être vitaux pour les systèmes ferroviaires dans la vie moderne !

Conseillé: