สารบัญ:

การป้องกันการชนกัน - ขับเคลื่อนโดย Pi: 6 ขั้นตอน
การป้องกันการชนกัน - ขับเคลื่อนโดย Pi: 6 ขั้นตอน

วีดีโอ: การป้องกันการชนกัน - ขับเคลื่อนโดย Pi: 6 ขั้นตอน

วีดีโอ: การป้องกันการชนกัน - ขับเคลื่อนโดย Pi: 6 ขั้นตอน
วีดีโอ: ขอบคุณที่มอบความสุขในวัยเด็กนะครับ #สปอยหนัง #ขึ้นฟีดเถอะ #ขึ้นฟีด #rip 2024, พฤศจิกายน
Anonim
การป้องกันการชนกัน - ขับเคลื่อนโดย Pi
การป้องกันการชนกัน - ขับเคลื่อนโดย Pi

คำแนะนำนี้จะให้คำแนะนำทีละขั้นตอนในการสร้างระบบป้องกันการชนกัน ในการเริ่มต้นต้องได้รับรายการวัสดุดังต่อไปนี้:

Raspberry PI 3 (พร้อมสายไฟและอีเธอร์เน็ต), บอร์ดขยาย GPIO 1 บอร์ดและสายริบบิ้น (GPIO), บอร์ดทดลองขนาดใหญ่ 1 อันพร้อมไดอะแกรม, บอร์ดทดลองขนาดเล็ก 2 อันพร้อมไดอะแกรม, สายจัมเปอร์ 14 ตัว, ตัวต้านทาน 220 โอห์ม 3 ตัว, ไฟ LED RGB 1 ตัว, สวิตช์ 3 ปุ่ม, 1HB-SR04 อัลตราโซนิกเซนเซอร์

ขั้นตอนที่ 1: ส่วนขยาย GPIO

ส่วนขยาย GPIO
ส่วนขยาย GPIO
ส่วนขยาย GPIO
ส่วนขยาย GPIO

เชื่อมต่อบอร์ดขยาย GPIO กับเขียงหั่นขนมขนาดใหญ่ GPIO ควรหันไปทางแนวตั้งเช่นเดียวกับเขียงหั่นขนม กำหนดด้านซ้ายของ GPIO ให้กับพอร์ตบอร์ดทดลอง D1-D20 โดยใช้ไดอะแกรมที่ให้มา ด้านขวาก็จะเชื่อมต่อกับ H1-H20 เชื่อมต่อสายแพกับทั้ง Raspberry Pi 3 และบอร์ดต่อขยาย GPIO ส่วนประกอบทั้งหมดนี้จะเรียกว่าบอร์ด GPIO (GPIO)

ขั้นตอนที่ 2: อัลตราโซนิกเซนเซอร์

อัลตราโซนิกเซนเซอร์
อัลตราโซนิกเซนเซอร์
อัลตราโซนิกเซนเซอร์
อัลตราโซนิกเซนเซอร์

ใช้เขียงหั่นขนมขนาดเล็กอื่นเชื่อมต่อเซ็นเซอร์อัลตราโซนิก HR-SR04 กับพอร์ตเขียงหั่นขนมที่มีขนาดเล็กกว่า A2-5 โดยใช้ไดอะแกรมที่ให้มา ต่อสายจัมเปอร์เข้ากับเขียงหั่นขนมที่มีขนาดเล็กกว่า (BB) E2 เสียบปลายอีกด้านในพอร์ต J1 ของบอร์ดขยาย GPIO ในทำนองเดียวกัน เชื่อมต่อจัมเปอร์อีกสามตัวตามแบบต่อไปนี้ (BB E3, GPIO B17) (BB E4, GPIO B18) (BB E5, GPIO B20)

ขั้นตอนที่ 3: LED และตัวต้านทาน

LED และตัวต้านทาน
LED และตัวต้านทาน
LED และตัวต้านทาน
LED และตัวต้านทาน
LED และตัวต้านทาน
LED และตัวต้านทาน

บนเขียงหั่นขนมขนาดเล็กแบบเดียวกับที่ใช้ในคำสั่งก่อนหน้า ให้เชื่อมต่อตัวต้านทาน 220 โอห์มสามตัวตามแบบต่อไปนี้ (E10, H10)(E12, H12)(E14, H14) จากนั้นต่อจัมเปอร์จากเขียงหั่นขนม E13 เดียวกันกับรางจ่ายไฟภาคพื้นดินบนบอร์ด GPIO เชื่อมต่อขาทั้งสี่ของ LED เข้ากับพอร์ตเขียงหั่นขนมที่มีขนาดเล็กกว่า (B13)(D14)(D12)(D10) จากนั้นเชื่อมต่อจัมเปอร์สามตัวจากเขียงหั่นขนมขนาดเล็กเข้ากับบอร์ด GPIO ตามแบบที่กำหนด (BB J10, GPIO J9) (BB J12, GPIO J8) (BB J14, GPIO J6) เขียงหั่นขนมนี้เสร็จสมบูรณ์แล้ว

