Obsah:

Přenosný generátor funkcí na WiFi a Android: 10 kroků
Přenosný generátor funkcí na WiFi a Android: 10 kroků

Video: Přenosný generátor funkcí na WiFi a Android: 10 kroků

Video: Přenosný generátor funkcí na WiFi a Android: 10 kroků
Video: TOP 10 Tajné funkce mobilu o kterých 90% lidí neví 2024, Červenec
Anonim
Přenosný generátor funkcí na WiFi a Android
Přenosný generátor funkcí na WiFi a Android
Přenosný generátor funkcí na WiFi a Android
Přenosný generátor funkcí na WiFi a Android
Přenosný generátor funkcí na WiFi a Android
Přenosný generátor funkcí na WiFi a Android
Přenosný generátor funkcí na WiFi a Android
Přenosný generátor funkcí na WiFi a Android

Koncem 20. století se objevily různé technologické inovace, zejména v oblasti komunikací; ale nejen. Uživatelé, spotřebitelé a inženýři pro nás přišli na světlo rychlému vývoji elektronických zařízení, která nám mohou hodně usnadnit život: chytré hodinky, chytré domy, chytré telefony atd.

Protože v dnešní době může být všechno „chytré“, rozhodl jsem se navrhnout super užitečné zařízení, které bude součástí základního elektronického laboratorního vybavení - přenosný generátor funkcí, který lze ovládat pomocí smartphonu s operačním systémem Android pomocí přímého WiFi nebo lokální sítě WiFi (WLAN).

Proč bychom měli toto zařízení stavět?

Drtivá většina testovacích zařízení je v dnešní době dosti drahá. A někdy tato zařízení nejsou přenosná. Jako řešení vysokých cen, nedostatečné přenositelnosti a nedostatku přístupu k síti zařízení poskytuje zařízení dvoukanálový generátor křivek, který je skutečně přenosný a má neomezený přístup k síti - buď k internetu, nebo k místnímu.

A samozřejmě, zařízení by mělo být postaveno kvůli nadšení a dodržování zásad DIY - někdy musíme dělat věci sami, abychom se cítili dobře:)

Klíčové vlastnosti

Zdroj napájení

  • Konektor USB typu A, jak pro napájecí systémy, tak pro programování
  • Kompletní systém správy baterie Li -Ion - nabíjení a stabilní režimy
  • Implementace inteligentního přepínače - není třeba přepínat napájení
  • Duální napájení: +3,3 V a -3,3 V pro generování symetrického průběhu napětí

Generování průběhu

  • Implementace stejnosměrné úrovně na výstupní kaskádě - zkreslený průběh mezi hranicemi napětí
  • Generování tvaru vlny na bázi DDS - sinusový, trojúhelníkový, čtvercový a DC
  • Podpora frekvence až 10 MHz
  • Výstupní proud až 80 mA s maximální dostupností výkonu 500 mW
  • Oddělené kanály pro generování průběhu - rozdělené obvody založené na AD9834

Sdělení

  • Implementace ESP32 - Použitelné možnosti WiFi
  • Kompletní podpora TCP/IP pomocí generátoru a smartphonu Android
  • Možnost ukládání uživatelských parametrů pro každý cyklus zařízení
  • Monitorování stavu - oba systémy si navzájem uvědomují svůj stav: FuncGen (od teď tomu říkáme takto) a smartphone.

Uživatelské rozhraní

  • 20 x 4 znakový LCD s jednoduchým 4bitovým datovým rozhraním
  • Aplikace pro Android - kompletní uživatelská kontrola nad zařízením FuncGen
  • Obvod bzučáku - zvuková zpětná vazba pro uživatele

Krok 1: Blokový diagram - hardware

Blokové schéma - hardware
Blokové schéma - hardware
Blokové schéma - hardware
Blokové schéma - hardware

Mikrokontrolérová jednotka - ATMEGA32L

Mikrokontrolér je programovatelný čip, který se skládá ze všech funkcí počítače, které jsou umístěny v jednom elektronickém čipu. V našem případě je to „mozek“a centrální součást systému. Účelem MCU je spravovat všechny periferní systémy, zvládat komunikaci mezi těmito systémy, řídit provoz hardwaru a poskytovat kompletní podporu pro uživatelské rozhraní a jeho interakci se skutečným uživatelem. Tento projekt vychází z MCU ATMEGA32L, které může pracovat na 3,3 V a frekvenci 8 MHz.

Komunikační SoC - ESP32

Tento SoC (System on Chip) poskytuje kompletní komunikační podporu pro FuncGen - přístup k možnostem WiFi včetně přímé, místní nebo internetové komunikace. Účely zařízení jsou:

  • Zpracování přenosu dat mezi aplikací pro Android a zařízením FuncGen
  • Správa řídicích/datových zpráv
  • Podpora nepřetržité konfigurace klient-server TCP/IP

V našem projektu je SoC espressif ESP32, který je příliš populární na to, abychom ho ještě více rozšířili:)

Systém správy baterií Li-Ion

Aby bylo možné přeměnit naše zařízení na přenosné, obsahuje zařízení navržený nabíjecí obvod Li-Ion baterie. Obvod je založen na IC MC73831 IC s regulovatelným nabíjecím proudem pomocí úpravy hodnoty jednoho programovacího odporu (Toto téma probereme v kroku Schematics). Vstup napájení zařízení je konektor USB typu A.

Inteligentní spínací obvod

Obvod řízení napájení inteligentního přepínače zařízení poskytuje úplnou softwarovou kontrolu nad sekvencí vypínání zařízení a nedostatek potřeby externího přepínače pro odpojení napětí baterie zařízení. Všechny operace napájení se provádějí stisknutím tlačítka a softwaru MCU. V některých případech bude nutné vypnout systém: Nízké napětí baterie, vysoké vstupní napětí, chyba komunikace atd. Inteligentní přepínač je založen na inteligentním přepínači STM6601 IC, který je levný a velmi přátelský na hraní.

Hlavní napájecí jednotka

Tato jednotka se skládá ze dvou napájecích obvodů napájených bateriemi -+3,3 V pro všechny digitální / analogové napájecí obvody a -3,3 V pro symetrický výstup FunGen vzhledem k potenciálu 0 V (tj. Generovaný průběh lze nastavit v [-3,3 V: 3,3 V] region.

  • Hlavní napájecí obvod je založen na lineárním napěťovém regulátoru LP3875-3.3 LDO (low dropout) 1A.
  • Sekundární napájecí obvod je založen na IC LM2262MX, který provádí konverzi záporného napětí DC-DC přes kondenzátor-nabíjecí čerpadlo-systém, na kterém je založen IC.

Systém generátorů průběhů

Systém byl navržen s důrazem na oddělené integrované obvody DDS (přímá digitální syntéza), které umožňují úplné řízení generování průběhu pomocí SPU (sériové periferní rozhraní) MCU. Obvody, které byly použity při návrhu, jsou Analog Devices AD9834, které mohou poskytovat různé typy průběhů. Při práci s AD9834 musíme čelit těmto výzvám:

  • Pevná amplituda průběhu: Amplituda průběhu je řízena externím modulem DAC
  • Bez ohledu na úroveň DC ofsetu: Implementace sčítacích obvodů s požadovanými hodnotami DC offsetu
  • Oddělené výstupy pro čtvercovou a trojúhelníkovou/sinusovou vlnu: Implementace vysokofrekvenčního spínacího obvodu, takže každý kanálový jednokanálový výstup může poskytnout všechny požadované tvary vln: sinusový, trojúhelníkový, čtvercový a DC.

Displej z tekutých krystalů

LCD je součástí uživatelského rozhraní (uživatelského rozhraní) a jeho cílem je umožnit uživateli porozumět tomu, co zařízení dělá v reálném čase. Interaguje s uživatelem v každém stavu zařízení.

Bzučák

Jednoduchý obvod generátoru tónů pro dodatečnou zpětnou vazbu od zařízení k uživateli.

Integrovaný programátor ISP

Pokud jde o proces programování, pro každého inženýra přetrvává problém: Vždy existuje ta nejhorší potřeba produkt rozebrat, aby se přeprogramoval pomocí nového firmwaru. K překonání této nepříjemnosti byl programátor AVR ISP připojen k zařízení zevnitř, zatímco datová a elektrická vedení USB jsou připojena ke konektoru USB typu A zařízení. V této konfiguraci stačí zapojit náš FuncGen přes USB kabel pro programování nebo nabíjení!

Krok 2: Blokový diagram - práce v síti

Blokový diagram - práce v síti
Blokový diagram - práce v síti

Dvoukanálový generátor funkcí

Hlavní zařízení. Ten, který jsme zkontrolovali v předchozím kroku

ESP-WROOM-32

Integrovaný systémový čip s možnostmi WiFi a BLE. SoC je připojen k základní desce (pokryjeme to ve schematickém kroku) prostřednictvím modulu UART a funguje jako přenos zpráv mezi hlavním zařízením a smartphonem Android.

WiFi místní síť

Smartphone a zařízení budou komunikovat prostřednictvím přímé nebo místní sítě WiFi na základě konfigurace serveru TCP/klienta. Když se zařízení navzájem rozpoznávají na WiFi, hlavní zařízení vytvoří server TCP s příslušnými parametry a je schopno odesílat/přijímat zprávy. Zařízení funguje jako sekundární k smartphonu. Zařízení Android na druhé straně se připojuje k serveru TCP jako zařízení klientské sítě, ale je považováno za primární vysílač zpráv - smartphone je tím, kdo zahájí celý komunikační cyklus: Odesílání zprávy - příjem odpovědi.

Chytrý telefon Android

Zařízení smartphone s operačním systémem Android, které běží na aplikaci FuncGen

Krok 3: Díly, nástroje, IDE a kusovník

Díly, nástroje, IDE a kusovník
Díly, nástroje, IDE a kusovník
Díly, nástroje, IDE a kusovník
Díly, nástroje, IDE a kusovník
Díly, nástroje, IDE a kusovník
Díly, nástroje, IDE a kusovník

Kusovník (viz přiložená tabulka XLS)

Uživatelské rozhraní a systémová připojení

  • 1 x 2004A Char-LCD 20x4 modrý
  • 1 x konektor USB typu B
  • 1 x 10 sada Mini Micro JST XH 2,54 mm 4 piny
  • 1 x 6ks Momentální SW

Objednávka PCB (podle Seeed Studio)

Základní materiál FR-4

Počet vrstev 2 vrstvy

Množství DPS 10

Počet různých provedení 1

Tloušťka DPS 1,6 mm

Barva DPS modrá

Povrchová úprava HASL

Minimální pájecí maska Dam 0,4 mm ↑

Hmotnost mědi 1 oz

Minimální velikost vyvrtaného otvoru 0,3 mm

Šířka stopy / rozteč 6/6 mil

Pozlacené polodíry / kastlované otvory č

Impedance Control No

Nástroje

  • Horká lepicí pistole
  • Pinzeta
  • Řezačka
  • ~ 22AWG vodič pro účely řešení poruch
  • Páječka/stanice
  • Pájecí cín
  • Přepracovací stanice SMD (volitelně)
  • 3D tiskárna (volitelně)
  • Extruding file
  • Programátor AVR ISP
  • Převodník USB na sériový port (volitelný, pro účely ladění)

Integrované vývojové prostředí (IDE) a software

  • Autodesk EAGLE nebo Cadence Schematic Editor / Allegro PCB Editor
  • OpenSCAD (volitelně)
  • Ultimaker Cura (volitelně)
  • Saleae Logic (pro řešení problémů)
  • Atmel Studio 6.3 nebo vyšší
  • Android Studio nebo Eclipse IDE
  • Docklight Serial Monitor / Other COM port monitoring software
  • Programování flash ProgISP pro AVR ATMEGA32L

Krok 4: Hardware design - základní deska

Hardware design - základní deska
Hardware design - základní deska
Hardware design - základní deska
Hardware design - základní deska
Hardware design - základní deska
Hardware design - základní deska

Obvod správy baterie

Nabíjecí obvod baterie je založen na IC MCP7383 IC, který nám umožňuje vybrat požadovaný nabíjecí proud pro Li -Ion baterii - 3,7 V s kapacitou 850 mAh. Nabíjecí proud je v našem případě nastaven programováním hodnoty odporu (R1)

R1 = 3 KOhm, I (nabíjení) = 400 mA

USB napětí VBUS je filtrováno π-filtrem (C1, L3, C3) a funguje jako napájecí zdroj pro nabíjecí obvod.

Obvod děliče napětí (R2, R3) umožňuje MCU indikovat, zda je připojeno externí USB napájení nebo ne, poskytnutím následujícího napětí na A/D kanálu MCU:

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

Protože naše A/D ATMEGA32L je 12bitové, můžeme vypočítat digitální rozsah:

A / D (rozsah) = 4095 V (indikace) / V (REF).

A/D ∈ [14AH: FFFH]

Inteligentní spínací napájecí jednotka

Okruh umožňuje systému ovládat napájení každého navrženého bloku pomocí tlačítka i softwaru na MCU a je založen na inteligentním přepínači STM6601 s možností POWER namísto RESET. Terminály, které chceme zvážit, jsou tyto:

  • PSHOLD - Vstupní řádek, který definuje stav zařízení: pokud je vytaženo LOW, zařízení deaktivuje všechny sekundární napájecí zdroje (+3,3 V a -3,3 V). Pokud je držen VYSOKÝ - zařízení udržuje stav ZAPNUTO.
  • nSR a nPB - Vstupní řádky. Tlačítkové svorky. Když je na těchto pinech detekována sestupná hrana, zařízení se pokusí vstoupit do režimu zapnutí / vypnutí
  • nINT - výstupní řádek. Pokaždé při stisknutí tlačítka zatáhne LOW
  • CS - Výstupní vedení, slouží jako povolení napájení sekundárních napájecích jednotek. Zatímco je držen NÍZKÝ, oba sekundární napájecí zdroje jsou deaktivovány

Než přistoupíme ke konečnému návrhu, existuje několik důležitých poznámek:

  • PSHOLD by měl být vytažen na 3,3 V, protože existují případy, kdy MCU nutí všechny I/O být ve stavu HIGH-Z. V tomto případě je stav PSHOLD z MCU neznámý a může dramaticky ovlivnit proces programování zařízení.
  • STM6601 by měl být objednán s možností nastavení EN při dlouhém stisknutí, místo možnosti RESET (v té jsem spadl).

Napájecí jednotka: +3,3V

Hlavní napájecí zdroj pro všechny systémy v našem projektu. Když je vedení +3,3 V drženo na úrovni GND (tj. Není přítomno žádné napětí), všechny IC kromě inteligentního přepínače jsou deaktivovány. Obvod je založen na LDO LP-3875-3.3 IC, s možností ovládání přes terminál EN a poskytuje proud až 1A.

Zdrojem napájení pro tento obvod je napětí baterie s připojeným indikátorem A/D pro snímání VBAT v konfiguraci, podobně jako snímací obvod VBUS. V tomto případě se výpočty mírně liší;

V (baterie na A/D) = 0,59 V (baterie); A/D (rozsah) ∈ [000H: C03H]

Napájecí jednotka: -3,3V

Obvod napájecího napětí se záporným napětím nám umožňuje generovat symetrické průběhy s DC faktorem 0 V (tj. Průměrná hodnota průběhu může být 0 V). Tento obvod je založen na převaděči IC - DC/DC LM2662MX, který pracuje na metodě „nabíjecího čerpadla“. Maximální výstupní proud obvodu je 200 mA, což je dostatečné pro naše konstrukční požadavky - jsme omezeni výstupním proudem 80 mA z kanálu každého zařízení.

IC provádí veškerou potřebnou práci, takže pouze části, které potřebujeme připojit, jsou dva elektrolytické kondenzátory: C33 pro spínání a C34 pro -3,3V bypass (úvahy o snížení hluku). Frekvence přepínání je v designu zanedbatelná, pokud umístíme obvod dostatečně daleko od částí generujících průběh vlny (probereme to v kroku Layout PCB).

Mikrokontrolérová jednotka - MCU

Toto je manažer a generální ředitel našeho systému - ovládání, ovládání sítě, přenos zpráv a podpora uživatelského rozhraní - vše zajišťuje MCU.

Jako MCU byl zvolen Atmel ATMEGA32L, kde L znamená podporovaný napěťový provoz ∈ [2,7 V: 5,5 V]. V našem případě je provozní napětí +3,3V.

Uvažujme o hlavních operačních blocích, které jsou nutné k pochopení, při práci s MCU v našem návrhu:

  • Externí oscilátor - je volitelná součást, protože nás zajímá pracovní frekvence 8 MHz
  • Peripheral Control, SPI Network - Všechna periferní zařízení (kromě ESP32) komunikují s MCU přes SPI. Existují tři sdílené linky pro všechna zařízení (SCK, MOSI, MISO) a každý periferní obvod má vyhrazenou linku CS (Chip Select). Zařízení SPI, která jsou součástí zařízení:

    1. D/A pro ovládání amplitudy - kanál A
    2. D/A pro ovládání amplitudy - kanál B
    3. Zařízení AD9834 - kanál A
    4. Zařízení AD9834 - kanál B
    5. D/A pro řízení předpětí - kanál A
    6. D/A pro řízení předpětí - kanál B
    7. Digitální potenciometr pro nastavení jasu/kontrastu LCD
  • Podpora LCD - Protože LCD je obecný displej s rozlišením 20 x 4 znaků, používáme 4bitové rozhraní (řádky D7: D4), ovládací piny (řádky RS, E) a ovládání jasu/kontrastu (řádky V0 a anoda)
  • Podpora RGB LED - Tento modul je volitelný, ale k MCU je připojen běžný katodový RGB LED konektor s příslušnými odpory.
  • Power Control - MCU provádí monitorování systému napájení v reálném čase a zpracovává všechny potřebné události napájení:

    1. VBAT_ADC - Monitorování napětí baterie a určování jejího stavu (kanál ADC0)
    2. PWR_IND - Indikace připojení externího napájecího zdroje (kanál ADC1)
    3. PS_HOLD - linka pro povolení primárního napájení pro všechny definované systémy. Když je MCU vytaženo, zařízení je vypnuto
    4. Přerušovací terminál inteligentního spínače - sledování stavu tlačítka
  • Správa WiFi sítě - ESP32: MCU komunikuje s ESP32 přes rozhraní UART. Protože 8MHz nám umožňuje implementovat přenosovou rychlost 115200 s relativně malou chybou, můžeme v obvodu použít ESP32 bez předdefinování změn přenosové rychlosti.

Programátor AVR ISP

Náš MCU je naprogramován přes SPI s resetovací linkou (/RST) musí být vytažena VYSOKO pro správnou funkci (pokud ne - MCU se ocitne ve stavu resetování navždy).

Aby bylo možné zařízení naprogramovat a nabíjet přes USB, připojil jsem programátor AVR ISP (produkt malé velikosti, zakoupený na eBay). Aby byla zachována úplná podpora USB zařízení, je třeba propojit terminály USB typu A (D+, D-, VBUS a GND) se zařízením AVR ISP.

Okruh generování průběhu

Jádrem zařízení jsou tyto obvody. AD9834 je zařízení s nízkým výkonem DDS, které nám poskytuje všechny průběhy, které bychom chtěli získat ze systému. Obvody obsahují dva nezávislé obvody AD9834 s oddělenými externími 50MHz oscilátory (jak je vidět na schématech). Důvodem pro oddělený oscilátor je úvaha o snížení šumu digitálních obvodů, takže bylo rozhodnuto zpracovat správné 50MHz linky s oscilátory umístěnými v blízkosti AD9834.

Nyní se podívejme na nějakou matematiku:

Protože zařízení DDS pracuje na technologii Phase Wheel s výstupní hodnotou uloženou v 28bitovém registru, můžeme generování průběhu vlny popsat matematicky:

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

A podle datového listu AD9834, s přihlédnutím k maximální frekvenci, lze dosáhnout rozlišení výstupní frekvence:

Δf = k * f (oscilátor) / f (maximum) = 0,28 * 50M / 28M = 0,187 [Hz]

Integrované obvody AD9834 poskytují analogový proudový výstup pro trojúhelníkovou/sinusovou vlnu (svorka IOUT) a digitální výstup pro čtvercovou vlnu (svorka SIGN_OUT). Použití znakového bitu je trochu složité, ale jsme schopni to zvládnout - pokaždé, když DDS překročí prahovou hodnotu porovnávací hodnoty, SIGN_OUT se podle toho chová. Na výstup každého kanálu je připojen odpor 200Ohm, takže výstupní napětí bude mít smysluplné hodnoty:

I (jeden kanál) = V (výstup) / R (výběr napětí); V (výstup) = R (VS)*I (SS) = 200I (SS) [A]

Obvody řízení amplitudy (D/A)

Podle datového listu AD9834 může být jeho amplituda upravena poskytnutím proudu systému DDS v plném rozsahu, takže pomocí duálního D/A IC můžeme ovládat amplitudu výstupního signálu úpravou tohoto proudu. Ještě jednou trochu matematiky:

I (plný rozsah) = 18 * (V_REF - V_DAC) / R_SET [A]

Podle schémat a uvedení některých čísel do rovnice:

I (plný rozsah) = 3,86 - 1,17 * V_DAC [A]

D/A modul použitý v návrhu je 12bitový MCP4922, když je proud v rozsahu [0mA: 3,86mA] a funkce lineární amplitudy je:

V (výběr amplitudy) = 1 - [V (D / A) / (2^12 - 1)]

Multiplexní obvod vlny

Výstupy generování čtvercových a sinusových/trojúhelníkových vln jsou odděleny v AD9834, proto musíme pro oba výstupy použít vysokorychlostní multiplexní obvod, abychom umožnili získání všech požadovaných průběhů z jednoho odděleného kanálu. Multiplexer IC je analogový přepínač ADG836L s velmi nízkým odporem (~ 0,5Ohm).

Tabulka výběru, kterou MCU používá pro výstupy tak, jak jsou:

Volba režimu [D2: D1] | Výstupní kanál A | Výstupní kanál B

00 | Sinus/trojúhelník | Sinus/trojúhelník 01 | Sinus/trojúhelník | Náměstí 10 | Náměstí | Sinus/trojúhelník 11 | Náměstí | Náměstí

Obvody řízení předpětí (D/A)

Jednou z hlavních funkcí generátoru křivek je řízení jeho hodnoty DC. V tomto provedení se to provádí nastavením požadovaného D/A napětí pro každý kanál a tato předpěťová napětí se sčítají s multiplexovanými výstupy, o kterých jsme diskutovali o něco dříve.

Napětí získávané z D/A leží v rozsahu [0V: +3,3V], takže existuje obvod založený na operačním zesilovači, který mapuje rozsah D/A na [-3,3V: +3,3V], což umožňuje zařízení poskytovat plný rozsah požadované DC složky. Přeskočíme otravnou analytickou matematiku a soustředíme se pouze na konečné výsledky:

V_OUT (kanál B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (kanál A) = V_BIAS_A (+) - V_BIAS_A (-)

Nyní je rozsah DC komponent umístěn v rozsahu [-3,3V: +3,3V].

Součtové obvody - DC komponenty a výstupy křivek

V tomto okamžiku máme vše, co potřebujeme pro správný výstup zařízení - Bias Voltage (stejnosměrná složka) v celém rozsahu napětí a multiplexované výstupy AD9834. To provedeme pomocí součtového zesilovače - konfigurace operačního zesilovače

Přeskočme matematiku ještě jednou (probrali jsme spoustu matematických přístupů) a zapište si konečný výsledek výstupu součtového zesilovače:

V (výstup zařízení) = V (kladné zkreslení) - V (negativní zkreslení) - V (multiplexovaný výstup) [V]

Proto:

V_OUT = ΔV_BIAS - V_AD9834 [V]

Výstupní konektory typu BNC jsou spojeny s výběrovými odpory (R54, R55; R56, R57). Důvodem je to, že v případě, že design může být nefunkční, stále můžeme vybrat, zda bychom chtěli použít součtový zesilovač.

Důležitá poznámka: Rezistorové sítě koncových součtových zesilovačů mohou být upraveny konstruktérem, aby se změnila maximální amplituda, kterou lze načíst ze zařízení. V mém případě mají všechny zesilovače stejný zisk = 1, takže maximální amplituda ve vyrovnávací paměti je 0,7 Vpp pro trojúhelníkovou/sinusovou vlnu a 3,3 Vpp pro čtvercovou vlnu. Konkrétní matematický přístup lze nalézt mezi připojenými obrázky kroku.

ESP32 jako externí modul

MCU komunikuje s ESP32 přes rozhraní UART. Protože jsem chtěl vlastní desku plošných spojů pro ESP32, jsou k dispozici 4 terminály pro připojení: VCC, RX, TX, GND. J7 je konektor rozhraní mezi deskami plošných spojů a ESP32 bude přidělen jako externí modul uvnitř zařízení.

Uživatelské rozhraní - LCD a reproduktor

Použitý LCD je obecný displej o rozměrech 20 x 4 znaků se 4bitovým rozhraním. Jak je z návrhu patrné, ke svorkám LCD „A“a „V0“je připojen digitální potenciometr SPI - jeho účelem je upravit jas a kontrast LCD modulu programově.

Reproduktor poskytuje uživateli zvukový výstup jednoduchým generováním čtvercových vln z MCU. BJT T1 ovládá proud přes reproduktor, který může být pouze ve dvou stavech - ON / OFF.

Krok 5: Hardware Design - ESP32 Module

Hardwarový design - modul ESP32
Hardwarový design - modul ESP32

ESP32 se používá jako externí modul pro hlavní desku plošných spojů. Komunikace zařízení je založena na příkazech AT, které jsou k dispozici u generického firmwaru zařízení.

Na tomto designu není moc co rozšiřovat, ale existuje několik poznámek k designu:

  • Pro zvládnutí selhání při použití správného modulu UART ESP32 jsem připojil tři výběrové odpory pro linky TX i RX. (0Ohm pro každého). Pro standardní konfiguraci se pro příkazy AT používá modul UART2 (R4, R7 musí být pájeno)
  • Zařízení má 4řádkový výstup - VCC, GND, TX, RX.
  • Piny IO0 a EN hodnotí provoz zařízení a měly by být navrženy tak, jak je uvedeno ve schématech

Všechny funkce DPS pokryjeme v následujícím kroku.

Krok 6: Rozložení DPS

Rozložení DPS
Rozložení DPS
Rozložení DPS
Rozložení DPS
Rozložení DPS
Rozložení DPS

Cíle návrhu desky plošných spojů

  1. Vytvořte vestavěný systém pro všechny integrované obvody na stejné desce
  2. Zlepšete výkon zařízení navržením jediné hlavní desky plošných spojů
  3. Snížení nákladů - pokud byste chtěli vyhledat ceny, levné návrhy jsou SKUTEČNĚ nízké
  4. Minimalizujte velikost elektronické desky
  5. Snadné řešení problémů - Pro každou možnou nefunkční linku můžeme použít TP (testovací body).

Technické parametry

Obě desky plošných spojů: hlavní deska a deska ESP32 mají pro výrobní proces stejné vlastnosti - nízké náklady a provozuschopnost pro naše účely. Podívejme se na ně:

A - Hlavní deska

  • Velikost: 10 cm x 5,8 cm
  • Počet vrstev: 2
  • Tloušťka desky plošných spojů: 1,6 mm
  • Minimální stopový prostor/šířka: 6/6mil
  • Minimální průměr otvoru: 0,3 mm
  • Měď k okraji PCB minimální vzdálenost: 20 mil
  • Povrchová úprava: HASL (docela dobře vypadající levný typ stříbrné barvy)

B - Hlavní deska

  • Velikost: 3 cm x 4 cm
  • Počet vrstev: 2
  • Tloušťka desky plošných spojů: 1,6 mm
  • Minimální stopový prostor/šířka: 6/6mil
  • Minimální průměr otvoru: 0,3 mm
  • Měď k okraji PCB minimální vzdálenost: 20 mil
  • Povrchová úprava: HASL

Krok 7: 3D příloha

3D příloha
3D příloha

Nenavrhl jsem to sám, protože v té době jsem přemlouval toto zařízení, aby fungovalo, takže jsem vůbec neznal všechny základy 3D tisku. Použil jsem tedy projekt SCAD od Thingiverse a k hranicím jsem připojil různé clony podle specifikací mého zařízení.

  1. Tiskové zařízení: Creality Ender-3
  2. Typ postele: sklo, tloušťka 5 mm
  3. Průměr vlákna: 1,75 mm
  4. Typ vlákna: PLA+
  5. Průměr trysky: 0,4 mm
  6. Počáteční rychlost: 20 mm/s
  7. Průměrná rychlost: 65 mm/s
  8. Podpora: N/A
  9. Výplň: 25%
  10. Teplota:

    • Postel: 60 (oC)
    • Tryska: 215 (oC)
  11. Barva vlákna: černá
  12. Celkový počet clon: 5
  13. Počet panelů skříně: 4

    • TOP skořápka
    • Spodní skořepina
    • Přední panel
    • Zadní panel

Krok 8: Softwarová implementace - MCU

Softwarová implementace - MCU
Softwarová implementace - MCU
Softwarová implementace - MCU
Softwarová implementace - MCU
Softwarová implementace - MCU
Softwarová implementace - MCU

Odkaz GitHub na kód Android a Atmega32

Softwarový algoritmus

Všechny operace, které MCU provádí, jsou popsány v přiložených vývojových diagramech. Kromě toho je k projektu připojen kód. Pojďme se zabývat specifikacemi softwaru:

Napájení

V této fázi MCU provádí všechny inicializační sekvence spolu s určením typu uložené komunikace se zařízením Android: Přímá WiFi nebo WLAN síťová komunikace - tato data jsou uložena v EEPROM. V této fázi může uživatel předefinovat typ párování zařízení Android.

Přímé párování zařízení Android

Tento typ párování je založen na vytvoření WiFi sítě zařízením FuncGen. Vytvoří AP (přístupový bod) a server TCP na IP místního zařízení se specifickým SSID (název sítě WiFi) a konkrétním číslem portu. Zařízení by mělo udržovat stav - otevřené pro připojení.

Když je zařízení Android připojeno k FuncGen, MCU přejde do AKTIVNÍHO režimu a reaguje podle pokynů uživatele ze zařízení Android.

Párování WLAN

Aby mohl MCU komunikovat v místní WiFi síti, měl by poskytovat příkazy pro ESP32 pro vytváření AP, komunikaci se zařízením Android a výměnu důležitých síťových dat:

  • Zařízení Android obdrží od FuncGen svoji MAC adresu, uloží ji do paměti.
  • Zařízení FuncGen přijímá ze zařízení Android vybrané parametry WLAN: SSID, typ zabezpečení a heslo a ukládá je do EEPROM.

Když jsou zařízení skutečně připojena ke stejné WLAN, zařízení Android vyhledá FuncGen naskenováním všech MAC adres zařízení připojených k WLAN. Když zařízení Android zjistí shodu MAC, pokusí se komunikovat.

Manipulace s připojením a stavem - MCU

Když zařízení spolu komunikují, protokol (viz předposlední krok) zůstává stejný a vývojový diagram je stejný.

Monitorování stavu zařízení

Načasované přerušení poskytuje MCU potřebné podrobnosti pro zpracování stavu. Při každém cyklu přerušení časovače se aktualizuje následující seznam parametrů:

  • Externí napájení - zapnuto/vypnuto
  • Stav napětí baterie
  • Aktualizace uživatelského rozhraní pro každé přizpůsobení
  • Tlačítko: stisknuto/nestisknuto

Krok 9: Softwarová implementace - aplikace pro Android

Softwarová implementace - aplikace pro Android
Softwarová implementace - aplikace pro Android
Softwarová implementace - aplikace pro Android
Softwarová implementace - aplikace pro Android
Softwarová implementace - aplikace pro Android
Softwarová implementace - aplikace pro Android
Softwarová implementace - aplikace pro Android
Softwarová implementace - aplikace pro Android

Aplikace pro Android je napsána ve stylu Java-Android. Pokusím se to vysvětlit stejným způsobem jako předchozí kroky - rozdělením algoritmu na samostatné bloky kódu.

Sekvence zapnutí

První sekvence zařízení. Zde je uvedeno logo aplikace spolu s povolením modulů GPS a WiFi zařízení Android (nebojte se, GPS je potřeba pouze pro skenování správných sítí WiFi).

Hlavní menu

Po spuštění aplikace se na obrazovce objeví čtyři tlačítka. Akce tlačítek:

  1. PŘÍMÉ PŘIPOJENÍ: Inicializace připojení k AP FuncGen pomocí SSID IOT_FUNCGEN. Pokud je připojení úspěšné, zařízení přejde do hlavního režimu uživatelského rozhraní.
  2. WIFI PŘIPOJENÍ: Zařízení kontroluje, zda jsou v paměti uloženy parametry dat: wifi.txt, mac.txt. Pokud nejsou uložena žádná data, zařízení odmítne požadavek uživatele a zobrazí vyskakovací zprávu, že nejprve je třeba provést párování WLAN.
  3. PAIRING: Komunikace s FuncGen stejným způsobem jako DIRECT CONNECTION, ale místo neustálé výměny zpráv dochází k jedinému podání ruky. Zařízení Android zkontroluje, zda je již připojeno k síti WiFi, a požádá uživatele o zadání hesla. Pokud je opětovné připojení úspěšné, zařízení Android ukládá SSID a přístupový klíč do souboru wifi.txt. Po úspěšné komunikaci s FuncGen uloží přijatou MAC adresu do souboru mac.txt.
  4. Exit: Dost bylo řečeno:)

Správce skenování WiFi

Chtěl jsem, aby aplikace byla plně funkční a bez úprav mimo aplikaci. Navrhl jsem tedy WiFi Scanner, který provádí všechny potřebné operace pro připojení k WiFi síti se známým přístupovým klíčem a SSID.

Přenos dat a komunikace TCP

Toto je hlavní blok kódu v aplikaci. Pro všechny jednotky uživatelského rozhraní existuje definovaná zpráva ve specifickém formátu (předposlední krok), která nutí FuncGen poskytovat požadovaný výstup pro kanály. V aktivitě existují tři typy polí uživatelského rozhraní:

  1. Seek Bars: Zde definujeme skutečný rozsah výstupních parametrů FuncGen

    1. Amplituda
    2. Offset DC
    3. Jas LCD
    4. LCD kontrast
  2. Úpravy textu: Aby byly celočíselné hodnoty dobře definované a přesné, zadávání frekvence se provádí pouze pomocí textových polí s čísly
  3. Tlačítka: Výběr parametrů z dostupných seznamů:

    1. Typ křivky

      1. Sinus
      2. Trojúhelník
      3. DC
      4. Náměstí
      5. VYPNUTO
    2. Získat informace

      1. Stav baterie (procento)
      2. Stav AC (externí napájecí zdroj)
    3. Možnost spuštění (pro MCU FuncGen)

      1. Tovární nastavení
      2. Restartujte
      3. Vypnout
      4. Direct - Restartujte s režimem přímého párování
      5. WLAN - Restartujte s režimem párování WLAN
    4. Exit to Main Menu: Enough Said:)

Krok 10: Testování

Doporučuje: