Indholdsfortegnelse:
- Trin 1: Blokdiagram - hardware
- Trin 2: Blokdiagram - netværk
- Trin 3: Dele, værktøjer, IDE og regning af materialer
- Trin 4: Hardware Design - Hovedkort
- Trin 5: Hardwaredesign - ESP32 -modul
- Trin 6: PCB -layout
- Trin 7: 3D -kabinet
- Trin 8: Softwareimplementering - MCU
- Trin 9: Softwareimplementering - Android App
- Trin 10: Test
Video: Bærbar funktionsgenerator på WiFi og Android: 10 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
I slutningen af det 20. århundrede dukkede forskellige teknologiske innovationer op, især inden for kommunikation; men ikke kun. For os, brugere, forbrugere og ingeniører kom frem til hurtig udvikling af elektroniske enheder, der kan gøre vores liv meget lettere: Smarte ure, smarte hjem, smartphones osv.
Da alt kan være "smart" i dag, har jeg besluttet at designe en super -nyttig enhed til at være en del af vigtigt elektronisk laboratorieudstyr - Portable Function Generator, der kan styres af Android OS -baseret smartphone via WiFi direkte eller WiFi Local Area Network (WLAN)).
Hvorfor skal vi bygge denne enhed?
Langt de fleste testudstyr er stort set dyre i dag. Og nogle gange er disse enheder ikke bærbare. Som en løsning til høje priser, mangel på bærbarhed og mangel på enhedsnetværksadgang giver enheden en dobbeltkanalsbølgeformgenerator, der faktisk er bærbar og har en ubegrænset adgang til netværket - enten internet eller lokal.
Og selvfølgelig skal enheden bygges på grund af entusiasme og følge DIY -principperne - Nogle gange er vi bare nødt til at gøre tingene selv for at føle os rigtige:)
Nøglefunktioner
Strømforsyning
- USB Type-A stik, til både strømforsyningssystemer og programmering
- Komplet Li -Ion batteristyringssystem - Opladning og stabile tilstande
- Smart Switch -implementering - der er ikke behov for strømafbryder
- Dobbelt strømforsyning: +3.3V og -3.3V til symmetrisk spændingsbølgeformgenerering
Bølgeformgenerering
- Implementering af DC -niveau ved udgangskaskaden - biasformet bølgeform mellem spændingsgrænserne
- DDS -baseret 4 -type bølgeformgenerering - Sinus, trekant, firkant og DC
- Op til 10MHz frekvensunderstøttelse
- Udgangsstrøm op til 80mA med maksimal strømtilgængelighed på 500mW
- Adskilte kanaler til bølgeformgenerering - opdelte AD9834 -baserede kredsløb
Meddelelse
- Implementering af ESP32 - Anvendelige WiFi -funktioner
- Komplet TCP/IP -understøttelse af generatorenhed og Android -smartphone
- Mulighed for at gemme brugerparametre for hver enhedscyklus
- Overvågning af staten - begge systemer er klar over hinanden: FuncGen (lad os kalde det sådan her fra nu af) og smartphone.
Brugergrænseflade
- 20 x 4 tegn LCD med enkel 4-bit datagrænseflade
- Android -applikation - fuldstændig brugerkontrol over FuncGen -enheden
- Buzzer kredsløb - lydfeedback til brugeren
Trin 1: Blokdiagram - hardware
Mikrocontroller -enhed - ATMEGA32L
Mikrocontroller er en programmerbar chip, der består af al computerfunktionalitet, der findes i en enkelt elektronisk chip. I vores tilfælde er det "hjernen" og en central komponent i systemet. Formålet med MCU er at styre alle de perifere systemer, håndtere kommunikation mellem disse systemer, kontrollere hardwaredrift og levere komplet support til brugergrænseflade og dets interaktion med en faktisk bruger. Dette projekt er baseret på ATMEGA32L MCU, der kan fungere på 3,3V og en frekvens på 8MHz.
Kommunikation SoC - ESP32
Denne SoC (System on Chip) giver komplet kommunikationssupport til FuncGen - Adgang til WiFi -funktioner inklusive direkte, lokal eller internetkommunikation. Formål med enheden er:
- Håndtering af dataoverførsel mellem Android -app og FuncGen -enhed
- Håndtering af kontrol-/datameddelelser
- Understøttelse af kontinuerlig TCP/IP Client-Server konfiguration
I vores projekt er SoC espressif ESP32, det er for populært til at udvide det endnu:)
Li-Ion batteristyringssystem
For at omdanne vores enhed til en bærbar, indeholder enheden designet Li-Ion batteriopladningskredsløb. Kredsløb er baseret på MC73831 IC, med kontrollerbar ladestrøm via justering af værdien af en enkelt programmeringsmodstand (Vi dækker dette emne i skematisk trin). Enhedens strømforsyningsindgang er USB Type-A-stik.
Smart switch kredsløb
Smart switch -enhedens strømstyringskredsløb giver komplet softwarekontrol over enhedens nedlukningssekvens og mangel på behov for ekstern vippekontakt til enhedens batterispændingsafbrydelse. Alle strømoperationer udføres ved at trykke på trykknap og MCU's software. I nogle tilfælde er der behov for at lukke systemet ned: Lav batterispænding, høj indgangsspænding, kommunikationsfejl og så videre. Smart switch er baseret på STM6601 smart switch IC, der er billig og meget venlig at lege med.
Hovedstrømforsyningsenhed
Denne enhed består af to batteridrevne strømforsyningskredsløb - +3,3V for alle digitale / analoge forsyningskredsløb og -3,3V for FunGen symmetrisk udgang i forhold til 0V potentiale (dvs. genereret bølgeform kan indstilles i [-3,3V: 3,3V] region.
- Hovedforsyningskredsløb er baseret på LP3875-3.3 LDO (lavt frafald) 1A lineær spændingsregulator.
- Sekundært forsyningskredsløb er baseret på LM2262MX IC, der udfører DC-DC negativ spændingskonvertering via kondensator-ladningspumpe-system, som IC er baseret på.
Waveform Generators System
Systemet blev designet med vægt på separate DDS (direkte digital syntese) integrerede kredsløb, der tillader fuldstændig bølgeformgenereringskontrol af MCU's SPI (serielt perifert interface). De kredsløb, der blev brugt i designet, er analoge enheder AD9834, der kan levere forskellige typer bølgeformer. De udfordringer, vi skal stå over for, mens vi arbejder med AD9834, er:
- Fixed waveform amplitude: Waveform amplitude styres af eksternt DAC -modul
- Ingen hensyntagen til offset DC -niveau: Implementering af summeringskredsløb med ønskede DC -offsetværdier
- Separate udgange til firkantbølge og trekant/sinusbølge: Implementering af højfrekvent koblingskredsløb, således at hver enkelt kanaludgang kan levere alle de ønskede bølgeformer: sinus, trekant, firkant og DC.
Liquid Crystal Display
LCD er en del af UI (brugergrænseflade), og formålet er at give brugeren mulighed for at forstå, hvad enheden gør i realtidstilstand. Det interagerer med brugeren i hver enhedstilstand.
Summer
Simpelt tonegeneratorkredsløb for yderligere feedback fra enhed til bruger.
Integreret ISP programmerer
Der er et vedvarende problem for enhver ingeniør, når det kommer til programmeringsprocessen: Der er altid det værste behov for at skille produktet ad for at omprogrammere det med en ny firmware. For at overvinde denne ulempe blev AVR ISP-programmør tilsluttet enheden indefra, mens USB-data og strømledninger er knyttet til enhedens USB Type-A-stik. I denne konfiguration skal vi bare tilslutte vores FuncGen via USB -kabel til enten programmering eller opladning!
Trin 2: Blokdiagram - netværk
Dual Channel Function Generator
Hovedapparat. Den, vi har gennemgået i det foregående trin
ESP-WROOM-32
Integreret System-on-Chip med WiFi og BLE-funktioner. SoC er knyttet til hovedkortet (vi dækker dette i skematisk trin) via UART -modul og fungerer som en meddelelsestransciever mellem hovedenhed og Android -smartphone.
WiFi lokalt netværk
Smartphone og enhed kommunikerer via WiFi direkte eller lokalnetværk baseret på TCP -server/klientkonfiguration. Når enheder genkender hinanden på WiFi, opretter hovedenheden TCP -server med passende parametre og kan sende/modtage meddelelser. Enheden fungerer som en sekundær til smartphonen. Android -enhed på den anden side opretter forbindelse til TCP -serveren som en klientnetværksenhed, men betragtes som den primære meddelelsessender - smartphonen er den, der starter en komplet kommunikationscyklus: Afsendelse af besked - modtagelse af svar.
Android smartphone
Android OS -baseret smartphone -enhed, der kører på FuncGen -applikation
Trin 3: Dele, værktøjer, IDE og regning af materialer
Materialebeskrivelse (se vedhæftede XLS -tabel)
UI og systemforbindelser
- 1 x 2004A Char-LCD 20x4 Blå
- 1 x USB Type B -stik
- 1 x 10 sæt Mini Micro JST XH 2.54mm 4 ben
- 1 x 6stk Momentary SW
PCB -bestilling (ifølge Seeed Studio)
Basismateriale FR-4
Antal lag 2 lag
PCB -mængde 10
Antal forskellige designs 1
PCB Tykkelse 1,6 mm
PCB farve blå
Overfladebehandling HASL
Minimum loddemaske 0,4 mm ↑
Kobbervægt 1 oz
Minimum borhulsstørrelse 0,3 mm
Sporbredde / afstand 6/6 mil
Belagte halvhuller / Castellerede huller nr
Impedans kontrol nr
Værktøjer
- Varm limpistol
- Pincet
- Skærer
- ~ 22AWG -ledning til håndteringsfejl
- Loddejern/station
- Loddeform
- SMD -omarbejdningsstation (valgfri)
- 3D -printer (valgfri)
- Ekstruderingsfil
- AVR ISP programmerer
- USB til seriel konverter (valgfri, til fejlfinding)
Integreret udviklingsmiljø (IDE) og software
- Autodesk EAGLE eller Cadence Schematic Editor / Allegro PCB Editor
- OpenSCAD (valgfrit)
- Ultimaker Cura (valgfri)
- Saleae Logic (til fejlfinding)
- Atmel Studio 6.3 eller nyere
- Android Studio eller Eclipse IDE
- Docklight seriel monitor / anden COM -port overvågningssoftware
- ProgISP til AVR ATMEGA32L flashprogrammering
Trin 4: Hardware Design - Hovedkort
Batteristyringskredsløb
Batteriopladningskredsløb er baseret på MCP7383 IC, der giver os mulighed for at vælge en ønsket ladestrøm til Li -Ion -batteri - 3,7V med en kapacitet på 850mAh. Ladestrøm indstilles ved programmering af modstandsværdi (R1) i vores tilfælde
R1 = 3KOhm, I (opladning) = 400mA
USB-spænding VBUS filtreres af π-filter (C1, L3, C3) og fungerer som en strømkilde til opladningskredsløb.
Spændingsdelerkredsløb (R2, R3) giver MCU mulighed for at angive, om ekstern USB -strømforsyning er tilsluttet eller ej, ved at levere følgende spænding til MCU A/D -kanal:
V (indikation) ~ (2/3) V (BUS)
Da vores A/D for ATMEGA32L er 12-bit, kan vi beregne det digitale område:
A / D (område) = 4095V (indikation) / V (REF).
A/D ∈ [14AH: FFFH]
Smart Switch Power Unit
Kredsløb giver systemet mulighed for at styre strømforsyningen til hver designet blok både fra trykknap og software på MCU og er baseret på STM6601 Smart-Switch med POWER-option i stedet for RESET. Terminalerne, som vi vil overveje, er disse:
- PSHOLD - Indgangslinje, der definerer enhedens tilstand: hvis den trækkes LAVT, deaktiverer enheden alle de sekundære strømforsyningsenheder (+3.3V og -3.3V). Hvis den holdes HØJ - holder enheden TIL.
- nSR og nPB - Indgangslinjer. Trykknapper. Når der registreres faldende kant på disse stifter, forsøger enheden at gå til strøm op / ned -tilstand
- nINT - Udgangslinje. Trækkes LAVT hver gang, når der trykkes på knappen
- DA - Udgangslinje, bruges som strømaktivering for de sekundære strømforsyningsenheder. Mens den holdes LAV, er begge sekundære strømforsyninger deaktiveret
Der er nogle vigtige noter, før vi går videre til det endelige design:
- PSHOLD bør trækkes op til 3,3V, fordi der er tilfælde, hvor MCU'er tvinger alle I/Os til at være i HIGH-Z-tilstand. I dette tilfælde er tilstanden af PSHOLD fra MCU ukendt og kan dramatisk påvirke enhedens programmeringsproces.
- STM6601 skal bestilles med en EN -justeringsmulighed ved langt tryk, i stedet for NULSTILLING (jeg er faldet i den).
Strømforsyningsenhed: +3,3V
Hovedstrømforsyning til alle systemerne i vores projekt. Når +3.3V -linjen holdes på GND -niveau (dvs. ingen spænding præsenteres), deaktiveres alle IC undtagen smart switch. Kredsløbet er baseret på LDO LP-3875-3.3 IC, med mulighed for at blive styret via EN-terminal og levere strøm op til 1A.
Strømkilden til dette kredsløb er batterispændingen, med vedhæftet A/D -indikator til registrering af VBAT i konfiguration, svarende til VBUS -detekteringskredsløb. I dette tilfælde er beregningerne lidt forskellige;
V (batteri-til-A/D) = 0,59V (batteri); A/D (område) ∈ [000H: C03H]
Strømforsyningsenhed: -3,3V
Negativ spændingskredsløb giver os mulighed for at generere symmetriske bølgeformer med en DC -faktor på 0V (dvs. bølgeformens gennemsnitlige værdi kan være 0V). Dette kredsløb er baseret på LM2662MX IC - DC/DC -omformer, der fungerer på en "ladningspumpe" -metode. Maksimal udgangsstrøm for kredsløbet er 200mA, hvilket er tilstrækkeligt til vores designkrav - vi er begrænset med 80mA udgangsstrøm fra hver enheds kanal.
IC udfører alt det nødvendige arbejde, så kun dele, vi skal vedhæfte, er to elektrolytiske kondensatorer: C33 til omskiftning og C34 til -3.3V linje -bypass (hensyn til støjreduktion). Skiftfrekvensen er ubetydelig i designet, hvis vi placerer kredsløbet langt nok fra bølgeformgenerationsdele (vi diskuterer det på PCB Layout -trin).
Mikrokontrolenhed - MCU
Dette er lederen og administrerende direktør for vores system - kontrol, netværkshåndtering, meddelelsestransmission og UI -support - alt sker ved MCU.
Den valgte MCU er Atmel ATMEGA32L, hvor L står for understøttet spændingsdrift ∈ [2.7V: 5.5V]. I vores tilfælde er driftsspændingen +3,3V.
Lad os overveje de vigtigste betjeningsblokke, der er nødvendige for at forstå, at arbejde med MCU i vores design:
- Ekstern oscillator - Er en valgfri komponent, da vi er interesseret i 8MHz driftsfrekvens
-
Perifer kontrol, SPI -netværk - Alle perifere enheder (undtagen ESP32) kommunikerer med MCU via SPI. Der er tre delte linjer til alle enheder (SCK, MOSI, MISO), og hvert perifert kredsløb har sin dedikerede CS (Chip Select) linje. SPI -enhederne, der er en del af enheden:
- D/A til amplitudekontrol - Kanal A
- D/A til amplitudekontrol - Kanal B
- AD9834 -enhed - Kanal A
- AD9834 -enhed - Kanal B
- D/A til forspændingsstyring - Kanal A
- D/A til forspændingsregulering - Kanal B
- Digitalt potentiometer til LCD -lysstyrke/kontrastindstillinger
- LCD -understøttelse - Da LCD er et generisk display på 20 x 4 tegn, bruger vi 4 -bit grænseflade (Linier D7: D4), kontrolstifter (Linjer RS, E) og lysstyrke/kontraststyring (Linier V0 og Anode)
- RGB LED -understøttelse - Dette modul er valgfrit, men der er fælles katode RGB LED -stik med passende modstande, forbundet til MCU.
-
Power Control - MCU udfører overvågning af elsystemet i realtidstilstand og håndterer alle de nødvendige strømhændelser:
- VBAT_ADC - Overvågning af batterispænding og bestemmelse af dens tilstand (ADC0 -kanal)
- PWR_IND - Angivelse af ekstern strømforsyningsforbindelse (ADC1 -kanal)
- PS_HOLD - Primær strømforsyningslinje til alle de definerede systemer. Når MCU'en trækkes lavt, slukkes enheden
- Afbryd terminal til smart switch - Overvågning af trykknapstilstand
- WiFi Network Management - ESP32: MCU kommunikerer med ESP32 via UART -interface. Da 8MHz giver os mulighed for at implementere baudhastighed på 115200 med en relativt lille fejl, kan vi bruge ESP32 i kredsløbet uden foruddefinitioner af ændringer i baudhastighed.
AVR ISP programmerer
Vores MCU er programmeret via SPI med nulstillingslinje (/RST) skal trækkes HØJ for en korrekt drift (hvis ikke - MCU vil befinde sig i en nulstillingstilstand for evigt).
For at tillade, at enheden både kan programmeres og oplades via USB, har jeg tilsluttet AVR ISP-programmer (lille produkt, købt fra eBay). For at opretholde enhedens komplette USB-understøttelse er der behov for at binde USB Type-A (D+, D-, VBUS og GND) terminaler med AVR ISP-enhed.
Waveform Generation Circuit
Kernen i enheden er disse kredsløb. AD9834 er en DDS-enhed med lav effekt, der giver os alle de bølgeformer, vi gerne vil hente fra systemet. Kredsløb indeholder to uafhængige AD9834 IC'er med adskilte eksterne 50MHz oscillatorer (som det kan ses i skemaerne). Årsagen til adskilt oscillator er overvejelser om støjreduktion i digitale kredsløb, så beslutningen var at håndtere korrekte 50MHz -linjer med oscillatorer placeret ved siden af AD9834.
Lad os nu se på noget matematik:
Da DDS-enheden fungerer på fasehjulsteknologi med outputværdi i et 28-bit register, kan vi beskrive bølgeformgenerering matematisk:
dP (fase) = ωdt; ω = P '= 2πf; f (AD9834) = AP * f (clk) / 2^28; ΔP ∈ [0: 2^28 - 1]
Og ifølge AD9834 datablad, under hensyntagen til maksimal frekvens, kan outputfrekvensopløsning opnås:
Δf = k * f (oscillator) / f (maksimum) = 0,28 * 50M / 28M = 0,187 [Hz]
AD9834 IC'er giver en analog strømudgang til trekant/sinusbølge (IOUT -terminal) og digital udgang til firkantbølge (SIGN_OUT -terminal). Brugen af tegnbit er lidt vanskelig, men vi er i stand til at håndtere det - Hver gang DDS passerer tærsklen for sammenligningsværdi, opfører SIGN_OUT sig derefter. En 200Ohm modstand er knyttet til hver kanals output, så udgangsspændingen ville have en meningsfuld værdi:
I (enkelt kanal) = V (output) / R (valg af spænding); V (output) = R (VS)*I (SS) = 200I (SS) [A]
Amplitude Control (D/A) kredsløb
Ifølge databladet til AD9834 kan dens amplitude justeres ved at levere strøm til DDS -fuldskala -systemet, så ved hjælp af dobbelt D/A IC kan vi styre udgangssignalets amplitude ved at justere denne strøm. Endnu en gang matematik:
I (fuld skala) = 18 * (V_REF - V_DAC) / R_SET [A]
Ifølge skemaer og sætning af nogle tal til ligning:
I (fuld skala) = 3,86 - 1,17 * V_DAC [A]
D/A-modul, der bruges i designet, er 12-bit MCP4922, når strømmen er i området [0mA: 3,86mA] og lineær amplitudefunktion er:
V (amplitudevalg) = 1 - [V (D / A) / (2^12 - 1)]
Waveform Multiplexing Circuit
Kvadratbølge- og sinus/trekantbølgegenerationsudgange adskilles ved AD9834, derfor er vi nødt til at bruge et højhastighedsmultiplexeringskredsløb til begge udgange for at tillade at hente alle ønskede bølgeformer fra en enkelt adskilt kanal. Multiplexeren IC er en analog ADG836L-switch med en meget lav modstand (~ 0,5Ohm).
Udvælgelsestabellen, som MCU bruger til output, som den er:
Tilstandsvalg [D2: D1] | Outputkanal A | Output kanal B
00 | Sinus/Trekant | Sinus/Trekant 01 | Sinus/Trekant | Firkant 10 | Firkant | Sinus/Trekant 11 | Firkant | Firkant
Bias Voltage Control (D/A) kredsløb
En af bølgeformgeneratorens hovedtræk er at styre dens DC -værdi. I dette design gøres det ved at indstille den ønskede D/A -spænding pr. Kanal, og disse bias -spændinger summeres med multipleksede udgange, som vi har diskuteret lidt tidligere.
Spænding hentet fra D/A ligger i området [0V: +3.3V], så der er et op-amp-baseret kredsløb, der kortlægger D/A-området til [-3.3V: +3.3V], så enheden kan levere hele området af ønsket DC -komponent. Vi springer den irriterende analytiske matematik over og fokuserer bare på de endelige resultater:
V_OUT (kanal B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (kanal A) = V_BIAS_A (+) - V_BIAS_A (-)
Nu er DC-komponentområdet placeret i området [-3.3V: +3.3V].
Summing Circuits - DC -komponenter og bølgeformoutgange
På dette tidspunkt har vi alt, hvad vi har brug for til den korrekte enhedsudgang - Bias Voltage (DC -komponent) i hele spændingsområdet og multipleksede AD9834 -udgange. Vi får det til at ske ved at bruge summeringsforstærkeren - op -amp -konfiguration
Lad os springe matematik over igen (vi har allerede dækket en masse matematisk tilgang) og nedskrive det endelige resultat af summeringsforstærkerens output:
V (enhedsoutput) = V (positiv bias) - V (negativ bias) - V (multiplexet output) [V]
Derfor:
V_OUT = ΔV_BIAS - V_AD9834 [V]
Udgangsstik af BNC -type er forbundet med et udvalg af modstande (R54, R55; R56, R57). Årsagen til det er, at i tilfælde af at designet kan være dysfunktionelt, kan vi stadig vælge, om vi gerne vil bruge summeringsforstærker.
Vigtig note: Modstandsnettene i de endelige summeringsforstærkere kan justeres af en designer for at ændre den maksimale amplitude, der kan hentes fra enheden. I mit tilfælde deler alle forstærkere den samme forstærkning = 1, og derfor er den maksimale bufrede amplitude 0,7Vpp for trekant/sinusbølge og 3,3Vpp for firkantbølge. Den specifikke matematiske tilgang kan findes blandt trinets vedhæftede billeder.
ESP32 som eksternt modul
MCU kommunikerer med ESP32 via UART -interface. Da jeg ønskede mit eget printkort til ESP32, er der 4 terminaler til rådighed for tilslutning: VCC, RX, TX, GND. J7 er et interfacestik mellem printkort, og ESP32 tildeles som eksternt modul inde i enheden.
Brugergrænseflade - LCD og højttaler
LCD, der blev brugt, er et generisk display på 20 x 4 tegn med en 4 -bit grænseflade. Som det kan ses fra designet er der et SPI digitalt potentiometer fastgjort til LCD -terminaler "A" og "V0" - formålet er at justere lysstyrke og kontrast på LCD -modulet programmatisk.
Højttaleren giver lydudgang til brugeren ved simpel kvadratbølgegenerering fra MCU'en. BJT T1 styrer strømmen gennem højttaleren, der kun kan være i to tilstande - ON / OFF.
Trin 5: Hardwaredesign - ESP32 -modul
ESP32 bruges som et eksternt modul til hovedkortet. Enhedskommunikation er baseret på AT -kommandoer, der er tilgængelige på en generisk enheds firmware.
Der er ikke meget at udvide på dette design, men der er nogle noter til design:
- For fejlbehandling ved brug af det korrekte UART -modul i ESP32 har jeg vedhæftet tre selektionsmodstande til både TX- og RX -linjer. (0Ohm for hver). Til standardkonfiguration bruges UART2 -modulet til AT -kommandoer (R4, R7 skal loddes)
- Enheden har 4 -line output - VCC, GND, TX, RX.
- IO0- og EN -stifter evaluerer enhedsdrift og bør udformes, som det er angivet i skemaerne
Alle PCB -funktioner dækker vi i det følgende trin.
Trin 6: PCB -layout
Målene med at designe et printkort
- Opret indlejret system til alle de integrerede kredsløb på det samme kort
- Forbedre enhedens ydeevne ved at designe et enkelt hovedkort
- Omkostningsreduktion - hvis du gerne vil slå priserne op, er billige designs VIRKELIG lave omkostninger
- Minimer den elektroniske tavlestørrelse
- Let at foretage fejlfinding - Vi kan bruge TP'er (testpunkter) til hver mulig fejlfunktionslinje.
Tekniske parametre
Begge printkort: hoved- og ESP32 -kort har de samme egenskaber for fremstillingsprocessen - lave omkostninger og kan bruges til vores formål. Lad os se dem:
A - Hovedbestyrelse
- Størrelse: 10 cm x 5,8 cm
- Antal lag: 2
- PCB tykkelse: 1,6 mm
- Minimum sporplads/bredde: 6/6mil
- Minimum via huldiameter: 0,3 mm
- Kobber til kanten af PCB minimumsafstand: 20mil
- Overfladebehandling: HASL (Temmelig flot sølvfarvet billig type)
B - Hovedbestyrelse
- Størrelse: 3 cm x 4 cm
- Antal lag: 2
- PCB tykkelse: 1,6 mm
- Minimum sporplads/bredde: 6/6mil
- Minimum via huldiameter: 0,3 mm
- Kobber til kanten af PCB minimumsafstand: 20mil
- Overfladebehandling: HASL
Trin 7: 3D -kabinet
Jeg designede det ikke selv, for på det tidspunkt overtalte jeg denne enhed til at fungere, så jeg var slet ikke klar over alt det grundlæggende i 3D -udskrivning. Således har jeg brugt et SCAD -projekt fra Thingiverse og knyttet forskellige åbninger til grænserne i henhold til min enheds specifikationer.
- Udskrivningsenhed: Creality Ender-3
- Sengetype: Glas, 5 mm tykkelse
- Filament Diameter: 1,75 mm
- Filamenttype: PLA+
- Dysediameter: 0,4 mm
- Indledende hastighed: 20 mm/sek
- Gennemsnitshastighed: 65 mm/sek
- Support: Ikke relevant
- Udfyldning: 25%
-
Temperatur:
- Seng: 60 (oC)
- Dyse: 215 (oC)
- Filament Farve: Sort
- Samlet antal åbninger: 5
-
Antal kabinetter: 4
- TOP Shell
- Bundskal
- Frontpanel
- Bagpanel
Trin 8: Softwareimplementering - MCU
GitHub Link til Android og Atmega32 Code
Software algoritme
Alle de operationer, der udføres af MCU, er beskrevet i vedlagte rutediagrammer. Derudover er der en vedhæftet kode til projektet. Lad os dække softwarespecifikationer:
Opstart
På dette stadium udfører MCU alle initialiseringssekvenserne sammen med bestemmelse af lagret kommunikationstype med Android -enhed: Direkte WiFi eller WLAN -netværkskommunikation - disse data gemmes i EEPROM. Brugeren kan omdefinere parringstypen for Android -enheder på dette tidspunkt.
Direkte parring af Android -enheder
Denne type parring er baseret på oprettelse af WiFi -netværk af FuncGen -enheden. Det vil oprette AP (adgangspunkt) og en TCP -server på en lokal enheds IP med et specifikt SSID (WiFi -netværksnavn) og et specifikt portnummer. Enheden skal holde tilstanden - åben for forbindelser.
Når Android -enheden er forbundet til FuncGen, går MCU i AKTIV tilstand og reagerer i henhold til brugerinstruktioner fra Android -enheden.
WLAN Parring
For at kommunikere på et lokalt WiFi -netværk skal MCU levere kommandoer til ESP32 til at oprette AP, kommunikere med Android -enhed og udveksle de afgørende netværksdata:
- Android -enhed modtager fra FuncGen sin MAC -adresse, gemmer den i hukommelsen.
- FuncGen -enhed modtager fra Android -enhed udvalgte WLAN -parametre: SSID, type sikkerhed og adgangskode og gemmer den i EEPROM.
Når enheder faktisk er forbundet til det samme WLAN, vil Android -enhed søge efter FuncGen ved at scanne alle MAC -adresser på enheder, der er forbundet til WLAN. Når Android -enhed bestemmer MAC -match, forsøger den at kommunikere.
Forbindelse og statshåndtering - MCU
Når enheder kommunikerer med hinanden, forbliver protokollen (Se det sidste trin) den samme, og rutediagrammet er det samme.
Overvågning af enhedstilstand
Tidsbestemt afbrydelse giver MCU nødvendige detaljer til statshåndtering. Hver cyklus af timerafbrydelser opdateres følgende liste over parametre:
- Ekstern strømforsyning - Til/Fra
- Batterispændingstilstand
- UI -opdatering for hver tilpasning
- Trykknap: Tryk på/ikke trykket
Trin 9: Softwareimplementering - Android App
Android-appen er skrevet i Java-Android-stil. Jeg vil forsøge at forklare det på samme måde som de foregående trin - ved at opdele algoritmen i separate kodeblokke.
Opstartssekvens
Første sekvens af enheden. Her præsenteres app -logoet sammen med aktivering af GPS- og WiFi -moduler på Android -enheden (Bare rolig, GPS'en er kun nødvendig til Wi -Fi -korrekte netværksscanning).
Hovedmenu
Når appen er startet, vises fire knapper på skærmen. Knapper handling:
- DIRECT CONNECTION: Initialiserer forbindelse til FuncGens AP med SSID'et for IOT_FUNCGEN. Hvis forbindelsen lykkes, går enheden i hoved -UI -tilstand.
- WIFI -TILSLUTNING: Enheden kontrollerer, om der er gemte dataparametre i hukommelsen: wifi.txt, mac.txt. Hvis der ikke er gemt data, vil enheden afvise brugeranmodning og give en pop op-meddelelse om, at WLAN-parring først skal udføres.
- PARRING: Kommunikation med FuncGen på samme måde som DIRECT CONNECTION, men i stedet for kontinuerlig meddelelsesudveksling er der et enkelt håndtryk. Android -enhed kontrollerer, om den allerede er forbundet til WiFi -netværket, og beder brugeren om at indtaste adgangskode. Hvis genforbindelsen lykkes, gemmer Android -enheden SSID og adgangsnøgle i filen wifi.txt. Efter vellykket kommunikation med FuncGen gemmer den modtaget MAC -adresse i mac.txt -filen.
- Exit: Nok sagt:)
WiFi Scanning Manager
Jeg ville have, at applikationen skulle være operationel og uden justeringer uden for appen. Så jeg har designet WiFi Scanner, der udfører alle de nødvendige operationer for at oprette forbindelse til WiFi -netværket med en kendt adgangsnøgle og SSID.
Dataoverførsel og TCP -kommunikation
Dette er den vigtigste kodeblok i appen. For alle UI-enhederne er der en defineret meddelelse i et specifikt format (præ-sidste trin), der tvinger FuncGen til at levere ønsket output til kanalerne. Der er tre typer UI -felter i aktivitet:
-
Søg søjler: Her definerer vi et realt område af FuncGen-udgangsparametre
- Amplitude
- DC -forskydning
- LCD -lysstyrke
- LCD kontrast
- Tekstredigering: For at holde heltalsværdier veldefinerede og præcise udføres frekvensindtastning kun via talfelter
-
Knapper: Valg af parametre fra de tilgængelige lister:
-
Bølgeformstype
- Sinus
- Trekant
- DC
- Firkant
- AF
-
Få information
- Batteristatus (procent)
- AC -status (ekstern strømforsyning)
-
Boot Option (til FuncGen MCU)
- Fabriksindstilling
- Genstart
- Lukke ned
- Direkte - Genstart med direkte parringstilstand
- WLAN - Genstart med WLAN -parringstilstand
- Afslut til hovedmenu: Nok sagt:)
-
Trin 10: Test
Anbefalede:
Lær "Professionel ILC8038 funktionsgenerator DIY Kit" at kende: 5 trin
Lær "det professionelle ILC8038 -funktionsgenerator -DIY -sæt" at kende: Jeg var ved at kaste mig ud i nogle nye elektronikprojekter, da jeg stødte på et sødt lille funktionsgeneratorsæt. Det faktureres som "Professionel ILC8038 funktionsgenerator Sine Triangle Square Wave DIY Kit" og fås hos en række leverandører
Funktionsgenerator: 12 trin (med billeder)
Funktionsgenerator: Denne instruktør beskriver designet af funktionsgenerator baseret på Maxims analoge integrerede kredsløb MAX038. Funktionsgeneratoren er et meget nyttigt værktøj til elektronikfreaks. Det er nødvendigt for at indstille resonanskredsløb, teste aud
DIY -funktionsgenerator med STC MCU let: 7 trin (med billeder)
DIY -funktionsgenerator med STC MCU let: Dette er en funktionsgenerator lavet med STC MCU. Har kun brug for flere komponenter, og kredsløbet er enkelt. Specifikation Output: Single Channel Square Waveform Frequency: 1Hz ~ 2MHz Sine Waveform Frequency: 1Hz ~ 10kHz Amplitude: VCC, about 5V Load abili
Enkel funktionsgenerator: 5 trin
Simple Function Generator: I min sidste instruerbare viste jeg dig, hvordan du bygger pwm -signalgenerator, og jeg brugte den til at filtrere nogle andre bølgeformer fra den. I denne instruktive vil jeg vise dig, hvordan du laver en enkel funktions-/frekvensgenerator, hvordan du driver relæ med det, og hvordan b
Bærbar funktionsgenerator på Arduino: 7 trin (med billeder)
Bærbar funktionsgenerator på Arduino: Funktionsgenerator er et meget nyttigt værktøj, især når vi overvejer at teste vores kredsløbs reaktion på et bestemt signal. I denne instruktive vil jeg beskrive byggesekvensen af en lille, brugervenlig, bærbar funktionsgenerator. Funktioner af