ขั้นตอนที่ 4: กราวด์

พื้น
พื้น

ใช้จัมเปอร์อื่นเพื่อเชื่อมต่อบอร์ด GPIO J7 กับรางไฟฟ้าภาคพื้นดิน

ขั้นตอนที่ 5: ปุ่ม

ปุ่ม
ปุ่ม

การใช้เขียงหั่นขนมอันที่สองวางสวิตช์ปุ่มบนพอร์ต E1 และ D1 วางสวิตช์อีกอันที่ E5 และ D5 และสวิตช์ที่สามที่ E9 และ D9 เชื่อมต่อจัมเปอร์สามตัวจากรางจ่ายไฟบวกบนบอร์ด GPIO กับพอร์ตบอร์ดบอร์ดต่อไปนี้ (D3) (D7) (D11) ใช้สายจัมเปอร์อีกสามสายเชื่อมต่อเขียงหั่นขนมกับบอร์ดส่วนขยาย GPIO ในคฤหาสน์ต่อไปนี้: (BB D1, GPIO J16) (BB D5, GPIO J18) (BB D9, GPIO J20) สุดท้ายใช้สายจัมเปอร์สุดท้ายเชื่อมต่อ GPIO A1 กับรางไฟบวก การตั้งค่าทางกายภาพเสร็จสมบูรณ์แล้ว

ขั้นตอนที่ 6: รหัส

รหัส
รหัส
รหัส
รหัส

เชื่อมต่อสายอีเทอร์เน็ตและสายไฟเข้ากับ Pi และเข้าไปในตำแหน่งที่เกี่ยวข้อง เปิด MATLAB และเรียกใช้สคริปต์ต่อไปนี้เพื่อเริ่มต้นไมโครคอนโทรลเลอร์:

rpi = raspi('169.254.0.2', 'pi', 'ราสเบอร์รี่');

จากนั้นคัดลอกและวางสิ่งต่อไปนี้ลงในสคริปต์ใหม่ที่เรียกว่า Ping เพื่อเรียกใช้ระบบป้องกันการชนกัน:

ฟังก์ชั่น dist = ping () trig = 19; เสียงสะท้อน = 13; ทดสอบ = 21; configurationPin(rpi, trig, 'DigitalOutput'); configurationPin(rpi, echo, 'DigitalInput'); configurationPin(rpi, ทดสอบ, 'DigitalInput');

disp("กำลังวัดระยะทาง");

ในขณะที่จริง writeDigitalPin(rpi, trig, 0); disp("ปล่อยเซ็นเซอร์ให้ตกลง"); หยุดชั่วคราว(2);

writeDigitalPin(rpi, ตรีโกณฯ, 1); หยุดชั่วคราว (0.002); writeDigitalPin(rpi, ตรีโกณมิติ, 0);

ขณะที่ readDigitalPin(rpi, echo) == 0 tic end

ในขณะที่ readDigitalPin(rpi, echo) == 1 T = toc; จบ

pulse_duration = T; ระยะทาง = pulse_duration * 17150;

เปิด = "ระยะทาง = "; ปิด = " ซม."; string = [เปิด, ระยะทาง, ปิด]; disp(สตริง); dist = ระยะทาง; ปลาย ปลาย

ในสคริปต์ใหม่ เรียกใช้รหัสต่อไปนี้ชื่อสถานะ:

configurationPin(rpi, 21, 'DigitalInput');configurePin(rpi, 16, 'DigitalInput'); กำหนดค่าพิน (rpi, 12, 'DigitalInput');

สถานะ = 2; ง = 10; % สถานะ: 0-สีแดง/หยุด 1-สีน้ำเงิน/ช้า 2-สีเขียว/ทำงาน = true; ขณะรัน %d = ping(); ถ้า readDigitalPin(rpi, 21) == 1 สถานะ = 0; elseif readDigitalPin(rpi, 16) == 1 สถานะ = 1; elseif readDigitalPin(rpi, 12) == 1 สถานะ = 2; elseif d

แนะนำ: