Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:15
Trong xã hội hiện đại, lượng hành khách đi tàu tăng lên đồng nghĩa với việc các công ty đường sắt phải làm nhiều hơn nữa để tối ưu hóa mạng lưới để theo kịp nhu cầu. Trong dự án này, chúng tôi sẽ giới thiệu ở quy mô nhỏ cách các cảm biến nhiệt độ, nước mưa và độ rung trên bảng arduino có thể giúp tăng độ an toàn cho hành khách.
Có thể hướng dẫn này sẽ hiển thị từng bước hệ thống dây cho các cảm biến nhiệt độ, nước mưa và rung động trên arduino cũng như hiển thị mã MATLAB cần thiết để chạy các cảm biến này.
Bước 1: Các bộ phận và vật liệu
1. Máy tính đã cài đặt phiên bản MATLAB mới nhất
2. Bảng Arduino
3. Cảm biến nhiệt độ
4. Cảm biến nước mưa
5. Cảm biến rung
6. Đèn LED đỏ
7. Đèn LED xanh lam
8. Đèn LED xanh
9. Đèn LED RBG
10. Buzzer
11. 18 Dây Nam-Nam
12. 3 Dây Nữ-Nam
13. 2 Dây Nữ-Nữ
14. 6 điện trở 330 ohm
15. 1 điện trở 100 ohm
Bước 2: Đi dây cảm biến nhiệt độ
Trên đây là hệ thống dây điện và mã MATLAB cho đầu vào cảm biến nhiệt độ.
Các dây từ nối đất và 5V chỉ cần được chạy đến cực âm và dương tương ứng một lần cho toàn bộ bo mạch. Từ đây trở đi, mọi kết nối đất sẽ đến từ cột âm và mọi kết nối 5V sẽ đến từ cột dương.
Mã dưới đây có thể được sao chép và dán cho cảm biến nhiệt độ.
%% CẢM BIẾN NHIỆT ĐỘ% Đối với cảm biến nhiệt độ, chúng tôi đã sử dụng nguồn sau cùng với
% Tài liệu trang web EF230 để sửa đổi cảm biến nhiệt độ của chúng tôi để cho phép người dùng
% đầu vào và 3 đầu ra đèn LED có biểu đồ.
% Bản phác thảo này được viết bởi SparkFun Electronics, % với rất nhiều sự trợ giúp từ cộng đồng Arduino.
% Được Eric Davishahl chuyển thể sang MATLAB.
% Truy cập https://learn.sparkfun.com/products/2 để biết thông tin về SIK.
xóa tất cả, clc
tempPin = 'A0'; % Khai báo chân analog kết nối với cảm biến nhiệt độ
a = arduino ('/ dev / tty.usbserial-DA017PNO', 'una');
% Xác định chức năng ẩn danh chuyển đổi điện áp thành nhiệt độ
tempCfromVolts = @ (vôn) (vôn-0,5) * 100;
lấy mẫuDuration = 30;
samplingInterval = 2; % Giây giữa các lần đọc nhiệt độ
% thiết lập vectơ thời gian lấy mẫu
samplingTimes = 0: samplingInterval: lấy mẫuDuration;
% tính toán số lượng mẫu dựa trên thời lượng và khoảng thời gian
numSamples = length (samplingTimes);
% phân bổ trước các biến tạm thời và biến cho số lần đọc mà nó sẽ lưu trữ
tempC = số không (numSamples, 1);
tempF = tempC;
% sử dụng hộp thoại đầu vào để lưu trữ nhiệt độ đường ray tối đa và tối thiểu
dlg_prompts = {'Nhập Nhiệt độ Tối đa', 'Nhập Nhiệt độ Tối thiểu'};
dlg_title = 'Khoảng nhiệt độ đường sắt';
N = 22;
dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, length (dlg_title) + N]);
% Lưu trữ đầu vào từ người dùng và hiển thị rằng đầu vào đã được ghi lại
max_temp = str2double (dlg_ans {1})
min_temp = str2double (dlg_ans {2})
txt = sprintf ('Đầu vào của bạn đã được ghi lại');
h = msgbox (txt);
chờ đợi (h);
% Đối với vòng lặp để đọc nhiệt độ một số lần cụ thể.
cho chỉ mục = 1: numSamples
% Đọc điện áp ở tempPin và lưu trữ dưới dạng vôn thay đổi
vôn = readVoltage (a, tempPin);
tempC (chỉ số) = tempCfromVolts (vôn);
tempF (chỉ số) = tempC (chỉ số) * 9/5 + 32; % Chuyển đổi từ độ C sang độ F
% If câu lệnh để làm cho các đèn LED cụ thể nhấp nháy tùy thuộc vào điều kiện nào được đáp ứng
if tempF (index)> = max_temp% Red LED
writeDigitalPin (a, 'D13', 0);
tạm dừng (0,5);
writeDigitalPin (a, 'D13', 1);
tạm dừng (0,5);
writeDigitalPin (a, 'D13', 0);
elseif tempF (index)> = min_temp && tempF (index) <max_temp% LED xanh lục
writeDigitalPin (a, 'D11', 0);
tạm dừng (0,5);
writeDigitalPin (a, 'D11', 1);
tạm dừng (0,5);
writeDigitalPin (a, 'D11', 0);
elseif tempF (chỉ mục) <= min_temp% LED xanh lam
writeDigitalPin (a, 'D12', 0);
tạm dừng (0,5);
writeDigitalPin (a, 'D12', 1);
tạm dừng (0,5);
writeDigitalPin (a, 'D12', 0);
kết thúc
% Hiển thị nhiệt độ khi chúng được đo
fprintf ('Nhiệt độ ở% d giây là% 5.2f C hoặc% 5.2f F. / n',…
samplingTimes (chỉ số), tempC (chỉ số), tempF (chỉ số));
tạm dừng (samplingInterval)% độ trễ cho đến mẫu tiếp theo
kết thúc
% Vẽ biểu đồ đọc nhiệt độ
Hình 1)
âm mưu (samplingTimes, tempF, 'r- *')
xlabel ('Thời gian (Giây)')
ylabel ('Nhiệt độ (F)')
title ('Đọc nhiệt độ từ RedBoard')
Bước 3: Đầu ra cảm biến nhiệt độ
Trên đây là hệ thống dây và mã MATLAB cho đầu ra cảm biến nhiệt độ.
Đối với dự án này, chúng tôi đã sử dụng ba đèn LED cho đầu ra của cảm biến nhiệt độ của chúng tôi. Chúng tôi sử dụng màu đỏ nếu các bản nhạc quá nóng, màu xanh lam nếu chúng quá lạnh và màu xanh lá cây nếu chúng ở giữa.
Bước 4: Đầu vào cảm biến nước mưa
Trên đây là cách đấu dây cho cảm biến gạt nước mưa và mã MATLAB được đăng tải bên dưới.
%% Cảm biến nước
xóa tất cả, clc
a = arduino ('/ dev / tty.usbserial-DA017PNO', 'una');
waterPin = 'A1';
vDry = 4,80; % Điện áp khi không có nước
lấy mẫuDuration = 60;
samplingInterval = 2;
samplingTimes = 0: samplingInterval: lấy mẫuDuration;
numSamples = length (samplingTimes);
% Đối với vòng lặp để đọc điện áp trong một khoảng thời gian cụ thể (60 giây)
cho chỉ mục = 1: numSamples
volt2 = readVoltage (a, waterPin); % Đọc điện áp từ tương tự chân nước
% If để phát ra tiếng kêu nếu phát hiện có nước. Điện áp rơi = nước
nếu volt2 <vDry
playTone (a, 'D09', 2400)% playTone hàm từ MathWorks
% Hiển thị cảnh báo cho hành khách nếu nước được phát hiện
waitfor (warndlg ('Chuyến tàu của bạn có thể bị hoãn do hiểm họa nước'));
kết thúc
% Hiển thị điện áp khi được đo bằng cảm biến nước
fprintf ('Điện áp ở% d giây là% 5,4f V. / n',…
samplingTimes (chỉ số), volt2);
tạm dừng (samplingInterval)
kết thúc
Bước 5: Đầu ra cảm biến nước mưa
Trên đây là hệ thống đấu dây cho còi kêu bíp mỗi khi có quá nhiều nước rơi trên đường đua. Mã cho bộ rung được nhúng trong mã cho đầu vào nước mưa.
Bước 6: Đầu vào cảm biến rung
Trên đây là phần đấu dây cho cảm biến rung. Cảm biến rung động có thể quan trọng đối với hệ thống đường sắt trong trường hợp đá rơi trên đường ray. Mã MATLAB được đăng bên dưới.
%% Cảm biến rung Xóa tất cả, clc
PIEZO_PIN = 'A3'; % Khai báo chân analog kết nối với cảm biến rung a = arduino ('/ dev / tty.usbserial-DA017PNO', 'una'); % Khởi tạo thời gian và khoảng thời gian để đo rung động lấy mẫuDuration = 30; % Giây lấy mẫuInterval = 1;
samplingTimes = 0: samplingInterval: lấy mẫuDuration;
numSamples = length (samplingTimes);
% Sử dụng mã từ nguồn sau, chúng tôi đã sửa đổi nó để bật
% đèn LED màu tím nếu phát hiện thấy rung.
% SparkFun Tinker Kit, LED RGB, được viết bởi SparkFun Electronics, % với rất nhiều sự trợ giúp từ cộng đồng Arduino
% Được Eric Davishahl điều chỉnh thành MATLAB
% Khởi tạo pin RGB
RED_PIN = 'D5';
GREEN_PIN = 'D6';
BLUE_PIN = 'D7';
% Đối với vòng lặp để ghi lại các thay đổi điện áp từ cảm biến rung động qua
% khoảng thời gian cụ thể (30 giây)
cho chỉ mục = 1: numSamples
volt3 = readVoltage (a, PIEZO_PIN);
% If để bật đèn LED màu tím nếu phát hiện thấy rung
nếu volt3> 0,025
writeDigitalPin (a, RED_PIN, 1);
% Tạo ra một ánh sáng màu tím
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 1);
else% Tắt đèn LED nếu không phát hiện thấy rung.
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
kết thúc
% Hiển thị điện áp khi nó được đo.
fprintf ('Điện áp ở% d giây là% 5,4f V. / n',…
samplingTimes (chỉ số), volt3);
tạm dừng (samplingInterval)
kết thúc
% Tắt ánh sáng khi đo độ rung xong
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
Bước 7: Đầu ra cảm biến rung
Trên đây là cách đấu dây cho đèn LED RBG được sử dụng. Đèn sẽ phát sáng màu tím khi phát hiện có rung động. Mã MATLAB cho đầu ra được nhúng trong mã cho đầu vào.
Bước 8: Kết luận
Sau khi làm theo tất cả các bước này, bây giờ bạn sẽ có một arduino với khả năng phát hiện nhiệt độ, nước mưa và rung động. Trong khi xem cách các cảm biến này hoạt động trên quy mô nhỏ, có thể dễ dàng hình dung chúng có thể quan trọng như thế nào đối với hệ thống đường sắt trong cuộc sống hiện đại!
Đề xuất:
Máy dò mưa sử dụng Arduino và cảm biến hạt mưa: 8 bước
Cảm biến mưa bằng Arduino và cảm biến mưa: Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách phát hiện mưa bằng cảm biến mưa và tạo ra âm thanh bằng cách sử dụng mô-đun còi và Màn hình OLED và Visuino
Cách tạo cảm biến rung mùa xuân tại nhà!: 5 bước (có hình ảnh)
Cách tạo cảm biến rung mùa xuân tại nhà !: Tôi đang thực hiện một dự án mới liên quan đến cảm biến rung mùa xuân hay còn gọi là " người nghèo " cảm biến gia tốc / chuyển động! Các công tắc rung lò xo này là các công tắc kích hoạt gây ra rung động không định hướng có độ nhạy cao. Bên trong là một
Hướng dẫn: Cách Tạo Báo động Cửa bằng Cách Sử dụng Báo động Cảm biến Công tắc Từ tính MC-18: 3 Bước
Hướng dẫn: Làm thế nào để Báo động Cửa bằng cách Sử dụng Cảnh báo Cảm biến Công tắc Từ tính MC-18: Xin chào các bạn, tôi sẽ làm hướng dẫn về Báo động Cảm biến Công tắc Từ tính MC-18 hoạt động ở chế độ thường đóng. Nhưng trước tiên, hãy để tôi giải thích cho các bạn trong ngắn hạn những gì có nghĩa là bình thường gần. Có hai loại chế độ, thường mở và thường đóng
Giám sát sức khỏe cấu trúc của các cơ sở hạ tầng dân dụng bằng cách sử dụng cảm biến rung không dây: 8 bước
Theo dõi sức khỏe kết cấu của các cơ sở hạ tầng dân dụng bằng cách sử dụng cảm biến rung không dây: Sự xuống cấp của tòa nhà cũ và Cơ sở hạ tầng dân dụng có thể dẫn đến tình trạng nguy hiểm và chết người. Việc giám sát liên tục các cấu trúc này là bắt buộc. Theo dõi sức khỏe cấu trúc là một phương pháp cực kỳ quan trọng trong việc đánh giá
Phương pháp phát hiện mức nước Arduino bằng cảm biến siêu âm và cảm biến nước Funduino: 4 bước
Các phương pháp phát hiện mức nước Arduino bằng cảm biến siêu âm và cảm biến nước Funduino: Trong dự án này, tôi sẽ chỉ cho bạn cách tạo một máy dò nước rẻ tiền bằng hai phương pháp: 1. Cảm biến siêu âm (HC-SR04) .2. Cảm biến nước Funduino