สารบัญ:
- ขั้นตอนที่ 1: การตั้งค่าโครงการใน Vivado สำหรับ Ernie
- ขั้นตอนที่ 2: การสร้าง PWM ของ Ernie ใน Vivado
- ขั้นตอนที่ 3: การสร้าง TDOA ของ Ernie ใน Vivado
- ขั้นตอนที่ 4: การห่อและส่งออก Ernie
- ขั้นตอนที่ 5: สร้างเออร์นี่
- ขั้นตอนที่ 6: BSP แรกของเออร์นี่
- ขั้นตอนที่ 7: Ernie ของ FreeRTOS ของ Ernie
- ขั้นตอนที่ 8: นำเข้ารหัส C ของเออร์นี่
- ขั้นตอนที่ 9: การดีบัก Ernie
- ขั้นตอนที่ 10: ทำให้เออร์นี่เป็นอิสระ
- ขั้นตอนที่ 11: ทำให้เออร์นี่น่ารัก
วีดีโอ: วิธีทำเออร์นี่: 11 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
นี่คือบทช่วยสอนเกี่ยวกับวิธีการสร้าง Ernie หุ่นยนต์ควบคุมเสียงอัตโนมัติของคุณโดยใช้ Zybo Board ซึ่งจะครอบคลุมถึงวิธีการ: สร้างโปรเจ็กต์ใน Vivado, สร้างไดรเวอร์เซอร์โวมอเตอร์แบบ PWM ใน FPGA, เชื่อมต่อกับเซ็นเซอร์เสียงสองตัว, สร้างความแตกต่างของเวลาของ IP ขาเข้า, ใช้ freeRTOS และเรียกใช้ zybo จากก้อนแบตเตอรี่ นี่เป็นโครงการสุดท้ายของเราสำหรับคลาสระบบปฏิบัติการแบบเรียลไทม์ (CPE 439) ที่ Cal Poly SLO
รายการอุปกรณ์:
- 1 - คณะกรรมการพัฒนา ZYBO Zynq 7000
- 2 - เซอร์โวหมุนต่อเนื่องแบบพารัลแลกซ์
- 2 - เซนเซอร์เสียง (เครื่องตรวจจับเสียง SparkFun)
- 1 - 5v แบตเตอรี่ลิเธียมไอออน USB (สำหรับบอร์ด)
- 4 - แบตเตอรี่ AA (สำหรับเซอร์โว)
- 1 - ก้อนแบตเตอรี่ AA (พร้อมช่องใส่แบตเตอรี่ 4 ก้อน)
- 1 - สายไมโคร USB
- 1 - เขียงหั่นขนม
- หลายสาย - ชายกับชาย
- 1 - แชสซีเซอร์โว
ข้อกำหนดของซอฟต์แวร์:
- Xilinx Vivado Design Suite 2016.2
- Digilent Adept 2.16.1
ขั้นตอนที่ 1: การตั้งค่าโครงการใน Vivado สำหรับ Ernie
- วิซาร์ดจะปรากฏขึ้น
- คลิกถัดไป
-
ต่อไปชื่อโครงการ
- ห้ามใช้ชื่อโครงการหรือเส้นทางไดเรกทอรีที่มีช่องว่าง!!!!!
- นี่จะเป็นโครงการ RTL
- เราไม่ต้องการระบุแหล่งที่มา
-
คลิกถัดไปเราจะไปที่หน้าส่วน เรากำลังใช้ ZYNQ XC7Z010-1CLG400C
- Vivado ไม่มี Zybo ที่ระบุว่าเป็นหนึ่งในบอร์ดที่กำหนดไว้ล่วงหน้า เลือก: “parts” จากนั้นค้นหา xc7z010clg400-1
- หากคุณเลือกส่วนที่ไม่ถูกต้องโดยไม่ได้ตั้งใจ คุณสามารถสลับชิปได้อย่างง่ายดาย: เครื่องมือ -> การตั้งค่าโครงการ -> ทั่วไป แล้วคลิกจุดทางด้านขวาของ "Project Device"
-
คลิกสร้างการออกแบบบล็อก
ตั้งชื่อมันว่า design_1 สำหรับตอนนี้
- คุณจะเห็นแถบสีเขียวที่ระบุว่า เพิ่ม IP ให้คลิกที่มัน
-
ค้นหา Zynq
- ดับเบิ้ลคลิกระบบประมวลผล ZYNQ7
- บล็อกนี้จะปรากฏในการออกแบบบล็อกของเรา
- คุณจะเห็นแถบสีเขียวที่ระบุว่า Run Block Automation คลิกมัน
- ดาวน์โหลด zybo_zynq_def.xml ด้านล่าง
-
ใน Vivado คลิก "นำเข้าการตั้งค่า XPS" และเลือก "zybo_zynq_def.xml"
ค่านี้จะเติมการกำหนดค่าบล็อก Vivado ด้วยอุปกรณ์ต่อพ่วงในตัวและการกำหนดพินทั้งหมดของบอร์ด Zybo
-
ดับเบิลคลิกที่บล็อก ZYNQ
-
การกำหนดค่า MIO
- เปิดใช้งาน Timer 0 (ภายใต้ Application Processor Unit - img 1)
- เปิดใช้งาน Watchdog (ภายใต้ Application Processor Unit- img 1)
- เปิดใช้งาน GPIO->GPIO MIO (ภายใต้ Application Processor Unit - img 2)
- เปิดใช้งาน GPIO->ENET Reset (ภายใต้ I/O Peripherals- img 2)
-
การกำหนดค่านาฬิกา
ปิดการใช้งาน FCLK0 (ภายใต้ PL Fabric Clocks - img 3)
-
- คลิกตกลง
-
“เรียกใช้บล็อกอัตโนมัติ” ตอนนี้
จะมีคำถามบางอย่างเกี่ยวกับสัญญาณ ให้พูดว่า OK
-
คลิก "สร้าง HDL Wrapper"
เราจะต้องการคัดลอกเสื้อคลุมที่สร้างขึ้นเพื่อให้ผู้ใช้แก้ไขได้
- คลิกตกลง
ขั้นตอนที่ 2: การสร้าง PWM ของ Ernie ใน Vivado
ขั้นตอนนี้จะสร้าง PWM IP พร้อมอินพุตที่ส่งผ่านไลบรารี AXI
-
สร้างบล็อก AXI GPIO โดยคลิกขวาที่พื้นหลังแล้วคลิก "เพิ่ม IP"
พิมพ์ "AXI_GPIO" ลงในแถบค้นหา แล้วเลือกแพ็คเกจนี้
-
ปรับแต่ง IP ใหม่โดยดับเบิลคลิกที่บล็อก axi_gpio_0 ใหม่
- ภายใต้ GPIO ให้ตั้งค่าความกว้าง GPIO เป็น 2 บิตเหล่านี้จะเป็นสัญญาณ PWM_ON เพื่อขับเคลื่อนอินสแตนซ์โมดูล PWM แต่ละตัว
- คลิก "เปิดใช้งานช่องสัญญาณคู่"
- ภายใต้ GPIO 2 ให้ตั้งค่าความกว้าง GPIO เป็น 2 บิตเหล่านี้จะเป็นสัญญาณ PWM_FW เพื่อกำหนดทิศทางของอินสแตนซ์โมดูล PWM แต่ละตัว
-
คลิกขวาที่พอร์ตเอาต์พุต axi_gpio_0 ที่ระบุว่า GPIO และเลือก "สร้างภายนอก"
- คลิกที่เอาต์พุตใหม่ที่มีป้ายกำกับ GPIO และไปที่แท็บ "คุณสมบัติ" บนแถบเครื่องมือด้านซ้าย และเปลี่ยนชื่อเป็น PWM_ON
- คลิกที่เอาต์พุตใหม่ที่มีป้ายกำกับ GPIO2 และไปที่แท็บ "คุณสมบัติ" บนแถบเครื่องมือด้านซ้าย และเปลี่ยนชื่อเป็น PWM_FW
-
เลือก Run Connection Automation ในแบนเนอร์สีเขียวด้านบนบล็อกไดอะแกรม
หากคุณเชื่อมต่อพอร์ตด้วยตนเอง อาจไม่มีการกำหนดค่าที่อยู่ AXI ซึ่งนำไปสู่ปัญหาการสื่อสารในภายหลัง
-
ในบานหน้าต่าง Flow Navigator เลือกผู้จัดการโครงการ -> เพิ่มแหล่งที่มาเพื่อสร้างบล็อก IP ที่กำหนดเองใหม่
- เลือก "เพิ่มหรือสร้างแหล่งการออกแบบ" แล้วกดถัดไป
- คลิก "สร้างไฟล์" เปลี่ยนประเภทไฟล์เป็น "SystemVerilog" และพิมพ์ "pwm" ในช่องชื่อไฟล์ จากนั้นคลิกตกลง
- คลิกเสร็จสิ้น
-
ละเว้นหน้าต่าง Define Module โดยกด OK (เราจะเขียนทับสิ่งเหล่านี้ในภายหลัง)
หากถามว่าแน่ใจหรือไม่ ให้คลิกใช่
-
ในแท็บแหล่งที่มา ให้ดับเบิลคลิกที่ pwm.sv (อยู่ใน "Design Sources/design_1_wrapper")
คัดลอก/วางโค้ด SystemVerilog ทั้งหมดจากไฟล์ pwm.txt ที่แนบมาด้านล่าง
ขั้นตอนที่ 3: การสร้าง TDOA ของ Ernie ใน Vivado
ขั้นตอนนี้จะสร้าง TDOA IP ซึ่งสามารถอ่านเอาต์พุตได้ผ่านไลบรารี AXI
-
สร้างบล็อก AXI GPIO โดยคลิกขวาที่พื้นหลังแล้วคลิก "เพิ่ม IP"
พิมพ์ "AXI_GPIO" ลงในแถบค้นหา แล้วเลือกแพ็คเกจนี้
-
ปรับแต่ง IP ใหม่โดยดับเบิลคลิกที่บล็อก axi_gpio_1 ใหม่
- ภายใต้ GPIO ให้ทำเครื่องหมายที่ช่อง "All Inputs" และตั้งค่าความกว้าง GPIO เป็น 32 บัสนี้จะเป็นความแตกต่างของเวลาที่มาถึงระหว่างเซ็นเซอร์ทั้งสอง
- ภายในบล็อก axi_gpio_1 คลิก + ถัดจากพอร์ต GPIO เพื่อเปิดเผย gpio_io_i[31:0]
-
คลิกขวาที่พอร์ตเอาต์พุต axi_gpio_1 ที่ระบุว่า gpio_io_i[31:0] แล้วเลือก "สร้างภายนอก"
คลิกที่อินพุตใหม่ชื่อ gpio_io_i[31:0] และไปที่แท็บ "คุณสมบัติ" บนแถบเครื่องมือด้านซ้าย และเปลี่ยนชื่อเป็น TDOA_val
-
เลือก Run Connection Automation ในแบนเนอร์สีเขียวด้านบนบล็อกไดอะแกรม
หากคุณเชื่อมต่อพอร์ตด้วยตนเอง อาจไม่มีการกำหนดค่าที่อยู่ AXI ซึ่งนำไปสู่ปัญหาการสื่อสารในภายหลัง
-
ในบานหน้าต่าง Flow Navigator เลือกผู้จัดการโครงการ -> เพิ่มแหล่งที่มาเพื่อสร้างบล็อก IP ที่กำหนดเองใหม่
- เลือก "เพิ่มหรือสร้างแหล่งการออกแบบ" แล้วกดถัดไป
- คลิก "สร้างไฟล์" เปลี่ยนประเภทไฟล์เป็น "SystemVerilog" และพิมพ์ "tdoa" ในช่องชื่อไฟล์ จากนั้นคลิกตกลง
- คลิกเสร็จสิ้น
-
ละเว้นหน้าต่าง Define Module โดยกด OK (เราจะเขียนทับสิ่งเหล่านี้ในภายหลัง)
หากถามว่าแน่ใจหรือไม่ ให้คลิกใช่
-
ในแท็บแหล่งที่มา ให้ดับเบิลคลิกที่ tdoa.sv (อยู่ใน "Design Sources/design_1_wrapper")
คัดลอก/วางโค้ด SystemVerilog ทั้งหมดจากไฟล์ tdoa.txt ที่แนบมาด้านล่าง
ขั้นตอนที่ 4: การห่อและส่งออก Ernie
- ตรวจสอบว่าบล็อกไดอะแกรมดูเหมือนภาพหน้าจอที่แนบมา
-
ในแท็บแหล่งที่มา ให้คลิกขวาที่ design_1.bd แล้วเลือก "สร้าง HDL Wrapper…"
- เลือก "คัดลอกเอาต์พุตที่สร้างขึ้นเพื่ออนุญาตให้ผู้ใช้แก้ไข" จากนั้นกด "ตกลง"
- คัดลอกโค้ดจาก design_1_wrapper.txt ที่แนบมาด้านล่าง และวางแทนโค้ด design_1_wrapper.v ที่สร้างขึ้น
- บันทึกการออกแบบ_1_wrapper.v
-
ในแท็บแหล่งที่มา ให้ดับเบิลคลิกที่ไฟล์ ZYBO_Master.xdc ภายใต้ Constraints/constrs1
- คัดลอกโค้ดจาก ZYBO_Master.txt ที่แนบมาด้านล่าง และวางแทนโค้ด ZYBO_Master.xdc ที่มีอยู่
-
สังเกตพินอินพุต/เอาต์พุตต่อไปนี้:
- L15: สัญญาณ PWM สำหรับมอเตอร์ด้านซ้าย (Pmod JA2 บน Zybo)
- L14: สัญญาณ PWM สำหรับมอเตอร์ด้านขวา (Pmod JA8 บน Zybo)
- V12: อินพุตเกตจากเซ็นเซอร์เสียง 1 (Pmod JE1 บน Zybo)
- K16: อินพุตเกตจากเซ็นเซอร์เสียง 2 (Pmod JE2 บน Zybo)
-
ในบานหน้าต่าง Flow Navigator คลิก "สร้าง Bitstream" ใต้โปรแกรมและดีบัก
ถ้าคุณคิดว่ามันเสร็จทันที ก็คงไม่ใช่ ชงชาให้หน่อย
-
คลิกไฟล์ -> ส่งออก -> สร้างฮาร์ดแวร์
ทำเครื่องหมายที่ "รวม Bitstream" แล้วกดตกลง
- คลิกไฟล์ -> เปิด SDK
ขั้นตอนที่ 5: สร้างเออร์นี่
- ติดตั้งเซอร์โวเข้ากับแชสซีเซอร์โว
-
ทำตามแผ่นข้อมูลสำหรับเซอร์โวให้ทำดังต่อไปนี้:
- เชื่อมต่อกราวด์ของเซอร์โวกับพินกราวด์บน JA Pmod ของ Zybo (ดูรูปพินเอาต์ที่แนบมา)
- ต่อสายไฟของเซอร์โวเข้ากับก้อนแบตเตอรี่ AA
เราพบว่าเมื่อเซอร์โวเชื่อมต่อกับ Vdd ของ Zybo บอร์ดจะดึงกระแสไฟมากเกินไป ทำให้บอร์ดมีการรีเซ็ตอย่างต่อเนื่อง
- เชื่อมต่อพินสัญญาณอินพุตกับพินเอาต์พุตที่เหมาะสมของ Zybo (ซ้าย: JA2, ขวา: JA8)
- ติดตั้งเซ็นเซอร์เสียงที่ด้านหน้าของแชสซีโดยหันไปข้างหน้าโดยให้ชิดกันมากที่สุด
-
ใช้คู่มือการเชื่อมต่อของเซ็นเซอร์เสียงเพื่อรวมเซ็นเซอร์เสียง
- ต่อกราวด์และพิน Vdd ของเซ็นเซอร์เสียงแต่ละตัวเข้ากับกราวด์และพิน Vdd บน JE Pmod ของ Zybo (ดูภาพพินเอาต์ที่แนบมา)
- ต่อพินเกตของเซ็นเซอร์เสียงด้านซ้ายเข้ากับ JE1
- ต่อ Gate pin ของเซ็นเซอร์เสียงที่ถูกต้องเข้ากับ JE2
ขั้นตอนที่ 6: BSP แรกของเออร์นี่
-
สร้าง BSP เพื่อสรุปแพลตฟอร์มที่เราเพิ่งสร้างขึ้น
คุณสามารถรับสิ่งนี้ผ่านไฟล์ -> ใหม่ -> แพ็คเกจสนับสนุนบอร์ด
-
วิซาร์ดจะปรากฏขึ้นเพื่อช่วยคุณสร้าง BSP
- เราต้องการผูก BSP นี้กับแพลตฟอร์มที่เราเพิ่งสร้างขึ้น ดังนั้น
- แพลตฟอร์มฮาร์ดแวร์ควรสอดคล้องกับสิ่งที่เราเพิ่งสร้างขึ้น (ดู img 1)
- CPU ของเราจะเป็น _0 CPU
- คลิกเสร็จสิ้น
- อย่าลืมทำเครื่องหมายที่ lwip141 เพื่อรวม bsp ของคุณในหน้าต่างที่ปรากฏขึ้น (ดู img 2)
ขั้นตอนที่ 7: Ernie ของ FreeRTOS ของ Ernie
-
ดาวน์โหลด FreeRTOS รุ่นล่าสุดจาก Sourceforge
หากการดาวน์โหลดเป็นไฟล์เรียกทำงาน ให้เรียกใช้เพื่อแยกไฟล์ FreeRTOS ลงในไดเร็กทอรีโครงการของคุณ
- เปิด SDK นั้นไว้ แล้วคลิกไฟล์ -> นำเข้า
- เราต้องการคลิก ทั่วไป -> จากพื้นที่ทำงานที่มีอยู่ จากนั้นเราจะต้องไปที่ตำแหน่งที่เราดาวน์โหลด FreeRTOS
-
การสาธิตของเราจะอยู่ใน FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702 เมื่อเลือกโฟลเดอร์นี้ เราควรจะเห็นสามโปรเจ็กต์ปรากฏขึ้น (รหัสของเรา (OS) คือ BSP และแพลตฟอร์ม HW)
นำเข้า RTOSDemo เฉพาะในพื้นที่ทำงานปัจจุบันของคุณเท่านั้น
-
ในโครงการโฟลเดอร์ "สีน้ำเงิน" ทั้งหมดให้เปลี่ยน BSP. ที่อ้างอิง
- คลิกขวาและเลือก "เปลี่ยนการอ้างอิง BSP"
- เลือก BSP ที่คุณเพิ่งสร้างขึ้นสำหรับ Zybo. ของคุณ
- การแก้ไขโค้ดในโฟลเดอร์ SDK Blue ของ Xilinx เป็นโครงการรหัสจริง
ขั้นตอนที่ 8: นำเข้ารหัส C ของเออร์นี่
- ในไดเร็กทอรี RTOSDemo/src ให้เขียนทับไฟล์ main.c ที่มีอยู่โดยแนบไฟล์ main.c ไว้ที่นี่
- คัดลอกไฟล์ main_sound.c ลงในไดเร็กทอรี RTOSDemo/src
ขั้นตอนที่ 9: การดีบัก Ernie
- เลือกเรียกใช้ -> การกำหนดค่าดีบัก
- ที่บานหน้าต่างด้านซ้ายให้สร้าง System Debugger ใหม่ run
-
ในแท็บการตั้งค่าเป้าหมาย
เลือก "รีเซ็ตทั้งระบบ" เพื่อเลือกทั้ง that และ ps7_init
-
ตอนนี้เลือกแท็บแอปพลิเคชัน
- เลือก “ดาวน์โหลดแอปพลิเคชั่น”
- ตั้งค่าแกน cortexa9_0 เป็น "หยุดที่รายการโปรแกรม"
- คลิกนำไปใช้และแก้ไขข้อบกพร่อง
- ตรวจสอบว่าไม่มีข้อผิดพลาดในกระบวนการดีบัก
- คอยดูหุ่นยนต์อย่างใกล้ชิด กดปุ่ม Resume จนกว่าโปรแกรมจะทำงานโดยไม่กดเบรกพอยต์ใดๆ
- หุ่นยนต์ควรหันและเคลื่อนที่ไปทางเสียงดัง เย้!
ขั้นตอนที่ 10: ทำให้เออร์นี่เป็นอิสระ
- เมื่อโปรเจ็กต์ของคุณพร้อมแล้ว (คุณสามารถรันได้โดยไม่มีปัญหาผ่านตัวดีบั๊ก) คุณก็พร้อมที่จะโหลดไปยังหน่วยความจำแฟลชบนบอร์ดของคุณ
-
สร้างสิ่งที่เรียกว่าโปรเจ็กต์ "ตัวโหลดการบูตขั้นแรก" (FSBL) และมีคำแนะนำทั้งหมดที่บอร์ดของคุณจะต้องใช้ในการโหลดไฟล์โครงการของคุณ (บิตสตรีมและระบบปฏิบัติการ) เมื่อเริ่มต้น
- เลือก: File->New->Application Project และหน้าต่างต่อไปนี้จะปรากฏขึ้น
- ตั้งชื่อตามที่คุณต้องการ (เช่น “FSBL”)
- ตรวจสอบให้แน่ใจว่าแพลตฟอร์มฮาร์ดแวร์เป็นแพลตฟอร์มที่คุณใช้งานอยู่
- กดถัดไป (อย่ากด Finish)
- เลือกเทมเพลต Zynq FSBL
- คลิกเสร็จสิ้น
- เมื่อกระบวนการสร้างเสร็จสมบูรณ์ คุณจะรู้ว่าทุกอย่างทำงานได้หรือไม่ ถ้าคุณเห็นโฟลเดอร์ใหม่สองโฟลเดอร์ต่อไปนี้ในหน้าต่าง Project Explorer
-
สร้างอิมเมจ Boot ตอนนี้ คุณจะต้องสร้างอิมเมจ Boot
- คลิกขวาที่โฟลเดอร์โครงการของคุณ (ในกรณีนี้เรียกว่า "RTOSDemo")
- คลิก “สร้างอิมเมจ Boot” จากดรอปดาวน์
-
หากทุกอย่างเชื่อมโยงอย่างถูกต้อง โปรเจ็กต์จะรู้ว่าต้องใช้ไฟล์ใดและหน้าต่างต่อไปนี้จะมีลักษณะดังที่คุณเห็นด้านล่าง (ที่สำคัญคือคุณมี 3 พาร์ติชั่นภายใต้ส่วนอิมเมจสำหรับบูต ตัวโหลดบูต ไฟล์บิตของคุณ และไฟล์โปรเจ็กต์.elf ของคุณ).
หากไม่ใช่กรณีนี้ อาจมีบางอย่างผิดปกติกับการลิงก์โปรเจ็กต์ของคุณ ตรวจสอบให้แน่ใจว่าโฟลเดอร์โครงการเชื่อมโยงกับ BSP ที่เกี่ยวข้อง
- คลิกปุ่ม “สร้างภาพ”
-
ขั้นตอนสุดท้ายในการดำเนินการในซอฟต์แวร์คือตอนนี้แฟลชรูปภาพที่สร้างไว้ก่อนหน้านี้ไปยังหน่วยความจำของบอร์ด
- เลือกจากแถบเครื่องมือหลักของ SDK เลือก Xilinx Tools->Program Flash Memory
- ตรวจสอบให้แน่ใจว่าได้เลือกแพลตฟอร์มฮาร์ดแวร์ที่ถูกต้อง และเส้นทางของไฟล์รูปภาพชี้ไปที่ไฟล์. BIN ที่สร้างขึ้นในขั้นตอนก่อนหน้าอย่างถูกต้อง
- เลือก "qspi single" จากประเภท Flash
- ทำเครื่องหมายที่ "ยืนยันหลังจากแฟลช" เพื่อประกันความสมบูรณ์ แต่ไม่จำเป็น
- กำหนดค่าบอร์ดของคุณ สุดท้ายคุณต้องแน่ใจว่าจัมเปอร์โหมดการเขียนโปรแกรมของบอร์ด (JP5) ได้รับการตั้งค่าอย่างถูกต้องเพื่อเลือกให้บูตจาก qspi (ซึ่งมีสิ่งที่คุณเพิ่งแฟลช) เมื่อ BootROM ทำงาน
- ตอนนี้เพียงแค่เปิดเครื่องและตรวจสอบว่า "Logic Configuration Done LED" (LED 10) ติดสว่างเป็นสีเขียว
ขั้นตอนที่ 11: ทำให้เออร์นี่น่ารัก
- ขน
- ขนเยอะ
- ตาโต!
- … หมวกทรงสูง
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง