สารบัญ:

ตัวสร้างฟังก์ชันแบบพกพาบน WiFi และ Android: 10 ขั้นตอน
ตัวสร้างฟังก์ชันแบบพกพาบน WiFi และ Android: 10 ขั้นตอน

วีดีโอ: ตัวสร้างฟังก์ชันแบบพกพาบน WiFi และ Android: 10 ขั้นตอน

วีดีโอ: ตัวสร้างฟังก์ชันแบบพกพาบน WiFi และ Android: 10 ขั้นตอน
วีดีโอ: เพิ่มความเร็วมือถือ Android และ WiFi ง่ายๆ | Easy Android 2024, กรกฎาคม
Anonim
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android
เครื่องกำเนิดฟังก์ชันแบบพกพาบน WiFi และ Android

ใกล้ปลายศตวรรษที่ 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 และรายการวัสดุ

ชิ้นส่วน เครื่องมือ IDE และ Bill of Materials
ชิ้นส่วน เครื่องมือ IDE และ Bill of Materials
ชิ้นส่วน เครื่องมือ IDE และ Bill of Materials
ชิ้นส่วน เครื่องมือ IDE และ Bill of Materials
ชิ้นส่วน เครื่องมือ IDE และ Bill of Materials
ชิ้นส่วน เครื่องมือ IDE และ Bill of Materials

รายการวัสดุ (ดูตาราง 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 ที่เป็นส่วนหนึ่งของอุปกรณ์:

    1. D/A สำหรับการควบคุมแอมพลิจูด - Channel A
    2. D/A สำหรับการควบคุมแอมพลิจูด - Channel B
    3. อุปกรณ์ AD9834 - ช่อง A
    4. อุปกรณ์ AD9834 - ช่อง B
    5. D/A สำหรับการควบคุมแรงดันไบแอส - Channel A
    6. D/A สำหรับการควบคุมแรงดันไบแอส - Channel B
    7. โพเทนชิออมิเตอร์แบบดิจิตอลสำหรับการตั้งค่าความสว่าง/ความคมชัดของ LCD
  • รองรับ LCD - เนื่องจาก LCD เป็นจอแสดงผลทั่วไปขนาด 20 x 4 ตัว เราจึงใช้อินเทอร์เฟซ 4 บิต (เส้น D7:D4), พินควบคุม (เส้น RS, E) และการควบคุมความสว่าง/ความคมชัด (เส้น V0 และขั้วบวก)
  • รองรับ RGB LED - โมดูลนี้เป็นอุปกรณ์เสริม แต่มีขั้วต่อ RGB LED แบบแคโทดทั่วไปพร้อมตัวต้านทานที่เหมาะสม เชื่อมต่อกับ MCU
  • การควบคุมพลังงาน - MCU ดำเนินการตรวจสอบระบบไฟฟ้าในโหมดเรียลไทม์ และจัดการเหตุการณ์ด้านพลังงานที่จำเป็นทั้งหมด:

    1. VBAT_ADC - การตรวจสอบแรงดันแบตเตอรี่และกำหนดสถานะ (ช่อง ADC0)
    2. PWR_IND - การบ่งชี้การเชื่อมต่อแหล่งจ่ายไฟภายนอก (ช่อง ADC1)
    3. PS_HOLD - สายไฟเปิดใช้งานหลักสำหรับระบบที่กำหนดไว้ทั้งหมด เมื่อ MCU ดึงให้ต่ำ อุปกรณ์จะปิดลง
    4. ขั้วขัดจังหวะของสวิตช์อัจฉริยะ - การตรวจสอบสถานะปุ่มกด
  • การจัดการเครือข่าย 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
การออกแบบฮาร์ดแวร์ - โมดูล 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
เค้าโครง PCB
เค้าโครง PCB
เค้าโครง PCB
เค้าโครง PCB

เป้าหมายของการออกแบบ PCB

  1. สร้างระบบฝังตัวสำหรับวงจรรวมทั้งหมดบนบอร์ดเดียวกัน
  2. ปรับปรุงประสิทธิภาพของอุปกรณ์ด้วยการออกแบบ PCB หลักเพียงตัวเดียว
  3. การลดต้นทุน - หากคุณต้องการดูราคา การออกแบบต้นทุนต่ำคือต้นทุนที่ต่ำจริงๆ
  4. ลดขนาดบอร์ดอิเล็กทรอนิกส์ให้น้อยที่สุด
  5. แก้ไขปัญหาได้ง่าย - เราสามารถใช้ 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 และแนบรูรับแสงที่แตกต่างกันกับขอบเขตตามข้อกำหนดของอุปกรณ์ของฉัน

  1. อุปกรณ์การพิมพ์: Creality Ender-3
  2. ประเภทเตียง: กระจก หนา 5 มม.
  3. เส้นผ่านศูนย์กลางของเส้นใย: 1.75mm
  4. ประเภทเส้นใย: PLA+
  5. เส้นผ่าศูนย์กลางหัวฉีด: 0.4mm
  6. ความเร็วเริ่มต้น: 20 มม./วินาที
  7. ความเร็วเฉลี่ย: 65 มม./วินาที
  8. สนับสนุน: N/A
  9. เติม: 25%
  10. อุณหภูมิ:

    • เตียง: 60(oC)
    • หัวฉีด: 215(oC)
  11. เส้นใยสี: สีดำ
  12. จำนวนรูรับแสงทั้งหมด: 5
  13. จำนวนแผงตู้: 4

    • ท็อปเชลล์
    • เปลือกด้านล่าง
    • แผงด้านหน้า
    • แผงด้านหลัง

ขั้นตอนที่ 8: การติดตั้งซอฟต์แวร์ - MCU

การติดตั้งซอฟต์แวร์ - MCU
การติดตั้งซอฟต์แวร์ - MCU
การใช้งานซอฟต์แวร์ - MCU
การใช้งานซอฟต์แวร์ - MCU
การติดตั้งซอฟต์แวร์ - MCU
การติดตั้งซอฟต์แวร์ - 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
การใช้งานซอฟต์แวร์ - แอป Android
การใช้งานซอฟต์แวร์ - แอป Android
การใช้งานซอฟต์แวร์ - แอป Android
การใช้งานซอฟต์แวร์ - แอป Android
การใช้งานซอฟต์แวร์ - แอป Android
การใช้งานซอฟต์แวร์ - แอป Android
การใช้งานซอฟต์แวร์ - แอป Android

แอพ Android เขียนในสไตล์ Java-Android ฉันจะพยายามอธิบายในลักษณะเดียวกับขั้นตอนก่อนหน้า - โดยแบ่งอัลกอริทึมออกเป็นบล็อกโค้ดแยกกัน

ลำดับการเพิ่มพลัง

ลำดับแรกของอุปกรณ์ โลโก้ของแอปนี้แสดงพร้อมกับการเปิดใช้งานโมดูล GPS และ WiFi ของอุปกรณ์ Android (อย่ากังวล ต้องใช้ GPS สำหรับการสแกนเครือข่ายที่เหมาะสมกับ WiFi เท่านั้น)

เมนูหลัก

หลังจากบูตแอปแล้ว ปุ่มสี่ปุ่มจะปรากฏขึ้นบนหน้าจอ การทำงานของปุ่ม:

  1. การเชื่อมต่อโดยตรง: กำลังเริ่มต้นการเชื่อมต่อกับ AP ของ FuncGen โดย SSID ของ IOT_FUNCGEN หากการเชื่อมต่อสำเร็จ อุปกรณ์จะเข้าสู่โหมด UI หลัก
  2. การเชื่อมต่อ WiFi: อุปกรณ์ตรวจสอบว่ามีพารามิเตอร์ข้อมูลที่เก็บไว้ในหน่วยความจำหรือไม่: wifi.txt, mac.txt หากไม่มีข้อมูลที่จัดเก็บไว้ อุปกรณ์จะปฏิเสธคำขอของผู้ใช้และแสดงข้อความป๊อปอัปว่าต้องทำการจับคู่ WLAN ก่อน
  3. การจับคู่: การสื่อสารกับ FuncGen ในลักษณะเดียวกับการเชื่อมต่อโดยตรง แต่แทนที่จะแลกเปลี่ยนข้อความอย่างต่อเนื่อง มีการจับมือเพียงครั้งเดียว อุปกรณ์ Android จะตรวจสอบว่าได้เชื่อมต่อกับเครือข่าย WiFi แล้วหรือไม่ และขอให้ผู้ใช้ป้อนรหัสผ่าน หากการเชื่อมต่อใหม่สำเร็จ อุปกรณ์ Android จะเก็บ SSID และรหัสผ่านไว้ในไฟล์ wifi.txt หลังจากสื่อสารกับ FuncGen ได้สำเร็จ จะเก็บที่อยู่ MAC ที่ได้รับไว้ในไฟล์ mac.txt
  4. ทางออก: พูดพอแล้ว:)

ตัวจัดการการสแกน WiFi

ฉันต้องการให้แอปพลิเคชันทำงานได้ทั้งหมดและไม่ต้องทำการปรับเปลี่ยนนอกแอป ดังนั้นฉันจึงได้ออกแบบเครื่องสแกน WiFi ซึ่งดำเนินการที่จำเป็นทั้งหมดเพื่อเชื่อมต่อกับเครือข่าย WiFi ด้วยรหัสผ่านที่รู้จักและ SSID

การส่งข้อมูลและการสื่อสาร TCP

นี่คือบล็อกรหัสหลักในแอป สำหรับหน่วย UI ทั้งหมดจะมีข้อความที่กำหนดไว้ในรูปแบบเฉพาะ (ขั้นตอนก่อนสิ้นสุด) ที่บังคับให้ FuncGen จัดเตรียมเอาต์พุตที่ต้องการสำหรับช่อง ฟิลด์ UI ในกิจกรรมมีสามประเภท:

  1. Seek Bars: ที่นี่เรากำหนดช่วงจริงของพารามิเตอร์เอาต์พุต FuncGen

    1. แอมพลิจูด
    2. DC Offset
    3. ความสว่าง LCD
    4. ความคมชัด LCD
  2. การแก้ไขข้อความ: เพื่อคงค่าจำนวนเต็มที่กำหนดไว้อย่างดีและแม่นยำ การป้อนความถี่จะทำผ่านกล่องข้อความตัวเลขเท่านั้น
  3. ปุ่ม: การเลือกพารามิเตอร์จากรายการที่มี:

    1. รูปคลื่นประเภท

      1. ไซเน
      2. สามเหลี่ยม
      3. กระแสตรง
      4. สี่เหลี่ยม
      5. ปิด
    2. รับข้อมูล

      1. สถานะแบตเตอรี่ (ร้อยละ)
      2. สถานะ AC (แหล่งจ่ายไฟภายนอก)
    3. ตัวเลือกการบูต (สำหรับ FuncGen MCU)

      1. การตั้งค่าโรงงาน
      2. เริ่มต้นใหม่
      3. ปิดตัวลง
      4. โดยตรง - รีสตาร์ทด้วยโหมดจับคู่โดยตรง
      5. WLAN - รีสตาร์ทด้วยโหมดจับคู่ WLAN
    4. ออกไปยังเมนูหลัก: พอพูด:)

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

แนะนำ: