Mục lục:

Máy dò nhiệt độ đường sắt sa mạc & Quầy hành khách: 5 bước
Máy dò nhiệt độ đường sắt sa mạc & Quầy hành khách: 5 bước

Video: Máy dò nhiệt độ đường sắt sa mạc & Quầy hành khách: 5 bước

Video: Máy dò nhiệt độ đường sắt sa mạc & Quầy hành khách: 5 bước
Video: Chuyến bay "cố tình" bị rơi😶 2024, Tháng bảy
Anonim
Máy dò nhiệt độ đường sắt sa mạc & Quầy hành khách
Máy dò nhiệt độ đường sắt sa mạc & Quầy hành khách

Mục đích:

Nhiệt độ: Tài liệu hướng dẫn này sẽ dạy bạn cách thiết lập và lập trình Arduino RedBoard (sử dụng MATLAB) để phát hiện nhiệt độ của đường ray. Khi đạt đến nhiệt độ không an toàn cho hành khách, thông báo cảnh báo sẽ phát ra, còi hú vang lên và biển cảnh báo sẽ sáng lên.

Quầy hành khách: Phần này sẽ hướng dẫn bạn cách sử dụng nút để đếm hành khách và phát âm thanh cảnh báo khi đã đạt đến sức chứa tối đa.

Đặc trưng:

  • Sử dụng nút để đếm hành khách lên tàu
  • Sử dụng TMP36 (cảm biến nhiệt độ) để phát hiện nhiệt độ của đường ray
  • Sử dụng đèn LED đỏ để cảnh báo ga xe lửa
  • Sử dụng còi để báo động bằng âm thanh
  • Gửi email cảnh báo với biểu đồ nhiệt độ so với thời gian
  • Thông báo cảnh báo bật lên trên MATLAB

Bước 1: Vật liệu và nguồn cung cấp

Vật liệu và Nguồn cung cấp
Vật liệu và Nguồn cung cấp
  • 1 máy tính xách tay
  • MATLAB 2017
  • Tải xuống Hộp công cụ Arduino
  • Sparkfun RedBoard
  • 1 cáp nguồn
  • Breadbord
  • 14 dây
  • 1 Piezo Buzzer
  • 1 nút nhấn
  • 2 điện trở 10k ohm
  • 1 cảm biến TMP36
  • Đèn LED đỏ
  • Dấu hiệu in 3D (tùy chọn)

Bước 2: Thiết lập bảng

Thiết lập bảng
Thiết lập bảng

Thực hiện theo thiết lập ở trên

Bước 3: Viết mã

Vòng lặp While: Để đảm bảo mã tiếp tục kiểm tra nhiệt độ và cảm nhận trạng thái của nút (được nhấn hoặc không được nhấn), chúng tôi đặt mã vào vòng lặp while trong một khoảng thời gian xác định.

Sử dụng TMP36: Chúng tôi xác định nhiệt độ bằng cách đọc điện áp và chuyển đổi nó thành độ F, sử dụng các hệ số chuyển đổi. Sau đó, chúng tôi sử dụng câu lệnh if để phát âm báo và âm thanh / gửi cảnh báo nếu nhiệt độ lớn hơn hoặc bằng nhiệt độ tối đa đã đặt

Sử dụng nút: Với câu lệnh if, chúng ta có thể kiểm tra xem nút có được nhấn hay không bằng cách sử dụng readDigitalPin. Lệnh này sẽ trả về Boolean (1 hoặc 0). Nếu phản hồi là 0, thì nút được nhấn và số lượt hành khách tăng lên và hiển thị thông báo chào mừng. Sau đó, khi đạt đến dung lượng tối đa, một thông báo cảnh báo sẽ được phát ra.

Bước 4: Sao chép mã

% Đầu vào: Nhấn nút, cảm biến nhiệt độ

% Kết quả đầu ra: đèn, còi, cảnh báo bằng âm thanh, email, đồ thị

