สารบัญ:

UWB Localization Feather: 6 ขั้นตอน
UWB Localization Feather: 6 ขั้นตอน

วีดีโอ: UWB Localization Feather: 6 ขั้นตอน

วีดีโอ: UWB Localization Feather: 6 ขั้นตอน
วีดีโอ: PCHA.GAMER : สอนทำหมีอีโว 6 ร่าง How To Get Pink Huggy Bear Evo 6 - UTOPIA ORIGIN 2024, กรกฎาคม
Anonim
UWB Localization Feather
UWB Localization Feather

Ultra-WideBand Feather รวมโมดูล Decawave DWM1000 และ ATSAMD21 ARM Cortex M0 ไว้ในฟอร์มแฟคเตอร์ขนนก Adafruit โมดูล DWM1000 เป็นโมดูลไร้สายที่รองรับมาตรฐาน IEEE802.15.4-2011 UWB ซึ่งสามารถระบุตำแหน่งภายในอาคารได้อย่างแม่นยำและมีอัตราข้อมูลสูง ทำให้บอร์ดนี้สมบูรณ์แบบสำหรับโครงการหุ่นยนต์ที่ต้องการการแปลเป็นภาษาท้องถิ่น

คุณสมบัติ:– Decawave DWM1000 สำหรับการติดตามที่แม่นยำ– ARM Cortex M0 สำหรับแอปพลิเคชันที่รวดเร็วและทรงพลัง – Adafruit Feather เข้ากันได้กับระบบนิเวศที่มีอยู่มากมาย – อินเทอร์เฟซ SWD สำหรับการเขียนโปรแกรมและการดีบักแอปพลิเคชัน – ตัวเชื่อมต่อ USB-C – เครื่องชาร์จแบตเตอรี่ LiPo แบบบูรณาการ

สำหรับการเขียนและอัปเดตโครงการฉบับเต็ม ดูโครงการนี้ในเว็บไซต์ของฉัน Prototyping Corner ที่ prototypingcorner.io/projects/uwb-feather

แหล่งที่มาของฮาร์ดแวร์และซอฟต์แวร์สำหรับโครงการนี้มีอยู่ใน GitHub Repository

ขั้นตอนที่ 1: การออกแบบฮาร์ดแวร์

การออกแบบฮาร์ดแวร์
การออกแบบฮาร์ดแวร์
การออกแบบฮาร์ดแวร์
การออกแบบฮาร์ดแวร์
การออกแบบฮาร์ดแวร์
การออกแบบฮาร์ดแวร์

ตามที่กล่าวไว้ในบทนำ UWB Feather ประกอบด้วย ATSAMD21 ARM Cortext M0+ สำหรับสมองและโมดูล Decawave DWM1000 สำหรับย่านความถี่ไร้สายแบบกว้างพิเศษในรูปแบบขนนก การออกแบบค่อนข้างง่ายประกอบด้วย 20 รายการ BoM บน PCB 2 ชั้น Pinout รองรับ Adafruit M0 Feather

การชาร์จ LiPo นั้นจัดการโดย MCP73831 เซลล์เดียว ตัวควบคุมการจัดการการชาร์จแบบครบวงจร แรงดันไฟฟ้าของแบตเตอรี่สามารถตรวจสอบได้บน D9 อย่างไรก็ตาม จำเป็นต้องมีการเข้าถึง IO ทั้งหมด สามารถตัด JP1 เพื่อเพิ่มพินนี้ การควบคุมแรงดันไฟฟ้า 3.3 โวลต์ถูกสร้างไว้ล่วงหน้าโดยตัวควบคุมเชิงเส้นแบบเลื่อนออกต่ำ AP2112K-3.3 ให้สูงถึง 600mA

Pinout เข้ากันได้อย่างสมบูรณ์กับผลิตภัณฑ์ขนนก Adafruit M0 เพื่อการพกพาโค้ดที่ง่ายดาย สาย DWM1000 IO เชื่อมต่อกับบัส SPI และพินดิจิทัล 2, 3 และ 4 สำหรับ RST, IRQ & SPI_CS ตามลำดับ (ซึ่งไม่เปิดเผยผ่านส่วนหัว) D13 ยังเชื่อมต่อกับ LED ออนบอร์ด ซึ่งเป็นมาตรฐานในบอร์ดที่เข้ากันได้กับ Arduino จำนวนมาก

การเขียนโปรแกรมสามารถกำหนดไว้ล่วงหน้าบนส่วนหัว SWD หรือผ่าน USB หากโหลดด้วย bootloader ที่เกี่ยวข้อง เช่น uf2-samdx1 จาก Microsoft ดูเฟิร์มแวร์สำหรับข้อมูลเพิ่มเติม

หมายเหตุเกี่ยวกับV1.0

มีปัญหากับขั้วต่อ USB-C ในเวอร์ชัน 1 ของบอร์ดนี้ รอยเท้าที่ฉันใช้ไม่ได้รวมช่องเจาะที่จำเป็นสำหรับวิธีการติดตั้งช่องเจาะของส่วนประกอบนี้

เวอร์ชัน 1.1 จะมีการแก้ไขสำหรับสิ่งนี้รวมถึงการเพิ่มตัวเชื่อมต่อ micro-b สำหรับผู้ที่ต้องการ ดูข้อควรพิจารณาในเวอร์ชัน 1.1 ด้านล่าง

สำหรับการพิจารณาการออกแบบ Bill of Materials and Hardware เวอร์ชัน 1.1 โปรดดูที่การเขียนโครงการ

ขั้นตอนที่ 2: การประกอบ

การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ
การประกอบ

ด้วย BoM เพียง 20 รายการและส่วนประกอบส่วนใหญ่ไม่เล็กกว่า 0603 (ตัวเก็บประจุแบบคริสตัล 2x คือ 0402) การประกอบด้วยมือของบอร์ดนี้จึงเป็นเรื่องง่าย ฉันมี PCB และลายฉลุประสานที่ผลิตโดย JLCPCB ในสีดำด้านพร้อมพื้นผิว ENIG

ค่าใช้จ่ายทั้งหมดสำหรับบอร์ด 5 แผ่น (แม้ว่า 10 แผ่นไม่มีความแตกต่างของราคา) และลายฉลุอยู่ที่ 68 ดอลลาร์ออสเตรเลีย แต่ 42 ดอลลาร์เป็นค่าจัดส่ง การสั่งซื้อครั้งแรกจาก JLCPCB และบอร์ดมีคุณภาพสูงมากและมีผิวที่สวยงาม

ขั้นตอนที่ 3: เฟิร์มแวร์: การเขียนโปรแกรม Bootloader

เฟิร์มแวร์: การเขียนโปรแกรม Bootloader
เฟิร์มแวร์: การเขียนโปรแกรม Bootloader
เฟิร์มแวร์: การเขียนโปรแกรม Bootloader
เฟิร์มแวร์: การเขียนโปรแกรม Bootloader
เฟิร์มแวร์: การเขียนโปรแกรม Bootloader
เฟิร์มแวร์: การเขียนโปรแกรม Bootloader

สามารถโหลดเฟิร์มแวร์ผ่านขั้วต่อ SWD ได้โดยใช้โปรแกรมเมอร์ เช่น J-Link จาก Segger ที่แสดงด้านบนคือ J-Link EDU Mini ในการเริ่มเขียนโปรแกรมบอร์ด เราต้องโหลดโปรแกรมโหลดบูตของเรา จากนั้นตั้งค่าห่วงโซ่เครื่องมือของเรา

ฉันจะใช้ Atmel Studio เพื่อแฟลช bootloader โดยเสียบ J-Link และเปิด Atmel Studio จากนั้นเลือก เครื่องมือ > การเขียนโปรแกรมอุปกรณ์ ภายใต้เครื่องมือ เลือก J-Link และตั้งค่าอุปกรณ์เป็น ATSAMD21G18A จากนั้นคลิกนำไปใช้

เชื่อมต่อ J-Link กับส่วนหัว SWD ขนนกและใช้พลังงานผ่าน USB หรือผ่านแบตเตอรี่ เมื่อเชื่อมต่อแล้ว ในส่วนลายเซ็นอุปกรณ์ ให้คลิกอ่าน กล่องข้อความลายเซ็นอุปกรณ์และแรงดันไฟฟ้าเป้าหมายควรเผยแพร่ตามนั้น หากไม่ตรวจสอบการเชื่อมต่อแล้วลองอีกครั้ง

ในการแฟลช bootloader เราต้องปิดการใช้งานฟิวส์ BOOTPROT ก่อน ในการดำเนินการนี้ ให้เลือกฟิวส์ > USER_WORD_0. NVMCTRL_BOOTPROT และเปลี่ยนเป็น 0 ไบต์ คลิกโปรแกรมเพื่ออัปโหลดการเปลี่ยนแปลง

ตอนนี้เราสามารถแฟลช bootloader ได้โดยเลือก Memories > Flash และตั้งค่าตำแหน่งของ bootloader ตรวจสอบให้แน่ใจว่า Erase Flash ก่อนเลือกโปรแกรมและคลิก Program หากทุกอย่างเป็นไปด้วยดี D13 บนกระดานควรเริ่มเต้น

ตอนนี้ คุณจะต้องตั้งค่าฟิวส์ BOOTPROT เป็นขนาด bootloader 8kB เมื่อต้องการทำสิ่งนี้ให้เลือกฟิวส์ > USER_WORD_0. NVMCTRL_BOOTPROT และเปลี่ยนเป็น 8192 ไบต์ คลิกโปรแกรมเพื่ออัปโหลดการเปลี่ยนแปลง

เมื่อบูตโหลดเดอร์แล้ว D13 ควรกะพริบและหากเสียบผ่าน USB อุปกรณ์จัดเก็บข้อมูลขนาดใหญ่ควรปรากฏขึ้น นี่คือที่ที่สามารถอัปโหลดไฟล์ UF2 เพื่อตั้งโปรแกรมบอร์ดได้

ขั้นตอนที่ 4: เฟิร์มแวร์: รหัสกะพริบด้วย PlatformIO

เฟิร์มแวร์: รหัสกระพริบด้วย PlatformIO
เฟิร์มแวร์: รหัสกระพริบด้วย PlatformIO
เฟิร์มแวร์: รหัสกระพริบด้วย PlatformIO
เฟิร์มแวร์: รหัสกระพริบด้วย PlatformIO

สามารถอัปโหลดเฟิร์มแวร์ผ่านโปรโตคอล UF2 หรือโดยตรงผ่านอินเทอร์เฟซ SWD เราจะใช้ PlatformIO เพื่อความสะดวกและเรียบง่าย ในการเริ่มต้นสร้างโครงการ PIO ใหม่และเลือก Adafruit Feather M0 เป็นกระดานเป้าหมาย เมื่ออัปโหลดผ่าน SWD ด้วย J-Link ให้ตั้งค่า upload_protocol ใน platformio.ini ดังที่แสดงด้านล่าง

[env:adafruit_feather_m0] แพลตฟอร์ม = บอร์ด atmelsam = adafruit_feather_m0 framework = arduino upload_protocol = jlink

ตอนนี้คุณสามารถตั้งโปรแกรมบอร์ดด้วยความเรียบง่ายของกรอบงาน Arduino

ขั้นตอนที่ 5: เฟิร์มแวร์: กะพริบ Anchor

เฟิร์มแวร์: Flashing the Anchor
เฟิร์มแวร์: Flashing the Anchor
เฟิร์มแวร์: Flashing the Anchor
เฟิร์มแวร์: Flashing the Anchor

โมดูล DWM1000 สามารถกำหนดค่าให้เป็นจุดยึดหรือแท็กได้ โดยทั่วไปจุดยึดจะถูกเก็บไว้ที่ตำแหน่งคงที่ที่รู้จักและแท็กจะใช้จุดยึดเพื่อรับตำแหน่งสัมพันธ์กับจุดยึด ในการทดสอบโมดูล DWM1000 คุณสามารถอัปโหลดตัวอย่าง DW1000-Anchor จากที่เก็บ GitHub

หากต้องการแฟลชโปรแกรมนี้ด้วย PlatformIO จาก PIO Home ให้เลือก Open Project จากนั้นค้นหาตำแหน่งของโฟลเดอร์ DW1000-Anchor ในที่เก็บ GitHub จากนั้นคลิกปุ่มอัปโหลด PIO แล้วระบบจะค้นหาโพรบดีบักที่แนบมาโดยอัตโนมัติ (ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อและเปิดบอร์ดแล้ว)

จะต้องอัปโหลดเฟิร์มแวร์แท็กไปยังบอร์ดอื่น จากนั้นสามารถดูผลลัพธ์ได้ในเทอร์มินัลอนุกรม

ขั้นตอนที่ 6: ก้าวต่อไป

ก้าวต่อไป
ก้าวต่อไป

การปรับปรุงเพิ่มเติมสำหรับโครงการนี้จะรวมถึงการพัฒนาไลบรารี DW1000 ใหม่ บอร์ด V1.1 จะเปลี่ยนโครงการอื่นๆ ที่ใช้เทคโนโลยีที่หลากหลายนี้ หากมีความสนใจเพียงพอ ฉันจะพิจารณาผลิตและจำหน่ายแผงเหล่านี้

ขอบคุณที่อ่าน. แสดงความคิดเห็นหรือวิพากษ์วิจารณ์ในความคิดเห็นด้านล่างและอย่าลืมตรวจสอบโครงการที่ Prototyping Corner

แนะนำ: