สารบัญ:

Python RF Development Kit: 5 ขั้นตอน
Python RF Development Kit: 5 ขั้นตอน

วีดีโอ: Python RF Development Kit: 5 ขั้นตอน

วีดีโอ: Python RF Development Kit: 5 ขั้นตอน
วีดีโอ: Test-Driven Development In Python // The Power of Red-Green-Refactor 2024, พฤศจิกายน
Anonim
Python RF Development Kit
Python RF Development Kit

ก่อนอื่น ฉันอยากจะแนะนำเล็กน้อยเกี่ยวกับวิธีที่ฉันเรียนรู้เกี่ยวกับ RF และเหตุผลที่ฉันทำงานในโครงการนี้

ในฐานะนักศึกษาวิทยาการคอมพิวเตอร์ที่มีความสนใจในฮาร์ดแวร์ ฉันเริ่มเข้าเรียนหลักสูตรบางหลักสูตรที่เกี่ยวข้องกับสัญญาณไร้สายและการรักษาความปลอดภัยในการสื่อสารไร้สายในเดือนตุลาคม 2018 ฉันเริ่มทดลองกับวิทยุที่กำหนดโดยซอฟต์แวร์ RTL-SDR และ HackRF อย่างรวดเร็ว ชั้นวางโมดูล Arduino RF

ปัญหาคือ: SDR ไม่สามารถพกพาได้เพียงพอสำหรับวัตถุประสงค์ของฉัน (จำเป็นต้องพกพาแล็ปท็อป เสาอากาศ ฯลฯ เสมอ) และโมดูล Arduino RF ราคาถูกนั้นไม่เพียงพอในแง่ของความแรงของสัญญาณ ความสามารถในการปรับแต่ง ช่วงความถี่ และระบบอัตโนมัติ

เสาอากาศ CC1101 จาก Texas Instruments เป็นตัวเลือกที่ยอดเยี่ยมสำหรับเครื่องรับส่งสัญญาณ RF ขนาดเล็กแต่มีความสามารถซึ่งมีราคาถูกมากเช่นกัน ผู้คนสร้างสิ่งที่ยอดเยี่ยมร่วมกับพวกเขา เช่น DIY SDR และอะไรทำนองนั้น

อีกสิ่งหนึ่งที่ฉันต้องการจะกล่าวถึงในหัวข้อนี้คือ CircuitPython มันเป็นภาษาการเขียนโปรแกรมใหม่จากไมโครคอนโทรลเลอร์ที่ฉันได้ยินเรื่องดีๆ มากมายเกี่ยวกับเรื่องนี้ ฉันจึงอยากลองมัน ปรากฎว่าฉันสนุกกับมันมาก โดยเฉพาะอย่างยิ่งเมื่อใช้ร่วมกับบอร์ด Feather M4 Express ของ Adafruit ที่ฉันใช้ในโครงการนี้ด้วย การดีบักนั้นง่ายมาก เนื่องจากคุณไม่จำเป็นต้องคอมไพล์เฟิร์มแวร์แบบกำหนดเองทุกครั้งที่คุณลองเปลี่ยนแปลงโค้ดเพียงเล็กน้อย คุณจะได้รับคอนโซล REPL และโค้ดของคุณยังอยู่บนไมโครคอนโทรลเลอร์ด้วย ซึ่งหมายความว่าคุณสามารถพกพาติดตัวไปได้ทุกที่ เสียบปลั๊ก ลงในคอมพิวเตอร์เครื่องต่างๆ และคุณจะสามารถเปลี่ยนแปลงได้ทุกที่ทุกเวลา

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

ส่วนประกอบฮาร์ดแวร์
ส่วนประกอบฮาร์ดแวร์

สิ่งที่คุณจะต้องทำซ้ำโครงการนี้:

  • Adafruit Feather M4 Express
  • 2x Texas Instruments CC1101 เครื่องรับส่งสัญญาณ + เสาอากาศ
  • Adafruit FeatherWing OLED
  • 3.7V LiPo

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

ดังนั้นฉันจึงออกแบบ PCB แบบกำหนดเองโดยใช้ https://easyeda.com/ และสั่งซื้อจาก JLCPCB.com (ราคาถูกและคุณภาพดีมาก!) เพื่อเชื่อมต่อทุกอย่างเข้าด้วยกัน นอกจากนี้ยังอนุญาตให้รวมปุ่ม 3 ปุ่มและไฟ LED สำหรับการป้อนข้อมูลของผู้ใช้และเอาต์พุตสถานะได้อย่างง่ายดาย

และสุดท้าย ฉันพิมพ์ 3D ปกเล็กๆ ที่ด้านหลังของ PCB เพื่อไม่ให้ชนกับสิ่งใดๆ และนั่งราบลงบนโต๊ะ

หากคุณยังใหม่ต่อการออกแบบอิเล็กทรอนิคส์และ PCB ฉันขอแนะนำให้ตรวจสอบคำแนะนำเหล่านี้: Basic Electronics, Circuit Board Design Class!

ในเอกสารแนบ คุณสามารถค้นหาไฟล์ Gerber สำหรับ PCB ของฉัน หากคุณตัดสินใจที่จะผลิต คุณจะต้องมีส่วนประกอบพิเศษสองสามอย่างที่ฉันสั่งเองจาก LCSC เนื่องจากส่วนประกอบเหล่านี้เกี่ยวข้องกับ JLCPCB ดังนั้นพวกเขาจึงเสนอให้จัดส่งทุกอย่างพร้อมกันซึ่งช่วยประหยัดค่าขนส่งเล็กน้อยและส่วนประกอบก็เช่นกัน ราคาถูกมากที่นั่น ดู BOM สำหรับรายการโดยละเอียด ฉันตั้งใจเลือกขนาดบรรจุภัณฑ์ขนาดใหญ่ 0805 สำหรับส่วนประกอบ SMD เพื่อให้ทุกคนสามารถบัดกรีด้วยมือบน PCB ได้!

ขั้นตอนที่ 2: การสร้างบอร์ด

การสร้างคณะกรรมการ
การสร้างคณะกรรมการ
การสร้างคณะกรรมการ
การสร้างคณะกรรมการ
การสร้างคณะกรรมการ
การสร้างคณะกรรมการ

ในภาพแรก เราสามารถเห็น PCB โดยไม่ต้อง "ดัดแปลง" เลย - พวกมันมาแบบนี้จากโรงงาน การตัดที่สะอาดมาก (ไม่มีร่องวี กำหนดเส้นทางอย่างสมบูรณ์) และจุดแวะที่ดีบนรู THT ทั้งหมด

หากคุณต้องการใช้ LED คุณจะต้องบัดกรีพวกมันและตัวต้านทาน SMD ตัวต้านทานมักจะซ่อนอยู่ใต้ไมโครคอนโทรลเลอร์ แต่จะมองเห็นได้ในภาพที่สองซึ่งแสดงบอร์ดที่บัดกรีอย่างสมบูรณ์ หากคุณไม่มีประสบการณ์ในการบัดกรีมากนัก อาจเป็นเรื่องยากที่จะบัดกรี SMD แต่เป็นตัวเลือกและส่วนประกอบหลักทั้งหมดคือ THT ฉันชอบที่จะแนะนำวิดีโอของ Dave (EEVblog) เสมอและได้ดูวิดีโอนี้ด้วยตนเอง: EEVblog #186 - บทช่วยสอนบัดกรีส่วนที่ 3 - Surface Mount มันค่อนข้างยาว แต่คุ้มค่า ถ้าคุณยังใหม่กับสิ่งนี้!

เขากล่าวถึงเรื่องนี้เช่นกัน แต่: ให้บัดกรีตัวต้านทานและไฟ LED ก่อน จากนั้นจึงใช้ปุ่มที่สองและส่วนหัวต่อท้าย วิธีนี้คุณสามารถใช้ตารางดันส่วนประกอบจากด้านล่างและประสานจากด้านบนได้เสมอ (พลิกกลับด้าน PCB)

หลังจากบัดกรีทุกอย่างแล้ว คุณเพียงแค่เสียบ Feather M4 และเสาอากาศหนึ่งหรือสองเสา และฮาร์ดแวร์ก็พร้อม! เนื่องจากเราไม่บัดกรีส่วนประกอบเหล่านี้ เราจึงสามารถถอดออกจากบอร์ดและนำไปใช้กับโครงการอื่นได้ ซึ่งเยี่ยมมาก!

โปรดทราบว่าในภาพที่สาม ฉันมีส่วนหัวสั้นตัวผู้ปกติบน Feather ดังนั้นฉันจึงไม่สามารถวาง OLED ไว้ด้านบนได้ ฉันต้องถอดมันออกและเพิ่มส่วนหัวซ้อนขนนก หากคุณต้องการใช้ OLED ให้นำส่วนหัวที่ซ้อนกันมาทันที พูดตรงๆ เลย:D Desoldering เป็นเพียงความเจ็บปวด

ขั้นตอนที่ 3: ซอฟต์แวร์

เมื่อฮาร์ดแวร์เสร็จสิ้น เรามาพูดถึงซอฟต์แวร์กัน

ตามที่กล่าวไว้ในบทนำ M4 จะรันโค้ด Python แต่เห็นได้ชัดว่าไม่มีไลบรารี่สำหรับ CC1101 ในภาษา Python ดังนั้นฉันจึงทำในสิ่งที่ DIYers ทำและเขียนด้วยตัวเอง คุณสามารถค้นหาได้ที่นี่:

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

ฉันอาจจะยังคงทำงานต่อไป และหากคุณมีคำถามใด ๆ ขอคุณสมบัติ หรือต้องการมีส่วนร่วมในการพัฒนา โปรดติดต่อฉัน!

ขั้นตอนที่ 4: ความสามารถและคุณสมบัติ

เนื่องจากฉันออกแบบอุปกรณ์นี้ให้ใช้เสาอากาศคู่และตัวรับส่งสัญญาณ TI CC1101 ที่กำหนดค่าได้สูง คุณจึงมีความเป็นไปได้มากมาย โดยเฉพาะอย่างยิ่งในพื้นที่ที่คุณไม่ต้องการพกพาอะไรมากไปกว่าอุปกรณ์ขนาดสมาร์ทโฟน

ตัวอย่างเช่น คุณสามารถจับสัญญาณของการสื่อสารในย่านความถี่ 433MHz และส่งกลับไปยังสถานีหลักของคุณด้วยเสาอากาศรองที่ทำงานบน 868MHz

หรือหากต้องการศึกษาและทดลอง Reactive Jamming ก็สามารถมีสายอากาศแบบ Listening และ Jamming ที่ส่งสัญญาณของมันเองทันทีที่ตรวจพบการส่งสัญญาณ โดยไม่ต้องทำ "วิธีดั้งเดิม" ในการพยายามสลับระหว่าง RX และ TX เป็น เร็วที่สุด

อีกสิ่งที่ยอดเยี่ยมมากเกี่ยวกับ Feather M4 คือมันมาพร้อมกับวงจรชาร์จ LiPo ออนบอร์ด คุณเพียงแค่เสียบแบตเตอรี่และพร้อมใช้งาน ในกรณีของฉัน ด้วยเสาอากาศเดียวในโหมด RX คงที่ ฟังการส่งสัญญาณและเปิดหน้าจอ OLED อุปกรณ์จะทำงานเกือบ 20 ชั่วโมงบน LiPo 1000 mAh

การใช้หน้าจอ OLED แต่หากไม่มีก็สามารถทำได้เช่นกัน โดยใช้ไฟ LED แสดงสถานะสามดวง - คุณสามารถมีหลายโปรแกรมและเลือกโปรแกรมที่คุณต้องการเรียกใช้ด้วยปุ่มที่ด้านล่างของบอร์ด โดยส่วนตัวแล้วฉันยังใช้เมนูทั้งหมดที่มีโหมดให้เลือกและมุมมองการตั้งค่าความถี่ ฯลฯ

มันอาจจะมาอยู่ในมือสำหรับบางบ้านอัตโนมัติ! อย่างที่ฉันบอกไป ฉันสามารถสื่อสารกับปลั๊กไฟได้สำเร็จ (จับสัญญาณดั้งเดิมเพียงครั้งเดียวและเล่นซ้ำได้ทุกเมื่อที่คุณต้องการ) และหากคุณค้นคว้าข้อมูลเล็กน้อยบนอินเทอร์เน็ต คุณจะพบว่ามีอุปกรณ์กี่เครื่องที่ทำงานด้วย ความถี่เหล่านี้ด้วยรหัสที่ไม่มีวันเปลี่ยนแปลง แม้แต่รหัสโรงรถบางแห่งก็สามารถบันทึกและบันทึกด้วยอุปกรณ์นี้ แล้วใช้เมื่อคุณต้องการเปิดหรือปิดโรงรถของคุณ ดังนั้นสิ่งนี้จึงกลายเป็นรีโมทสากลสำหรับอุปกรณ์ RF ทั้งหมดของคุณ!

ฉันจำลองการโจมตีของ RollJam ด้วยอุปกรณ์นี้เป็นการส่วนตัวด้วย แต่จะไม่ปล่อยรหัสเนื่องจากการติดขัดในหลายๆ ที่ ดังนั้นหากคุณพยายามทำอะไรแบบนี้ ให้ปรึกษากฎหมายท้องถิ่นของคุณ;-)

เนื่องจากบอร์ดจะแสดงเป็นดิสก์ USB เมื่อคุณเสียบปลั๊ก และ CircuitPython มีคุณสมบัติดังกล่าว คุณจึงสามารถให้อุปกรณ์บันทึกการส่งสัญญาณ RF และบันทึกข้อมูล demodulated (ใช่แล้ว ตัวรับส่งสัญญาณจะทำสิ่งนี้โดยอัตโนมัติ!) ลงในไฟล์ข้อความ ซึ่งคุณสามารถคัดลอกไปยังพีซีของคุณได้ในภายหลัง และวิเคราะห์เพื่อวัตถุประสงค์ทางวิทยาศาสตร์ เช่น วิศวกรรมย้อนกลับของการส่งสัญญาณ

ขั้นตอนที่ 5: ผลลัพธ์สุดท้าย

ผลสุดท้าย
ผลสุดท้าย

ข้อเสนอแนะและการสนับสนุนโครงการนี้ยินดีต้อนรับและอย่าลังเลที่จะถามคำถามถ้าคุณมี!

แนะนำ: