Inhaltsverzeichnis:
- Schritt 1: Teile und Materialien
- Schritt 2: Verkabelung des Temperatursensors
- Schritt 3: Temperatursensorausgang
- Schritt 4: Regenwassersensoreingang
- Schritt 5: Regenwassersensorausgang
- Schritt 6: Vibrationssensoreingang
- Schritt 7: Vibrationssensorausgang
- Schritt 8: Fazit
Video: Verwenden von Temperatur-, Regenwasser- und Vibrationssensoren auf einem Arduino zum Schutz von Eisenbahnen - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
In der modernen Gesellschaft bedeutet die Zunahme der Bahnreisenden, dass die Bahnunternehmen mehr tun müssen, um die Netze zu optimieren, um mit der Nachfrage Schritt zu halten. In diesem Projekt werden wir im kleinen Maßstab zeigen, wie Temperatur-, Regenwasser- und Vibrationssensoren auf einem Arduino-Board potenziell dazu beitragen können, die Sicherheit der Passagiere zu erhöhen.
Dieses Instructable zeigt Schritt für Schritt die Verkabelung für die Temperatur-, Regenwasser- und Vibrationssensoren auf dem Arduino sowie den MATLAB-Code, der zum Ausführen dieser Sensoren erforderlich ist.
Schritt 1: Teile und Materialien
1. Ein Computer, auf dem die neueste Version von MATLAB installiert ist
2. Arduino-Board
3. Temperatursensor
4. Regenwassersensor
5. Vibrationssensor
6. Rotes LED-Licht
7. Blaues LED-Licht
8. Grünes LED-Licht
9. RBG LED-Licht
10. Summer
11. 18 männlich-männliche Drähte
12. 3 weibliche-männliche Drähte
13. 2 weibliche-weibliche Drähte
14. 6 330 Ohm Widerstände
15. 1 100 Ohm Widerstand
Schritt 2: Verkabelung des Temperatursensors
Oben ist auch die Verdrahtung und der MATLAB-Code für den Temperatursensoreingang.
Die Drähte von Masse und 5V müssen nur einmal für die gesamte Platine nach Minus und Plus geführt werden. Von hier an kommen alle Masseverbindungen von der negativen Spalte und alle 5V-Verbindungen von der positiven Spalte.
Der folgende Code kann für den Temperatursensor kopiert und eingefügt werden.
%% TEMPERATURSENSOR % Für den Temperatursensor haben wir die folgende Quelle zusammen mit. verwendet
% EF230-Website-Material, um unseren Temperatursensor zu ändern, um es dem Benutzer zu ermöglichen
% Eingang und 3 LED-Lichtausgänge mit einer Grafik.
%Dieser Sketch wurde von SparkFun Electronics geschrieben, % mit viel Hilfe von der Arduino-Community.
% An MATLAB angepasst von Eric Davishahl.
%Besuchen Sie https://learn.sparkfun.com/products/2 für SIK-Informationen.
Alles löschen, clc
tempPin = 'A0'; % Angabe des mit dem Temperatursensor verbundenen analogen Pins
a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');
% Definieren Sie eine anonyme Funktion, die die Spannung in Temperatur umwandelt
tempCfromVolts = @(Volt) (Volt-0,5)*100;
Abtastdauer = 30;
Abtastintervall = 2; % Sekunden zwischen Temperaturmessungen
%setup-Vektor der Abtastzeiten
sampleTimes = 0:samplingInterval:samplingDuration;
%berechnen Sie die Anzahl der Proben basierend auf Dauer und Intervall
numSamples = length(samplingTimes);
%preallocate temporäre Variablen und Variable für die Anzahl der zu speichernden Messwerte
tempC = Nullen (numSamples, 1);
tempF = tempC;
% mit Eingabedialogfeld zum Speichern der maximalen und minimalen Schienentemperaturen
dlg_prompts = {'Max. Temp. eingeben', 'Min. Temp. eingeben'};
dlg_title = 'Schienentemperaturintervalle';
N = 22;
dlg_ans = inputdlg(dlg_prompts, dlg_title, [1, Länge(dlg_title)+N]);
% Speicherung der Eingaben des Benutzers und Anzeige, dass die Eingabe aufgezeichnet wurde
max_temp = str2double(dlg_ans{1})
min_temp = str2double(dlg_ans{2})
txt = sprintf('Ihre Eingabe wurde aufgezeichnet');
h=msgbox(txt);
warte auf(h);
% For-Schleife, um die Temperaturen eine bestimmte Anzahl von Malen zu lesen.
für Index = 1:numSamples
% Lesen Sie die Spannung an tempPin ab und speichern Sie sie als variable Volt
Volt = readVoltage(a, tempPin);
tempC(Index) = tempCfromVolts(Volt);
tempF(Index) = tempC(Index)*9/5+32; % von Celsius in Fahrenheit umrechnen
% Wenn Anweisungen, die bestimmte LED-Leuchten zum Blinken bringen, je nachdem, welche Bedingung erfüllt ist
wenn tempF(index) >= max_temp % Rote LED
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 % Grüne LED
writeDigitalPin(a, 'D11', 0);
Pause (0,5);
writeDigitalPin(a, 'D11', 1);
Pause (0,5);
writeDigitalPin(a, 'D11', 0);
elseif tempF(index) <= min_temp % Blaue LED
writeDigitalPin(a, 'D12', 0);
Pause (0,5);
writeDigitalPin(a, 'D12', 1);
Pause (0,5);
writeDigitalPin(a, 'D12', 0);
Ende
% Zeigt die gemessenen Temperaturen an
fprintf('Temperatur bei %d Sekunden ist %5.2f C oder %5.2f F.\n', …
SamplingTimes (Index), tempC (Index), tempF (Index));
pause(samplingInterval) %Verzögerung bis zum nächsten Sample
Ende
% Plotten der Temperaturmesswerte
Abbildung 1)
plot(samplingTimes, tempF, 'r-*')
xlabel('Zeit (Sekunden)')
ylabel('Temperatur (F)')
title('Temperaturmesswerte vom RedBoard')
Schritt 3: Temperatursensorausgang
Oben ist die Verdrahtung und der MATLAB-Code für den Temperatursensorausgang.
Für dieses Projekt haben wir drei LED-Leuchten für die Ausgabe unseres Temperatursensors verwendet. Wir haben ein Rot verwendet, wenn die Tracks zu heiß waren, ein Blau, wenn es zu kalt war, und ein Grün, wenn sie dazwischen lagen.
Schritt 4: Regenwassersensoreingang
Oben ist die Verkabelung für den Regenwassersensor und der MATLAB-Code ist unten aufgeführt.
%% Wassersensor
Alles löschen, clc
a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');
WasserPin = 'A1';
vTrocken = 4,80; % Spannung, wenn kein Wasser vorhanden ist
Abtastdauer = 60;
Abtastintervall = 2;
sampleTimes = 0:samplingInterval:samplingDuration;
numSamples = length(samplingTimes);
% For-Schleife zum Lesen der Spannung für eine bestimmte Zeit (60 Sekunden)
für Index = 1:numSamples
volt2 = readVoltage(a, waterPin); % Spannung vom analogen Wasserstift ablesen
% Wenn Anweisung zum Ertönen eines Summers, wenn Wasser erkannt wird. Spannungsabfall = Wasser
wenn volt2 < vDry
playTone(a, 'D09', 2400) % playTone-Funktion von MathWorks
% Zeigt den Passagieren eine Warnung an, wenn Wasser erkannt wird
waitfor(warndlg('Ihr Zug kann aufgrund von Wasserhindernissen Verspätung haben'));
Ende
% Anzeige der vom Wassersensor gemessenen Spannung
fprintf('Spannung bei %d Sekunden ist %5.4f V.\n', …
Abtastzeiten (Index), Volt2);
pause(samplingInterval)
Ende
Schritt 5: Regenwassersensorausgang
Oben ist die Verkabelung für einen Summer, der piept, wenn zu viel Wasser auf die Schiene fällt. Der Code für den Summer ist in den Code für den Regenwassereingang eingebettet.
Schritt 6: Vibrationssensoreingang
Oben ist die Verkabelung für den Vibrationssensor. Schwingungssensoren können für Bahnsysteme bei Steinschlag auf einem Gleis wichtig sein. Der MATLAB-Code wird unten veröffentlicht.
%% VibrationssensorAlles löschen, clc
PIEZO_PIN = 'A3'; % Deklarieren des mit dem Vibrationssensor verbundenen analogen Pins a=arduino('/dev/tty.usbserial-DA017PNO', 'uno'); % Initialisieren der Zeit und des Intervalls zur Messung der SchwingungsabtastungDuration = 30; % Sekunden SamplingInterval = 1;
SamplingTimes = 0:samplingInterval:samplingDuration;
numSamples = length(samplingTimes);
% Mit dem Code aus der folgenden Quelle haben wir ihn modifiziert, um a. einzuschalten
% lila LED, wenn Vibration erkannt wird.
% SparkFun Tinker Kit, RGB-LED, geschrieben von SparkFun Electronics, % mit viel Hilfe von der Arduino-Community
% An MATLAB angepasst von Eric Davishahl
% Initialisieren des RGB-Pins
ROT_PIN = 'D5';
GRÜN_PIN = 'D6';
BLUE_PIN = 'D7';
% Für Schleife zum Aufzeichnen von Spannungsänderungen vom Schwingungssensor über a
% spezifisches Zeitintervall (30 Sekunden)
für Index = 1:numSamples
volt3 = readVoltage(a, PIEZO_PIN);
% If-Anweisung zum Einschalten einer violetten LED, wenn Vibrationen erkannt werden
wenn volt3>0,025
writeDigitalPin(a, RED_PIN, 1);
% Erzeuge ein lila Licht
writeDigitalPin(a, GREEN_PIN, 0);
writeDigitalPin(a, BLUE_PIN, 1);
sonst % LED ausschalten, wenn keine Vibration erkannt wird.
writeDigitalPin(a, RED_PIN, 0);
writeDigitalPin(a, GREEN_PIN, 0);
writeDigitalPin(a, BLUE_PIN, 0);
Ende
% Zeigt die gemessene Spannung an.
fprintf('Spannung bei %d Sekunden ist %5.4f V.\n', …
Abtastzeiten (Index), Volt3);
pause(samplingInterval)
Ende
% Licht abschneiden, wenn Vibrationsmessung abgeschlossen ist
writeDigitalPin(a, RED_PIN, 0);
writeDigitalPin(a, GREEN_PIN, 0);
writeDigitalPin(a, BLUE_PIN, 0);
Schritt 7: Vibrationssensorausgang
Oben ist die Verkabelung für das verwendete RBG-LED-Licht. Das Licht leuchtet lila, wenn Vibrationen erkannt werden. Der MATLAB-Code für die Ausgabe ist in den Code für die Eingabe eingebettet.
Schritt 8: Fazit
Nachdem Sie all diese Schritte befolgt haben, sollten Sie jetzt ein Arduino mit der Fähigkeit haben, Temperatur, Regenwasser und Vibrationen zu erkennen. Wenn man sich anschaut, wie diese Sensoren im kleinen Maßstab funktionieren, kann man sich leicht vorstellen, wie wichtig sie für Bahnsysteme im modernen Leben sein könnten!
Empfohlen:
Windows 10 auf einem Raspberry Pi zum Laufen bringen – wikiHow
So funktioniert Windows 10 auf einem Raspberry Pi
So verwenden Sie einen Debugger auf einem ESP32 – wikiHow
So verwenden Sie einen Debugger auf einem ESP32: Wollten Sie schon immer einen Blick in Ihren Code werfen, um zu sehen, warum er sich so verhält, wie er ist? Traditionell hätten Sie in ESP32-Projekten endlose print-Anweisungen hinzufügen müssen, um herauszufinden, was vor sich ging, aber es gibt einen besseren Weg! Ein Debugger
So laden Sie Instagram auf einem iPhone 6 und höher herunter und verwenden es – wikiHow
So laden Sie Instagram auf einem Iphone 6 und höher herunter und verwenden es: Dieses anweisbare ist für die neuen Benutzer von Instagram. Hier erfahren Sie, wie Sie ein Konto einrichten und wie es funktioniert
Wie zeichne ich einen Computerbildschirm auf einem Mac auf?: 7 Schritte
Wie zeichne ich den Computerbildschirm auf dem Mac auf?: Wie zeichne ich den Bildschirm auf dem Mac auf? Wollten Sie schon immer etwas aufzeichnen, was auf Ihrem Computer oder Telefon passiert? Vielleicht sehen Sie sich ein Video an und möchten einen Clip aufnehmen; Vielleicht versuchst du jemandem zu zeigen, wie man etwas macht, und ein Video würde es schaffen
Gewusst wie: Einrichten einer IPCop Virtual Machine Firewall zum Schutz Ihres Windows-Hosts (kostenlos!): 5 Schritte
Gewusst wie: Einrichten einer IPCop Virtual Machine Firewall zum Schutz Ihres Windows-Hosts (kostenlos!): Zusammenfassung: Das Ziel dieses Projekts ist es, IpCop (kostenlose Linux-Distribution) in einer virtuellen Maschine zu verwenden, um ein Windows-Hostsystem in einem beliebigen Netzwerk zu schützen. IpCop ist eine sehr leistungsstarke Linux-basierte Firewall mit erweiterten Funktionen wie: VPN, NAT, Intrusion Det