สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
ในสังคมยุคใหม่ การเพิ่มขึ้นของผู้โดยสารรถไฟหมายความว่าบริษัทรถไฟต้องทำมากขึ้นเพื่อเพิ่มประสิทธิภาพเครือข่ายเพื่อให้ทันกับความต้องการ ในโครงการนี้ เราจะแสดงในระดับเล็กน้อยว่าเซ็นเซอร์อุณหภูมิ น้ำฝน และการสั่นสะเทือนบนบอร์ด Arduino อาจช่วยเพิ่มความปลอดภัยให้กับผู้โดยสารได้อย่างไร
คำแนะนำนี้จะแสดงการเดินสายไฟสำหรับเซ็นเซอร์อุณหภูมิ น้ำฝน และการสั่นสะเทือนแบบทีละขั้นตอนบน Arduino รวมทั้งแสดงรหัส MATLAB ที่จำเป็นสำหรับการเรียกใช้เซ็นเซอร์เหล่านี้
ขั้นตอนที่ 1: ชิ้นส่วนและวัสดุ
1. คอมพิวเตอร์ที่ติดตั้ง MATLAB เวอร์ชันล่าสุด
2. บอร์ด Arduino
3. เซ็นเซอร์อุณหภูมิ
4. เซ็นเซอร์น้ำฝน
5. เซ็นเซอร์สั่นสะเทือน
6. ไฟ LED สีแดง
7. ไฟ LED สีฟ้า
8. ไฟ LED สีเขียว
9. ไฟ LED RBG
10. Buzzer
11. 18 สายชาย-ชาย
12. 3 สายหญิง-ชาย
13. สายหญิง-หญิง 2 เส้น
14. ตัวต้านทาน 6 330 โอห์ม
15. 1 ตัวต้านทาน 100 โอห์ม
ขั้นตอนที่ 2: การเดินสายเซ็นเซอร์อุณหภูมิ
ด้านบนเป็นสายไฟและรหัส MATLAB สำหรับอินพุตเซ็นเซอร์อุณหภูมิเช่นกัน
สายไฟจากกราวด์และ 5V จะต้องวิ่งไปที่ค่าลบและค่าบวกตามลำดับเพียงครั้งเดียวสำหรับทั้งบอร์ด จากนี้ไป การเชื่อมต่อกราวด์จะมาจากคอลัมน์ลบ และการเชื่อมต่อ 5V ใดๆ จะมาจากคอลัมน์บวก
รหัสด้านล่างสามารถคัดลอกและวางสำหรับเซ็นเซอร์อุณหภูมิ
%% TEMPERATURE SENSOR % สำหรับเซ็นเซอร์อุณหภูมิเราใช้แหล่งต่อไปนี้พร้อมกับ
% EF230 เว็บไซต์วัสดุเพื่อปรับเปลี่ยนเซ็นเซอร์อุณหภูมิของเราเพื่อให้ผู้ใช้
% อินพุตและเอาต์พุตไฟ LED 3 ดวงพร้อมกราฟ
ร่างนี้เขียนโดย SparkFun Electronics, ด้วยความช่วยเหลือมากมายจากชุมชน Arduino
ปรับให้เข้ากับ MATLAB โดย Eric Davishahl
%เยี่ยมชม https://learn.sparkfun.com/products/2 สำหรับข้อมูล SIK
ล้างทั้งหมด clc
tempPin = 'A0'; % ประกาศพินอะนาล็อกที่เชื่อมต่อกับเซ็นเซอร์อุณหภูมิ
a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');
% กำหนดฟังก์ชันที่ไม่ระบุชื่อที่แปลงแรงดันไฟฟ้าเป็นอุณหภูมิ
tempCfromVolts = @(โวลต์) (โวลต์-0.5)*100;
การสุ่มตัวอย่างระยะเวลา = 30;
ช่วงสุ่มตัวอย่าง = 2; % วินาทีระหว่างการอ่านค่าอุณหภูมิ
% ตั้งค่าเวกเตอร์ของเวลาสุ่มตัวอย่าง
samplingTimes = 0:samplingInterval:samplingDuration;
% คำนวณจำนวนตัวอย่างตามระยะเวลาและช่วงเวลา
numSamples = ความยาว (samplingTimes);
% จัดสรรล่วงหน้าตัวแปรชั่วคราวและตัวแปรสำหรับจำนวนการอ่านที่จะจัดเก็บ
tempC = ศูนย์ (numSamples, 1);
tempF = อุณหภูมิ C;
% ใช้กล่องโต้ตอบอินพุตเพื่อเก็บอุณหภูมิรางสูงสุดและต่ำสุด
dlg_prompts = {'ป้อนอุณหภูมิสูงสุด', 'ป้อนอุณหภูมิต่ำสุด'};
dlg_title = 'ช่วงอุณหภูมิราง';
N=22;
dlg_ans = inputdlg(dlg_prompts, dlg_title, [1, length(dlg_title)+N]);
% การจัดเก็บอินพุตจากผู้ใช้และแสดงว่าอินพุตถูกบันทึกแล้ว
max_temp = str2double(dlg_ans{1})
min_temp = str2double(dlg_ans{2})
txt = sprintf('บันทึกการป้อนข้อมูลของคุณแล้ว');
h=msgbox(txt);
รอ (h);
% สำหรับลูปเพื่ออ่านอุณหภูมิเป็นจำนวนครั้งที่เจาะจง
สำหรับดัชนี = 1:numSamples
% อ่านแรงดันไฟฟ้าที่ tempPin และจัดเก็บเป็นโวลต์ตัวแปร
โวลต์ = readVoltage (a, tempPin);
tempC(ดัชนี) = tempCfromVolts(โวลต์);
tempF(ดัชนี) = tempC(ดัชนี)*9/5+32; % แปลงจากเซลเซียสเป็นฟาเรนไฮต์
% หากคำสั่งให้ไฟ LED เฉพาะกะพริบขึ้นอยู่กับว่าตรงตามเงื่อนไขใด
ถ้า tempF(ดัชนี) >= max_temp % LED สีแดง
writeDigitalPin(a, 'D13', 0);
หยุดชั่วคราว(0.5);
writeDigitalPin(a, 'D13', 1);
หยุดชั่วคราว(0.5);
writeDigitalPin(a, 'D13', 0);
elseif tempF (ดัชนี) >= min_temp && tempF (ดัชนี) < max_temp % LED สีเขียว
writeDigitalPin(a, 'D11', 0);
หยุดชั่วคราว (0.5);
writeDigitalPin(a, 'D11', 1);
หยุดชั่วคราว (0.5);
writeDigitalPin(a, 'D11', 0);
elseif tempF(ดัชนี) <= min_temp % LED สีน้ำเงิน
writeDigitalPin(a, 'D12', 0);
หยุดชั่วคราว(0.5);
writeDigitalPin(a, 'D12', 1);
หยุดชั่วคราว(0.5);
writeDigitalPin(a, 'D12', 0);
จบ
% แสดงอุณหภูมิตามที่วัดได้
fprintf('อุณหภูมิที่ %d วินาทีคือ %5.2f C หรือ %5.2f F.\n', …
เวลาสุ่มตัวอย่าง (ดัชนี), tempC (ดัชนี), tempF (ดัชนี));
หยุดชั่วคราว (samplingInterval) %delay จนถึงตัวอย่างถัดไป
จบ
% การพล็อตการอ่านอุณหภูมิ
รูปที่ 1)
พล็อต (samplingTimes, tempF, 'r-*')
xlabel('เวลา (วินาที)')
ylabel('อุณหภูมิ (F)')
title('การอ่านอุณหภูมิจาก RedBoard')
ขั้นตอนที่ 3: เอาต์พุตเซ็นเซอร์อุณหภูมิ
ด้านบนคือสายไฟและรหัส MATLAB สำหรับเอาต์พุตเซ็นเซอร์อุณหภูมิ
สำหรับโครงการนี้ เราใช้ไฟ LED สามดวงสำหรับเอาต์พุตของเซ็นเซอร์อุณหภูมิของเรา เราใช้สีแดงถ้ารางรถไฟร้อนเกินไป สีฟ้าถ้ารางเย็นเกินไป และสีเขียวถ้าอยู่ระหว่างทาง
ขั้นตอนที่ 4: อินพุตเซ็นเซอร์น้ำฝน
ด้านบนเป็นการเดินสายไฟสำหรับเซ็นเซอร์น้ำฝนและรหัส MATLAB อยู่ด้านล่าง
%% เซ็นเซอร์น้ำ
ล้างทั้งหมด clc
a=arduino('/dev/tty.usbserial-DA017PNO', 'uno');
พินน้ำ = 'A1';
vDry = 4.80; % แรงดันไฟเมื่อไม่มีน้ำ
การสุ่มตัวอย่างระยะเวลา = 60;
ช่วงสุ่มตัวอย่าง = 2;
samplingTimes = 0:samplingInterval:samplingDuration;
numSamples = ความยาว (samplingTimes);
% สำหรับลูปเพื่ออ่านแรงดันไฟฟ้าตามระยะเวลาที่กำหนด (60 วินาที)
สำหรับดัชนี = 1:numSamples
volt2 = อ่านแรงดันไฟฟ้า (a, waterPin); % อ่านค่าแรงดันจากพินน้ำแบบอนาล็อก
% หากคำสั่งให้ส่งเสียงเตือนหากตรวจพบน้ำ แรงดันตก = น้ำ
ถ้าโวลต์2 < vDry
playTone(a, 'D09', 2400) % ฟังก์ชัน playTone จาก MathWorks
% แสดงคำเตือนแก่ผู้โดยสารหากตรวจพบน้ำ
waitfor(warndlg('รถไฟของคุณอาจล่าช้าเนื่องจากภัยน้ำ'));
จบ
% แสดงแรงดันไฟฟ้าตามที่วัดโดยเซ็นเซอร์น้ำ
fprintf('แรงดันไฟฟ้าที่ %d วินาทีคือ %5.4f V.\n', …
เวลาสุ่มตัวอย่าง (ดัชนี), โวลต์2);
หยุดชั่วคราว (ช่วงการสุ่มตัวอย่าง)
จบ
ขั้นตอนที่ 5: เอาต์พุตเซ็นเซอร์น้ำฝน
ด้านบนคือการเดินสายสำหรับออดที่ส่งเสียงบี๊บเมื่อใดก็ตามที่น้ำตกลงบนแทร็กมากเกินไป รหัสสำหรับออดจะฝังอยู่ภายในรหัสสำหรับอินพุตน้ำฝน
ขั้นตอนที่ 6: อินพุตเซ็นเซอร์สั่นสะเทือน
ด้านบนเป็นการเดินสายไฟสำหรับเซ็นเซอร์การสั่นสะเทือน เซ็นเซอร์ตรวจจับการสั่นสะเทือนมีความสำคัญต่อระบบรางรถไฟในกรณีที่หินตกลงมาบนรางรถไฟ รหัส MATLAB ถูกโพสต์ด้านล่าง
%% Vibration Sensorล้างทั้งหมด, clc
PIEZO_PIN = 'A3'; % ประกาศพินอะนาล็อกที่เชื่อมต่อกับเซ็นเซอร์การสั่นสะเทือน a=arduino('/dev/tty.usbserial-DA017PNO', 'uno'); % การเริ่มต้นเวลาและช่วงเวลาในการวัดการสุ่มตัวอย่างการสั่นสะเทือน Duration = 30; % วินาที การสุ่มตัวอย่างช่วงเวลา = 1;
samplingTimes = 0:samplingInterval:samplingDuration;
numSamples = ความยาว (samplingTimes);
% การใช้รหัสจากแหล่งต่อไปนี้เราแก้ไขเพื่อเปิด a
% LED สีม่วง หากตรวจพบการสั่น
% SparkFun Tinker Kit, RGB LED เขียนโดย SparkFun Electronics, % ด้วยความช่วยเหลือมากมายจากชุมชน Arduino
% ปรับให้เข้ากับ MATLAB โดย Eric Davishahl
% กำลังเริ่มต้นพิน RGB
RED_PIN = 'D5';
GREEN_PIN = 'D6';
BLUE_PIN = 'D7';
% สำหรับลูปเพื่อบันทึกการเปลี่ยนแปลงแรงดันไฟฟ้าจากเซ็นเซอร์การสั่นสะเทือนผ่าน a
% ช่วงเวลาเฉพาะ (30 วินาที)
สำหรับดัชนี = 1:numSamples
volt3 = readVoltage (a, PIEZO_PIN);
% หากคำสั่งให้เปิด LED สีม่วงหากตรวจพบการสั่น
ถ้าโวลต์3>0.025
writeDigitalPin(a, RED_PIN, 1);
% การสร้างแสงสีม่วง
writeDigitalPin(a, GREEN_PIN, 0);
writeDigitalPin(a, BLUE_PIN, 1);
อื่นๆ % ปิด LED หากตรวจไม่พบการสั่น
writeDigitalPin(a, RED_PIN, 0);
writeDigitalPin(a, GREEN_PIN, 0);
writeDigitalPin(a, BLUE_PIN, 0);
จบ
% แสดงแรงดันไฟฟ้าตามที่วัด
fprintf('แรงดันไฟฟ้าที่ %d วินาทีคือ %5.4f V.\n', …
เวลาสุ่มตัวอย่าง (ดัชนี), โวลต์3);
หยุดชั่วคราว (ช่วงการสุ่มตัวอย่าง)
จบ
% ตัดไฟเมื่อวัดการสั่นสะเทือนเสร็จ
writeDigitalPin(a, RED_PIN, 0);
writeDigitalPin(a, GREEN_PIN, 0);
writeDigitalPin(a, BLUE_PIN, 0);
ขั้นตอนที่ 7: เอาต์พุตเซ็นเซอร์สั่นสะเทือน
ด้านบนเป็นการเดินสายไฟสำหรับไฟ LED RBG ที่ใช้ แสงจะเรืองแสงเป็นสีม่วงเมื่อตรวจพบการสั่น รหัส MATLAB สำหรับเอาต์พุตถูกฝังอยู่ภายในรหัสสำหรับอินพุต
ขั้นตอนที่ 8: สรุป
หลังจากทำตามขั้นตอนเหล่านี้แล้ว คุณควรมี Arduino ที่สามารถตรวจจับอุณหภูมิ น้ำฝน และการสั่นสะเทือนได้ ในขณะที่ดูว่าเซ็นเซอร์เหล่านี้ทำงานอย่างไรในขนาดที่เล็ก เป็นการง่ายที่จะจินตนาการว่าเซ็นเซอร์เหล่านี้มีความสำคัญต่อระบบรถไฟในชีวิตสมัยใหม่เพียงใด
แนะนำ:
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: 6 ขั้นตอน (พร้อมรูปภาพ)
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: Arduino Nano เป็นสมาชิกที่ดี ขนาดเล็ก และราคาถูกของตระกูล Arduino มันขึ้นอยู่กับชิป Atmega328 สิ่งที่ทำให้มีประสิทธิภาพเท่ากับ Arduino Uno พี่ชายที่ใหญ่ที่สุดของเขา แต่สามารถรับเงินน้อยกว่า ในอีเบย์ตอนนี้เวอร์ชั่นภาษาจีนสามารถข
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-