Mục đích: Sản phẩm này được thiết kế để giúp đảm bảo sự an toàn và thoải mái cho% hành khách đi tàu qua sa mạc.

% Cách sử dụng: Phát hiện số lượng hành khách bằng nút nhấn và% phát hiện nhiệt bằng cách sử dụng cảm biến nhiệt độ và vẽ biểu đồ và gửi cả số% hành khách và biểu đồ nhiệt độ đến ga xe lửa

configPin (a, 'D2', 'pullup'); % trong các bản phát hành trong tương lai sử dụng configPin

thời gian = 200;

e = 0;

x = 0

trong khi thời gian> 0

button_status = readDigitalPin (a, 'D2'); % bằng 0 khi nút được nhấn, ngược lại bằng 1

điện áp = readVoltage (a, 'A0');% pin phụ thuộc vào nơi chúng tôi đặt nó

tempCelcius = (điện áp * 100) -50; % được đưa ra trong hướng dẫn sử dụng cảm biến

tempF (time) = (tempCelcius * 1.8) +32% công thức chuyển đổi đã biết

tối đa = 120; % độ F

writeDigitalPin (a, 'D11', 1);

rem = mod (e, 2);

nếu tempF (thời gian)> = max

writeDigitalPin (a, 'D11', 0);

writeDigitalPin (a, 'D9', 1);

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

tạm dừng (.5)

writeDigitalPin (a, 'D6', 1)

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

tạm dừng (.5)

writeDigitalPin (a, 'D9', 1);

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

tạm dừng (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5)% phát "còi báo động"

z = 'Quá nhiệt.m4a'; % Điều này đặt tệp âm thanh vào một biến

[data, freq] = audioread (z); % Tải dữ liệu từ tệp âm thanh

o = audioplayer (dữ liệu, freq); % Tạo một đối tượng để kiểm soát việc phát tệp âm thanh

o.play ()% Phát tệp âm thanh

o.playblocking ()% Phát tệp và đợi tệp kết thúc

kết thúc

if button_status == 0 && rem == 0

e = e + 1

msgbox ('Chào mừng Aboard!');

elseif button_status == 0 && rem == 1

e = e + 1

msgbox ('Bienvenido a bordo!');

kết thúc

nếu e == 5

writeDigitalPin (a, 'D11', 0);

nếu x == 0

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

s = 'Cảnh báo_EF.m4a'; % Điều này đặt tệp âm thanh vào một biến

[data, freq] = audioread (s); % Tải dữ liệu từ tệp âm thanh

o = audioplayer (dữ liệu, freq); % Tạo một đối tượng để kiểm soát việc phát tệp âm thanh

% o.play ()% Phát tệp âm thanh

o.playblocking ()% Phát tệp và đợi tệp hoàn tất

msgbox ('Dung lượng tối đa')

x = x + 1

kết thúc

elseif e> = 6

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

kết thúc

time = thời gian - 1;

% tạm dừng (0,1);

% nếu e == 5 && max (tempF)> = 120

% thời gian = 0

% kết thúc

kết thúc

ee = num2str (e)

t = [1: 200];

tempF2 = flipplr (tempF);

cốt truyện (t, tempF2);

title ('Thời gian so với Nhiệt độ')

ylabel ('Nhiệt độ (F)')

xlabel ('Thời gian')

saveas (gcf, 'tempplot.jpg')

mail = '[email protected]'

password = 'Srsora123 #'

host = 'smtp.gmail.com'

setpref ('Internet', 'SMTP_Server', máy chủ lưu trữ);

setpref ('Internet', 'E_mail', thư);

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

setpref ('Internet', 'SMTP_Password', mật khẩu);

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, 'Xin chào ga tàu! Có rất nhiều hành khách trên tàu', ee, 'tempplot.jpg')

Bước 5: Kết quả

Đề xuất: