สารบัญ:
- ขั้นตอนที่ 1: การออกแบบฮาร์ดแวร์
- ขั้นตอนที่ 2: การประกอบ
- ขั้นตอนที่ 3: เฟิร์มแวร์: การเขียนโปรแกรม Bootloader
- ขั้นตอนที่ 4: เฟิร์มแวร์: รหัสกะพริบด้วย PlatformIO
- ขั้นตอนที่ 5: เฟิร์มแวร์: กะพริบ Anchor
- ขั้นตอนที่ 6: ก้าวต่อไป
วีดีโอ: UWB Localization Feather: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
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
สามารถโหลดเฟิร์มแวร์ผ่านขั้วต่อ 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
สามารถอัปโหลดเฟิร์มแวร์ผ่านโปรโตคอล 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
โมดูล DWM1000 สามารถกำหนดค่าให้เป็นจุดยึดหรือแท็กได้ โดยทั่วไปจุดยึดจะถูกเก็บไว้ที่ตำแหน่งคงที่ที่รู้จักและแท็กจะใช้จุดยึดเพื่อรับตำแหน่งสัมพันธ์กับจุดยึด ในการทดสอบโมดูล DWM1000 คุณสามารถอัปโหลดตัวอย่าง DW1000-Anchor จากที่เก็บ GitHub
หากต้องการแฟลชโปรแกรมนี้ด้วย PlatformIO จาก PIO Home ให้เลือก Open Project จากนั้นค้นหาตำแหน่งของโฟลเดอร์ DW1000-Anchor ในที่เก็บ GitHub จากนั้นคลิกปุ่มอัปโหลด PIO แล้วระบบจะค้นหาโพรบดีบักที่แนบมาโดยอัตโนมัติ (ตรวจสอบให้แน่ใจว่าได้เชื่อมต่อและเปิดบอร์ดแล้ว)
จะต้องอัปโหลดเฟิร์มแวร์แท็กไปยังบอร์ดอื่น จากนั้นสามารถดูผลลัพธ์ได้ในเทอร์มินัลอนุกรม
ขั้นตอนที่ 6: ก้าวต่อไป
การปรับปรุงเพิ่มเติมสำหรับโครงการนี้จะรวมถึงการพัฒนาไลบรารี DW1000 ใหม่ บอร์ด V1.1 จะเปลี่ยนโครงการอื่นๆ ที่ใช้เทคโนโลยีที่หลากหลายนี้ หากมีความสนใจเพียงพอ ฉันจะพิจารณาผลิตและจำหน่ายแผงเหล่านี้
ขอบคุณที่อ่าน. แสดงความคิดเห็นหรือวิพากษ์วิจารณ์ในความคิดเห็นด้านล่างและอย่าลืมตรวจสอบโครงการที่ Prototyping Corner
แนะนำ:
การใช้ Pimoroni Enviro+ FeatherWing กับ Adafruit Feather NRF52840 Express: 8 ขั้นตอน
การใช้ Pimoroni Enviro+ FeatherWing กับ Adafruit Feather NRF52840 Express: Pimoroni Enviro+ FeatherWing เป็นบอร์ดที่อัดแน่นไปด้วยเซ็นเซอร์ที่ออกแบบมาเพื่อทำงานร่วมกับบอร์ดรุ่น Adafruit Feather เป็นจุดเริ่มต้นที่มีประโยชน์สำหรับทุกคนที่สนใจในการตรวจสอบด้านสิ่งแวดล้อม มลภาวะในชั้นบรรยากาศ และการทำลายข้อมูล ผม
My First Feather Wing: ตัวแปลงอนาล็อกเป็นดิจิตอล: 5 ขั้นตอน
My First Feather Wing: Analog-to-Digital Converter: สวัสดี เพื่อนผู้สร้างของฉัน! คำสั่งสอนของวันนี้เกี่ยวกับบางสิ่งที่พิเศษจริงๆ อุปกรณ์นี้เป็นขนนกตัวแรกของฉัน - ตามฟอร์มแฟคเตอร์ของ Adafruit นอกจากนี้ยังเป็น PCB ที่ติดตั้งบนพื้นผิวเป็นครั้งแรกของฉัน! การใช้โล่นี้ที่โดดเด่นที่สุดของฉันอยู่ในอุปกรณ์ที่ฉันคลั่งไคล้
WIND - Project Accelerator สำหรับ Adafruit Feather: 9 ขั้นตอน (พร้อมรูปภาพ)
WIND - Project Accelerator สำหรับ Adafruit Feather: ฉันได้รวบรวมไมโครคอนโทรลเลอร์และแผงเซ็นเซอร์ Adafruit Feather ต่างๆ ที่หาได้จาก Adafruit มาอย่างช้าๆ พวกเขาทำให้การสร้างต้นแบบและการทดสอบเป็นเรื่องง่ายมาก และฉันเป็นแฟนตัวยงของเลย์เอาต์ของบอร์ด เนื่องจากพบว่าตัวเองใช้
Adafruit Feather NRF52 Custom Controls, No Coding Required: 8 Steps (พร้อมรูปภาพ)
Adafruit Feather NRF52 Custom Controls, No Coding Requires: อัปเดต 23 เมษายน 2019 - สำหรับวันที่/เวลาแปลงโดยใช้ Arduino millis () เท่านั้น โปรดดูที่ Arduino Date/Time Plotting/Logging โดยใช้ Millis() และ PfodApp pfodDesigner V3.0.3610+ ฟรีล่าสุดที่สร้างขึ้น ร่าง Arduino ที่สมบูรณ์เพื่อพล็อตข้อมูลกับวันที่/เวลาที่คุณ
Intelligrill® ขับเคลื่อนโดย Feather: 7 ขั้นตอน (พร้อมรูปภาพ)
Intelligrill® ขับเคลื่อนโดย Feather: "Intelligrill® ขับเคลื่อนโดย Feather" เป็นเครื่องวัดอุณหภูมิสำหรับย่าง สูบบุหรี่ และเตาอบจากระยะไกลที่เปิดใช้งาน wifi พร้อมคุณสมบัติเพิ่มเติมของการอัปเดตตามเวลาจริงเมื่อ "อาหารจานหลัก" จะพร้อมให้บริการ โดยการเฝ้าติดตาม