Innholdsfortegnelse:

Bærbar funksjonsgenerator på WiFi og Android: 10 trinn
Bærbar funksjonsgenerator på WiFi og Android: 10 trinn

Video: Bærbar funksjonsgenerator på WiFi og Android: 10 trinn

Video: Bærbar funksjonsgenerator på WiFi og Android: 10 trinn
Video: Такие секреты уже все забыли, но их стоит знать! Полезные советы на все случаи жизни! 2024, Juli
Anonim
Bærbar funksjonsgenerator på WiFi og Android
Bærbar funksjonsgenerator på WiFi og Android
Bærbar funksjonsgenerator på WiFi og Android
Bærbar funksjonsgenerator på WiFi og Android
Bærbar funksjonsgenerator på WiFi og Android
Bærbar funksjonsgenerator på WiFi og Android
Bærbar funksjonsgenerator på WiFi og Android
Bærbar funksjonsgenerator på WiFi og Android

Nær slutten av 1900 -tallet dukket det opp forskjellige teknologiske innovasjoner, spesielt innen kommunikasjon; men ikke bare. For oss, brukere, forbrukere og ingeniører kom til syne i en rask utvikling av elektroniske enheter, som kan gjøre livet vårt mye enklere: Smarte klokker, smarte hjem, smarttelefoner etc.

Siden alt kan være "smart" i dag, har jeg bestemt meg for å designe en supernyttig enhet for å være en del av viktig elektronisk laboratorieutstyr - Portable Function Generator, som kan styres av Android OS -basert smarttelefon via WiFi Direct eller WiFi Local Area Network (WLAN)).

Hvorfor skal vi bygge denne enheten?

Et stort flertall av testutstyr er ganske dyrt i dag. Og noen ganger er disse enhetene ikke bærbare. Som en løsning for høye priser, mangel på bærbarhet og mangel på enhetens nettverkstilgang, gir enheten tokanalsbølgeformgenerator, som faktisk er bærbar og har en ubegrenset tilgang til nettverket - enten internett eller lokalt.

Og selvfølgelig bør enheten bygges på grunn av entusiasme, og følge DIY -prinsippene - Noen ganger må vi bare gjøre ting selv for å føle oss riktig:)

Nøkkelegenskaper

Strømforsyning

  • USB Type-A-kontakt, for både strømforsyningssystemer og programmering
  • Komplett Li -Ion batteristyringssystem - Lading og stabile moduser
  • Smart Switch -implementering - ikke behov for strømbryter
  • Dobbel strømforsyning: +3.3V og -3.3V for generering av symmetrisk spenningsbølgeform

Bølgeformgenerering

  • Implementering av DC -nivå ved utgangskaskaden - partisk bølgeform mellom spenningsgrensene
  • DDS -basert 4 -type bølgeformgenerering - Sinus, trekant, firkant og DC
  • Opptil 10 MHz frekvensstøtte
  • Utgangsstrøm opptil 80mA med maksimal strømtilgjengelighet på 500mW
  • Separate kanaler for bølgeformgenerering - delte AD9834 -baserte kretser

Kommunikasjon

  • Implementering av ESP32 - Gjeldende WiFi -funksjoner
  • Komplett TCP/IP -støtte med generatorenhet og Android -smarttelefon
  • Evne til å lagre brukerparametere for hver enhetssyklus
  • Statlig overvåking - begge systemene er klar over hverandre: FuncGen (la oss kalle det slik fra nå av) og smarttelefon.

Brukergrensesnitt

  • 20 x 4 tegn LCD med enkelt 4-biters datagrensesnitt
  • Android -applikasjon - fullstendig brukerkontroll over FuncGen -enheten
  • Summer krets - lyd tilbakemelding til brukeren

Trinn 1: Blokkdiagram - maskinvare

Blokkediagram - maskinvare
Blokkediagram - maskinvare
Blokkediagram - maskinvare
Blokkediagram - maskinvare

Mikrokontrollerenhet - ATMEGA32L

Mikrokontroller er en programmerbar brikke som består av all datamaskinfunksjonalitet som ligger i en enkelt elektronisk brikke. I vårt tilfelle er det "hjernen" og en sentral komponent i systemet. Formålet med MCU er å administrere alle perifere systemer, håndtere kommunikasjon mellom disse systemene, kontrollere maskinvaredrift og gi fullstendig støtte for brukergrensesnitt og dets interaksjon med en faktisk bruker. Dette prosjektet er basert på ATMEGA32L MCU, som kan fungere på 3.3V og en frekvens på 8MHz.

Kommunikasjon SoC - ESP32

Denne SoC (System on Chip) gir fullstendig kommunikasjonsstøtte for FuncGen - Tilgang til WiFi -funksjoner, inkludert direkte, lokal eller internettkommunikasjon. Hensikten med enheten er:

  • Håndtering av dataoverføring mellom Android -appen og FuncGen -enheten
  • Håndtering av kontroll/datameldinger
  • Støtte for kontinuerlig TCP/IP Client-Server-konfigurasjon

I vårt prosjekt er SoC espressif ESP32, det er for populært til å utvide det enda mer:)

Li-Ion batteristyringssystem

For å omdanne enheten til en bærbar enhet, inneholder enheten designet Li-Ion batteriladningskrets. Kretsen er basert på MC73831 IC, med kontrollerbar ladestrøm via justering av verdien til en enkelt programmeringsmotstand (Vi dekker dette emnet i skjematisk trinn). Enhetens strømforsyningsinngang er USB Type-A-kontakt.

Smart Switch Circuit

Strømkontrollkrets for smartbryteren gir fullstendig programvarekontroll over enhetens avstengningssekvens og mangel på behov for ekstern vippebryter for enhetens batterispenning. Alle strømoperasjonene utføres ved å trykke på trykknappen og MCU -programvaren. I noen tilfeller vil det være nødvendig å slå av systemet: Lav batterispenning, høy inngangsspenning, kommunikasjonsfeil og så videre. Smart switch er basert på STM6601 smart switch IC, som er billig og veldig vennlig å leke med.

Hovedstrømforsyningsenhet

Denne enheten består av to batteridrevne strømforsyningskretser - +3.3V for alle digitale / analoge forsyningskretser og -3.3V for FunGen symmetrisk utgang i forhold til 0V potensial (dvs. generert bølgeform kan settes i [-3.3V: 3.3V] regionen.

  • Hovedforsyningskretsen er basert på LP3875-3.3 LDO (lavt frafall) 1A lineær spenningsregulator.
  • Sekundær forsyningskrets er basert på LM2262MX IC, som utfører DC-DC negativ spenningskonvertering via kondensator-ladningspumpe-system som IC er basert på.

Waveform Generators System

Systemet ble designet med vekt på separate DDS (direkte digital syntese) integrerte kretser, som tillater fullstendig bølgeformgenereringskontroll av MCUs SPI (serielt perifert grensesnitt). Kretsene som ble brukt i designet er Analog Devices AD9834 som kan gi forskjellige typer bølgeformer. Utfordringene vi må stå overfor når vi jobber med AD9834 er:

  • Fast bølgeformamplitude: Bølgeformamplitude styres av ekstern DAC -modul
  • Ingen hensyn til offset DC -nivå: Implementering av summeringskretser med ønskede DC -offset -verdier
  • Separate utganger for firkantbølge og trekant/sinusbølge: Implementering av høyfrekvent koblingskrets, slik at hver enkelt kanalutgang kan gi alle de ønskede bølgeformaene: sinus, trekant, firkant og likestrøm.

LCD-skjerm

LCD er en del av brukergrensesnittet (brukergrensesnitt), og formålet er å la brukeren forstå hva enheten gjør i sanntidsmodus. Den samhandler med brukeren i alle enhetstilstander.

Summer

Enkel tonegeneratorkrets for ytterligere tilbakemelding fra enhet til bruker.

Integrert ISP -programmerer

Det er et vedvarende problem for hver ingeniør når det gjelder programmeringsprosessen: Det er alltid det verste behovet for å demontere produktet for å omprogrammere det med en ny fastvare. For å overvinne denne ulempen ble AVR ISP-programmereren festet til enheten fra innsiden, mens USB-data og strømledninger er knyttet til enhetens USB Type-A-kontakt. I denne konfigurasjonen trenger vi bare å koble FuncGen via USB -kabel for enten programmering eller lading!

Trinn 2: Blokkdiagram - Nettverk

Blokkdiagram - Nettverk
Blokkdiagram - Nettverk

Dual Channel Function Generator

Hovedenhet. Den vi har gjennomgått i forrige trinn

ESP-WROOM-32

Integrert System-on-Chip med WiFi og BLE-funksjoner. SoC er festet til hovedkortet (Vi dekker dette i skjematisk trinn) via UART -modulen og fungerer som en meldingsoverfører mellom hovedenheten og Android -smarttelefonen.

WiFi lokalt nettverk

Smarttelefon og enhet vil kommunisere via WiFi direkte eller lokalt nettverk, basert på TCP -server/klientkonfigurasjon. Når enheter gjenkjenner hverandre på WiFi, lager hovedenheten TCP -server med passende parametere og kan sende/motta meldinger. Enheten fungerer som en sekundær til smarttelefonen. Android -enhet, derimot, kobles til TCP -server som en klientnettverksenhet, men regnes som primær meldingssender - smarttelefon er den som starter en komplett kommunikasjonssyklus: Sender melding - mottar svar.

Android smarttelefon

Android OS -basert smarttelefonenhet som kjører på FuncGen -applikasjonen

Trinn 3: Deler, verktøy, IDE og materialliste

Deler, verktøy, IDE og materialliste
Deler, verktøy, IDE og materialliste
Deler, verktøy, IDE og materialliste
Deler, verktøy, IDE og materialliste
Deler, verktøy, IDE og materialliste
Deler, verktøy, IDE og materialliste

Bill Of Materials (Se vedlagte XLS -tabell)

UI og systemtilkoblinger

  • 1 x 2004A Char-LCD 20x4 blå
  • 1 x USB Type B -kontakt
  • 1 x 10 sett Mini Micro JST XH 2.54mm 4 pins
  • 1 x 6 stk Momentary SW

PCB -bestilling (i henhold til Seeed Studio)

Basismateriale FR-4

Antall lag 2 lag

PCB -mengde 10

Antall forskjellige design 1

PCB -tykkelse 1,6 mm

PCB -farge blå

Overflatebehandling HASL

Minimum loddemaske 0,4 mm ↑

Kobbervekt 1 oz

Minimum borehullstørrelse 0,3 mm

Sporbredde / mellomrom 6/6 mil

Belagte halvhull / Castellated hull nr

Impedans kontroll nr

Verktøy

  • Varm limpistol
  • Pinsett
  • Kutter
  • ~ 22AWG -ledning for håndtering av feil
  • Loddejern/stasjon
  • Loddetinn
  • SMD omarbeidingsstasjon (valgfritt)
  • 3D -skriver (valgfritt)
  • Ekstruderingsfil
  • AVR ISP programmerer
  • USB til seriell omformer (valgfritt, for feilsøkingsformål)

Integrert utviklingsmiljø (IDE) og programvare

  • Autodesk EAGLE eller Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (valgfritt)
  • Ultimaker Cura (valgfritt)
  • Saleae Logic (For feilsøking)
  • Atmel Studio 6.3 eller nyere
  • Android Studio eller Eclipse IDE
  • Docklight Serial Monitor / annen COM -portovervåkingsprogramvare
  • ProgISP for AVR ATMEGA32L blitsprogrammering

Trinn 4: Maskinvaredesign - Hovedkort

Maskinvaredesign - hovedkort
Maskinvaredesign - hovedkort
Maskinvaredesign - hovedkort
Maskinvaredesign - hovedkort
Maskinvaredesign - hovedkort
Maskinvaredesign - hovedkort

Batteristyringskrets

Batteriladningskretsen er basert på MCP7383 IC, som lar oss velge ønsket ladestrøm for Li -Ion -batteri - 3,7V med en kapasitet på 850mAh. Ladestrøm er satt ved å programmere motstandsverdi (R1) i vårt tilfelle

R1 = 3KOhm, I (ladning) = 400mA

USB-spenning VBUS filtreres av π-filter (C1, L3, C3) og fungerer som en strømkilde for ladekrets.

Spenningsdelerkrets (R2, R3) lar MCU indikere om ekstern USB -strømforsyning er tilkoblet eller ikke, ved å gi følgende spenning til MCU A/D -kanal:

V (indikasjon) ~ (2/3) V (BUS)

Siden vår A/D for ATMEGA32L er 12-biters, kan vi beregne det digitale området:

A / D (område) = 4095V (indikasjon) / V (REF).

A/D ∈ [14AH: FFFH]

Smart Switch Power Unit

Krets lar systemet kontrollere strømforsyningen til hver designet blokk både fra trykknapp og programvare på MCU og er basert på STM6601 Smart-Switch med POWER-alternativ i stedet for RESET. Terminalene vi ønsker å vurdere er disse:

  • PSHOLD - Inngangslinje, som definerer enhetens tilstand: hvis den trekkes LAV, deaktiverer enheten alle de sekundære strømforsyningsenhetene (+3.3V og -3.3V). Hvis den holdes HØY - holder enheten PÅ.
  • nSR og nPB - Inngangslinjer. Trykknapper. Når det oppdages fallende kant på disse pinnene, prøver enheten å gå inn i opp / ned -modus
  • nINT - Utgangslinje. Trekkes LOW hver gang du trykker på knappen
  • NO - Utgangslinje, brukes som strømaktivering for de sekundære strømforsyningsenhetene. Mens den holdes LAV, er begge sekundære strømforsyningene deaktivert

Det er noen viktige notater før vi går videre til den endelige designen:

  • PSHOLD bør trekkes opp til 3,3V, fordi det er tilfeller der MCUer tvinger alle I/Os til å være i HIGH-Z-tilstand. I dette tilfellet er tilstanden til PSHOLD fra MCU ukjent og kan dramatisk påvirke enhets programmeringsprosess.
  • STM6601 bør bestilles med et EN -justeringsalternativ ved langt trykk, i stedet for alternativet RESET (jeg har falt i det).

Strømforsyningsenhet: +3,3V

Hovedstrømforsyning for alle systemene i prosjektet vårt. Når +3.3V -linjen holdes på GND -nivå (dvs. ingen spenning presenteres), deaktiveres alle IC unntatt smartbryteren. Kretsen er basert på LDO LP-3875-3.3 IC, med evne til å bli styrt via EN-terminal og gi strøm opptil 1A.

Strømkilden for denne kretsen er batterispenningen, med vedlagt A/D -indikator for registrering av VBAT i konfigurasjon, lik VBUS -sensingkrets. I dette tilfellet er beregningene litt forskjellige;

V (batteri-til-A/D) = 0,59V (batteri); A/D (område) ∈ [000H: C03H]

Strømforsyningsenhet: -3,3V

Negativ spenningsforsyningskrets lar oss generere symmetriske bølgeformer med en DC -faktor på 0V (dvs. at bølgeformens gjennomsnittlige verdi kan være 0V). Denne kretsen er basert på LM2662MX IC - DC/DC -omformer som opererer på en "ladepumpe" -metode. Maksimal utgangsstrøm for kretsen er 200mA, noe som er tilstrekkelig for våre designkrav - vi er begrenset med 80mA utgangsstrøm fra hver enhets kanal.

IC utfører alt nødvendig arbeid, så bare deler vi trenger å feste er to elektrolytiske kondensatorer: C33 for bytte og C34 for -3.3V linjeomløp (hensyn til støyreduksjon). Frekvensen av svitsjen er ubetydelig i utformingen hvis vi plasserer kretsen langt nok fra bølgeformgenereringsdeler (Vi diskuterer det på PCB Layout -trinn).

Mikrokontrollerenhet - MCU

Dette er lederen og administrerende direktør i systemet vårt - kontroll, nettverkshåndtering, meldingsoverføring og brukergrensesnittstøtte - alt er av MCU.

MCU som ble valgt er Atmel ATMEGA32L, der L står for støttet spenningsdrift ∈ [2.7V: 5.5V]. I vårt tilfelle er driftsspenningen +3,3V.

La oss vurdere de viktigste operasjonsblokkene, som er nødvendige for å forstå, arbeider med MCU i vårt design:

  • Ekstern oscillator - Er en valgfri komponent, siden vi er interessert i 8MHz driftsfrekvens
  • Perifer kontroll, SPI -nettverk - Alle eksterne enheter (unntatt ESP32) kommuniserer med MCU via SPI. Det er tre delte linjer for alle enheter (SCK, MOSI, MISO), og hver perifer krets har sin dedikerte CS (Chip Select) linje. SPI -enhetene som er en del av enheten:

    1. D/A for amplitudekontroll - Kanal A
    2. D/A for amplitudekontroll - Kanal B
    3. AD9834 -enhet - Kanal A
    4. AD9834 -enhet - Kanal B
    5. D/A for forspenningskontroll - Kanal A
    6. D/A for forspenningskontroll - Kanal B
    7. Digitalt potensiometer for innstillinger for LCD -lysstyrke/kontrast
  • LCD -støtte - Siden LCD er en generisk skjerm på 20 x 4 tegn, bruker vi 4 -bits grensesnitt (linjer D7: D4), kontrollpinner (linjer RS, E) og lysstyrke/kontrastkontroll (linje V0 og anode)
  • RGB LED -støtte - Denne modulen er valgfri, men det er en vanlig katode RGB LED -kontakt med passende motstander, koblet til MCU.
  • Strømkontroll - MCU utfører strømsystemovervåking i sanntidsmodus, og håndterer alle nødvendige strømhendelser:

    1. VBAT_ADC - Batterispenningsovervåking og bestemmelse av tilstanden (ADC0 -kanal)
    2. PWR_IND - Indikasjon på ekstern strømforsyningstilkobling (ADC1 -kanal)
    3. PS_HOLD - Primær effektlinje for alle de definerte systemene. Når MCU -enheten trekkes ned, slås enheten av
    4. Avbryt terminal for smartbryter - Trykknappstatusovervåking
  • WiFi Network Management - ESP32: MCU kommuniserer med ESP32 via UART -grensesnitt. Siden 8MHz tillater oss å implementere baudhastighet på 115200 med en relativt liten feil, kan vi bruke ESP32 i kretsen uten forhåndsdefinisjoner for endringer i baudhastighet.

AVR ISP programmerer

MCU -en vår er programmert via SPI med tilbakestillingslinje (/RST) må trekkes HØY for å fungere skikkelig (hvis ikke - vil MCU befinne seg i en tilbakestilt tilstand for alltid).

For å tillate at enheten både kan programmeres og lades via USB, har jeg lagt til AVR ISP-programmerer (produkt i liten størrelse, kjøpt fra eBay). For å opprettholde komplett USB-støtte for enheten, må du koble USB Type-A (D+, D-, VBUS og GND) terminaler med AVR ISP-enhet.

Waveform Generation Circuit

Kjernen i enheten er disse kretsene. AD9834 er en DDS-enhet med lav effekt som gir oss alle bølgeformene vi ønsker å hente fra systemet. Kretser inneholder to uavhengige AD9834 IC -er med atskilte eksterne 50MHz -oscillatorer (slik det kan sees i skjematikken). Årsaken til atskilt oscillator er en vurdering av støyreduksjon i digitale kretser, så beslutningen var å håndtere riktige 50 MHz -linjer med oscillatorer plassert ved siden av AD9834.

La oss se på litt matematikk:

Siden DDS-enheten fungerer på fasehjulsteknologi med utgangsverdi i et 28-biters 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 i henhold til AD9834 datablad, med tanke på maksimal frekvens, kan utgangsfrekvensoppløsning oppnås:

Δf = k * f (oscillator) / f (maksimum) = 0,28 * 50M / 28M = 0,187 [Hz]

AD9834 IC gir en analog strømutgang for trekant/sinusbølge (IOUT -terminal) og digital utgang for firkantbølge (SIGN_OUT -terminal). Bruken av tegnbit er litt vanskelig, men vi klarer å håndtere den - Hver gang DDS passerer terskelen for sammenligningsverdi, oppfører SIGN_OUT seg deretter. En 200Ohm motstand er festet til hver kanals utgang, så utgangsspenningen vil ha en meningsfull verdi:

I (enkelt kanal) = V (utgang) / R (valg av spenning); V (utgang) = R (VS)*I (SS) = 200I (SS) [A]

Amplitude Control (D/A) kretser

I henhold til databladet til AD9834 kan dens amplitude justeres ved å tilføre strøm til DDS fullskala system, så ved hjelp av dobbel D/A IC kan vi kontrollere utgangssignalamplituden ved å justere strømmen. Nok en gang litt matte:

I (full skala) = 18 * (V_REF - V_DAC) / R_SET [A]

I følge skjematikk og sette noen tall til ligningen:

I (full skala) = 3,86 - 1,17 * V_DAC [A]

D/A-modul som brukes i design er 12-biters MCP4922, når strømmen er i området [0mA: 3,86mA] og lineær amplitudefunksjon er:

V (amplitudevalg) = 1 - [V (D / A) / (2^12 - 1)]

Waveform Multiplexing Circuit

Kvadratbølge og sinus/trekant bølgenereringsutganger er adskilt ved AD9834, derfor må vi bruke en høyhastighets multiplexeringskrets for begge utgangene for å tillate å hente alle ønskede bølgeformer fra en enkelt atskilt kanal. Multiplexeren IC er en analog ADG836L-bryter med svært lav motstand (~ 0,5Ohm).

Utvalgstabellen som MCU bruker for utgangene slik den er:

Valg av modus [D2: D1] | Utgangskanal A | Utgangskanal B

00 | Sinus/trekant | Sinus/Trekant 01 | Sinus/trekant | Firkant 10 | Firkant | Sinus/Trekant 11 | Firkant | Torget

Bias Voltage Control (D/A) kretser

En av bølgeformgeneratorens hovedtrekk er å kontrollere DC -verdien. I denne designen gjøres det ved å sette ønsket D/A -spenning per hver kanal, og disse forspenningsspenningene summeres med multipleksede utganger som vi har diskutert litt tidligere.

Spenning hentet fra D/A ligger i området [0V: +3.3V], så det er en op-amp-basert krets som kartlegger D/A-området til [-3.3V: +3.3V], slik at enheten kan tilby hele området av ønsket DC -komponent. Vi hopper over den irriterende analytiske matematikken, og bare fokuserer på de endelige resultatene:

V_OUT (kanal B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (kanal A) = V_BIAS_A (+) - V_BIAS_A (-)

Nå er DC-komponentområdet i området [-3.3V: +3.3V].

Summing Circuits - DC -komponenter og bølgeformutganger

På dette tidspunktet har vi alt vi trenger for riktig enhetsutgang - Bias Voltage (DC -komponent) i hele spenningsområdet og multipleksede AD9834 -utganger. Vi får det til ved å bruke summeringsforsterkeren - op -amp -konfigurasjon

La oss hoppe over matematikk nok en gang (vi har allerede dekket mye matematisk tilnærming) og skrive ned det endelige resultatet av summeringsforsterkerens utgang:

V (enhetsutgang) = V (positiv forspenning) - V (negativ forspenning) - V (multiplekset utgang) [V]

Derfor:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Utgangskontakter av BNC -type er koblet til et utvalg motstander (R54, R55; R56, R57). Grunnen til det er at i tilfelle at designet kan være dysfunksjonelt, kan vi fortsatt velge om vi ønsker å bruke summeringsforsterker.

Viktig merknad: Motstandsnettverkene til de endelige summeringsforsterkerne kan justeres av en designer for å endre maksimal amplitude som kan hentes fra enheten. I mitt tilfelle deler alle forsterkere samme forsterkning = 1, og dermed er den maksimale bufrede amplituden 0,7Vpp for trekant/sinusbølge og 3,3Vpp for firkantbølge. Den spesifikke matematiske tilnærmingen finnes blant trinnets vedlagte bilder.

ESP32 som ekstern modul

MCU kommuniserer med ESP32 via UART -grensesnitt. Siden jeg ønsket min egen PCB for ESP32, er det 4 terminaler tilgjengelig for tilkobling: VCC, RX, TX, GND. J7 er en grensesnittkontakt mellom PCB, og ESP32 vil bli tilordnet som ekstern modul inne i enheten.

Brukergrensesnitt - LCD og høyttaler

LCD som ble brukt er en generisk skjerm på 20 x 4 tegn med et 4 -biters grensesnitt. lysstyrke og kontrast for LCD -modulen programmatisk.

Høyttaleren gir lydutgang for brukeren ved enkel firkantbølgenerering fra MCU. BJT T1 styrer strømmen gjennom høyttaleren som bare kan være i to tilstander - PÅ / AV.

Trinn 5: Maskinvaredesign - ESP32 -modul

Maskinvaredesign - ESP32 -modul
Maskinvaredesign - ESP32 -modul

ESP32 brukes som en ekstern modul for hovedkortet. Enhetskommunikasjon er basert på AT -kommandoer, som er tilgjengelige på en generisk enhets fastvare.

Det er ikke mye å utvide på dette designet, men det er noen notater for design:

  • For feilhåndtering ved bruk av riktig UART -modul for ESP32, har jeg festet tre utvalgsmotstander for både TX- og RX -linjer. (0Ohm for hver). For standardkonfigurasjon brukes UART2 -modulen for AT -kommandoer (R4, R7 må loddes)
  • Enheten har 4 -linjers utgang - VCC, GND, TX, RX.
  • IO0- og EN -pinner evaluerer enhetsdriften og bør utformes slik den er gitt i skjemaet

Alle PCB -funksjonene dekker vi i det følgende trinnet.

Trinn 6: PCB -oppsett

PCB -oppsett
PCB -oppsett
PCB -oppsett
PCB -oppsett
PCB -oppsett
PCB -oppsett

Målene med å designe en PCB

  1. Lag et innebygd system for alle de integrerte kretsene på samme bord
  2. Forbedre enhetens ytelse ved å designe en enkelt hovedkort
  3. Kostnadsreduksjon - hvis du vil slå opp prisene, er rimelige design VIRKELIG lave kostnader
  4. Minimer størrelsen på det elektroniske kortet
  5. Lett å feilsøke - Vi kan bruke TP -er (testpunkter) for hver mulig funksjonsfeil.

Tekniske parametere

Begge kretskort: hoved- og ESP32 -kort har de samme egenskapene for produksjonsprosessen - lave kostnader og kan brukes for våre formål. La oss se dem:

A - Hovedstyret

  • Størrelse: 10 cm x 5,8 cm
  • Antall lag: 2
  • PCB tykkelse: 1,6 mm
  • Minste sporplass/bredde: 6/6mil
  • Minste diameter via hull: 0,3 mm
  • Kobber til kanten av PCB minsteavstand: 20mil
  • Overflatebehandling: HASL (Ganske pen sølvfarget billig type)

B - Hovedstyret

  • Størrelse: 3cm x 4cm
  • Antall lag: 2
  • PCB tykkelse: 1,6 mm
  • Minste sporplass/bredde: 6/6mil
  • Minste diameter via hull: 0,3 mm
  • Kobber til kanten av PCB minsteavstand: 20mil
  • Overflatebehandling: HASL

Trinn 7: 3D -innhegning

3D -kabinett
3D -kabinett

Jeg designet ikke det selv, fordi jeg på den tiden overtalte denne enheten til å fungere, så jeg var ikke klar over alt det grunnleggende om 3D -utskrift. Dermed har jeg brukt et SCAD -prosjekt fra Thingiverse, og festet forskjellige blenderåpninger til grensene, i henhold til enhetens spesifikasjoner.

  1. Utskriftsenhet: Creality Ender-3
  2. Sengetype: Glass, 5 mm tykkelse
  3. Filamentdiameter: 1,75 mm
  4. Filamenttype: PLA+
  5. Dysediameter: 0,4 mm
  6. Starthastighet: 20 mm/sek
  7. Gjennomsnittlig hastighet: 65 mm/sek
  8. Støtte: I/A
  9. Fyll: 25%
  10. Temperatur:

    • Seng: 60 (oC)
    • Dyse: 215 (oC)
  11. Filament Farge: Svart
  12. Totalt antall blenderåpninger: 5
  13. Antall kapslingspaneler: 4

    • TOPP Shell
    • Bunnskall
    • Frontpanel
    • Bakpanel

Trinn 8: Programvareimplementering - MCU

Programvareimplementering - MCU
Programvareimplementering - MCU
Programvareimplementering - MCU
Programvareimplementering - MCU
Programvareimplementering - MCU
Programvareimplementering - MCU

GitHub -lenke til Android og Atmega32 -koden

Programvarealgoritme

Alle operasjonene som utføres av MCU, er beskrevet i vedlagte flytdiagrammer. I tillegg til det er det en vedlagt kode for prosjektet. La oss dekke programvarespesifikasjoner:

Start opp

På dette stadiet utfører MCU alle initialiseringssekvensene sammen med bestemmelse av lagret kommunikasjonstype med Android -enhet: Direkte WiFi eller WLAN -nettverkskommunikasjon - disse dataene lagres i EEPROM. Brukeren kan omdefinere sammenkoblingstype for Android -enheter på dette stadiet.

Direkte sammenkobling av Android -enheter

Denne typen sammenkobling er basert på opprettelse av WiFi -nettverk av FuncGen -enheten. Det vil opprette AP (tilgangspunkt) og en TCP -server på en lokal enhets IP med en bestemt SSID (WiFi -nettverksnavn) og et spesifikt portnummer. Enheten skal holde tilstanden - åpen for tilkoblinger.

Når Android -enheten er koblet til FuncGen, går MCU inn i AKTIV -modus, og reagerer i henhold til brukerinstruksjoner fra Android -enheten.

WLAN -sammenkobling

For å kommunisere på et lokalt WiFi -nettverk, bør MCU gi kommandoer for ESP32 for å lage AP, kommunisere med Android -enhet og utveksle viktige nettverksdata:

  • Android -enheten mottar fra FuncGen sin MAC -adresse, lagrer den i minnet.
  • FuncGen -enheten mottar fra Android -enheten utvalgte WLAN -parametere: SSID, type sikkerhet og passord og lagrer den i EEPROM.

Når enheter faktisk er koblet til det samme WLAN, vil Android -enheten søke etter FuncGen ved å skanne alle MAC -adressene til enheter som er koblet til WLAN. Når Android -enheten bestemmer MAC -match, prøver den å kommunisere.

Tilkobling og statlig håndtering - MCU

Når enheter kommuniserer med hverandre, forblir protokollen (Se det siste trinnet) den samme, og flytskjemaet er det samme.

Overvåking av enhetsstatus

Tidsavbrudd gir MCU nødvendige detaljer for statlig håndtering. Hver syklus med tidsavbrudd oppdateres følgende liste over parametere:

  • Ekstern strømforsyning - På/Av
  • Batterispenningstilstand
  • UI -oppdatering for hver tilpasning
  • Trykknapp: Trykk/ikke trykket

Trinn 9: Programvareimplementering - Android -app

Programvareimplementering - Android -app
Programvareimplementering - Android -app
Programvareimplementering - Android -app
Programvareimplementering - Android -app
Programvareimplementering - Android -app
Programvareimplementering - Android -app
Programvareimplementering - Android -app
Programvareimplementering - Android -app

Android-appen er skrevet i Java-Android-stil. Jeg vil prøve å forklare det på samme måte som de foregående trinnene - ved å dele algoritmen i separate kodeblokker.

Slå på sekvens

Første sekvens av enheten. Her presenteres app -logoen sammen med aktivering av GPS- og WiFi -moduler på Android -enheten (Ikke bekymre deg, GPS -en er nødvendig for skanning av riktige WiFi -nettverk).

Hovedmeny

Etter at appen er startet opp, vises fire knapper på skjermen. Knapper handling:

  1. DIREKTE TILKOBLING: Initialiserer tilkoblingen til FuncGens AP med SSID for IOT_FUNCGEN. Hvis tilkoblingen er vellykket, går enheten inn i hovedgrensesnittmodus.
  2. WIFI -TILKOBLING: Enheten sjekker om det er lagrede dataparametere i minnet: wifi.txt, mac.txt. Hvis det ikke er lagret data, vil enheten avvise brukerforespørsel og gi en popup-melding om at WLAN-sammenkobling må utføres først.
  3. SAMMENKOBLING: Kommunikasjon med FuncGen på samme måte som DIRECT CONNECTION, men i stedet for kontinuerlig meldingsutveksling er det et enkelt håndtrykk. Android -enheten sjekker om den allerede er koblet til WiFi -nettverket, og ber om at brukeren oppgir passord. Hvis tilkoblingen lykkes, lagrer Android -enheten SSID og passord i wifi.txt -filen. Etter vellykket kommunikasjon med FuncGen lagrer den mottatt MAC -adresse i mac.txt -filen.
  4. Utgang: Nok sagt:)

WiFi -skanningsbehandling

Jeg ønsket at applikasjonen skulle være alloperativ og at det ikke skulle gjøres justeringer utenfor appen. Så jeg har designet WiFi Scanner som utfører alle nødvendige operasjoner for å koble til WiFi -nettverket med en kjent passord og SSID.

Dataoverføring og TCP -kommunikasjon

Dette er hovedkodeblokken i appen. For alle UI-enhetene er det en definert melding i et bestemt format (Pre-final step), som tvinger FuncGen til å levere ønsket utgang for kanalene. Det er tre typer UI -felt i aktivitet:

  1. Søk barer: Her definerer vi det virkelige området med FuncGen-utgangsparametere

    1. Amplitude
    2. DC -forskyvning
    3. LCD -lysstyrke
    4. LCD -kontrast
  2. Tekstredigering: For å holde heltallsverdier veldefinerte og presise, utføres frekvensinndata via tekstbokser
  3. Knapper: Valg av parametere fra de tilgjengelige listene:

    1. Bølgeformstype

      1. Sinus
      2. Triangel
      3. DC
      4. Torget
      5. AV
    2. Få informasjon

      1. Batteristatus (prosent)
      2. AC -status (ekstern strømforsyning)
    3. Oppstartsalternativ (for FuncGen MCU)

      1. Fabrikk setting
      2. Omstart
      3. Skru av
      4. Direkte - Start på nytt med direkte sammenkoblingsmodus
      5. WLAN - Start på nytt med WLAN -paringsmodus
    4. Gå ut til hovedmenyen: Nok sagt:)

Trinn 10: Testing

Anbefalt: