ซอฟต์แวร์นี้เริ่มต้นที่จะส่งผ่านทางกฎหมาย ISM 915MHz ในสหรัฐอเมริกา การส่งสัญญาณในวงนี้อาจไม่ถูกกฎหมายในประเทศของคุณ
วิธีการรวบรวม
$ git clone --recurse-submodules https://github.com/jpaximadas/YeeNet.git
$ cd YeeNet
$ git config core.hooksPath git-hooks # Only necessary if you plan on contributing
$ export YEENET_BOARD=BLUEPILL_F103
$ make -C libopencm3
$ make -C src
หากคุณมี GIT ที่เก่ากว่าหรือก้าวไปข้างหน้าตัวเองและข้าม --recurse-submodules คุณสามารถแก้ไขสิ่งต่าง ๆ ได้โดยเรียกใช้ git submodule update --init (จำเป็นเพียงครั้งเดียวเท่านั้น)
หากคุณกำลังกำหนดเป้าหมายบอร์ดการพัฒนานอกเหนือจาก STM32 "Blue Pill" ให้เปลี่ยน YEENET_BOAL ตามลำดับ สำหรับรายการบอร์ดที่รองรับดูบอร์ดที่รองรับ
การเปลี่ยนแปลงที่ตามมาในไฟล์ต้นฉบับต้องการเฉพาะ make -C src
วิธีการอัปโหลด
ที่เก็บนี้ใช้ชุดเครื่องมือการเขียนโปรแกรม STLINK Open Source STM32 MCU: https://github.com/stlink-org/stlink
- ตรวจสอบให้แน่ใจว่า BOOT0 ไม่ได้ตั้งค่าไว้ว่าบอร์ดจะลบหน่วยความจำหลังจากรีเซ็ต
- ตรวจสอบให้แน่ใจว่า SWDIO, SWCLK และ GND เชื่อมต่อกับ MCU (เชื่อมต่อ 3.3V เท่านั้นหากคุณตั้งใจจะเปิดเครื่องบอร์ดจากโปรแกรมเมอร์)
- โปรแกรมชิป:
OpenOCD เป็นอีกทางเลือกหนึ่งสำหรับ stlink แต่ไม่ได้รับการสนับสนุนโดย make upload
วิธีการดีบัก
เมื่ออัพโหลดไบนารีรันต่อไปนี้ในไดเรกทอรี SRC:
- เริ่มเซิร์ฟเวอร์ GDB
- ในเทอร์มินัลอื่น-ยังคงอยู่ใน SRC-เริ่ม GDB และกำหนดค่า
$ gdb yeenet_router_firmware.elf
$ set processor armv7
$ target remote localhost:4242
$ load yeenet_router_firmware.elf
GDB เพิ่มเติมเกี่ยวกับการอ่าน STM:
https://www.st.com/resource/en/user_manual/dm00613038-stm32cubeide-stlink-gdb-server-stmicroelectronics.pdf
โปรดทราบว่า PDF นี้ใช้เซิร์ฟเวอร์ STMCube GDB ไม่ใช่ Open Source Stlink One อย่างไรก็ตามจากมุมมองของไคลเอนต์ GDB ไม่มีความแตกต่าง หน้า 6/15 ของ PDF แสดงวิธีใช้จุดพักและจุดเฝ้าดู
วิธีใช้อินเทอร์เฟซอนุกรม
มีไดรเวอร์อนุกรมในการพัฒนาที่นี่: https://github.com/jpaximadas/yeenet-router-driver-python
ไดเรกทอรี
- SRC มีโปรแกรม
- ที่แชร์มีไฟล์ที่ใช้ร่วมกันจาก libopencm3
บอร์ดที่รองรับ
Yeenet ตั้งเป้าหมายที่จะกำหนดเป้าหมายที่พร้อมใช้งานและบอร์ดพัฒนา STM32 ราคาถูก ดูด้านล่างสำหรับตารางเป้าหมายที่รองรับและค่า yeenet_board ที่สอดคล้องกัน
| กระดาน | yeenet_board |
|---|
| ยาเม็ดสีน้ำเงิน STM32F103 | bluepill_f103 |
| ยาเม็ดสีดำ STM32F411 | blackpill_f411 |
การสนับสนุนสำหรับบอร์ดอื่น ๆ สามารถเพิ่มได้โดยการสร้างคำจำกัดความของแพลตฟอร์มที่เหมาะสมใน platform/ และอัปเดต yeenet.mk ตามนั้น
การตั้งค่าเขียงหั่นขนม
ตารางต่อไปนี้แสดงให้เห็นว่าพินบนบอร์ดพัฒนาที่รองรับควรเชื่อมต่อกับ SX127X และ USB ถึง UART อย่างไร โปรดอ่านคำเตือนในตอนท้ายของส่วนก่อนที่จะพยายามไปที่เขียงหั่นขนมนี้
| การทำงาน | ยาเม็ดสีน้ำเงิน/หมุดยาเม็ดสีดำ |
|---|
| TX อนุกรม | PA9 |
| RX อนุกรม | PA10 |
| IRQ | Pa0 |
| Mosi | PA7 |
| มิโซะ | PA6 |
| SCK | PA5 |
| CS/SS | A1 |
| ครั้งแรก | B9 |
| บิตที่อยู่ 0 | B10 |
| บิตที่อยู่ 1 | B11 |
- อนุกรม TX/RX ควรเชื่อมต่อกับชิป USB/UART
- IRQ ควรเชื่อมต่อกับ DIO0 บน SX127X (อาจเรียกว่า D0 หรือ G0 บนกระดานฝ่าวงล้อม)
- MOSI, MISO, SCK และ SS ควรเชื่อมต่อจากกระดาน Dev ไปยังพินที่เหมาะสมในการฝ่าวงล้อม SX127X
- RST ควรเชื่อมต่อจากบอร์ด dev ไปยังพินที่เหมาะสมในการฝ่าวงล้อม SX1276X
- บิตที่อยู่ 0 และ 1 ควรเรียกใช้จากกระดาน dev ถึง 3.3V หรือพื้นดิน
อย่าเปิดเครื่องบอร์ดจากแหล่งแรงดันไฟฟ้ามากกว่าหนึ่งแหล่ง สิ่งนี้จะสร้างความเสียหายให้กับตัวควบคุมบน PCB
เปิดเครื่องบอร์ด DEV SX127X หรือ SX127X ด้วย 3.3 โวลต์เท่านั้น เลย์เอาต์ของพินด้านบนส่งสัญญาณจาก SX127X เป็นพินของ bluepill ที่ไม่ทน 5 โวลต์ Adafruit SX127X Breakout จะปล่อยสัญญาณตรรกะ 5 โวลต์และสร้างความเสียหายให้กับ bluepill หากขับเคลื่อนจาก 5 โวลต์
วิธีที่ได้รับการแนะนำให้ใช้พลังงานบอร์ด
- ให้กำลัง Bluepill จาก 5 โวลต์จาก USB ไปยัง UART BluePill จะควบคุมสิ่งนี้ลงไปที่ 3.3 โวลต์สำหรับการใช้งานของตัวเอง อีกทางเลือกหนึ่ง BluePill อาจใช้พลังงาน 3.3 โวลต์จากตัวควบคุมบน USB ถึง UART
- ให้กำลัง SX127X จากตัวควบคุม 3.3 โวลต์ที่เหมาะสม ตัวควบคุม 3.3 โวลต์ของ Bluepill นั้นไม่ดีพอสำหรับงาน ใช้หนึ่งใน USB ของคุณเพื่อ UART หากมีอยู่
- ปล่อยให้ 3.3 โวลต์บนโปรแกรมเมอร์ ST-Link ตัดการเชื่อมต่อ
สิ่งที่ต้องทำ
- ทำงานกับตัวจัดการแพ็คเก็ต
- ปรับปรุงโหมดความล้มเหลวเมื่อ ACK มาสาย
- ACK มีผลต่อตัวจัดการแพ็กเก็ตอย่างไรเมื่อทำงานกับแพ็คเก็ตที่ยังไม่ได้บรรจุ
- TX Snooze ใช้งานได้หรือไม่?
- ป้องกัน packet_handler จากการ dereferencing tx_pkt ตัวชี้ null ทันทีหลังจากการตั้งค่าเมื่อ rx'ing nack?
- ให้ฟังก์ชั่นเลเยอร์ที่สูงขึ้นเพื่อย้ายตำแหน่งของตัวชี้ RX_PKT ใน packet_handler
- เขียนแพ็คเก็ตเราเตอร์
- ใช้ USB และรักษาฟังก์ชั่น UART
- เขียนเอกสาร
- ปรับปรุง backoff_rng ใน packet_handler ดังนั้นจึงไม่หมดพูลเอนโทรปีอย่างรวดเร็ว
- ปรับปรุงองค์กรของการตั้งค่าฮาร์ดแวร์
- เริ่ม repo สำหรับอินเทอร์เฟซผู้ใช้ (ใช้ Dear Imgui)
- เพิ่มฟังก์ชั่น SX127X FSK ไปยัง modem_xl.c
ได้รับกระดานฝ่าวงล้อม
กระดานฝ่าวงล้อม Adafruit สามารถใช้พื้นที่มากเกินไปในการเข้าถึงหมุดทั้งหมดและอาจมีราคาแพง คุณสามารถรับบอร์ดแหกคุกเปล่าได้ที่นี่:
โมดูลวิทยุ RFM95 สามารถรับได้จาก Aliexpress หรือ Banggood สำหรับต่ำกว่าห้าดอลลาร์ต่อชิ้น
หมายเหตุ
SX127X Notes
- PIN รีเซ็ตบนกระดานฝ่าวงล้อม Adafruit จะต้องอยู่ในระดับต่ำเพื่อให้อุปกรณ์ทำงานได้ตรงกันข้ามกับคำแนะนำในเว็บไซต์ Adafruit
- พินรีเซ็ตจะต้องดึงต่ำในไม่ช้าเพื่อรีเซ็ตอุปกรณ์เมื่อ MCU รีบูต การรับประกันนี้ลงทะเบียนจะถูกรีเซ็ตเป็นสถานะเดิม การล้มเหลวในการทำเช่นนี้อาจทำให้เกิดพฤติกรรมแปลก ๆ
- เพื่อล้างการลงทะเบียน Flags IRQ ต้องเขียนศูนย์สองครั้งเหนือ SPI นี่คือข้อผิดพลาดของฮาร์ดแวร์
- เมื่อใส่ SX127X เข้าสู่โหมด LORA จะต้องใส่เข้าไปในโหมดสลีปก่อน ไม่ใช่โหมดสแตนด์บายหรืออื่น ๆ
- อาจารย์ SPI อาจไม่เขียนถึง FIFO นอกโหมดสแตนด์บาย
- FIFO ไม่ได้ถูกล้างออกระหว่างการเปลี่ยนแปลงโหมดเสมอไป อย่าคิดว่า FIFO จะถูกล้างโดยอัตโนมัติ
- โหมดส่วนหัวที่ชัดเจนใน SF = 6 ไม่ทำงาน ฟังก์ชั่นการกำหนดค่าการมอดูเลตอัตโนมัติในซอฟต์แวร์นี้จะไม่ปฏิเสธการกำหนดค่าการปรับเปลี่ยน
- รหัสนี้ไม่ได้สัมผัสไบต์ "SYNC Word" ที่ให้ Loras ปฏิเสธแพ็กเก็ตโดยอัตโนมัติ
บันทึกบอร์ด Bluepill Dev Board
- PC13 LED บนกระดาน "BluePill" DEV มีขั้วบวกเชื่อมโยงกับ 3.3 โวลต์และแคโทดที่เชื่อมโยงกับ PC13 (ด้วยเหตุผลบางอย่าง) ซึ่งหมายความว่า PC13 จะต้องถูกดึงต่ำเพื่อเปิด LED
- อย่าพยายามเพิ่มพลังงาน SX127X จากแหล่งจ่ายไฟ 3.3 โวลต์ของ BluePill ตัวควบคุมออนบอร์ดไม่สามารถทำงานได้ในช่วง RX หรือ TX SX127X ของคุณจะเป็นสีน้ำตาลและรีเซ็ต
USB ถึง UART Notes
- การใช้บอร์ด Arduino กับ CH430 USB ไปยังชิป UART เป็นอุปกรณ์ USB ไปยัง UART ของคุณไม่ใช่งานง่าย สิ่งที่ระบุว่าเป็น TX บน PCB (แต่จริง ๆ แล้วเป็น Rx จากมุมมองของ Arduino) สามารถใส่ลงในหมุด TX ที่ทนได้ 5 โวลต์ของบอร์ด Dev ของคุณ นี่คือส่วนที่ยาก Laballed เป็น RX บน PCB (จริง ๆ แล้ว TX จากมุมมองของ Arduino) จะไม่ทำงานถ้าคุณเพียงแค่เสียบเข้ากับพิน Rx ของกระดาน Dev ของคุณ คุณต้องประสานโดยตรงกับชิป CH430 ปรึกษาแผ่นข้อมูลเพื่อค้นหาว่า TX PIN ของ CH430 อยู่ที่ไหน จดหมายในตอนท้ายของ "CH430" มีความสำคัญอย่างยิ่ง
Yee: https://youtu.be/iepv31_e__4
