INHOUDSOPGAWE:
- Stap 1: Blokdiagram - hardeware
- Stap 2: Blokdiagram - Netwerk
- Stap 3: Onderdele, gereedskap, IDE en materiaalbrief
- Stap 4: Hardeware -ontwerp - Hoofbord
- Stap 5: Hardeware -ontwerp - ESP32 -module
- Stap 6: PCB -uitleg
- Stap 7: 3D -omhulsel
- Stap 8: sagteware -implementering - MCU
- Stap 9: sagteware -implementering - Android -app
- Stap 10: Toets
Video: Draagbare funksieopwekker op WiFi en Android: 10 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
Teen die einde van die 20ste eeu het verskeie tegnologiese innovasies opgeduik, veral op die gebied van kommunikasie; maar nie net nie. Vir ons, gebruikers, verbruikers en ingenieurs het die vinnige ontwikkeling van elektroniese toestelle aan die lig gekom, wat ons lewens baie makliker kan maak: slimhorlosies, slimhuise, slimfone, ens.
Aangesien alles deesdae 'slim' kan wees, het ek besluit om 'n supernuttige toestel te ontwerp wat deel uitmaak van noodsaaklike elektroniese laboratoriumtoerusting - draagbare funksie -generator, beheerbaar deur 'n Android -bedryfstelsel gebaseerde slimfoon via WiFi Direct of WiFi Local Area Network (WLAN)).
Waarom moet ons hierdie toestel bou?
'N Groot meerderheid toetsapparatuur is deesdae redelik duur. En soms is hierdie toestelle nie draagbaar nie. As 'n oplossing vir hoë pryse, 'n gebrek aan draagbaarheid en 'n gebrek aan toesteltoegang, bied die toestel 'n tweekanaals golfvormgenerator, wat inderdaad draagbaar is en 'n onbeperkte toegang tot die netwerk het - internet of lokaal.
En natuurlik moet die toestel gebou word as gevolg van entoesiasme en die DIY -beginsels gehoorsaam - Soms moet ons dinge self doen om reg te voel:)
Belangrike kenmerke
Kragtoevoer
- USB Type-A-aansluiting, vir beide kragtoevoerstelsels en programmering
- Volledige Li -Ion -batterybestuurstelsel - laai en stabiele modusse
- Smart Switch -implementering - u hoef nie die skakelaar te skakel nie
- Dubbele kragtoevoer: +3.3V en -3.3V vir simmetriese spanningvormvorming
Golfvorm -generasie
- Implementering van GS -vlak by die uitgangskaskade - bevooroordeelde golfvorm tussen die spanningsgrense
- DDS -gebaseerde 4 -tipe golfvormgenerering - Sinus, driehoek, vierkant en DC
- Tot 10MHz frekwensieondersteuning
- Uitsetstroom tot 80mA met 'n maksimum van 500 mW
- Afsonderlike kanale vir golfvormgenerering - gesplete stroombane gebaseer op AD9834
Kommunikasie
- Implementering van ESP32 - Toepaslike WiFi -moontlikhede
- Volledige TCP/IP -ondersteuning deur kragopwekker en Android -slimfoon
- Die vermoë om gebruikersparameters vir elke toestelsiklus te stoor
- Staatsmonitering - albei stelsels is bewus van mekaar: FuncGen (kom ons noem dit voortaan so) en slimfoon.
Gebruikerskoppelvlak
- 20 x 4 karakter LCD met 'n eenvoudige 4-bis data-koppelvlak
- Android -toepassing - volledige gebruikersbeheer oor die FuncGen -toestel
- Gonserikring - goeie terugvoer aan die gebruiker
Stap 1: Blokdiagram - hardeware
Mikrobeheerder -eenheid - ATMEGA32L
Microcontroller is 'n programmeerbare chip wat bestaan uit al die rekenaarfunksies wat in 'n enkele elektroniese chip bestaan. In ons geval is dit die 'brein' en 'n sentrale komponent van die stelsel. Die doel van die MCU is om al die perifere stelsels te bestuur, kommunikasie tussen hierdie stelsels te hanteer, hardeware -werking te beheer en volledige ondersteuning te bied vir die gebruikerskoppelvlak en die interaksie daarvan met die werklike gebruiker. Hierdie projek is gebaseer op ATMEGA32L MCU, wat kan werk op 3.3V en 'n frekwensie van 8MHz.
Kommunikasie SoC - ESP32
Hierdie SoC (System on Chip) bied volledige kommunikasie -ondersteuning vir FuncGen - Toegang tot WiFi -moontlikhede, insluitend direkte, plaaslike of internetkommunikasie. Die doel van die toestel is:
- Hantering van data -oordrag tussen Android -app en FuncGen -toestel
- Bestuur van beheer-/databoodskappe
- Ondersteuning van deurlopende TCP/IP Client-Server-konfigurasie
In ons projek is die SoC espressif ESP32, wat te gewild is om nog verder daaroor uit te brei:)
Li-Ion battery bestuurstelsel
Om ons toestel in 'n draagbare toestel te omskep, bevat die toestel 'n ontwerpte Li-Ion-laai-stroombaan. Kring is gebaseer op MC73831 IC, met beheerbare laadstroom deur die waarde van 'n enkele programmeringsweerstand aan te pas (ons behandel hierdie onderwerp in skematiese stap). Die ingang van die toestel se kragbron is 'n USB-tipe A-aansluiting.
Slim skakelaarkring
Die kragbeheerbaan van die slimskakelaar bied volledige sagtewarebeheer oor die afskakelvolgorde van die toestel en die behoefte aan 'n eksterne skakelaar vir die afskakeling van die batteryspanning van die toestel. Al die kragbedrywighede word uitgevoer deur op die drukknop en die sagteware van die MCU te druk. In sommige gevalle moet die stelsel gesluit word: Lae batteryspanning, hoë insetspanning, kommunikasiefout ensovoorts. Smart switch is gebaseer op STM6601 smart switch IC, dit is goedkoop en baie vriendelik om mee te speel.
Hoof kragtoevoer eenheid
Hierdie eenheid bestaan uit twee battery -aangedrewe kragtoevoer kringe - +3.3V vir alle digitale / analoog toevoerkringe en -3.3V vir FunGen simmetriese uitset relatief tot 0V potensiaal (dws gegenereerde golfvorm kan ingestel word in [-3.3V: 3.3V] streek.
- Hoofvoedingskring is gebaseer op LP3875-3.3 LDO (lae uitval) 1A lineêre spanningsreguleerder.
- Sekondêre toevoerkring is gebaseer op LM2262MX IC, wat DC-DC negatiewe spanning omskakeling uitvoer via kapasitor-ladingpomp-stelsel waarop IC gebaseer is.
Golfvormopwekkersstelsel
Die stelsel is ontwerp met die klem op aparte DDS (direkte digitale sintese) geïntegreerde stroombane, wat volledige beheer van die golfvorm moontlik maak deur die SPI van MCU (seriële perifere koppelvlak). Die stroombane wat in die ontwerp gebruik is, is Analog Devices AD9834 wat verskillende soorte golfvorms kan verskaf. Die uitdagings wat ons die hoof moet bied terwyl ons met AD9834 werk, is:
- Vaste golfvormamplitude: Golfvormamplitude word beheer deur 'n eksterne DAC -module
- Geen inagneming van verrekenings -gelykheidsvlak nie: implementering van somstroombane met die gewenste gelykstroomverskynselwaardes
- Afsonderlike uitsette vir vierkantgolf en driehoek/sinusgolf: Implementering van hoëfrekwensie -skakelkring, sodat elke enkele uitset van elke kanaal al die gewenste golfvorms kan verskaf: sinus, driehoek, vierkant en DC.
Liquid Crystal Display
LCD is 'n deel van die UI (gebruikerskoppelvlak), en die doel daarvan is om die gebruiker in staat te stel om te verstaan wat die toestel in reële tyd doen. Dit werk in elke toesteltoestand met die gebruiker.
Gonser
Eenvoudige toongeneratorbaan vir ekstra terugvoer van toestel tot gebruiker.
Geïntegreerde ISP programmeerder
Daar is 'n voortdurende probleem vir elke ingenieur wat die programmeringsproses betref: daar is altyd die grootste behoefte om die produk uitmekaar te haal om dit met 'n nuwe firmware te herprogrammeer. Om hierdie ongerief te oorkom, is die AVR ISP-programmeerder van binne aan die toestel gekoppel, terwyl USB-data en kraglyne aan die USB-tipe A-aansluiting van die toestel gekoppel is. In hierdie opset hoef ons net ons FuncGen via 'n USB -kabel aan te sluit om te programmeer of te laai!
Stap 2: Blokdiagram - Netwerk
Dubbele kanaal funksie kragopwekker
Hoofapparaat. Die een wat ons in die vorige stap hersien het
ESP-WROOM-32
Geïntegreerde System-on-Chip met WiFi- en BLE-funksies. SoC is via die UART -module aan die hoofbord gekoppel (ons sal dit in die skematiese stap behandel) en dien as 'n boodskappie tussen die hoofapparaat en die Android -slimfoon.
WiFi plaaslike netwerk
Slimfoon en toestel kommunikeer via WiFi of 'n plaaslike netwerk, gebaseer op die konfigurasie van die TCP -bediener/kliënt. As toestelle mekaar op die WiFi herken, skep die hoofapparaat 'n TCP -bediener met toepaslike parameters en kan hulle boodskappe stuur/ontvang. Die toestel dien as 'n sekondêr van die slimfoon. Android -toestel, aan die ander kant, maak 'n verbinding met die TCP -bediener as 'n kliëntnetwerkapparaat, maar word beskou as die primêre boodskappysender - die slimfoon is die een wat die volledige kommunikasiesiklus begin: stuur boodskap - ontvang antwoord.
Android -slimfoon
Android -gebaseerde slimfoonapparaat wat op die FuncGen -toepassing werk
Stap 3: Onderdele, gereedskap, IDE en materiaalbrief
Materiaalsak (sien aangehegte XLS -tabel)
UI en stelselverbindings
- 1 x 2004A Char-LCD 20x4 Blou
- 1 x USB tipe B -aansluiting
- 1 x 10 stel Mini Micro JST XH 2.54mm 4 pins
- 1 x 6 stuks Momentary SW
PCB -bestelling (volgens Seeed Studio)
Basismateriaal FR-4
Aantal lae 2 lae
PCB Hoeveelheid 10
Aantal verskillende ontwerpe 1
PCB dikte 1,6 mm
Kleur PCB blou
Oppervlak afwerking HASL
Minimum soldeermaskerdam 0,4 mm ↑
Kopergewig 1 oz
Minimum boorgatgrootte 0,3 mm
Spoorbreedte / spasiëring 6/6 mil
Geplateerde halfgate / Castellated Holes No.
Impedansie beheer nr
Gereedskap
- Warm gom geweer
- Pincet
- Snyer
- ~ 22AWG draad vir die hantering van wanfunksies
- Soldeerbout/stasie
- Soldeerblik
- SMD -herwerkstasie (opsioneel)
- 3D -drukker (opsioneel)
- Uitpak lêer
- AVR ISP programmeerder
- USB na seriële omskakelaar (opsioneel, vir ontfoutingsdoeleindes)
Geïntegreerde ontwikkelingsomgewing (IDE) en sagteware
- Autodesk EAGLE of Cadence Schematic Editor / Allegro PCB Editor
- OpenSCAD (opsioneel)
- Ultimaker Cura (opsioneel)
- Saleae Logic (vir probleemoplossing)
- Atmel Studio 6.3 of hoër
- Android Studio of Eclipse IDE
- Docklight Serial Monitor / Ander sagteware vir monitering van COM -poort
- ProgISP vir AVR ATMEGA32L flitsprogrammering
Stap 4: Hardeware -ontwerp - Hoofbord
Batterybestuurskring
Die laai -stroombaan is gebaseer op MCP7383 IC, waarmee ons die gewenste laadstroom kan kies vir die Li -Ion -battery - 3.7V met 'n kapasiteit van 850 mAh. Laadstroom word in ons geval bepaal deur die programmeringsweerstandwaarde (R1)
R1 = 3KOhm, I (lading) = 400mA
USB-spanning VBUS word gefiltreer deur π-filter (C1, L3, C3) en dien as 'n kragbron vir laaikring.
Met 'n spanningsverdelerkring (R2, R3) kan MCU aandui of eksterne USB -kragtoevoer gekoppel is of nie, deur die volgende spanning aan die MCU A/D -kanaal te verskaf:
V (aanduiding) ~ (2/3) V (BUS)
Aangesien ons A/D van ATMEGA32L 12-bis is, kan ons die digitale reeks bereken:
A / D (reeks) = 4095V (aanduiding) / V (REF).
A/D ∈ [14AH: FFFH]
Smart Switch Power Unit
Met die stroombaan kan die stelsel die kragtoevoer na elke ontwerpte blok beheer, beide vanaf die drukknop en sagteware op die MCU, en is gebaseer op STM6601 Smart-Switch met POWER-opsie in plaas van RESET. Die terminale wat ons wil oorweeg, is die volgende:
- PSHOLD - Invoerlyn, wat die toesteltoestand definieer: as dit LAAG getrek word, skakel die toestel al die sekondêre kragtoevoer (+3.3V en -3.3V) uit. As dit HOOG gehou word - bly die toestel AAN.
- nSR en nPB - Invoerlyne. Drukknoppie terminale. As 'n valrand op hierdie penne bespeur word, probeer die toestel om die aan / af -modus af te skakel
- nINT - Uitsetlyn. Elke keer LOW getrek as die drukknop ingedruk word
- NL - Uitsetlyn, word gebruik as kragvoorsiening vir die sekondêre kragtoevoer -eenhede. Terwyl dit laag gehou word, word beide sekondêre kragtoevoer gedeaktiveer
Daar is 'n paar belangrike aantekeninge voordat ons na die finale ontwerp gaan:
- PSHOLD moet tot 3.3V opgetrek word, want daar is gevalle waar MCU's alle I/Os dwing om in die HOOG-Z-toestand te wees. In hierdie geval is die toestand van PSHOLD van die MCU onbekend en kan dit die programmeerproses van die toestel dramaties beïnvloed.
- STM6601 moet bestel word met 'n EN -aanpassingsopsie by lang druk, in plaas van die RESET -opsie (ek het daarin geval).
Kragtoevoer: +3.3V
Die belangrikste kragtoevoer vir al die stelsels in ons projek. As die +3.3V -lyn op GND -vlak gehou word (dit wil sê geen spanning nie), word alle IC behalwe die slim skakelaar gedeaktiveer. Die stroombaan is gebaseer op LDO LP-3875-3.3 IC, met die moontlikheid om via EN-terminale beheer te word en stroom tot 1A te verskaf.
Die kragbron vir hierdie stroombaan is die batteryspanning, met 'n aangehegte A/D -aanwyser vir die waarneming van VBAT in die konfigurasie, soortgelyk aan die VBUS -sensorkring. In hierdie geval verskil die berekeninge effens;
V (Battery-to-A/D) = 0.59V (Battery); A/D (reeks) ∈ [000H: C03H]
Kragtoevoer eenheid: -3.3V
Met 'n negatiewe spanningstoevoer kan ons simmetriese golfvorme genereer met 'n GS -faktor van 0V (dws die gemiddelde golfwaarde van 0V kan wees). Hierdie stroombaan is gebaseer op die LM2662MX IC - DC/DC -omskakelaar wat op 'n "laadpomp" -metode werk. Die maksimum uitsetstroom van die kring is 200mA, wat voldoende is vir ons ontwerpvereistes - ons is beperk tot 80mA uitsetstroom vanaf elke toestel se kanaal.
IC verrig al die nodige werk, dus slegs dele wat ons moet heg, is twee elektrolitiese kapasitors: C33 vir skakel en C34 vir -3.3V lynomleiding (oorwegings oor geraasvermindering). Die frekwensie van die omskakeling is in die ontwerp verwaarloosbaar as ons die stroombaan ver genoeg van die dele van die golfvorm plaas (ons bespreek dit tydens die PCB -uitlegstap).
Mikrobeheerder -eenheid - MCU
Dit is die bestuurder en die uitvoerende hoof van ons stelsel - beheer, netwerkhantering, boodskapoordrag en UI -ondersteuning - alles word deur MCU gedoen.
Die gekose MCU is Atmel ATMEGA32L, waar L staan vir ondersteunde spanningswerking ∈ [2.7V: 5.5V]. In ons geval is die werkspanning +3.3V.
Kom ons kyk na die belangrikste bedieningsblokke wat nodig is om te verstaan, en werk met MCU in ons ontwerp:
- Eksterne ossillator - is 'n opsionele komponent, aangesien ons belangstel in die 8MHz -frekwensie
-
Perifere beheer, SPI -netwerk - Alle randapparatuur (ESP32 uitgesluit) kommunikeer met MCU via SPI. Daar is drie gedeelde lyne vir alle toestelle (SCK, MOSI, MISO) en elke perifere kring het sy toegewyde CS (Chip Select) lyn. Die SPI -toestelle wat deel uitmaak van die toestel:
- D/A vir amplitude -beheer - Kanaal A
- D/A vir amplitude -beheer - Kanaal B
- AD9834 -toestel - kanaal A
- AD9834 -toestel - kanaal B
- D/A vir voorspanningsbeheer - kanaal A
- D/A vir voorspanningsbeheer - kanaal B
- Digitale potensiometer vir LCD -helderheid/kontrasinstellings
- LCD -ondersteuning - Aangesien LCD 'n algemene 20 x 4 -karakterskerm is, gebruik ons 'n 4 -bis -koppelvlak (reëls D7: D4), bedieningspenne (reëls RS, E) en helderheid/kontrasbeheer (lyne V0 en anode)
- RGB LED -ondersteuning - Hierdie module is opsioneel, maar daar is 'n gemeenskaplike katode RGB LED -aansluiting met toepaslike weerstande wat aan die MCU gekoppel is.
-
Kragbeheer - MCU voer die kragstelselmonitering in real -time af en hanteer al die nodige kraggebeurtenisse:
- VBAT_ADC - Monitering en bepaling van die toestand van die batteryspanning (ADC0 -kanaal)
- PWR_IND - Aanduiding van eksterne kragtoevoerverbinding (ADC1 -kanaal)
- PS_HOLD - Primêre kragvoorsieningslyn vir al die gedefinieerde stelsels. As die MCU laag word, word die toestel afgeskakel
- Onderbreek die terminale van die slimskakelaar - monitering van die drukknoppie
- WiFi -netwerkbestuur - ESP32: MCU kommunikeer met ESP32 via UART -koppelvlak. Aangesien 8MHz ons in staat stel om baud rate van 115200 te implementeer met 'n relatief klein fout, kan ons ESP32 in die kring gebruik sonder voorafdefinisies van baud rate veranderings.
AVR ISP programmeerder
Ons MCU is via SPI geprogrammeer, met 'n terugstellyn (/RST) moet HOOG getrek word vir 'n behoorlike werking (indien nie - MCU sal vir ewig in 'n hersteltoestand verkeer).
Om die toestel te laat programmeer en laai via USB, het ek 'n AVR ISP-programmeerder (klein produk, van eBay gekoop) aangeheg. Om die volledige USB-ondersteuning van die toestel te behou, moet u USB Type-A (D+, D-, VBUS en GND) terminale met AVR ISP-toestelle verbind.
Golfvormgenereringskring
Die kern van die toestel is hierdie stroombane. AD9834 is 'n lae-krag DDS-toestel wat ons al die golfvorms bied wat ons uit die stelsel wil haal. Kringe bevat twee onafhanklike AD9834 IC's met geskeide eksterne 50MHz ossillators (soos dit in die skemas gesien kan word). Die rede vir die geskeide ossillator is 'n oorweging oor die geraasvermindering van digitale kringe, dus was die besluit om behoorlike 50MHz -lyne te hanteer met ossillators wat langs AD9834 geplaas is.
Kom ons kyk na 'n paar wiskunde:
Aangesien die DDS-toestel op Phase Wheel-tegnologie werk met 'n uitsetwaarde in 'n 28-bis-register, kan ons golfvormgenerasie wiskundig beskryf:
dP (fase) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2^28; ΔP ∈ [0: 2^28 - 1]
En volgens die AD9834 -datablad, met inagneming van die maksimum frekwensie, kan die uitsetfrekwensie -resolusie verkry word:
Δf = k * f (ossillator) / f (maksimum) = 0,28 * 50M / 28M = 0,187 [Hz]
AD9834 IC's bied 'n analoge stroomuitset vir driehoek/sinusgolf (IOUT -terminale) en digitale uitset vir vierkantgolf (SIGN_OUT -terminale). Die gebruik van tekenborde is 'n bietjie lastig, maar ons kan dit hanteer - Elke keer as DDS die drempel van vergelykingswaarde oorskry, tree SIGN_OUT dienooreenkomstig op. 'N Weerstand van 200 Ohm is aan die uitset van elke kanaal gekoppel, sodat die uitsetspanning betekenisvolle waardes het:
I (enkel kanaal) = V (uitset) / R (spanningskeuse); V (uitset) = R (VS)*I (SS) = 200I (SS) [A]
Amplitudebeheer (D/A) stroombane
Volgens die datablad van AD9834 kan die amplitude daarvan aangepas word deur stroom aan die DDS -volskaalstelsel te verskaf, sodat ons met behulp van dubbele D/A IC die uitsetseinamplitude kan beheer deur die stroom aan te pas. Weereens 'n paar wiskunde:
I (volle skaal) = 18 * (V_REF - V_DAC) / R_SET [A]
Volgens skematies en 'n paar getalle in vergelyking:
I (volle skaal) = 3.86 - 1.17 * V_DAC [A]
D/A-module wat in die ontwerp gebruik word, is 12-bis MCP4922, wanneer die stroom in die reeks [0mA: 3,86mA] is en die lineêre amplitudefunksie:
V (amplitude kies) = 1 - [V (D / A) / (2^12 - 1)]
Golfvorm Multiplexing Circuit
Uitsette van vierkantsgolf- en sinus-/driehoekgolf word geskei by AD9834, daarom moet ons 'n hoëspoed -multiplexeringskring vir beide uitsette gebruik om alle gewenste golfvorms van 'n enkele geskeide kanaal te kan ophaal. Die multiplexer IC is 'n analoog ADG836L-skakelaar met 'n baie lae weerstand (~ 0.5Ohm).
Die seleksietabel wat MCU vir die uitsette gebruik, is soos volg:
Moduskeuse [D2: D1] | Uitsetkanaal A | Uitsetkanaal B
00 | Sinus/Driehoek | Sinus/Driehoek 01 | Sinus/Driehoek | Vierkant 10 | Vierkant | Sinus/Driehoek 11 | Vierkant | Vierkantig
Bias Voltage Control (D/A) stroombane
Een van die belangrikste kenmerke van die golfvormgenerator is om die GS -waarde daarvan te beheer. In hierdie ontwerp word dit gedoen deur die gewenste D/A -spanning per kanaal in te stel, en hierdie voorspannings word opgesom met veelvoude uitsette wat ons 'n bietjie vroeër bespreek het.
Spanning wat van D/A gehaal word, lê in die reeks [0V: +3.3V], so daar is 'n op-amp-gebaseerde stroombaan wat die D/A-reeks na [-3.3V: +3.3V] in kaart bring, sodat die toestel 'n volledige reeks kan bied van die gewenste DC komponent. Ons sal die irriterende analitiese wiskunde oorslaan en net fokus op die finale resultate:
V_OUT (kanaal B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (kanaal A) = V_BIAS_A (+) - V_BIAS_A (-)
Die DC-komponentreeks is nou in die reeks [-3.3V: +3.3V].
Summing Circuits - GS -komponente en golfvormuitsette
Op hierdie punt het ons alles wat ons nodig het vir die korrekte toesteluitset - Bias Voltage (DC -komponent) in die volle spanningsbereik en multiplex AD9834 -uitsette. Ons sal dit laat gebeur met behulp van die somversterker - op -amp -opset
Laat ons weer wiskunde oorskiet (ons het al baie wiskundige benaderings behandel) en skryf die finale uitslag van die somversterker se uitset neer:
V (toesteluitset) = V (positiewe vooroordeel) - V (negatiewe vooroordeel) - V (veelvoude uitset) [V]
Daarom:
V_OUT = ΔV_BIAS - V_AD9834 [V]
Uitgangskonnekte van BNC -tipe is gekoppel aan 'n seleksieweerstand (R54, R55; R56, R57). Die rede hiervoor is dat as die ontwerp wanfunksioneel is, ons steeds kan kies of ons 'n somversterker wil gebruik.
Belangrike opmerking: die weerstandnetwerke van die finale somversterkers kan deur 'n ontwerper aangepas word om die maksimum amplitude wat van die toestel gehaal kan word, te verander. In my geval deel al die versterkers dieselfde versterking = 1, dus is die maksimum gebufferde amplitude 0.7Vpp vir driehoek/sinusgolf en 3.3Vpp vir vierkantgolf. Die spesifieke wiskundige benadering kan gevind word onder die aangehegte beelde van step.
ESP32 as eksterne module
MCU kommunikeer met ESP32 via UART -koppelvlak. Aangesien ek my eie PCB vir die ESP32 wou hê, is daar 4 terminale beskikbaar om aan te sluit: VCC, RX, TX, GND. J7 is 'n koppelvlakaansluiting tussen PCB's, en ESP32 word as 'n eksterne module in die toestel toegeken.
Gebruikerskoppelvlak - LCD en luidspreker
Die LCD wat gebruik is, is 'n generieke 20 x 4 -karakterskerm met 'n 4 -bis -koppelvlak. helderheid en kontras van LCD -module programmaties.
Die luidspreker bied klankuitsette vir die gebruiker deur eenvoudige vierkantgolfopwekking vanaf die MCU. Die BJT T1 beheer die stroom deur die luidspreker wat net in twee toestande kan wees - AAN / UIT.
Stap 5: Hardeware -ontwerp - ESP32 -module
ESP32 word gebruik as 'n eksterne module vir die hoof PCB. Toestelkommunikasie is gebaseer op AT -opdragte wat op die firmware van 'n generiese toestel beskikbaar is.
Daar is nie veel om oor hierdie ontwerp uit te brei nie, maar daar is 'n paar aantekeninge vir ontwerp:
- Vir die mislukking van die gebruik van die regte UART -module van ESP32, het ek drie seleksieweerstande vir beide TX- en RX -lyne aangeheg. (0Ohm vir elkeen). Vir standaardkonfigurasie word die UART2 -module gebruik vir AT -opdragte (R4, R7 moet gesoldeer word)
- Die toestel het 'n 4 -lyn -uitvoer - VCC, GND, TX, RX.
- IO0- en EN -penne evalueer die werking van die toestel en moet ontwerp word soos dit in die skemas uiteengesit word
Al die PCB -funksies wat ons in die volgende stap behandel.
Stap 6: PCB -uitleg
Die doelwitte van die ontwerp van 'n PCB
- Skep 'n ingebedde stelsel vir al die geïntegreerde stroombane op dieselfde bord
- Verbeter toestelprestasie deur die ontwerp van 'n enkele hoof -PCB
- Kosteverlaging - as u die pryse wil opsoek, is laekoste -ontwerpe baie goedkoop
- Verklein die grootte van die elektroniese bord
- Maklik om op te los - ons kan TP's (toetspunte) gebruik vir elke moontlike funksionele lyn.
Tegniese parameters
Beide PCB's: hoof- en ESP32 -bord het dieselfde eienskappe vir die vervaardigingsproses - lae koste en kan vir ons doeleindes gebruik word. Kom ons kyk na hulle:
A - Hoofraad
- Grootte: 10 cm x 5.8 cm
- Aantal lae: 2
- PCB dikte: 1,6 mm
- Minimum spoorruimte/breedte: 6/6mil
- Minimum deursnee van die gat: 0,3 mm
- Koper tot aan die rand van die PCB minimum afstand: 20mil
- Oppervlak afwerking: HASL (redelik mooi silwer kleur goedkoop tipe)
B - Hoofraad
- Grootte: 3 cm x 4 cm
- Aantal lae: 2
- PCB dikte: 1,6 mm
- Minimum spoorruimte/breedte: 6/6mil
- Minimum deursnee van die gat: 0,3 mm
- Koper tot aan die rand van die PCB minimum afstand: 20mil
- Oppervlak afwerking: HASL
Stap 7: 3D -omhulsel
Ek het dit nie self ontwerp nie, want ek het destyds hierdie toestel oorreed om te werk, so ek was glad nie bewus van al die basiese beginsels van 3D -druk nie. Ek het dus 'n SCAD -projek van Thingiverse gebruik en verskillende diafragma's aan die grense geheg, volgens die spesifikasies van my toestel.
- Drukapparaat: Creality Ender-3
- Bedtipe: glas, dikte 5 mm
- Gloeidiameter: 1,75 mm
- Filament tipe: PLA+
- Spuitstukdiameter: 0,4 mm
- Aanvanklike snelheid: 20 mm/sek
- Gemiddelde snelheid: 65 mm/sek
- Ondersteuning: Nvt
- Aanvulling: 25%
-
Temperatuur:
- Bed: 60 (oC)
- Spuitstuk: 215 (oC)
- Filament Kleur: Swart
- Totale aantal opening: 5
-
Aantal omhulselpanele: 4
- TOP Shell
- Onderste dop
- Voorste paneel
- Agterpaneel
Stap 8: sagteware -implementering - MCU
GitHub -skakel na Android- en Atmega32 -kode
Sagteware -algoritme
Al die bewerkings wat deur die MCU uitgevoer word, word in aangehegte vloeidiagramme beskryf. Daarbenewens is daar 'n aangehegte kode vir die projek. Kom ons kyk na sagteware spesifikasies:
Skakel aan
Op hierdie stadium voer MCU al die inisiasierye op, tesame met die bepaling van die gestoorde kommunikasietipe met Android -toestelle: Direkte WiFi- of WLAN -netwerkkommunikasie - hierdie data word in EEPROM gestoor. Gebruiker kan op hierdie stadium die paringstipe van Android -toestelle herdefinieer.
Direkte koppeling van Android -toestelle
Hierdie tipe koppeling is gebaseer op die skep van WiFi -netwerk deur die FuncGen -toestel. Dit sal AP (toegangspunt) en 'n TCP -bediener op 'n plaaslike toestel se IP met 'n spesifieke SSID (WiFi -netwerknaam) en 'n spesifieke poortnommer skep. Die toestel moet die toestand hou - oop vir verbindings.
As 'n Android -toestel aan FuncGen gekoppel is, gaan die MCU in die aktiewe modus en reageer dit volgens die gebruikersinstruksies van die Android -toestel.
WLAN -koppeling
Om op 'n plaaslike WiFi -netwerk te kommunikeer, moet MCU opdragte verskaf vir die ESP32 om AP te skep, met Android -toestelle te kommunikeer en die belangrike netwerkdata uit te ruil:
- Android -toestelle ontvang van FuncGen sy MAC -adres, stoor dit in die geheue.
- FuncGen -toestel ontvang 'n gekose WLAN -parameter van 'n Android -toestel: SSID, tipe sekuriteit en wagwoord en stoor dit in EEPROM.
As toestelle inderdaad aan dieselfde WLAN gekoppel is, sal Android -toestel na die FuncGen soek deur al die MAC -adresse van toestelle wat aan die WLAN gekoppel is, te skandeer. As 'n Android -toestel die MAC -pasmaat bepaal, probeer dit kommunikeer.
Verbinding en staatshantering - MCU
As toestelle met mekaar kommunikeer, bly die protokol (sien voorafgaande stap) dieselfde en die vloeidiagram is dieselfde.
Toestelmonitering van toestelle
Tydsonderbreking verskaf aan MCU die nodige besonderhede vir staatshantering. Elke siklus van timeronderbrekings word die volgende lys parameters opgedateer:
- Eksterne kragtoevoer - Aan/af
- Batteryspanningstoestand
- UI -opdatering vir elke aanpassing
- Drukknop: ingedruk/nie ingedruk nie
Stap 9: sagteware -implementering - Android -app
Die Android-app is in Java-Android-styl geskryf. Ek sal probeer om dit op dieselfde manier as die vorige stappe te verduidelik - deur die algoritme in aparte kodeblokke te verdeel.
Opstartvolgorde
Eerste volgorde van die toestel. Hier word die app -logo aangebied, asook die moontlikheid van GPS- en WiFi -modules van Android -toestelle (moenie bekommerd wees nie, die GPS is slegs nodig vir wifi -netwerke).
Hoof spyskaart
Nadat die app gestart is, verskyn vier knoppies op die skerm. Knoppies aksie:
- DIREKTE VERBINDING: Initialiseer verbinding met FuncGen se AP deur die SSID van IOT_FUNCGEN. As die verbinding suksesvol is, gaan die toestel in die hoof -UI -modus in.
- WIFI -AANSLUITING: Toestel kyk of daar data -parameters in die geheue gestoor is: wifi.txt, mac.txt. As daar geen data gestoor word nie, sal die toestel die gebruiker se versoek weier en 'n opspringboodskap verskaf dat WLAN-koppeling eers gedoen moet word.
- PAAR: Kommunikeer met FuncGen op dieselfde manier as DIRECT CONNECTION, maar in plaas van deurlopende boodskapuitruiling, is daar 'n enkele handdruk. Android -toestel kyk of dit reeds aan die WiFi -netwerk gekoppel is, en versoek dat die gebruiker 'n wagwoord invoer. As herverbinding suksesvol is, stoor Android -toestel SSID en wagwoord in wifi.txt -lêer. Na suksesvolle kommunikasie met FuncGen, stoor die MAC -adres in die mac.txt -lêer.
- Uitgang: Genoeg gesê:)
WiFi -skanderingbestuurder
Ek wou hê dat die toepassing volledig funksioneer en dat daar nie aanpassings buite die app gemaak moet word nie. Ek het dus 'n WiFi -skandeerder ontwerp wat al die nodige bewerkings uitvoer om met 'n bekende wagwoord en SSID aan die WiFi -netwerk te koppel.
Data -oordrag en TCP -kommunikasie
Dit is die hoofkodeblok in die app. Vir al die UI-eenhede is daar 'n gedefinieerde boodskap in 'n spesifieke formaat (vooraf finale stap), wat FuncGen dwing om die gewenste uitset vir die kanale te lewer. Daar is drie tipes UI -velde in aktiwiteit:
-
Soek bars: hier definieer ons die werklike reeks FuncGen-uitvoerparameters
- Amplitude
- DC -verrekening
- LCD -helderheid
- LCD kontras
- Teksbewerking: Om die heelgetalwaardes goed gedefinieerd en presies te hou, word frekwensie-invoer slegs via getalle gedoen
-
Knoppies: Seleksie van parameters uit die beskikbare lyste:
-
Tipe golfvorm
- Sin
- Driehoek
- DC
- Vierkantig
- AF
-
Kry inligting
- Batterystatus (persentasie)
- Wisselstatus (eksterne kragtoevoer)
-
Boot -opsie (vir FuncGen MCU)
- Fabrieksinstelling
- Begin oor
- Afsluiting
- Direk - Herbegin met die direkte paringsmodus
- WLAN - Herbegin met die WLAN -paringsmodus
- Uitgang na hoofkieslys: genoeg gesê:)
-
Stap 10: Toets
Aanbeveel:
Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app): 4 stappe
Bou 'n draagbare bewegingsopspoorder (BLE van Arduino tot 'n pasgemaakte Android Studio -app): Bluetooth Low Energy (BLE) is 'n vorm van lae -krag Bluetooth -kommunikasie. Drabare toestelle, soos die slim kledingstukke wat ek help ontwerp by Predictive Wear, moet die kragverbruik waar moontlik beperk om die batterylewe te verleng en gereeld BLE te gebruik
Draagbare Bluetooth + Wifi -luidspreker: 5 stappe
Draagbare Bluetooth + Wifi -luidspreker: Hallo! So ek was nogal verveeld by die huis, ek kon nie uitgaan nie weens die virusuitbraak (maak nie saak nie, want ek is 'n introvert). Daarom het ek besluit om 'n netjiese en klinkende bluetooth- (en wifi) luidspreker vir vermaak te bou. Nou as jy
Miniatuur draagbare sluitversterker (en sonarstelsel vir draagbare, ens.): 7 stappe
Miniatuur draagbare sluitversterker (en sonarstelsel vir draagbare, ens.): Bou 'n miniatuur laekoste-versterker wat ingebed kan word in 'n brilraam en om 'n sonarsigstelsel vir blindes te skep, of 'n eenvoudige ultraklank masjien wat u hart voortdurend monitor en mens-masjienleer gebruik om te waarsku
Draagbare draagbare retropie: 7 stappe
Portable Handheld Retropie: Dit is die video waarvan ons gegaan het. Ons het byna dieselfde materiaal gebruik as die persoon in hierdie gids. As die video u help om beter te verstaan hoe u 'n draagbare retropie kan maak, kan u dit eerder kyk. Uiteindelik behoort u iets te hê
DIY -funksieopwekker (ICL8038) 0 Hz - 400Khz: 11 stappe
DIY -funksieopwekker (ICL8038) 0 Hz - 400Khz: Funksieopwekkers is 'n baie nuttige hulpmiddel in 'n elektroniese bank, maar dit kan redelik duur wees, maar ons het baie opsies om dit goedkoop te bou. In hierdie projek gebruik ons ICl8038