Innehållsförteckning:

Bärbar funktionsgenerator på WiFi och Android: 10 steg
Bärbar funktionsgenerator på WiFi och Android: 10 steg

Video: Bärbar funktionsgenerator på WiFi och Android: 10 steg

Video: Bärbar funktionsgenerator på WiFi och Android: 10 steg
Video: Arduino based Function Generator with AD9833 DDS Function Generator Module 2024, Juli
Anonim
Bärbar funktionsgenerator på WiFi och Android
Bärbar funktionsgenerator på WiFi och Android
Bärbar funktionsgenerator på WiFi och Android
Bärbar funktionsgenerator på WiFi och Android
Bärbar funktionsgenerator på WiFi och Android
Bärbar funktionsgenerator på WiFi och Android
Bärbar funktionsgenerator på WiFi och Android
Bärbar funktionsgenerator på WiFi och Android

Nära slutet av 1900 -talet dök olika tekniska innovationer upp, särskilt inom kommunikationsområdet; men inte bara. För oss, användare, konsumenter och ingenjörer kom fram till en snabb utveckling av elektroniska enheter, som kan göra våra liv mycket enklare: smarta klockor, smarta hem, smartphones etc.

Eftersom allt kan vara "smart" nuförtiden har jag bestämt mig för att designa en supernyttig enhet för att vara en del av viktig elektronisk labbutrustning - Portable Function Generator, som kan styras av Android OS -baserad smartphone via WiFi Direct eller WiFi Local Area Network (WLAN)).

Varför ska vi bygga den här enheten?

De allra flesta testutrustningar är ganska dyra nuförtiden. Och ibland är dessa enheter inte bärbara. Som en lösning för höga priser, brist på överförbarhet och brist på enhetens nätverksåtkomst, tillhandahåller enheten tvåkanals vågformsgenerator, som verkligen är bärbar och har en obegränsad åtkomst till nätverket - antingen internet eller lokal.

Och naturligtvis bör enheten byggas på grund av entusiasm, följa DIY -principerna - Ibland måste vi bara göra saker själva för att känna oss rätt:)

Nyckelfunktioner

Strömförsörjning

  • USB Type-A-kontakt, för både strömförsörjningssystem och programmering
  • Komplett Li -Ion batterihanteringssystem - Laddning och stabila lägen
  • Smart Switch -implementering - inget behov av strömbrytare
  • Dubbel strömförsörjning: +3.3V och -3.3V för symmetrisk spänningsvågformgenerering

Vågformsgenerering

  • Implementering av likström vid utgångskaskaden - förspänd vågform mellan spänningsgränserna
  • DDS -baserad 4 -typ vågformsgenerering - Sinus, triangel, kvadrat och DC
  • Upp till 10MHz frekvensstöd
  • Utgångsström upp till 80mA med 500mW maximal strömtillgänglighet
  • Separerade kanaler för vågformsgenerering - delade AD9834 -baserade kretsar

Kommunikation

  • Implementering av ESP32 - Tillämpliga WiFi -funktioner
  • Komplett TCP/IP -stöd av generatorenhet och Android -smartphone
  • Möjlighet att lagra användarparametrar för varje enhetscykel
  • Statlig övervakning - båda systemen är medvetna om varandra: FuncGen (låt oss kalla det så här från och med nu) och smartphone.

Användargränssnitt

  • 20 x 4 tecken LCD med enkelt 4-bitars datagränssnitt
  • Android -applikation - komplett användarkontroll över FuncGen -enheten
  • Summerkrets - ljudåterkoppling till användaren

Steg 1: Blockdiagram - Hårdvara

Block Diagram - Hårdvara
Block Diagram - Hårdvara
Block Diagram - Hårdvara
Block Diagram - Hårdvara

Mikrokontrollenhet - ATMEGA32L

Mikrocontroller är ett programmerbart chip som består av all datorfunktion som finns i ett enda elektroniskt chip. I vårt fall är det "hjärnan" och en central komponent i systemet. Syftet med MCU är att hantera alla perifera system, hantera kommunikation mellan dessa system, styra maskinvarudrift och tillhandahålla fullständigt stöd för användargränssnitt och dess interaktion med en faktisk användare. Detta projekt är baserat på ATMEGA32L MCU, som kan fungera på 3.3V och en frekvens på 8MHz.

Kommunikation SoC - ESP32

Denna SoC (System on Chip) ger fullständigt kommunikationsstöd för FuncGen - Tillgång till WiFi -funktioner inklusive direkt, lokal eller internetkommunikation. Syftet med enheten är:

  • Hantera dataöverföring mellan Android -appen och FuncGen -enheten
  • Hantering av kontroll-/datameddelanden
  • Stöd för kontinuerlig TCP/IP Client-Server-konfiguration

I vårt projekt är SoC espressif ESP32, det är för populärt för att expandera ännu mer:)

Li-Ion batterihanteringssystem

För att omvandla vår enhet till en bärbar enhet innehåller enheten en designad Li-Ion-batteriladdningskrets. Kretsen är baserad på MC73831 IC, med kontrollerbar laddström genom att justera värdet på ett enda programmeringsmotstånd (Vi kommer att täcka detta ämne i schematiska steg). Enhetens strömförsörjning är en USB Type-A-kontakt.

Smart switch krets

Smart switch -enhetens strömkontrollkrets ger fullständig mjukvarukontroll över enhetens avstängningssekvens och brist på behov av extern omkopplare för enhetens batterispänning. Alla strömförsörjningar utförs genom att trycka på tryckknappen och MCU: s programvara. I vissa fall måste systemet stängas av: låg batterispänning, hög ingångsspänning, kommunikationsfel och så vidare. Smart switch är baserad på STM6601 smart switch IC, det är billigt och mycket vänligt att leka med.

Huvudströmförsörjningsenhet

Denna enhet består av två batteridrivna strömförsörjningskretsar - +3,3V för alla digitala / analoga matningskretsar och -3,3V för FunGen symmetrisk utgång i förhållande till 0V potential (dvs. genererad vågform kan ställas in [-3,3V: 3,3V] region.

  • Huvudmatningskretsen är baserad på LP3875-3.3 LDO (lågt bortfall) 1A linjär spänningsregulator.
  • Sekundär matningskrets är baserad på LM2262MX IC, som utför DC-DC negativ spänningskonvertering via kondensator-laddningspump-system som IC är baserat på.

Waveform Generators System

Systemet designades med tonvikt på separata DDS (direkt digital syntes) integrerade kretsar, som möjliggör fullständig vågformsgenereringskontroll med MCU: s SPI (seriellt perifert gränssnitt). Kretsarna som användes i konstruktionen är Analog Devices AD9834 som kan tillhandahålla olika typer av vågformer. Utmaningarna vi måste möta när vi arbetar med AD9834 är:

  • Fixerad vågformsamplitud: Vågformsamplituden styrs av extern DAC -modul
  • Ingen hänsyn till offset DC -nivå: Implementering av summeringskretsar med önskade DC -offsetvärden
  • Separata utgångar för kvadratvåg och triangel/sinusvåg: Implementering av högfrekvent omkopplingskrets, så varje enskild kanalutgång kan ge all önskad vågform: sinus, triangel, kvadrat och DC.

LCD-skärm

LCD är en del av UI (användargränssnitt), och dess syfte är att låta användaren förstå vad enheten gör i realtidsläge. Det interagerar med användaren vid varje enhetstillstånd.

Summer

Enkel tongeneratorkrets för ytterligare feedback från enhet till användare.

Integrerad ISP -programmerare

Det finns ett bestående problem för varje ingenjör när det gäller programmeringsprocessen: Det finns alltid det värsta behovet att demontera produkten för att omprogrammera den med en ny firmware. För att övervinna detta besvär var AVR ISP-programmerare ansluten till enheten från insidan, medan USB-data och kraftledningar är kopplade till enhetens USB Type-A-kontakt. I denna konfiguration behöver vi bara ansluta vår FuncGen via USB -kabel för antingen programmering eller laddning!

Steg 2: Block Diagram - Nätverk

Block Diagram - Nätverk
Block Diagram - Nätverk

Dual Channel Function Generator

Huvudenhet. Den vi har granskat i föregående steg

ESP-WROOM-32

Integrerat System-on-Chip med WiFi och BLE-funktioner. SoC är anslutet till huvudkortet (vi täcker detta i schematiska steg) via UART -modulen och fungerar som en meddelandeöverförare mellan huvudenhet och Android -smartphone.

WiFi lokalt nätverk

Smartphone och enhet kommer att kommunicera via WiFi direkt eller lokalt nätverk, baserat på TCP -server/klientkonfiguration. När enheter känner igen varandra på WiFi skapar huvudenheten TCP -server med lämpliga parametrar och kan skicka/ta emot meddelanden. Enheten fungerar som en sekundär till smarttelefonen. Android -enhet, å andra sidan, ansluter till TCP -servern som en klientnätverksenhet, men betraktas som primär meddelandesändare - smarttelefonen är den som initierar en fullständig kommunikationscykel: Skicka meddelande - ta emot svar.

Android Smartphone

Android OS -baserad smartphone -enhet som körs på FuncGen -applikationen

Steg 3: Delar, verktyg, IDE och materialförteckning

Delar, verktyg, IDE och materialförteckning
Delar, verktyg, IDE och materialförteckning
Delar, verktyg, IDE och materialförteckning
Delar, verktyg, IDE och materialförteckning
Delar, verktyg, IDE och materialförteckning
Delar, verktyg, IDE och materialförteckning

Materialförteckning (Se bifogad XLS -tabell)

UI och systemanslutningar

  • 1 x 2004A Char-LCD 20x4 Blue
  • 1 x USB Type B -kontakt
  • 1 x 10 Set Mini Micro JST XH 2.54mm 4 Pin
  • 1 x 6st Momentary SW

Beställning av kretskort (enligt Seeed Studio)

Basmaterial FR-4

Antal lager 2 lager

Kretskortmängd 10

Antal olika mönster 1

PCB -tjocklek 1,6 mm

Kretskortfärg Blå

Ytbehandling HASL

Minsta lödmaskdamm 0,4 mm ↑

Kopparvikt 1oz

Minsta borrhålstorlek 0,3 mm

Spårvidd / avstånd 6/6 mil

Pläterade halvhål / kastellerade hål nr

Impedanskontroll nr

Verktyg

  • Lim pistol
  • Pincett
  • Fräs
  • ~ 22AWG -kabel för hantering av fel
  • Lödkolv/station
  • Lödtenn
  • SMD -omarbetningsstation (tillval)
  • 3D -skrivare (tillval)
  • Extruderingsfil
  • AVR ISP -programmerare
  • USB till seriell omvandlare (tillval, för felsökning)

Integrerad utvecklingsmiljö (IDE) och programvara

  • Autodesk EAGLE eller Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (tillval)
  • Ultimaker Cura (tillval)
  • Saleae Logic (för felsökning)
  • Atmel Studio 6.3 eller högre
  • Android Studio eller Eclipse IDE
  • Docklight Serial Monitor / Övrig programvara för övervakning av COM -portar
  • ProgISP för AVR ATMEGA32L blixtprogrammering

Steg 4: Hårdvarudesign - Huvudkort

Hårdvarudesign - huvudkort
Hårdvarudesign - huvudkort
Hårdvarudesign - huvudkort
Hårdvarudesign - huvudkort
Hårdvarudesign - huvudkort
Hårdvarudesign - huvudkort

Batterihanteringskrets

Batteriladdningskretsen är baserad på MCP7383 IC, som gör att vi kan välja önskad laddström för Li -Ion -batteri - 3,7V med en kapacitet på 850mAh. Laddningsströmmen ställs in genom att programmera motståndsvärdet (R1) i vårt fall

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

USB-spänning VBUS filtreras av π-filter (C1, L3, C3) och fungerar som en strömkälla för laddningskretsen.

Spänningsdelarkrets (R2, R3) gör att MCU kan indikera om extern USB -strömförsörjning är ansluten eller inte, genom att tillhandahålla följande spänning till MCU A/D -kanal:

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

Eftersom vår A/D för ATMEGA32L är 12-bitars kan vi beräkna det digitala intervallet:

A / D (intervall) = 4095V (indikation) / V (REF).

A/D ∈ [14AH: FFFH]

Smart Switch Power Unit

Kretsen låter systemet styra strömförsörjningen till varje konstruerat block både från tryckknapp och programvara på MCU och är baserat på STM6601 Smart-Switch med POWER-alternativ istället för RESET. Terminalerna som vi vill överväga är dessa:

  • PSHOLD - Ingångsledning, som definierar enhetens tillstånd: om den dras LÅG, inaktiverar enheten alla sekundära strömförsörjningsenheter (+3.3V och -3.3V). Om den hålls HÖG - enheten håller PÅ -läget.
  • nSR och nPB - Inmatningslinjer. Tryckknappsplintar. När fallande kant detekteras på dessa stift, försöker enheten gå in i upp / ned -läge
  • nINT - Utmatningslinje. Dras LÅG varje gång tryckknappen trycks in
  • SV - Utgångsledning, används som effektaktivering för de sekundära nätaggregaten. Medan den hålls LÅG, är båda sekundära strömförsörjningarna inaktiverade

Det finns några viktiga anteckningar innan vi går vidare till den slutliga designen:

  • PSHOLD bör dras upp till 3,3V, eftersom det finns fall där MCU-enheter tvingar alla I/Os att vara i HIGH-Z-tillstånd. I det här fallet är tillståndet för PSHOLD från MCU okänt och kan dramatiskt påverka enhetens programmeringsprocess.
  • STM6601 bör beställas med ett EN -justeringsalternativ vid lång tryckning, istället för RESET -alternativ (jag har fallit i det).

Strömförsörjningsenhet: +3,3V

Huvudströmförsörjning för alla system i vårt projekt. När linjen +3.3V hålls på GND -nivå (dvs ingen spänning presenteras) är alla IC utom smart switch inaktiverade. Kretsen är baserad på LDO LP-3875-3.3 IC, med möjlighet att styras via EN-terminal och ge ström upp till 1A.

Strömkällan för denna krets är batterispänningen, med bifogad A/D -indikator för avkänning av VBAT i konfiguration, liknande VBUS -avkänningskrets. I detta fall skiljer sig beräkningarna något åt;

V (batteri-till-A/D) = 0,59V (batteri); A/D (intervall) ∈ [000H: C03H]

Strömförsörjningsenhet: -3,3V

Negativ spänningsförsörjningskrets tillåter oss att generera symmetriska vågformer med en DC -faktor på 0V (dvs. vågformens medelvärde kan vara 0V). Denna krets är baserad på LM2662MX IC - DC/DC -omvandlare som arbetar med en "laddningspump" -metod. Maximal utström för kretsen är 200mA vilket är tillräckligt för våra konstruktionskrav - vi är begränsade med 80mA utström från varje enhets kanal.

IC utför allt nödvändigt arbete, så endast delar vi behöver fästa är två elektrolytkondensatorer: C33 för omkoppling och C34 för -3.3V linjebypass (överväganden för brusreducering). Omkopplingsfrekvensen är försumbar i utformningen om vi placerar kretsen tillräckligt långt från vågformsgenereringsdelar (vi diskuterar det i PCB Layout -steget).

Mikrokontrollenhet - MCU

Detta är chefen och VD för vårt system - kontroll, nätverkshantering, meddelandeöverföring och UI -stöd - allt sker med MCU.

MCU som valdes är Atmel ATMEGA32L, där L står för stödd spänningsdrift ∈ [2.7V: 5.5V]. I vårt fall är driftspänningen +3,3V.

Låt oss överväga de viktigaste operationsblocken, som är nödvändiga för att förstå, som arbetar med MCU i vår design:

  • Extern oscillator - Är en valfri komponent, eftersom vi är intresserade av 8MHz driftsfrekvens
  • Perifer styrning, SPI -nätverk - Alla kringutrustning (exklusive ESP32) kommunicerar med MCU via SPI. Det finns tre delade linjer för alla enheter (SCK, MOSI, MISO) och varje perifer krets har sin dedikerade CS (Chip Select) linje. SPI -enheterna som ingår i enheten:

    1. D/A för amplitudkontroll - kanal A
    2. D/A för amplitudkontroll - kanal B
    3. AD9834 -enhet - kanal A
    4. AD9834 -enhet - kanal B
    5. D/A för förspänningskontroll - kanal A
    6. D/A för förspänningskontroll - kanal B
    7. Digital potentiometer för LCD -ljusstyrka/kontrastinställningar
  • LCD -stöd - Eftersom LCD är en generisk 20 x 4 tecken display använder vi 4 -bitars gränssnitt (Linjer D7: D4), kontrollpinnar (Linjer RS, E) och ljusstyrka/kontrastkontroll (Linjer V0 och Anod)
  • RGB LED -stöd - Denna modul är valfri, men det finns en vanlig katod RGB LED -kontakt med lämpliga motstånd, anslutna till MCU.
  • Power Control - MCU utför övervakning av kraftsystemet i realtidsläge och hanterar alla nödvändiga strömhändelser:

    1. VBAT_ADC - Batterispänningsövervakning och bestämning av dess tillstånd (ADC0 -kanal)
    2. PWR_IND - Indikering av extern strömförsörjning (ADC1 -kanal)
    3. PS_HOLD - Primär effektaktiveringsledning för alla definierade system. När den dras lågt av MCU: n stängs enheten av
    4. Avbryt terminal för smart switch - Tryckknappslägeövervakning
  • WiFi Network Management - ESP32: MCU kommunicerar med ESP32 via UART -gränssnitt. Eftersom 8MHz tillåter oss att implementera baudhastigheten 115200 med ett relativt litet fel kan vi använda ESP32 i kretsen utan fördefinitioner av ändringar i baudhastighet.

AVR ISP -programmerare

Vår MCU är programmerad via SPI med återställningslinje (/RST) måste dras HÖG för en korrekt funktion (om inte - MCU kommer att befinna sig i ett återställt tillstånd för alltid).

För att enheten ska kunna programmeras och laddas via USB har jag anslutit en AVR ISP-programmerare (liten produkt, köpt från eBay). För att upprätthålla enhetens fullständiga USB-stöd måste du ansluta USB Type-A (D+, D-, VBUS och GND) terminaler med AVR ISP-enhet.

Waveform Generation Circuit

Kärnan i enheten är dessa kretsar. AD9834 är en DDS-enhet med låg effekt som ger oss alla de vågformer vi vill hämta från systemet. Kretsar innehåller två oberoende AD9834 IC: er med separerade externa 50MHz -oscillatorer (som det kan ses i schemat). Orsaken till separerad oscillator är överväganden från digitala kretsar för att minska buller, så beslutet var att hantera korrekta 50MHz -linjer med oscillatorer placerade intill AD9834.

Låt oss nu titta på lite matematik:

Eftersom DDS-enheten fungerar med fashjulsteknologi med utgångsvärde i ett 28-bitars register kan vi matematiskt beskriva vågformsgenerering:

dP (fas) = ωdt; ω = P '= 2πf; f (AD9834) = AP * f (clk) / 2^28; ΔP ∈ [0: 2^28 - 1]

Och enligt AD9834 datablad, med hänsyn till maximal frekvens, kan utgångsfrekvensupplösning erhållas:

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

AD9834 IC ger en analog strömutgång för triangel/sinusvåg (IOUT -terminal) och digital utgång för fyrkantvåg (SIGN_OUT -terminal). Användningen av teckenbit är lite knepig men vi kan hantera det - Varje gång DDS passerar tröskeln för jämförelsevärdet, uppträder SIGN_OUT därefter. Ett 200Ohm -motstånd är anslutet till varje kanals utgång, så utspänningen skulle ha ett meningsfullt värde:

I (enkel kanal) = V (utgång) / R (val av spänning); V (utgång) = R (VS)*I (SS) = 200I (SS) [A]

Amplitudkontroll (D/A) kretsar

Enligt databladet för AD9834 kan dess amplitud justeras genom att ge ström till DDS -fullskalesystemet, så med hjälp av dubbel D/A IC kan vi styra utsignalsamplituden genom att justera strömmen. Återigen lite matte:

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

Enligt scheman och sätta några tal till ekvation:

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

D/A-modul som används i design är 12-bitars MCP4922, när strömmen ligger inom [0mA: 3,86mA] och linjär amplitudfunktion är:

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

Waveform Multiplexing Circuit

Kvadratvågs- och sinus/triangelvågsgenereringsutgångar separeras vid AD9834, därför måste vi använda en höghastighetsmultiplexkrets för båda utgångarna för att tillåta att alla önskade vågformer hämtas från en enda separerad kanal. Multiplexorn IC är en analog ADG836L-switch med mycket lågt motstånd (~ 0,5Ohm).

Urvalstabellen som MCU använder för utgångarna som den är:

Lägesval [D2: D1] | Utgångskanal A | Utgångskanal B

00 | Sinus/triangel | Sinus/triangel 01 | Sinus/triangel | Kvadrat 10 | Fyrkant | Sinus/triangel 11 | Fyrkant | Fyrkant

Bias Voltage Control (D/A) kretsar

En av vågformsgeneratorns huvudsakliga funktioner är att styra dess likvärde. I denna design görs det genom att ställa in önskad D/A -spänning per varje kanal, och dessa förspänningar summeras med multiplexerade utgångar som vi har diskuterat lite tidigare.

Spänning som hämtas från D/A ligger i området [0V: +3.3V] så det finns en op-amp-baserad krets som kartlägger D/A-området till [-3.3V: +3.3V], så att enheten kan ge hela räckvidden av önskad DC -komponent. Vi hoppar över den irriterande analytiska matematiken och fokuserar bara på de slutliga resultaten:

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

Nu är DC-komponentintervallet inom området [-3.3V: +3.3V].

Summing Circuits - DC Components and Waveform Outputs

Vid denna tidpunkt har vi allt vi behöver för rätt enhetsutgång - Bias Voltage (DC -komponent) i hela spänningsområdet och multiplexerade AD9834 -utgångar. Vi får det att hända med hjälp av summeringsförstärkaren - op -amp -konfigurationen

Låt oss hoppa över matematik igen (vi har redan täckt många matematiska metoder) och skriva ner det slutliga resultatet av summeringsförstärkarens utgång:

V (enhetsutgång) = V (positiv förspänning) - V (negativ förspänning) - V (multiplexerad utgång) [V]

Därav:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Utgångskontakter av BNC -typ är anslutna med ett urvalsmotstånd (R54, R55; R56, R57). Anledningen till det är att om designen kan vara dysfunktionell kan vi fortfarande välja om vi vill använda summeringsförstärkare.

Viktig anmärkning: De slutliga summeringsförstärkarnas motståndsnät kan justeras av en designer för att ändra maximal amplitud som kan hämtas från enheten. I mitt fall delar alla förstärkare samma förstärkning = 1, så den maximala buffrade amplituden är 0,7Vpp för triangel/sinusvåg och 3,3Vpp för kvadratvåg. Den specifika matematiska metoden kan hittas bland stegets bifogade bilder.

ESP32 som extern modul

MCU kommunicerar med ESP32 via UART -gränssnitt. Eftersom jag ville ha ett eget kretskort för ESP32 finns det fyra terminaler att ansluta: VCC, RX, TX, GND. J7 är ett gränssnittskontakt mellan kretskort och ESP32 kommer att tilldelas som extern modul inuti enheten.

Användargränssnitt - LCD och högtalare

LCD -skärm som användes är en generisk 20 x 4 -teckenskärm med ett 4 -bitars gränssnitt. ljusstyrka och kontrast för LCD -modulen programmatiskt.

Högtalare ger ljudutmatning för användaren genom enkel fyrkantvåggenerering från MCU. BJT T1 styr strömmen via högtalaren som bara kan vara i två tillstånd - ON / OFF.

Steg 5: Hårdvarudesign - ESP32 -modul

Hårdvarudesign - ESP32 -modul
Hårdvarudesign - ESP32 -modul

ESP32 används som en extern modul för huvudkortet. Enhetskommunikation är baserad på AT -kommandon som är tillgängliga på en generisk enhets firmware.

Det finns inte mycket att utöka på denna design, men det finns några anteckningar för design:

  • För felhantering av att använda rätt UART -modul för ESP32 har jag bifogat tre urvalsmotstånd för både TX- och RX -linjer. (0Ohm för varje). För standardkonfiguration används UART2 -modulen för AT -kommandon (R4, R7 måste lödas)
  • Enheten har 4 -radig utgång - VCC, GND, TX, RX.
  • IO0- och EN -stiften utvärderar enhetens funktion och bör utformas så som den ges i schemat

Alla kretskortsfunktioner kommer vi att täcka i följande steg.

Steg 6: PCB -layout

PCB -layout
PCB -layout
PCB -layout
PCB -layout
PCB -layout
PCB -layout

Målen med att designa ett kretskort

  1. Skapa inbyggt system för alla integrerade kretsar på samma kort
  2. Förbättra enhetens prestanda genom att designa ett enda huvudkort
  3. Kostnadsminskning - om du vill leta upp priserna är lågkostnadsdesigner RIKTIGT låga kostnader
  4. Minimera den elektroniska kortstorleken
  5. Lätt att felsöka - Vi kan använda TP (testpunkter) för varje möjlig felaktig linje.

Tekniska parametrar

Båda kretskort: huvud- och ESP32 -kort har samma egenskaper för tillverkningsprocessen - låg kostnad och fungerar för våra ändamål. Låt oss se dem:

A - Huvudstyrelsen

  • Storlek: 10 cm x 5,8 cm
  • Antal lager: 2
  • PCB -tjocklek: 1,6 mm
  • Minsta spåryta/bredd: 6/6mil
  • Minsta diameter via hål: 0,3 mm
  • Koppar till kanten av PCB minsta avstånd: 20mil
  • Ytbehandling: HASL (Ganska snygg silverfärg billig typ)

B - Huvudstyrelsen

  • Storlek: 3 cm x 4 cm
  • Antal lager: 2
  • PCB -tjocklek: 1,6 mm
  • Minsta spåryta/bredd: 6/6mil
  • Minsta diameter via hål: 0,3 mm
  • Koppar till kanten av PCB minsta avstånd: 20mil
  • Ytbehandling: HASL

Steg 7: 3D -hölje

3D -hölje
3D -hölje

Jag designade det inte själv, för jag övertalade den här enheten att fungera, så jag var inte medveten om alla grunderna för 3D -utskrift alls. Således har jag använt ett SCAD -projekt från Thingiverse och kopplat olika bländare till gränserna, enligt min enhets specifikationer.

  1. Utskriftsenhet: Creality Ender-3
  2. Sängtyp: Glas, 5 mm tjocklek
  3. Filament Diameter: 1,75 mm
  4. Glödtrådstyp: PLA+
  5. Munstycksdiameter: 0,4 mm
  6. Initial hastighet: 20 mm/sek
  7. Medelhastighet: 65 mm/sek
  8. Support: Ej tillgängligt
  9. Påfyllning: 25%
  10. Temperatur:

    • Säng: 60 (oC)
    • Munstycke: 215 (oC)
  11. Glödtrådsfärg: Svart
  12. Totalt antal bländare: 5
  13. Antal kapslingspaneler: 4

    • TOPP Shell
    • Bottenskal
    • Frontpanel
    • Bakpanelen

Steg 8: Programvaruimplementering - MCU

Programvaruimplementering - MCU
Programvaruimplementering - MCU
Programvaruimplementering - MCU
Programvaruimplementering - MCU
Programvaruimplementering - MCU
Programvaruimplementering - MCU

GitHub -länk till Android- och Atmega32 -kod

Programvarealgoritm

Alla operationer som utförs av MCU beskrivs i bifogade flödesscheman. Utöver det finns en bifogad kod för projektet. Låt oss täcka mjukvaruspecifikationer:

Uppstart

I detta skede utför MCU alla initialiseringssekvenser tillsammans med bestämning av lagrad kommunikationstyp med Android -enhet: Direkt WiFi eller WLAN -nätverkskommunikation - denna data lagras i EEPROM. Användaren kan omdefiniera Android -enhetens parningstyp i detta skede.

Direkt parning av Android -enheter

Denna typ av parning är baserad på skapandet av WiFi -nätverk av FuncGen -enheten. Det kommer att skapa AP (åtkomstpunkt) och en TCP -server på en lokal enhets IP med ett specifikt SSID (WiFi -nätverksnamn) och ett specifikt portnummer. Enheten ska hålla tillståndet - öppet för anslutningar.

När Android -enheten är ansluten till FuncGen går MCU in i ACTIVE -läget och svarar enligt användarinstruktioner från Android -enheten.

WLAN -parning

För att kommunicera på ett lokalt WiFi -nätverk bör MCU tillhandahålla kommandon för ESP32 för att skapa AP, kommunicera med Android -enhet och utbyta viktig nätverksdata:

  • Android -enheten tar emot från FuncGen sin MAC -adress, lagrar den i minnet.
  • FuncGen -enhet tar emot valda WLAN -parametrar från Android -enheter: SSID, typ av säkerhet och lösenord och lagrar den i EEPROM.

När enheter verkligen är anslutna till samma WLAN söker Android -enheten efter FuncGen genom att skanna alla MAC -adresser för enheter som är anslutna till WLAN. När Android -enheten bestämmer MAC -matchning försöker den kommunicera.

Anslutning och tillståndshantering - MCU

När enheter kommunicerar med varandra, förblir protokollet (Se föregående steg) detsamma och flödesschemat är detsamma.

Enhetsstatusövervakning

Tidsavbrott ger MCU nödvändiga detaljer för statlig hantering. Varje cykel med timeravbrott uppdateras följande lista med parametrar:

  • Extern strömförsörjning - På/Av
  • Batterispänningstillstånd
  • UI -uppdatering för varje anpassning
  • Tryckknapp: Tryckt/ej tryckt

Steg 9: Programvaruimplementering - Android -app

Programvaruimplementering - Android App
Programvaruimplementering - Android App
Programvaruimplementering - Android App
Programvaruimplementering - Android App
Programvaruimplementering - Android App
Programvaruimplementering - Android App
Programvaruimplementering - Android App
Programvaruimplementering - Android App

Android-appen är skriven i Java-Android-stil. Jag kommer att försöka förklara det på samma sätt som de föregående stegen - genom att dela upp algoritmen i separata kodblock.

Starta upp sekvens

Första sekvensen av enheten. Här presenteras app -logotypen tillsammans med möjliggörande av GPS- och WiFi -moduler på Android -enheten (oroa dig inte, GPS: en behövs endast för WiFi -riktiga nätverksskanning).

Huvudmeny

När appen har startats visas fyra knappar på skärmen. Knappåtgärd:

  1. DIREKT ANSLUTNING: Initierar anslutningen till FuncGens AP med SSID för IOT_FUNCGEN. Om anslutningen lyckas går enheten in i huvudgränssnittet.
  2. WIFI -ANSLUTNING: Enheten kontrollerar om det finns lagrade dataparametrar i minnet: wifi.txt, mac.txt. Om det inte finns någon data lagrad kommer enheten att avvisa användarförfrågan och ge ett popup-meddelande om att WLAN-parning måste göras först.
  3. PAIRING: Kommunicerar med FuncGen på samma sätt som DIRECT CONNECTION, men istället för kontinuerligt meddelandeutbyte finns det ett enda handslag. Android -enheten kontrollerar om den redan är ansluten till WiFi -nätverket och begär att användaren anger lösenord. Om återanslutningen lyckas lagrar Android -enheten SSID och lösenord i wifi.txt -filen. Efter framgångsrik kommunikation med FuncGen lagrar den mottagen MAC -adress i mac.txt -filen.
  4. Utgång: Nog sagt:)

WiFi Scanning Manager

Jag ville att applikationen skulle vara alloperativ och utan justeringar utanför appen. Så, jag har designat WiFi Scanner, som utför alla nödvändiga operationer för att ansluta till WiFi -nätverket med ett känt lösenord och SSID.

Dataöverföring och TCP -kommunikation

Detta är huvudkodblocket i appen. För alla UI-enheter finns det ett definierat meddelande i ett specifikt format (Pre-final step), som tvingar FuncGen att tillhandahålla önskad utmatning för kanalerna. Det finns tre typer av användargränssnittsfält i aktivitet:

  1. Sök barer: Här definierar vi det verkliga intervallet för FuncGen-utmatningsparametrar

    1. Amplitud
    2. DC -förskjutning
    3. LCD -ljusstyrka
    4. LCD -kontrast
  2. Textredigering: För att hålla heltalsvärden väldefinierade och exakta, görs frekvensinmatning via textrutor endast med siffror
  3. Knappar: Val av parametrar från tillgängliga listor:

    1. Vågformstyp

      1. Sinus
      2. Triangel
      3. DC
      4. Fyrkant
      5. AV
    2. Få information

      1. Batteristatus (procent)
      2. AC -status (extern strömförsörjning)
    3. Startalternativ (för FuncGen MCU)

      1. Fabriksinställning
      2. Omstart
      3. Stänga av
      4. Direkt - Starta om med direktparningsläge
      5. WLAN - Starta om med WLAN -parningsläge
    4. Avsluta till huvudmenyn: Nog sagt:)

Steg 10: Testning

Rekommenderad: