สารบัญ:
- ขั้นตอนที่ 1: บล็อกไดอะแกรม - ฮาร์ดแวร์
- ขั้นตอนที่ 2: บล็อกไดอะแกรม - ระบบเครือข่าย
- ขั้นตอนที่ 3: ชิ้นส่วน เครื่องมือ IDE และรายการวัสดุ
- ขั้นตอนที่ 4: การออกแบบฮาร์ดแวร์ - กระดานหลัก
- ขั้นตอนที่ 5: การออกแบบฮาร์ดแวร์ - โมดูล ESP32
- ขั้นตอนที่ 6: เค้าโครง PCB
- ขั้นตอนที่ 7: สิ่งที่แนบมา 3 มิติ
- ขั้นตอนที่ 8: การติดตั้งซอฟต์แวร์ - MCU
- ขั้นตอนที่ 9: การติดตั้งซอฟต์แวร์ - แอพ Android
- ขั้นตอนที่ 10: การทดสอบ
วีดีโอ: ตัวสร้างฟังก์ชันแบบพกพาบน WiFi และ Android: 10 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ใกล้ปลายศตวรรษที่ 20 นวัตกรรมทางเทคโนโลยีต่างๆ ปรากฏขึ้น โดยเฉพาะอย่างยิ่งในด้านการสื่อสาร แต่ไม่เพียงเท่านั้น สำหรับเรา ผู้ใช้ ผู้บริโภค และวิศวกรต่างก็หันมาสนใจการพัฒนาอุปกรณ์อิเล็กทรอนิกส์อย่างรวดเร็ว ซึ่งทำให้ชีวิตของเราง่ายขึ้นมาก: นาฬิกาอัจฉริยะ บ้านอัจฉริยะ สมาร์ทโฟน ฯลฯ
เนื่องจากทุกวันนี้ทุกสิ่งสามารถ "ฉลาด" ได้ ฉันจึงตัดสินใจออกแบบอุปกรณ์ที่มีประโยชน์มากเพื่อเป็นส่วนหนึ่งของอุปกรณ์ห้องปฏิบัติการอิเล็กทรอนิกส์ที่จำเป็น - Portable Function Generator ควบคุมได้ด้วยสมาร์ทโฟนที่ใช้ระบบปฏิบัติการ Android ผ่าน WiFi direct หรือ WiFi Local Area Network (WLAN)).
ทำไมเราควรสร้างอุปกรณ์นี้?
อุปกรณ์ทดสอบส่วนใหญ่มีราคาแพงมากในปัจจุบัน และบางครั้ง อุปกรณ์เหล่านี้ไม่สามารถพกพาได้ เนื่องจากเป็นวิธีแก้ปัญหาราคาสูง ขาดความสามารถในการพกพาและขาดการเข้าถึงเครือข่ายของอุปกรณ์ อุปกรณ์จึงมีตัวสร้างรูปคลื่นสองช่องสัญญาณ ซึ่งพกพาได้อย่างแท้จริงและมีการเข้าถึงเครือข่ายได้ไม่จำกัด ไม่ว่าจะเป็นอินเทอร์เน็ตหรือเครือข่ายภายในเครื่อง
และแน่นอน อุปกรณ์ควรจะสร้างขึ้นเพราะความกระตือรือร้น เชื่อฟังหลักการ DIY - บางครั้งเราก็แค่ต้องทำสิ่งต่าง ๆ ด้วยตัวเองเพื่อให้รู้สึกถูกต้อง:)
คุณสมบัติหลัก
พาวเวอร์ซัพพลาย
- ขั้วต่อ USB Type-A สำหรับทั้งระบบจ่ายไฟและการเขียนโปรแกรม
- ระบบจัดการแบตเตอรี่ Li-Ion ที่สมบูรณ์ - โหมดการชาร์จและเสถียร
- การใช้งาน Smart Switch - ไม่จำเป็นต้องใช้สวิตช์สลับพลังงาน
- แหล่งจ่ายไฟคู่: +3.3V และ -3.3V สำหรับการสร้างรูปคลื่นแรงดันไฟแบบสมมาตร
การสร้างรูปคลื่น
- การนำระดับ DC ไปใช้ที่เอาต์พุตคาสเคด - รูปคลื่นลำเอียงระหว่างขอบเขตแรงดันไฟฟ้า
- การสร้างรูปคลื่น 4 ประเภทตาม DDS - ไซน์ สามเหลี่ยม สี่เหลี่ยมจัตุรัส และ DC
- รองรับความถี่สูงสุด 10MHz
- กระแสไฟขาออกสูงสุด 80mA พร้อมกำลังไฟสูงสุด 500mW
- ช่องแยกสำหรับการสร้างรูปคลื่น - วงจรแยกตาม AD9834
การสื่อสาร
- การใช้งาน ESP32 - ความสามารถ WiFi ที่ใช้งานได้
- รองรับ TCP/IP โดยอุปกรณ์กำเนิดและสมาร์ทโฟน Android
- ความสามารถในการจัดเก็บพารามิเตอร์ผู้ใช้สำหรับทุกรอบอุปกรณ์
- การตรวจสอบสถานะ - ทั้งสองระบบรับรู้สถานะซึ่งกันและกัน: FuncGen (ต่อจากนี้ไปจะเรียกว่าวิธีนี้) และสมาร์ทโฟน
หน้าจอผู้ใช้
- จอ LCD ขนาด 20 x 4 ตัวอักษรพร้อมอินเทอร์เฟซข้อมูล 4 บิตอย่างง่าย
- แอปพลิเคชัน Android - ผู้ใช้ควบคุมอุปกรณ์ FuncGen ได้อย่างสมบูรณ์
- วงจร Buzzer - เสียงตอบรับกับผู้ใช้
ขั้นตอนที่ 1: บล็อกไดอะแกรม - ฮาร์ดแวร์
หน่วยไมโครคอนโทรลเลอร์ - ATMEGA32L
ไมโครคอนโทรลเลอร์เป็นชิปที่ตั้งโปรแกรมได้ซึ่งประกอบด้วยฟังก์ชันคอมพิวเตอร์ทั้งหมดที่อยู่ในชิปอิเล็กทรอนิกส์ตัวเดียว ในกรณีของเรา มันคือ "สมอง" และส่วนประกอบสำคัญของระบบ วัตถุประสงค์ของ MCU คือเพื่อจัดการระบบต่อพ่วงทั้งหมด จัดการการสื่อสารระหว่างระบบเหล่านี้ ควบคุมการทำงานของฮาร์ดแวร์ และให้การสนับสนุนอย่างสมบูรณ์สำหรับอินเทอร์เฟซผู้ใช้และการโต้ตอบกับผู้ใช้จริง โครงการนี้ใช้ ATMEGA32L MCU ที่อาจทำงานบน 3.3V และความถี่ 8MHz
การสื่อสาร SoC - ESP32
SoC (ระบบบนชิป) นี้ให้การสนับสนุนการสื่อสารที่สมบูรณ์สำหรับ FuncGen - การเข้าถึงความสามารถ WiFi รวมถึงการสื่อสารโดยตรง ในพื้นที่หรือทางอินเทอร์เน็ต วัตถุประสงค์ของอุปกรณ์คือ:
- การจัดการการรับส่งข้อมูลระหว่างแอพ Android และอุปกรณ์ FuncGen
- การจัดการข้อความควบคุม/ข้อมูล
- รองรับการกำหนดค่า TCP/IP Client-Server อย่างต่อเนื่อง
ในโครงการของเรา SoC คือ espressif ESP32 ซึ่งเป็นที่นิยมเกินกว่าจะขยายเพิ่มเติมได้อีก:)
ระบบจัดการแบตเตอรี่ Li-Ion
เพื่อเปลี่ยนอุปกรณ์ของเราให้เป็นอุปกรณ์พกพา อุปกรณ์ประกอบด้วยวงจรการชาร์จแบตเตอรี่ Li-Ion ที่ออกแบบมา วงจรใช้ MC73831 IC โดยมีกระแสไฟชาร์จที่ควบคุมได้ผ่านการปรับค่าของตัวต้านทานการเขียนโปรแกรมตัวเดียว (เราจะพูดถึงหัวข้อนี้ในขั้นตอนแผนผัง) อินพุตแหล่งจ่ายไฟของอุปกรณ์คือขั้วต่อ USB Type-A
วงจรสวิตช์อัจฉริยะ
วงจรควบคุมพลังงานอุปกรณ์สวิตช์อัจฉริยะให้การควบคุมซอฟต์แวร์ที่สมบูรณ์สำหรับลำดับการปิดอุปกรณ์ และไม่จำเป็นต้องใช้สวิตช์สลับภายนอกสำหรับการตัดแรงดันแบตเตอรี่ของอุปกรณ์ การทำงานของพลังงานทั้งหมดทำได้โดยการกดปุ่มและซอฟต์แวร์ของ MCU ในบางกรณี จำเป็นต้องปิดระบบ: แรงดันแบตเตอรี่ต่ำ แรงดันไฟฟ้าอินพุตสูง ข้อผิดพลาดในการสื่อสาร และอื่นๆ สวิตช์อัจฉริยะนั้นใช้ IC สวิตช์อัจฉริยะ STM6601 ที่มีราคาถูกและเป็นมิตรกับสิ่งแวดล้อมมาก
หน่วยจ่ายไฟหลัก
หน่วยนี้ประกอบด้วยวงจรจ่ายไฟที่ขับเคลื่อนด้วยแบตเตอรี่ 2 วงจร - +3.3V สำหรับวงจรจ่ายไฟแบบดิจิตอล/อนาล็อกทั้งหมด และ -3.3V สำหรับเอาต์พุตแบบสมมาตร FunGen ที่สัมพันธ์กับศักย์ไฟฟ้า 0V (เช่น รูปคลื่นที่สร้างขึ้นสามารถตั้งค่าได้ใน [-3.3V:3.3V)] ภาค.
- วงจรจ่ายไฟหลักใช้ LP3875-3.3 LDO (low dropout) 1A ตัวควบคุมแรงดันไฟฟ้าเชิงเส้น
- วงจรจ่ายไฟสำรองใช้ LM2262MX IC ซึ่งทำการแปลงแรงดันลบ DC-DC ผ่านระบบตัวเก็บประจุ-ประจุ-ปั๊ม - ที่ใช้ IC
ระบบกำเนิดสัญญาณ
ระบบได้รับการออกแบบโดยเน้นที่วงจรรวม DDS (การสังเคราะห์ทางดิจิตอลโดยตรง) ที่แยกจากกัน ซึ่งช่วยให้สามารถควบคุมการสร้างรูปคลื่นได้อย่างสมบูรณ์โดย SPI ของ MCU (อินเทอร์เฟซต่อพ่วงแบบอนุกรม) วงจรที่ใช้ในการออกแบบคือ Analog Devices AD9834 ที่อาจให้รูปคลื่นประเภทต่างๆ ความท้าทายที่เราต้องเผชิญขณะทำงานกับ AD9834 คือ:
- แอมพลิจูดของรูปคลื่นคงที่: แอมพลิจูดของรูปคลื่นถูกควบคุมโดยโมดูล DAC ภายนอก
- ไม่คำนึงถึงระดับ DC ออฟเซ็ต: การใช้วงจรรวมที่มีค่า DC offset ที่ต้องการ
- เอาต์พุตแยกสำหรับคลื่นสี่เหลี่ยมและคลื่นสามเหลี่ยม/คลื่นไซน์: การใช้วงจรสวิตชิ่งความถี่สูง ดังนั้นเอาต์พุตเดี่ยวแต่ละช่องสัญญาณสามารถให้รูปแบบของคลื่นที่ต้องการได้ทั้งหมด: ไซน์ สามเหลี่ยม สี่เหลี่ยมจัตุรัส และ DC
จอแสดงผลคริสตัลเหลว
LCD เป็นส่วนหนึ่งของ UI (ส่วนต่อประสานผู้ใช้) และมีวัตถุประสงค์เพื่อให้ผู้ใช้เข้าใจว่าอุปกรณ์ทำอะไรในโหมดเรียลไทม์ มันโต้ตอบกับผู้ใช้ในทุกสถานะอุปกรณ์
Buzzer
วงจรโทนเจเนอเรเตอร์อย่างง่ายสำหรับข้อเสนอแนะเพิ่มเติมจากอุปกรณ์สู่ผู้ใช้
โปรแกรมเมอร์ ISP แบบบูรณาการ
วิศวกรทุกคนมีปัญหาที่คงอยู่อยู่เสมอเมื่อพูดถึงกระบวนการเขียนโปรแกรม: มีความจำเป็นที่แย่ที่สุดเสมอที่จะถอดแยกชิ้นส่วนผลิตภัณฑ์เพื่อทำการโปรแกรมใหม่ด้วยเฟิร์มแวร์ใหม่ เพื่อเอาชนะความไม่สะดวกนี้ โปรแกรมเมอร์ AVR ISP ถูกต่อเข้ากับอุปกรณ์จากด้านใน ในขณะที่ข้อมูล USB และสายไฟจะผูกกับตัวเชื่อมต่อ USB Type-A ของอุปกรณ์ ในการกำหนดค่านี้ เราเพียงแค่เสียบ FuncGen ของเราผ่านสาย USB เพื่อตั้งโปรแกรมหรือชาร์จ!
ขั้นตอนที่ 2: บล็อกไดอะแกรม - ระบบเครือข่าย
เครื่องกำเนิดฟังก์ชัน Dual Channel
อุปกรณ์หลัก. ที่เราได้ตรวจสอบในขั้นตอนที่แล้ว
ESP-WROOM-32
ระบบบนชิปแบบบูรณาการพร้อมความสามารถ WiFi และ BLE SoC ติดอยู่กับกระดานหลัก (เราจะกล่าวถึงในขั้นตอนแผนผัง) ผ่านโมดูล UART และทำหน้าที่เป็นตัวรับส่งสัญญาณระหว่างอุปกรณ์หลักและสมาร์ทโฟน Android
เครือข่ายท้องถิ่น WiFi
สมาร์ทโฟนและอุปกรณ์จะสื่อสารผ่าน WiFi โดยตรงหรือเครือข่ายท้องถิ่นตามการกำหนดค่าเซิร์ฟเวอร์/ไคลเอนต์ TCP เมื่ออุปกรณ์รู้จักกันและกันบน WiFi อุปกรณ์หลักจะสร้างเซิร์ฟเวอร์ TCP พร้อมพารามิเตอร์ที่เหมาะสมและสามารถส่ง/รับข้อความได้ อุปกรณ์ทำหน้าที่เป็นอุปกรณ์รองของสมาร์ทโฟน ในทางกลับกัน อุปกรณ์ Android เชื่อมต่อกับเซิร์ฟเวอร์ TCP เป็นอุปกรณ์เครือข่ายไคลเอนต์ แต่ถือเป็นเครื่องส่งข้อความหลัก - สมาร์ทโฟนเป็นผู้เริ่มวงจรการสื่อสารที่สมบูรณ์: การส่งข้อความ - รับการตอบกลับ
สมาร์ทโฟน Android
อุปกรณ์สมาร์ทโฟนที่ใช้ระบบปฏิบัติการ Android ที่ทำงานบนแอปพลิเคชัน FuncGen
ขั้นตอนที่ 3: ชิ้นส่วน เครื่องมือ IDE และรายการวัสดุ
รายการวัสดุ (ดูตาราง XLS ที่แนบมา)
การเชื่อมต่อ UI และระบบ
- 1 x 2004A Char-LCD 20x4 สีฟ้า
- 1 x ขั้วต่อ USB Type B
- 1 x 10 ชุด Mini Micro JST XH 2.54mm 4 Pin
- 1 x 6 ชิ้นชั่วขณะ SW
การสั่งซื้อ PCB (ตาม Seeed Studio)
วัสดุฐาน FR-4
จำนวนชั้น 2 ชั้น
PCB จำนวน 10
จำนวนการออกแบบที่แตกต่างกัน 1
ความหนาของ PCB 1.6mm
PCB สีฟ้า
เสร็จสิ้นพื้นผิว HASL
หน้ากากประสานขั้นต่ำ 0.4mm↑
น้ำหนักทองแดง 1oz
ขนาดรูเจาะขั้นต่ำ 0.3mm
ความกว้างของรอยต่อ / ระยะห่าง 6/6 mil
ครึ่งรูชุบ / รูคาสเตลล่า No
การควบคุมอิมพีแดนซ์ No
เครื่องมือ
- ปืนกาวร้อน
- แหนบ
- เครื่องตัด
- สาย ~ 22AWG สำหรับการจัดการความผิดปกติ
- หัวแร้ง/สถานี
- ดีบุก
- สถานีปรับปรุง SMD (อุปกรณ์เสริม)
- เครื่องพิมพ์ 3 มิติ (อุปกรณ์เสริม)
- ไฟล์การอัดรีด
- โปรแกรมเมอร์ AVR ISP
- USB to Serial Converter (ตัวเลือก เพื่อการดีบัก)
สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) และซอฟต์แวร์
- Autodesk EAGLE หรือ Cadence Schematic Editor / Allegro PCB Editor
- OpenSCAD (ไม่บังคับ)
- Ultimaker Cura (อุปกรณ์เสริม)
- Saleae Logic (สำหรับการแก้ไขปัญหา)
- Atmel Studio 6.3 หรือสูงกว่า
- Android Studio หรือ Eclipse IDE
- Docklight Serial Monitor / ซอฟต์แวร์ตรวจสอบพอร์ต COM อื่นๆ
- ProgISP สำหรับ AVR ATMEGA32L การเขียนโปรแกรมแฟลช
ขั้นตอนที่ 4: การออกแบบฮาร์ดแวร์ - กระดานหลัก
วงจรการจัดการแบตเตอรี่
วงจรการชาร์จแบตเตอรี่ใช้ MCP7383 IC ซึ่งช่วยให้เราเลือกกระแสไฟชาร์จที่ต้องการสำหรับแบตเตอรี่ Li-Ion - 3.7V ที่มีความจุ 850mAh กระแสไฟชาร์จถูกกำหนดโดยค่าตัวต้านทานการเขียนโปรแกรม (R1) ในกรณีของเรา
R1 = 3KOhm ฉัน (ชาร์จ) = 400mA
แรงดันไฟ USB VBUS ถูกกรองโดย π-filter (C1, L3, C3) และทำหน้าที่เป็นแหล่งพลังงานสำหรับวงจรชาร์จ
วงจรแบ่งแรงดันไฟ (R2, R3) ช่วยให้ MCU สามารถระบุได้ว่าแหล่งจ่ายไฟ USB ภายนอกเชื่อมต่ออยู่หรือไม่ โดยการจ่ายแรงดันไฟฟ้าต่อไปนี้ไปยังช่องสัญญาณ A/D ของ MCU:
V(ตัวบ่งชี้) ~ (2/3)V(BUS)
เนื่องจาก A/D ของ ATMEGA32L ของเราคือ 12 บิต เราจึงสามารถคำนวณช่วงดิจิทัลได้:
A/D(ช่วง) = 4095V(บ่งชี้) / V(REF)
A/D ∈ [14AH: FFFH]
หน่วยพลังงานสวิตช์อัจฉริยะ
วงจรช่วยให้ระบบสามารถควบคุมการจ่ายไฟให้กับทุกบล็อกที่ออกแบบมาทั้งจากปุ่มกดและซอฟต์แวร์บน MCU และอิงตาม STM6601 Smart-Switch พร้อมตัวเลือก POWER แทนการรีเซ็ต เทอร์มินัลที่เราต้องการพิจารณาคือ:
- PSHOLD - สายอินพุตที่กำหนดสถานะอุปกรณ์: หากดึง LOW อุปกรณ์จะปิดใช้งานหน่วยจ่ายไฟสำรองทั้งหมด (+3.3V และ -3.3V) หากถือไว้สูง - อุปกรณ์จะรักษาสถานะเปิด
- nSR และ nPB - สายอินพุต ขั้วปุ่มกด. เมื่อตรวจพบขอบที่ตกลงมาบนหมุดเหล่านี้ อุปกรณ์จะพยายามเข้าสู่โหมดพลังงานขึ้น / ลง
- nINT - บรรทัดเอาต์พุต ดึง LOW ทุกครั้งที่กดปุ่ม
- EN - สายสัญญาณออก ใช้เป็นแหล่งจ่ายไฟสำหรับหน่วยจ่ายไฟสำรอง ในขณะที่ถือ LOW อุปกรณ์จ่ายไฟสำรองทั้งสองจะถูกปิดการใช้งาน
มีหมายเหตุสำคัญบางประการก่อนที่เราจะดำเนินการออกแบบขั้นสุดท้าย:
- ควรดึง PSHOLD ขึ้นเป็น 3.3V เนื่องจากมีบางกรณีที่ MCU บังคับให้ I/O ทั้งหมดอยู่ในสถานะ HIGH-Z ในกรณีนี้ ไม่ทราบสถานะของ PSHOLD จาก MCU และอาจส่งผลกระทบอย่างมากต่อกระบวนการเขียนโปรแกรมของอุปกรณ์
- ควรสั่งซื้อ STM6601 ด้วยตัวเลือกการปรับ EN เมื่อกดแบบยาว แทนที่จะเป็นตัวเลือก RESET (ฉันอยู่ในตัวเลือกนั้นแล้ว)
หน่วยจ่ายไฟ: +3.3V
แหล่งจ่ายไฟหลักสำหรับทุกระบบในโครงการของเรา เมื่อสาย +3.3V อยู่ที่ระดับ GND (เช่น ไม่มีแรงดันไฟฟ้า) IC ทั้งหมดยกเว้นสวิตช์อัจฉริยะจะปิดการทำงาน วงจรนี้ใช้ LDO LP-3875-3.3 IC ที่มีความสามารถในการควบคุมผ่านขั้ว EN และให้กระแสไฟสูงถึง 1A
แหล่งพลังงานสำหรับวงจรนี้คือแรงดันไฟฟ้าของแบตเตอรี่ โดยมีตัวแสดง A/D สำหรับตรวจจับ VBAT ในการกำหนดค่า คล้ายกับวงจรตรวจจับ VBUS ในกรณีนี้ การคำนวณจะแตกต่างกันเล็กน้อย
V(แบตเตอรี่ต่อA/D) = 0.59V(แบตเตอรี่); A/D(ช่วง) ∈ [000H: C03H]
หน่วยจ่ายไฟ: -3.3V
วงจรจ่ายแรงดันลบช่วยให้เราสร้างรูปคลื่นสมมาตรด้วยปัจจัย DC ที่ 0V (เช่น ค่าเฉลี่ยของรูปคลื่นสามารถเป็น 0V) วงจรนี้ใช้ตัวแปลง LM2662MX IC - DC/DC ที่ทำงานโดยใช้วิธี "ปั๊มชาร์จ" กระแสไฟขาออกสูงสุดของวงจรคือ 200mA ซึ่งเพียงพอสำหรับความต้องการในการออกแบบของเรา - เราถูกจำกัดด้วยกระแสเอาต์พุต 80mA จากช่องสัญญาณของแต่ละอุปกรณ์
IC ทำงานที่จำเป็นทั้งหมด ดังนั้นเฉพาะส่วนที่เราต้องติดคือตัวเก็บประจุด้วยไฟฟ้าสองตัว: C33 สำหรับการสลับและ C34 สำหรับบายพาสสาย -3.3V (ข้อควรพิจารณาในการลดสัญญาณรบกวน) ความถี่ของสวิตชิ่งนั้นน้อยมากในการออกแบบ หากเราวางวงจรให้ห่างจากชิ้นส่วนที่สร้างรูปคลื่นมากพอ (เราจะพูดถึงมันที่ขั้นตอน PCB Layout)
หน่วยไมโครคอนโทรลเลอร์ - MCU
นี่คือผู้จัดการและซีอีโอของระบบของเรา - การควบคุม การจัดการเครือข่าย การส่งข้อความ และการสนับสนุน UI - ทุกอย่างเป็นของ MCU
MCU ที่เลือกคือ Atmel ATMEGA32L โดยที่ L หมายถึงการทำงานแรงดันไฟฟ้าที่รองรับ ∈ [2.7V: 5.5V] ในกรณีของเรา แรงดันใช้งานคือ +3.3V
พิจารณาบล็อกการทำงานหลักที่จำเป็นต่อการทำความเข้าใจ การทำงานกับ MCU ในการออกแบบของเรา:
- ออสซิลเลเตอร์ภายนอก - เป็นส่วนประกอบเสริม เนื่องจากเราสนใจความถี่การทำงาน 8MHz
-
การควบคุมอุปกรณ์ต่อพ่วง, เครือข่าย SPI - อุปกรณ์ต่อพ่วงทั้งหมด (ยกเว้น ESP32) กำลังสื่อสารกับ MCU ผ่าน SPI มีสายที่ใช้ร่วมกันสามสายสำหรับอุปกรณ์ทั้งหมด (SCK, MOSI, MISO) และทุกวงจรต่อพ่วงมีสาย CS (Chip Select) เฉพาะ อุปกรณ์ SPI ที่เป็นส่วนหนึ่งของอุปกรณ์:
- D/A สำหรับการควบคุมแอมพลิจูด - Channel A
- D/A สำหรับการควบคุมแอมพลิจูด - Channel B
- อุปกรณ์ AD9834 - ช่อง A
- อุปกรณ์ AD9834 - ช่อง B
- D/A สำหรับการควบคุมแรงดันไบแอส - Channel A
- D/A สำหรับการควบคุมแรงดันไบแอส - Channel B
- โพเทนชิออมิเตอร์แบบดิจิตอลสำหรับการตั้งค่าความสว่าง/ความคมชัดของ LCD
- รองรับ LCD - เนื่องจาก LCD เป็นจอแสดงผลทั่วไปขนาด 20 x 4 ตัว เราจึงใช้อินเทอร์เฟซ 4 บิต (เส้น D7:D4), พินควบคุม (เส้น RS, E) และการควบคุมความสว่าง/ความคมชัด (เส้น V0 และขั้วบวก)
- รองรับ RGB LED - โมดูลนี้เป็นอุปกรณ์เสริม แต่มีขั้วต่อ RGB LED แบบแคโทดทั่วไปพร้อมตัวต้านทานที่เหมาะสม เชื่อมต่อกับ MCU
-
การควบคุมพลังงาน - MCU ดำเนินการตรวจสอบระบบไฟฟ้าในโหมดเรียลไทม์ และจัดการเหตุการณ์ด้านพลังงานที่จำเป็นทั้งหมด:
- VBAT_ADC - การตรวจสอบแรงดันแบตเตอรี่และกำหนดสถานะ (ช่อง ADC0)
- PWR_IND - การบ่งชี้การเชื่อมต่อแหล่งจ่ายไฟภายนอก (ช่อง ADC1)
- PS_HOLD - สายไฟเปิดใช้งานหลักสำหรับระบบที่กำหนดไว้ทั้งหมด เมื่อ MCU ดึงให้ต่ำ อุปกรณ์จะปิดลง
- ขั้วขัดจังหวะของสวิตช์อัจฉริยะ - การตรวจสอบสถานะปุ่มกด
- การจัดการเครือข่าย WiFi - ESP32: MCU สื่อสารกับ ESP32 ผ่านอินเทอร์เฟซ UART เนื่องจาก 8MHz ทำให้เราสามารถปรับใช้อัตราบอดที่ 115200 โดยมีข้อผิดพลาดค่อนข้างน้อย เราจึงสามารถใช้ ESP32 ในวงจรได้โดยไม่ต้องมีการกำหนดล่วงหน้าของการเปลี่ยนแปลงอัตราบอด
โปรแกรมเมอร์ AVR ISP
MCU ของเราได้รับการตั้งโปรแกรมผ่าน SPI โดยจะต้องดึงสายการรีเซ็ต (/RST) สูงเพื่อการทำงานที่เหมาะสม (ถ้าไม่ใช่ MCU จะพบว่าตัวเองอยู่ในสถานะรีเซ็ตตลอดไป)
เพื่อให้อุปกรณ์สามารถตั้งโปรแกรมและชาร์จผ่าน USB ได้ ฉันได้แนบโปรแกรมเมอร์ AVR ISP (ผลิตภัณฑ์ขนาดเล็ก ซื้อจาก eBay) เพื่อให้อุปกรณ์รองรับ USB ได้อย่างสมบูรณ์ จำเป็นต้องผูกขั้วต่อ USB Type-A (D+, D-, VBUS และ GND) กับอุปกรณ์ AVR ISP
วงจรสร้างรูปคลื่น
แกนหลักของอุปกรณ์คือวงจรเหล่านี้ AD9834 เป็นอุปกรณ์ DDS พลังงานต่ำที่ให้รูปคลื่นทั้งหมดที่เราต้องการดึงจากระบบ วงจรประกอบด้วยไอซี AD9834 อิสระสองตัวพร้อมออสซิลเลเตอร์ 50MHz ภายนอกที่แยกจากกัน (ดังที่เห็นในแผนผัง) สาเหตุของการแยกออสซิลเลเตอร์คือการพิจารณาการลดสัญญาณรบกวนของวงจรดิจิทัล ดังนั้น การตัดสินใจคือการจัดการกับสาย 50MHz ที่เหมาะสมกับออสซิลเลเตอร์ที่วางอยู่ติดกับ AD9834
ทีนี้มาดูคณิตศาสตร์กันบ้าง:
เนื่องจากอุปกรณ์ DDS ทำงานบนเทคโนโลยี Phase Wheel โดยมีค่าเอาต์พุตอยู่ในรีจิสเตอร์ 28 บิต เราจึงสามารถอธิบายการสร้างรูปคลื่นทางคณิตศาสตร์ได้:
dP(เฟส) = ωdt; ω = P' = 2πf; f(AD9834) = ΔP * f(clk) / 2^28; ΔP ∈ [0: 2^28 - 1]
และตามแผ่นข้อมูล AD9834 โดยคำนึงถึงความถี่สูงสุด ความละเอียดของความถี่เอาต์พุตอาจได้รับ:
Δf = k * f(ออสซิลเลเตอร์) / f(สูงสุด) = 0.28 * 50M / 28M = 0.187[Hz]
AD9834 ICs ให้เอาท์พุตกระแสแอนะล็อกสำหรับคลื่นสามเหลี่ยม/ไซน์ (ขั้ว IOUT) และเอาต์พุตดิจิตอลสำหรับคลื่นสี่เหลี่ยม (ขั้ว SIGN_OUT) การใช้สัญญาณบิตค่อนข้างยุ่งยาก แต่เราสามารถจัดการได้ - ทุกครั้งที่ DDS ผ่านเกณฑ์ของค่าเปรียบเทียบ SIGN_OUT จะทำงานตามนั้น ตัวต้านทาน 200Ohm ติดอยู่ที่เอาต์พุตของแต่ละช่องสัญญาณ ดังนั้นแรงดันเอาต์พุตจะมีค่าที่มีความหมาย:
I(ช่องสัญญาณเดียว) = V(เอาต์พุต) / R(การเลือกแรงดันไฟฟ้า); V(เอาต์พุต) = R(VS)*I(SS) = 200I(SS) [A]
วงจรควบคุมแอมพลิจูด (D/A)
ตามเอกสารข้อมูลของ AD9834 แอมพลิจูดของมันสามารถปรับเปลี่ยนได้โดยการจ่ายกระแสไปยังระบบเต็มรูปแบบของ DDS ดังนั้นด้วยความช่วยเหลือของ D/A IC แบบคู่ เราจึงสามารถควบคุมแอมพลิจูดของสัญญาณเอาท์พุตได้โดยการปรับกระแสนั้น อีกครั้งหนึ่งคณิตศาสตร์:
ฉัน(เต็มสเกล) = 18 * (V_REF - V_DAC) / R_SET [A]
ตามแผนผังและใส่ตัวเลขลงในสมการ:
ฉัน(เต็มสเกล) = 3.86 - 1.17 * V_DAC [A]
โมดูล D/A ที่ใช้ในการออกแบบคือ MCP4922 แบบ 12 บิต เมื่อกระแสอยู่ในช่วง [0mA: 3.86mA] และฟังก์ชันแอมพลิจูดเชิงเส้นคือ:
V(การเลือกแอมพลิจูด) = 1 - [V(D/A) / (2^12 - 1)]
วงจรมัลติเพล็กซิ่งรูปคลื่น
เอาต์พุตการสร้างคลื่นสี่เหลี่ยมและคลื่นไซน์/สามเหลี่ยมแยกจากกันที่ AD9834 ดังนั้นเราจึงต้องใช้วงจรมัลติเพล็กซิ่งความเร็วสูงสำหรับเอาต์พุตทั้งสองเพื่อให้สามารถดึงรูปคลื่นที่ต้องการทั้งหมดจากช่องสัญญาณแยกเดี่ยว มัลติเพล็กเซอร์ IC เป็นสวิตช์อนาล็อก ADG836L ที่มีความต้านทานไฟฟ้าต่ำมาก (~0.5Ohm)
ตารางการเลือกที่ MCU ใช้สำหรับเอาต์พุตตามที่เป็นอยู่:
การเลือกโหมด [D2:D1] | ช่องสัญญาณออก A | ช่องสัญญาณออกB
00 | ไซน์/สามเหลี่ยม | ไซน์/สามเหลี่ยม 01 | ไซน์/สามเหลี่ยม | สแควร์ 10 | สแควร์ | ไซน์/สามเหลี่ยม 11 | สแควร์ | สี่เหลี่ยม
วงจรควบคุมแรงดันไบแอส (D/A)
หนึ่งในคุณสมบัติหลักของเครื่องกำเนิดสัญญาณคือการควบคุมค่า DC ในการออกแบบนี้ทำได้โดยการตั้งค่าแรงดัน D/A ที่ต้องการต่อแต่ละช่องสัญญาณ และแรงดันไบอัสเหล่านี้จะถูกรวมเข้ากับเอาต์พุตแบบมัลติเพล็กซ์ที่เราได้พูดคุยกันก่อนหน้านี้เล็กน้อย
แรงดันไฟดึงจาก D/A อยู่ในช่วง [0V: +3.3V] จึงมีวงจรแบบ op-amp ที่จับคู่ช่วง D/A กับ [-3.3V: +3.3V] ทำให้อุปกรณ์มีช่วงเต็ม ของส่วนประกอบ DC ที่ต้องการ เราจะข้ามคณิตศาสตร์เชิงวิเคราะห์ที่น่ารำคาญไป และเน้นที่ผลลัพธ์สุดท้าย:
V_OUT(ช่อง B) = V_BIAS_B(+) - V_BIAS_B(-); V_OUT(ช่อง A) = V_BIAS_A(+) - V_BIAS_A(-)
ตอนนี้ ช่วงคอมโพเนนต์ DC อยู่ในช่วง [-3.3V: +3.3V]
วงจรรวม - ส่วนประกอบ DC และเอาต์พุตรูปคลื่น
ณ จุดนี้ เรามีทุกสิ่งที่เราต้องการสำหรับเอาต์พุตอุปกรณ์ที่เหมาะสม - แรงดันไบแอส (ส่วนประกอบ DC) ในช่วงแรงดันไฟฟ้าเต็มรูปแบบ และเอาต์พุต AD9834 แบบมัลติเพล็กซ์ เราจะทำให้มันเกิดขึ้นโดยใช้แอมพลิฟายเออร์รวม - การกำหนดค่า op-amp
ข้ามวิชาคณิตศาสตร์กันอีกครั้ง (เราได้กล่าวถึงวิธีการทางคณิตศาสตร์ไปมากแล้ว) และจดผลลัพธ์สุดท้ายของผลลัพธ์ของแอมพลิฟายเออร์รวม:
V(เอาต์พุตของอุปกรณ์) = V(อคติเชิงบวก) - V(อคติเชิงลบ) - V(เอาต์พุตแบบมัลติเพล็กซ์) [V]
เพราะฉะนั้น:
V_OUT = ΔV_BIAS - V_AD9834 [V]
ขั้วต่อเอาต์พุตประเภท BNC เชื่อมต่อกับตัวต้านทานแบบเลือก (R54, R55; R56, R57) เหตุผลก็คือในกรณีที่การออกแบบอาจใช้งานไม่ได้ เรายังสามารถเลือกได้ว่าต้องการใช้เครื่องขยายสัญญาณรวมหรือไม่
หมายเหตุสำคัญ: นักออกแบบสามารถปรับเครือข่ายตัวต้านทานของแอมพลิฟายเออร์สรุปผลสุดท้ายได้ เพื่อที่จะเปลี่ยนแอมพลิจูดสูงสุดที่สามารถดึงข้อมูลจากอุปกรณ์ได้ ในกรณีของฉัน แอมป์ทั้งหมดมีอัตราขยายเท่ากัน = 1 ดังนั้นแอมพลิจูดบัฟเฟอร์สูงสุดคือ 0.7Vpp สำหรับคลื่นสามเหลี่ยม/ไซน์ และ 3.3Vpp สำหรับคลื่นสี่เหลี่ยม วิธีการทางคณิตศาสตร์เฉพาะสามารถพบได้ในรูปภาพที่แนบมาของขั้นตอน
ESP32 เป็นโมดูลภายนอก
MCU สื่อสารกับ ESP32 ผ่านอินเทอร์เฟซ UART เนื่องจากฉันต้องการ PCB ของตัวเองสำหรับ ESP32 จึงมี 4 เทอร์มินัลสำหรับเชื่อมต่อ: VCC, RX, TX, GND J7 เป็นตัวเชื่อมต่ออินเทอร์เฟซระหว่าง PCB และ ESP32 จะถูกจัดสรรเป็นโมดูลภายนอกภายในอุปกรณ์
ส่วนต่อประสานผู้ใช้ - LCD และลำโพง
LCD ที่ใช้เป็นจอแสดงผลทั่วไปขนาด 20 x 4 ตัวพร้อมอินเทอร์เฟซ 4 บิต ดังที่เห็นจากการออกแบบมีโพเทนชิออมิเตอร์ดิจิตอล SPI ติดอยู่ที่ขั้ว LCD "A" และ "V0" - จุดประสงค์คือเพื่อปรับ ความสว่างและความคมชัดของโมดูล LCD โดยทางโปรแกรม
ลำโพงให้เอาต์พุตเสียงสำหรับผู้ใช้โดยการสร้างคลื่นสี่เหลี่ยมอย่างง่ายจาก MCU BJT T1 ควบคุมกระแสไฟผ่านลำโพงที่สามารถเปิด/ปิดได้เพียงสองสถานะ
ขั้นตอนที่ 5: การออกแบบฮาร์ดแวร์ - โมดูล ESP32
ESP32 ใช้เป็นโมดูลภายนอกสำหรับ PCB หลัก การสื่อสารของอุปกรณ์เป็นไปตามคำสั่ง AT ซึ่งมีอยู่ในเฟิร์มแวร์ของอุปกรณ์ทั่วไป
การออกแบบนี้มีไม่มากที่จะขยายออกไป แต่มีหมายเหตุบางประการสำหรับการออกแบบ:
- สำหรับการจัดการความล้มเหลวของการใช้โมดูล UART ที่เหมาะสมของ ESP32 ฉันได้แนบตัวต้านทานการเลือกสามตัวสำหรับทั้งสาย TX และ RX (0Ohm สำหรับแต่ละ). สำหรับการกำหนดค่ามาตรฐาน โมดูล UART2 ใช้สำหรับคำสั่ง AT (ต้องบัดกรี R4, R7)
- อุปกรณ์มีเอาต์พุต 4 บรรทัด - VCC, GND, TX, RX
- หมุด IO0 และ EN ประเมินการทำงานของอุปกรณ์และควรได้รับการออกแบบตามที่ระบุไว้ในแผนผัง
คุณสมบัติ PCB ทั้งหมดที่เราจะกล่าวถึงในขั้นตอนต่อไปนี้
ขั้นตอนที่ 6: เค้าโครง PCB
เป้าหมายของการออกแบบ PCB
- สร้างระบบฝังตัวสำหรับวงจรรวมทั้งหมดบนบอร์ดเดียวกัน
- ปรับปรุงประสิทธิภาพของอุปกรณ์ด้วยการออกแบบ PCB หลักเพียงตัวเดียว
- การลดต้นทุน - หากคุณต้องการดูราคา การออกแบบต้นทุนต่ำคือต้นทุนที่ต่ำจริงๆ
- ลดขนาดบอร์ดอิเล็กทรอนิกส์ให้น้อยที่สุด
- แก้ไขปัญหาได้ง่าย - เราสามารถใช้ TP (จุดทดสอบ) สำหรับแต่ละบรรทัดที่อาจทำงานผิดพลาดได้
พารามิเตอร์ทางเทคนิค
PCB ทั้งสอง: บอร์ดหลักและ ESP32 มีลักษณะเหมือนกันสำหรับกระบวนการผลิต - ต้นทุนต่ำและใช้งานได้ตามวัตถุประสงค์ของเรา มาดูกัน:
A - กระดานหลัก
- ขนาด: 10cm x 5.8cm
- จำนวนชั้น: 2
- ความหนาของ PCB: 1.6mm
- พื้นที่ติดตามขั้นต่ำ/ความกว้าง: 6/6mil
- ขั้นต่ำผ่านเส้นผ่านศูนย์กลางรู: 0.3mm
- ทองแดงถึงขอบ PCB ระยะทางขั้นต่ำ: 20mil
- การตกแต่งพื้นผิว: HASL (สีเงินสวยดูดีราคาถูก)
B - กระดานหลัก
- ขนาด: 3cm x 4cm
- จำนวนชั้น: 2
- ความหนาของ PCB: 1.6mm
- พื้นที่ติดตามขั้นต่ำ/ความกว้าง: 6/6mil
- ขั้นต่ำผ่านเส้นผ่านศูนย์กลางรู: 0.3mm
- ทองแดงถึงขอบของ PCB ระยะทางขั้นต่ำ: 20mil
- การตกแต่งพื้นผิว: HASL
ขั้นตอนที่ 7: สิ่งที่แนบมา 3 มิติ
ฉันไม่ได้ออกแบบด้วยตัวเอง เพราะในขณะนั้นฉันกำลังโน้มน้าวให้อุปกรณ์นี้ใช้งานได้ ดังนั้นฉันจึงไม่รู้พื้นฐานการพิมพ์ 3 มิติทั้งหมดเลย ดังนั้นฉันจึงใช้โปรเจ็กต์ SCAD จาก Thingiverse และแนบรูรับแสงที่แตกต่างกันกับขอบเขตตามข้อกำหนดของอุปกรณ์ของฉัน
- อุปกรณ์การพิมพ์: Creality Ender-3
- ประเภทเตียง: กระจก หนา 5 มม.
- เส้นผ่านศูนย์กลางของเส้นใย: 1.75mm
- ประเภทเส้นใย: PLA+
- เส้นผ่าศูนย์กลางหัวฉีด: 0.4mm
- ความเร็วเริ่มต้น: 20 มม./วินาที
- ความเร็วเฉลี่ย: 65 มม./วินาที
- สนับสนุน: N/A
- เติม: 25%
-
อุณหภูมิ:
- เตียง: 60(oC)
- หัวฉีด: 215(oC)
- เส้นใยสี: สีดำ
- จำนวนรูรับแสงทั้งหมด: 5
-
จำนวนแผงตู้: 4
- ท็อปเชลล์
- เปลือกด้านล่าง
- แผงด้านหน้า
- แผงด้านหลัง
ขั้นตอนที่ 8: การติดตั้งซอฟต์แวร์ - MCU
GitHub เชื่อมโยงไปยัง Android และรหัส Atmega32
อัลกอริทึมซอฟต์แวร์
การดำเนินการทั้งหมดที่ดำเนินการโดย MCU มีการอธิบายไว้ในผังงานที่แนบ นอกจากนั้น ยังมีโค้ดที่แนบมาสำหรับโครงการอีกด้วย ขอครอบคลุมข้อกำหนดซอฟต์แวร์:
เพิ่มพลัง
ในขั้นตอนนี้ MCU จะดำเนินการตามลำดับการเริ่มต้นทั้งหมดพร้อมกับการกำหนดประเภทการสื่อสารที่เก็บไว้กับอุปกรณ์ Android: การสื่อสารเครือข่าย Direct WiFi หรือ WLAN - ข้อมูลนี้ถูกเก็บไว้ใน EEPROM ผู้ใช้สามารถกำหนดประเภทการจับคู่อุปกรณ์ Android ใหม่ได้ในขั้นตอนนี้
การจับคู่อุปกรณ์ Android โดยตรง
การจับคู่ประเภทนี้ขึ้นอยู่กับการสร้างเครือข่าย WiFi โดยอุปกรณ์ FuncGen มันจะสร้าง AP (จุดเข้าใช้งาน) และเซิร์ฟเวอร์ TCP บน IP ของอุปกรณ์ท้องถิ่นด้วย SSID เฉพาะ (ชื่อเครือข่าย WiFi) และหมายเลขพอร์ตเฉพาะ อุปกรณ์ควรเก็บสถานะไว้ - เปิดสำหรับการเชื่อมต่อ
เมื่ออุปกรณ์ Android เชื่อมต่อกับ FuncGen MCU จะเข้าสู่โหมด ACTIVE และตอบสนองตามคำแนะนำของผู้ใช้จากอุปกรณ์ Android
การจับคู่ WLAN
ในการสื่อสารบนเครือข่าย WiFi ในพื้นที่ MCU ควรจัดเตรียมคำสั่งสำหรับ ESP32 เพื่อสร้าง AP สื่อสารกับอุปกรณ์ Android และแลกเปลี่ยนข้อมูลเครือข่ายที่สำคัญ:
- อุปกรณ์ Android ได้รับจากที่อยู่ MAC จาก FuncGen เก็บไว้ในหน่วยความจำ
- อุปกรณ์ FuncGen ได้รับจากอุปกรณ์ Android ที่เลือกพารามิเตอร์ WLAN: SSID ประเภทของความปลอดภัยและรหัสผ่าน และเก็บไว้ใน EEPROM
เมื่ออุปกรณ์เชื่อมต่อกับ WLAN เดียวกันจริง อุปกรณ์ Android จะค้นหา FuncGen โดยการสแกนที่อยู่ MAC ของอุปกรณ์ทั้งหมดที่เชื่อมต่อกับ WLAN เมื่ออุปกรณ์ Android กำหนดการจับคู่ MAC อุปกรณ์จะพยายามสื่อสาร
การเชื่อมต่อและการจัดการสถานะ - MCU
เมื่ออุปกรณ์สื่อสารกัน โปรโตคอล (ดูขั้นตอนก่อนสิ้นสุด) จะยังคงเหมือนเดิม และผังงานจะเหมือนเดิม
การตรวจสอบสถานะอุปกรณ์
เวลาขัดจังหวะให้รายละเอียดที่จำเป็นสำหรับ MCU สำหรับการจัดการสถานะ แต่ละรอบของการขัดจังหวะตัวจับเวลา รายการพารามิเตอร์ต่อไปนี้จะได้รับการอัปเดต:
- แหล่งจ่ายไฟภายนอก - เปิด/ปิด
- สถานะแรงดันแบตเตอรี่
- อัปเดต UI สำหรับการปรับแต่งแต่ละรายการ
- ปุ่มกด: กด/ไม่กด
ขั้นตอนที่ 9: การติดตั้งซอฟต์แวร์ - แอพ Android
แอพ Android เขียนในสไตล์ Java-Android ฉันจะพยายามอธิบายในลักษณะเดียวกับขั้นตอนก่อนหน้า - โดยแบ่งอัลกอริทึมออกเป็นบล็อกโค้ดแยกกัน
ลำดับการเพิ่มพลัง
ลำดับแรกของอุปกรณ์ โลโก้ของแอปนี้แสดงพร้อมกับการเปิดใช้งานโมดูล GPS และ WiFi ของอุปกรณ์ Android (อย่ากังวล ต้องใช้ GPS สำหรับการสแกนเครือข่ายที่เหมาะสมกับ WiFi เท่านั้น)
เมนูหลัก
หลังจากบูตแอปแล้ว ปุ่มสี่ปุ่มจะปรากฏขึ้นบนหน้าจอ การทำงานของปุ่ม:
- การเชื่อมต่อโดยตรง: กำลังเริ่มต้นการเชื่อมต่อกับ AP ของ FuncGen โดย SSID ของ IOT_FUNCGEN หากการเชื่อมต่อสำเร็จ อุปกรณ์จะเข้าสู่โหมด UI หลัก
- การเชื่อมต่อ WiFi: อุปกรณ์ตรวจสอบว่ามีพารามิเตอร์ข้อมูลที่เก็บไว้ในหน่วยความจำหรือไม่: wifi.txt, mac.txt หากไม่มีข้อมูลที่จัดเก็บไว้ อุปกรณ์จะปฏิเสธคำขอของผู้ใช้และแสดงข้อความป๊อปอัปว่าต้องทำการจับคู่ WLAN ก่อน
- การจับคู่: การสื่อสารกับ FuncGen ในลักษณะเดียวกับการเชื่อมต่อโดยตรง แต่แทนที่จะแลกเปลี่ยนข้อความอย่างต่อเนื่อง มีการจับมือเพียงครั้งเดียว อุปกรณ์ Android จะตรวจสอบว่าได้เชื่อมต่อกับเครือข่าย WiFi แล้วหรือไม่ และขอให้ผู้ใช้ป้อนรหัสผ่าน หากการเชื่อมต่อใหม่สำเร็จ อุปกรณ์ Android จะเก็บ SSID และรหัสผ่านไว้ในไฟล์ wifi.txt หลังจากสื่อสารกับ FuncGen ได้สำเร็จ จะเก็บที่อยู่ MAC ที่ได้รับไว้ในไฟล์ mac.txt
- ทางออก: พูดพอแล้ว:)
ตัวจัดการการสแกน WiFi
ฉันต้องการให้แอปพลิเคชันทำงานได้ทั้งหมดและไม่ต้องทำการปรับเปลี่ยนนอกแอป ดังนั้นฉันจึงได้ออกแบบเครื่องสแกน WiFi ซึ่งดำเนินการที่จำเป็นทั้งหมดเพื่อเชื่อมต่อกับเครือข่าย WiFi ด้วยรหัสผ่านที่รู้จักและ SSID
การส่งข้อมูลและการสื่อสาร TCP
นี่คือบล็อกรหัสหลักในแอป สำหรับหน่วย UI ทั้งหมดจะมีข้อความที่กำหนดไว้ในรูปแบบเฉพาะ (ขั้นตอนก่อนสิ้นสุด) ที่บังคับให้ FuncGen จัดเตรียมเอาต์พุตที่ต้องการสำหรับช่อง ฟิลด์ UI ในกิจกรรมมีสามประเภท:
-
Seek Bars: ที่นี่เรากำหนดช่วงจริงของพารามิเตอร์เอาต์พุต FuncGen
- แอมพลิจูด
- DC Offset
- ความสว่าง LCD
- ความคมชัด LCD
- การแก้ไขข้อความ: เพื่อคงค่าจำนวนเต็มที่กำหนดไว้อย่างดีและแม่นยำ การป้อนความถี่จะทำผ่านกล่องข้อความตัวเลขเท่านั้น
-
ปุ่ม: การเลือกพารามิเตอร์จากรายการที่มี:
-
รูปคลื่นประเภท
- ไซเน
- สามเหลี่ยม
- กระแสตรง
- สี่เหลี่ยม
- ปิด
-
รับข้อมูล
- สถานะแบตเตอรี่ (ร้อยละ)
- สถานะ AC (แหล่งจ่ายไฟภายนอก)
-
ตัวเลือกการบูต (สำหรับ FuncGen MCU)
- การตั้งค่าโรงงาน
- เริ่มต้นใหม่
- ปิดตัวลง
- โดยตรง - รีสตาร์ทด้วยโหมดจับคู่โดยตรง
- WLAN - รีสตาร์ทด้วยโหมดจับคู่ WLAN
- ออกไปยังเมนูหลัก: พอพูด:)
-
ขั้นตอนที่ 10: การทดสอบ
แนะนำ:
ติดตาม: ศูนย์สื่อขั้นสูงพร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): 3 ขั้นตอน
ติดตาม: Advanced Media Center พร้อม Odroid N2 และ Kodi (รองรับ 4k และ HEVC): บทความนี้เป็นบทความต่อจากบทความก่อนหน้าของฉันที่ประสบความสำเร็จค่อนข้างมากเกี่ยวกับการสร้างศูนย์สื่ออเนกประสงค์ โดยอ้างอิงจาก Raspberry PI ที่ได้รับความนิยมมากในตอนแรก แต่ ในภายหลัง เนื่องจากไม่มีเอาต์พุตที่สอดคล้องกับ HEVC, H.265 และ HDMI 2.2 จึงมีสวิตช์
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: 3 ขั้นตอน
DIY IBeacon และ Beacon Scanner ด้วย Raspberry Pi และ HM13: Story A beacon จะส่งสัญญาณอย่างต่อเนื่องเพื่อให้อุปกรณ์บลูทู ธ อื่น ๆ รู้ว่ามีอยู่ และฉันอยากได้บีคอนบลูทูธเพื่อติดตามกุญแจมาตลอด เพราะฉันลืมเอามันมาเหมือน 10 ครั้งในปีที่แล้ว และฉันก็เกิดขึ้น
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