สารบัญ:

WiBot: 10 ขั้นตอน (พร้อมรูปภาพ)
WiBot: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: WiBot: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: WiBot: 10 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Wibit Adventure Float @ SO Sofitel HuaHin 2024, พฤศจิกายน
Anonim
WiBot
WiBot

คำแนะนำนี้มีรายละเอียดขั้นตอนการสร้างหุ่นยนต์ Wi-Fi บนแพลตฟอร์ม ZYBO โปรเจ็กต์นี้ใช้ระบบปฏิบัติการแบบเรียลไทม์สำหรับการตรวจจับวัตถุ การวัดระยะทาง และการควบคุมแบบตอบสนอง คู่มือนี้จะครอบคลุมถึงการเชื่อมต่อ ZYBO กับอุปกรณ์ต่อพ่วง การรันเฟิร์มแวร์แบบกำหนดเอง และการสื่อสารผ่านแอปพลิเคชัน Java ต่อไปนี้คือรายการส่วนประกอบหลักทั้งหมดที่จำเป็นสำหรับโครงการนี้:

  • 1 คณะกรรมการพัฒนา ZYBO
  • 1 TL-WR802N เราเตอร์ไร้สาย
  • 1 แชสซีเงา
  • ล้อ 65 มม. 2 ล้อ
  • มอเตอร์เกียร์ 2 140rpm
  • ตัวเข้ารหัส 2 ล้อ
  • 1 HC-SR04 อัลตราโซนิกเซนเซอร์
  • 1 BSS138 ตัวแปลงระดับลอจิก
  • 1 L293 ตัวขับมอเตอร์บริดจ์ H
  • 1 ตัวแปลง DC/DC 12V ถึง 5V
  • 1 2200mAh LiPo แบตเตอรี่
  • 1 สายเคเบิลอีเทอร์เน็ต
  • สาย USB Micro-B 1 เส้น
  • ขั้วต่อ XT60 ตัวเมีย 1 ตัว
  • สายจัมเปอร์ตัวผู้ถึงตัวเมีย 2 เส้น
  • 30 สายจัมเปอร์ชายกับชาย
  • 2 10kΩ ตัวต้านทาน
  • 1 เขียงหั่นขนม

นอกจากนี้ ต้องติดตั้งซอฟต์แวร์ต่อไปนี้บนคอมพิวเตอร์เป้าหมาย:

  • Xilinx Vivado Design Suite 2018.2
  • Digilent Adept 2.19.2
  • FreeRTOS 10.1.1
  • ชุดพัฒนา Java SE 8.191

ขั้นตอนที่ 1: ประกอบโครงหุ่นยนต์

ประกอบโครงหุ่นยนต์
ประกอบโครงหุ่นยนต์
ประกอบโครงหุ่นยนต์
ประกอบโครงหุ่นยนต์
ประกอบโครงหุ่นยนต์
ประกอบโครงหุ่นยนต์

ประกอบแชสซีเงาและติดเกียร์มอเตอร์และตัวเข้ารหัสเข้ากับเฟรมด้านล่าง สามารถติดตั้ง ZYBO, เขียงหั่นขนม และเซ็นเซอร์อัลตราโซนิกด้วยชิ้นส่วนที่ให้มาซึ่งสามารถพิมพ์ 3 มิติและยึดเข้ากับแชสซีโดยใช้สแตนด์อฟและเทปกาวสองหน้า ควรติดตั้งแบตเตอรี่ใกล้กับด้านหลังของหุ่นยนต์และควรอยู่ระหว่างด้านบนกับ เฟรมล่าง. ติดตั้งเราเตอร์ใกล้กับ ZYBO และตัวแปลง DC/DC ใกล้กับเขียงหั่นขนม ติดล้อเข้ากับมอเตอร์เกียร์ที่ส่วนท้ายสุด

ขั้นตอนที่ 2: สายไฟอิเล็กทรอนิกส์

ลวดอิเล็กทรอนิคส์
ลวดอิเล็กทรอนิคส์
ลวดอิเล็กทรอนิคส์
ลวดอิเล็กทรอนิคส์
ลวดอิเล็กทรอนิคส์
ลวดอิเล็กทรอนิคส์

เชื่อมต่ออินพุตและเอาต์พุตของตัวแปลง DC/DC เข้ากับรางจ่ายไฟสองตัวบนเขียงหั่นขนมตามลำดับ สิ่งเหล่านี้จะทำหน้าที่เป็นอุปกรณ์จ่ายไฟ 12V และ 5V สำหรับระบบ เชื่อมต่อ ZYBO กับราง 5V ตามที่แสดงในภาพ ใช้สายจ่าย USB Micro-B เพื่อเชื่อมต่อเราเตอร์กับราง 5V ด้วย ควรต่อสาย XT60 เข้ากับราง 12V อย่าเสียบแบตเตอรี่จนกว่าอุปกรณ์อิเล็กทรอนิกส์ที่เหลือจะต่อสายอย่างถูกต้อง เซ็นเซอร์อัลตราโซนิกควรต่อสายเข้ากับราง 5V สร้างราง 3.3V บนเขียงหั่นขนมโดยใช้พิน 6 ของพอร์ต Pmod JC บน ZYBO อินพุตแรงดันสูงของลอจิกคอนเวอร์เตอร์ควรต่อสายเข้ากับราง 5V ในขณะที่อินพุตแรงดันต่ำของลอจิกคอนเวอร์เตอร์ควรต่อสายเข้ากับราง 3.3V ต่อเอ็นโค้ดเดอร์ของมอเตอร์เข้ากับราง 3.3V เชื่อมต่อ VCC1 ของไดรเวอร์มอเตอร์กับราง 5V และเชื่อมต่อ VCC2 กับราง 12V ผูกพิน EN ทั้งหมดเข้ากับ 5V และต่อกราวด์พิน GND ทั้งหมด

เชื่อมต่อหมุด TRIG และ ECHO ของเซ็นเซอร์อัลตราโซนิกกับ HV1 และ HV2 ของตัวแปลงลอจิกตามลำดับ LV1 ควรต่อสายกับ JC4 และ LV2 ควรต่อสายกับ JC3 อ้างถึงแผนภูมิสำหรับ Pmod pinouts ต่อมอเตอร์เข้ากับตัวขับมอเตอร์ Y1 ควรเชื่อมต่อกับขั้วบวกของมอเตอร์ด้านขวา และ Y2 ควรเชื่อมต่อกับขั้วลบของมอเตอร์ด้านขวา ในทำนองเดียวกัน Y3 ควรเชื่อมต่อกับขั้วบวกของมอเตอร์ด้านซ้าย และ Y4 ควรเชื่อมต่อกับขั้วลบของมอเตอร์ด้านซ้าย A1, A2, A3 และ A4 ควรจับคู่กับ JB2, JB1, JB4 และ JB3 ตามลำดับ อ้างถึงแผนผังสำหรับหมายเลขพิน ต่อสาย JC2 ไปที่ตัวเข้ารหัสด้านขวา และ JC1 ไปที่ตัวเข้ารหัสด้านซ้าย ตรวจสอบให้แน่ใจว่าได้ใช้ตัวต้านทานแบบดึงขึ้นเพื่อผูกสัญญาณเหล่านี้กับราง 3.3V สุดท้าย ใช้สายอีเทอร์เน็ตเพื่อเชื่อมต่อ ZYBO กับเราเตอร์

ขั้นตอนที่ 3: สร้างบล็อกไดอะแกรมใน Vivado

สร้างบล็อกไดอะแกรมใน Vivado
สร้างบล็อกไดอะแกรมใน Vivado

สร้างโครงการ RTL ใหม่ใน Vivado ตรวจสอบให้แน่ใจว่าไม่ได้ระบุแหล่งที่มาใดๆ ในขณะนี้ ค้นหา "xc7z010clg400-1" และกดเสร็จสิ้น ดาวน์โหลด encoder_driver.sv และ ultrasonic_driver.sv วางไว้ในโฟลเดอร์ของตนเอง เปิด IP Packager ภายใต้ "Tools" และเลือกทำแพ็คเกจไดเร็กทอรีที่ระบุ วางเส้นทางไปยังโฟลเดอร์ที่มีไดรเวอร์ตัวเข้ารหัสและกด "ถัดไป" คลิก "แพ็คเกจ IP" และทำซ้ำขั้นตอนสำหรับไดรเวอร์เซ็นเซอร์อัลตราโซนิก หลังจากนั้น ไปที่ตัวจัดการที่เก็บภายใต้ส่วนย่อย IP ในเมนูการตั้งค่า เพิ่มเส้นทางไปยังโฟลเดอร์ไดรเวอร์และกดใช้เพื่อรวมไว้ในไลบรารี IP

สร้างบล็อกไดอะแกรมใหม่และเพิ่ม "ระบบประมวลผล ZYNQ7" ดับเบิลคลิกที่บล็อกและนำเข้าไฟล์ ZYBO_zynq_def.xml ที่ให้มา ภายใต้ "การกำหนดค่า MIO" ให้เปิดใช้งานตัวจับเวลา 0 และ GPIO MIO กด "ตกลง" เพื่อบันทึกการกำหนดค่า เพิ่มบล็อก "AXI GPIO" 3 บล็อกและบล็อก "AXI Timer" 4 บล็อก เรียกใช้บล็อกอัตโนมัติตามด้วยการเชื่อมต่ออัตโนมัติสำหรับ S_AXI ดับเบิลคลิกที่บล็อก GPIO เพื่อกำหนดค่า หนึ่งบล็อกควรเป็นช่องสัญญาณคู่ที่มีอินพุต 4 บิตและเอาต์พุต 4 บิต ทำการเชื่อมต่อเหล่านี้ภายนอกและติดป้ายกำกับ SW สำหรับอินพุตและ LED สำหรับเอาต์พุต บล็อกที่สองควรเป็นช่องสัญญาณคู่พร้อมอินพุต 32 บิต 2 ช่อง บล็อก GPIO สุดท้ายจะเป็นอินพุต 32 บิตเดียว สร้างเอาต์พุต pwm0 จากแต่ละบล็อกตัวจับเวลาภายนอก ติดป้ายกำกับ PWM0, PWM1, PWM2 และ PWM3

เพิ่มไดรเวอร์ตัวเข้ารหัสในไดอะแกรมบล็อกและเชื่อมต่อ CLK กับ FCLK_CLK0 เชื่อมต่อ OD0 และ OD1 กับช่องสัญญาณเข้าของบล็อก GPIO ที่สอง ทำให้ ENC ภายนอกและเปลี่ยนชื่อ ENC_0 เป็น ENC เพิ่มบล็อกเซ็นเซอร์อัลตราโซนิกและเชื่อมต่อ CLK กับ FCLK_CLK0 สร้าง TRIG และ ECHO ภายนอกและเปลี่ยนชื่อ TRIG_0 เป็น TRIG และ ECHO_0 เป็น ECHO เชื่อมต่อ RF กับบล็อก GPIO ที่สาม อ้างถึงแผนภาพบล็อกที่ให้ไว้สำหรับการอ้างอิง

คลิกขวาที่ไฟล์ไดอะแกรมบล็อกของคุณในบานหน้าต่าง Sources และสร้าง HDL wrapper อย่าลืมอนุญาตให้ผู้ใช้แก้ไข เพิ่มไฟล์ ZYBO_Master.xdc ที่ให้มาเป็นข้อจำกัด กด "สร้าง Bitstream" และพักดื่มกาแฟ

ขั้นตอนที่ 4: ตั้งค่าสภาพแวดล้อมการพัฒนาซอฟต์แวร์

ไปที่ "ไฟล์" เพื่อส่งออกฮาร์ดแวร์ไปยัง Vivado SDK ตรวจสอบให้แน่ใจว่าได้รวมบิตสตรีมแล้ว นำเข้าโครงการ RTOSDemo ภายใน "CORTEX_A9_Zynq_ZC702" จะอยู่ในไดเร็กทอรีการติดตั้ง FreeRTOS สร้าง Board Support Package ใหม่ เลือกไลบรารี lwip202 เปลี่ยน BSP ที่อ้างอิงในโปรเจ็กต์ RTOSDemo เป็น BSP ที่คุณเพิ่งสร้างขึ้น*

*ในขณะที่เขียนคำแนะนำนี้ FreeRTOS ดูเหมือนจะมีข้อบกพร่องในการอ้างอิง BSP ที่ถูกต้อง ในการแก้ไขปัญหานี้ ให้สร้าง BSP ใหม่โดยใช้การตั้งค่าเดียวกันกับการตั้งค่าแรก เปลี่ยน BSP ที่อ้างอิงเป็นอันใหม่ จากนั้นเปลี่ยนกลับเป็นอันเก่าหลังจากที่สร้างไม่สำเร็จ FreeRTOS ควรคอมไพล์โดยไม่มีข้อผิดพลาด อย่าลังเลที่จะลบ BSP ที่ไม่ได้ใช้

ขั้นตอนที่ 5: แก้ไขโปรแกรมสาธิต

สร้างโฟลเดอร์ใหม่ชื่อ "ไดรเวอร์" ใต้ไดเร็กทอรี "src" ของ RTOSDemo คัดลอก gpio.h ที่ให้มา gpio.c, pwm.h, pwm.c, odometer.h, odometer.c, rangefinder.c, rangefinder.h, motor.h และ motor.c ลงในไดเร็กทอรี "drivers"

เปิด main.c และตั้งค่า mainSELECTED_APPLICATION เป็น 2 แทนที่ main_lwIP.c ภายใต้ "lwIP_Demo" ด้วยเวอร์ชันที่อัปเดต BasicSocketCommandServer.c ภายใต้ "lwIP_Demo/apps/BasicSocketCommandServer" จะต้องได้รับการอัปเดตด้วยเวอร์ชันใหม่ สุดท้าย ไปที่ "FreeRTOSv10.1.1/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demo" และแทนที่ Sample-CLI-commands.c ด้วยเวอร์ชันที่ให้มา สร้างโครงการและให้แน่ใจว่าทุกอย่างรวบรวมได้สำเร็จ

ขั้นตอนที่ 6: แฟลชเฟิร์มแวร์ไปยัง QSPI

แฟลชเฟิร์มแวร์ไปยัง QSPI
แฟลชเฟิร์มแวร์ไปยัง QSPI
แฟลชเฟิร์มแวร์ไปยัง QSPI
แฟลชเฟิร์มแวร์ไปยัง QSPI
แฟลชเฟิร์มแวร์ไปยัง QSPI
แฟลชเฟิร์มแวร์ไปยัง QSPI

สร้าง Application Project ใหม่ชื่อ "FSBL" โดยใช้เทมเพลต "Zynq FSBL" หลังจากรวบรวมโปรเจ็กต์ FSBL แล้ว ให้สร้างอิมเมจสำหรับบูตของโปรเจ็กต์ RTOSDemo ตรวจสอบให้แน่ใจว่าได้เลือก "FSBL/Debug/FSBL.elf" เป็น bootloader ภายใต้ "บูตพาร์ติชันอิมเมจ" เพิ่มพาธไปยังไฟล์นี้ด้วยตนเอง หากไม่มีอยู่ในรายการ

ย้ายจัมเปอร์ JP5 บน ZYBO ไปที่ "JTAG" ใช้สาย USB Micro-B เพื่อเชื่อมต่อคอมพิวเตอร์ของคุณกับ ZYBO เชื่อมต่อแบตเตอรี่และเปิด ZYBO เรียกใช้ Adept เพื่อให้แน่ใจว่าคอมพิวเตอร์ระบุ ZYBO อย่างถูกต้อง คลิก "Program Flash" ใน Vivado SDK และระบุเส้นทางไปยังไฟล์ BOOT.bin ใน RTOSDemo และไฟล์ FSBL.elf ใน FSBL ตรวจสอบให้แน่ใจว่าได้เลือก "ยืนยันหลังจากแฟลช" ก่อนกด "โปรแกรม" ดูคอนโซลเพื่อให้แน่ใจว่าการดำเนินการกะพริบเสร็จสมบูรณ์ หลังจากนั้น ปิด ZYBO และถอดสาย USB ย้ายจัมเปอร์ JP5 ไปที่ "QSPI"

ขั้นตอนที่ 7: กำหนดค่าจุดเชื่อมต่อไร้สาย

ขณะที่แบตเตอรี่ยังคงเชื่อมต่ออยู่ ให้เชื่อมต่อกับเครือข่าย Wi-Fi ของเราเตอร์ SSID และรหัสผ่านเริ่มต้นควรอยู่ที่ด้านล่างของเราเตอร์ หลังจากนั้น ไปที่ https://tplinkwifi.net และเข้าสู่ระบบโดยใช้ "admin" สำหรับชื่อผู้ใช้และรหัสผ่าน เรียกใช้วิซาร์ดการตั้งค่าด่วนเพื่อกำหนดค่าเราเตอร์ในโหมดจุดเข้าใช้งานโดยเปิดใช้งาน DHCP ตรวจสอบให้แน่ใจว่าได้อัปเดตชื่อผู้ใช้และรหัสผ่านเริ่มต้นสำหรับอุปกรณ์ด้วย เราเตอร์ควรรีบูตโดยอัตโนมัติในโหมดจุดเข้าใช้งานหลังจากที่คุณทำเสร็จแล้ว

เปิด ZYBO และเชื่อมต่อกับเราเตอร์โดยใช้ SSID ที่คุณกำหนด เราเตอร์มักจะมากับที่อยู่ IP 192.168.0.100 หรือ 192.160.0.101 ZYBO จะถูกกำหนดที่อยู่ใดก็ตามที่เราเตอร์ไม่มี หากต้องการระบุที่อยู่ IP ของเราเตอร์อย่างรวดเร็ว คุณสามารถเรียกใช้ "ipconfig" จากพรอมต์คำสั่งใน windows หรือ "ifconfig" จากเทอร์มินัลใน Linux หรือ MacOS หากคุณยังคงเชื่อมต่อกับเราเตอร์ คุณจะเห็นที่อยู่ IP ปรากฏขึ้นถัดจากอินเทอร์เฟซไร้สายของคุณ ใช้ข้อมูลนี้เพื่อกำหนดที่อยู่ IP ของ ZYBO เพื่อยืนยันที่อยู่ IP ของ ZYBO คุณสามารถ ping จากบรรทัดคำสั่งหรือเชื่อมต่อผ่าน telnet

ขั้นตอนที่ 8: เรียกใช้โปรแกรม Java

เรียกใช้โปรแกรม Java
เรียกใช้โปรแกรม Java

ดาวน์โหลด RobotClient.java และคอมไพล์ไฟล์โดยใช้คำสั่ง "javac RobotClient.java" จากบรรทัดคำสั่ง เรียกใช้คำสั่ง "java RobotClient" โดยที่ "ip_address" คือที่อยู่ IP ของ ZYBO GUI การควบคุมจะปรากฏขึ้นหากมีการเชื่อมต่อสำเร็จระหว่างคอมพิวเตอร์และ ZYBO หลังจากที่ปรับโฟกัสไปที่หน้าต่างแล้ว หุ่นยนต์ควรจะสามารถควบคุมได้โดยใช้ปุ่มลูกศรบนแป้นพิมพ์ กดปุ่ม Escape เพื่อสิ้นสุดเซสชันและตัดการเชื่อมต่อจากหุ่นยนต์

GUI จะเน้นปุ่มที่กดและแสดงเอาต์พุตของมอเตอร์ที่ด้านบนขวา เครื่องวัดระยะทางด้านซ้ายเติมแถบทุกๆ 2 เมตร สูงสุดไม่เกิน 10 เมตร

ขั้นตอนที่ 9: ปรับเทียบเครื่องวัดระยะ

สวิตช์บน ZYBO สามารถใช้เพื่อกำหนดค่าเครื่องวัดระยะออนบอร์ด ระยะการตรวจจับต่ำสุด d ถูกกำหนดให้เป็นฟังก์ชันของอินพุตสวิตช์ i:

d = 50i + 250

อินพุตสามารถเปลี่ยนแปลงได้ระหว่าง 0 ถึง 15 ในขั้นตอนจำนวนเต็ม ซึ่งแปลเป็นช่วงระยะทาง 0.25 เมตรถึง 1 เมตร ที่ระยะทางต่ำสุด LED แรกจะเริ่มกะพริบ จำนวน LED ที่ทำงานอยู่เป็นสัดส่วนกับความใกล้ชิดของวัตถุ

ขั้นตอนที่ 10: การช่วยสำหรับการเข้าถึง

หุ่นยนต์ตัวนี้เข้าถึงได้ง่ายมาก ด้วยความเรียบง่ายในการควบคุม จึงสามารถควบคุมได้อย่างเต็มที่ด้วยนิ้วเดียว เพื่อปรับปรุงการช่วยสำหรับการเข้าถึง คุณสามารถเพิ่มการรองรับอุปกรณ์อินพุตเพิ่มเติมได้ ซึ่งจะทำให้ผู้พิการใช้การควบคุมหุ่นยนต์ด้วยส่วนต่างๆ ของร่างกายได้

แนะนำ: