Sisukord:
- Samm: plokkskeem - riistvara
- 2. samm: plokkskeem - võrgustike loomine
- 3. samm: osad, tööriistad, IDE ja materjalide arve
- 4. samm: riistvara disain - põhiplaat
- 5. samm: riistvara disain - ESP32 moodul
- 6. samm: trükkplaatide paigutus
- Samm 7: 3D -ümbris
- 8. samm: tarkvara juurutamine - MCU
- 9. samm: tarkvara juurutamine - Androidi rakendus
- 10. samm: testimine
Video: Kaasaskantav funktsioonigeneraator WiFi ja Androidis: 10 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Sajandi lõpus ilmusid mitmesugused tehnoloogilised uuendused, eriti side valdkonnas; aga mitte ainult. Meie jaoks tulid kasutajad, tarbijad ja insenerid esile elektrooniliste seadmete kiire areng, mis võib meie elu palju lihtsamaks muuta: nutikellad, nutikad kodud, nutitelefonid jne.
Kuna tänapäeval võib kõik olla "nutikas", olen otsustanud kavandada ülimalt kasuliku seadme, mis on oluliste elektrooniliste laboriseadmete osaks - kaasaskantav funktsioonigeneraator, mida saab juhtida Android OS -i põhise nutitelefoniga WiFi otse- või WiFi -kohtvõrgu (WLAN) kaudu).
Miks me peaksime selle seadme ehitama?
Enamik testimisseadmeid on tänapäeval üsna kallid. Ja mõnikord ei ole need seadmed kaasaskantavad. Lahendusena kõrgetele hindadele, teisaldatavuse puudumisele ja seadme võrgule juurdepääsu puudumisele pakub seade kahe kanaliga lainekuju generaatorit, mis on tõepoolest kaasaskantav ja millel on piiramatu juurdepääs võrgule - kas internetile või kohalikule.
Ja loomulikult tuleks seade ehitada entusiasmi tõttu, järgides isetegemise põhimõtteid - mõnikord peame lihtsalt ise asju tegema, et end õigesti tunda:)
Põhijooned
Toiteallikas
- A-tüüpi USB-pistik, nii toitesüsteemide kui ka programmeerimise jaoks
- Täielik liitiumioonaku juhtimissüsteem - laadimine ja stabiilsed režiimid
- Smart Switchi rakendamine - pole vaja toitelülitit
- Kahe toiteallikas: +3,3 V ja -3,3 V sümmeetrilise pinge lainekuju genereerimiseks
Lainekuju genereerimine
- Alalisvoolu taseme rakendamine väljundkaskaadil - pingepiiride vahel kallutatud lainekuju
- DDS -põhine 4 -tüüpi lainekuju genereerimine - siinus, kolmnurk, ruut ja alalisvool
- Kuni 10MHz sageduse tugi
- Väljundvool kuni 80 mA ja maksimaalne võimsus 500 mW
- Eraldatud kanalid lainekuju genereerimiseks - jagatud AD9834 -ahelad
Suhtlemine
- ESP32 rakendamine - rakendatavad WiFi -võimalused
- Täielik TCP/IP tugi generaatoriseadme ja Android -nutitelefoni kaudu
- Võimalus salvestada kasutajaparameetreid iga seadme tsükli jaoks
- Seisundi jälgimine - mõlemad süsteemid on üksteisest teadlikud: FuncGen (nimetagem seda edaspidi) ja nutitelefon.
Kasutajaliides
- 20 x 4 sümboliga LCD-ekraan lihtsa 4-bitise andmeliidesega
- Androidi rakendus - täielik kasutaja kontroll FuncGen seadme üle
- Summeri ahel - heli tagasiside kasutajale
Samm: plokkskeem - riistvara
Mikrokontroller - ATMEGA32L
Mikrokontroller on programmeeritav kiip, mis koosneb kõigist arvuti funktsioonidest, mis asuvad ühes elektroonilises kiibis. Meie puhul on see "aju" ja süsteemi keskne komponent. MCU eesmärk on hallata kõiki välisseadmeid, hallata nende süsteemide vahelist suhtlust, kontrollida riistvara toimimist ja pakkuda täielikku tuge kasutajaliidesele ja selle suhtlemisele tegeliku kasutajaga. See projekt põhineb ATMEGA32L MCU -l, mis võib töötada 3.3V ja 8MHz sagedusel.
Side SoC - ESP32
See SoC (System on Chip) pakub FuncGenile täielikku suhtlust - Juurdepääs WiFi võimalustele, sealhulgas otsene, kohalik või Interneti -side. Seadme eesmärgid on järgmised:
- Andmeedastuse käsitlemine Android -rakenduse ja FuncGen -seadme vahel
- Juhtimis-/andmesõnumite haldamine
- Pideva TCP/IP kliendi-serveri konfiguratsiooni tugi
Meie projektis on SoC espressif ESP32, mis on liiga populaarne, et seda veelgi laiendada:)
Li-Ion akuhaldussüsteem
Selleks, et muuta meie seade kaasaskantavaks, sisaldab seade disainitud Li-Ion aku laadimisahelat. Vooluahel põhineb MC73831 IC -l koos reguleeritava laadimisvooluga, reguleerides ühe programmeerimistakisti väärtust (seda teemat käsitleme skeemi etapis). Seadme toiteallika sisend on A-tüüpi USB-pistik.
Nutikas lülitusskeem
Nutika lülitiga seadme toitejuhtimisahel pakub täielikku tarkvara juhtimist seadme väljalülitamisjärjestuse üle ja seadme aku pinge katkestamiseks vajaliku välise lülituslüliti puudumist. Kõik toiteoperatsioonid tehakse vajutades nuppu ja MCU tarkvara. Mõnel juhul on vaja süsteem välja lülitada: madal aku pinge, kõrge sisendpinge, sideviga jne. Nutikas lüliti põhineb STM6601 nutilüliti IC -l, mis on odav ja väga sõbralik mängimiseks.
Peamine toiteallikas
See seade koosneb kahest patareitoitega toiteahelast - +3,3 V kõikide digitaalsete / analoogsete toiteahelate jaoks ja -3,3 V FunGeni sümmeetrilise väljundi suhtes 0 V potentsiaali suhtes (st genereeritud lainekuju saab seadistada [-3,3 V: 3,3 V)] piirkond.
- Peamine toiteahel põhineb LP3875-3,3 LDO (madal väljalangemine) 1A lineaarse pinge regulaatoril.
- Sekundaarne toiteahel põhineb LM2262MX IC-l, mis teostab alalis-alalisvoolu negatiivse pinge muundamise kondensaatori-laadimispumba kaudu-süsteem, millel IC põhineb.
Lainekuju generaatorite süsteem
Süsteem on välja töötatud rõhuasetusega eraldi DDS (otsene digitaalsüntees) integraallülitustele, mis võimaldavad täielikku lainekuju genereerimist MCU SPI (jada perifeerne liides) abil. Projekteerimisel kasutatud ahelad on analoogseadmed AD9834, mis võivad pakkuda erinevat tüüpi lainekuju. Väljakutsed, millega peame AD9834 -ga töötades silmitsi seisma, on järgmised:
- Fikseeritud lainekuju amplituud: Lainekuju amplituudi juhib väline DAC -moodul
- Ei arvestata alalisvoolu nivooga: summeerimisahelate rakendamine soovitud alalisvoolu nihke väärtustega
- Eraldi väljundid ruutlaine ja kolmnurga/siinuslaine jaoks: Kõrgsagedusliku lülitusahela rakendamine, nii et iga kanali üks väljund võib pakkuda kõiki soovitud lainekuju: siinus, kolmnurk, ruut ja alalisvool.
Vedelkristallekraan
LCD on kasutajaliidese osa ja selle eesmärk on võimaldada kasutajal mõista, mida seade reaalajas teeb. See suhtleb kasutajaga igas seadme olekus.
Sumin
Lihtne toonigeneraator, mis annab lisateavet seadmest kasutajale.
Integreeritud ISP programmeerija
Programmeerimisprotsessis on iga inseneri jaoks jätkuv probleem: alati on kõige hullem vajadus toode lahti võtta, et see uue püsivaraga ümber programmeerida. Nende ebamugavuste ületamiseks ühendati AVR ISP programmeerija seadmega seestpoolt, samas kui USB-andmed ja toiteliinid on seotud seadme A-tüüpi USB-pistikuga. Selles konfiguratsioonis peame lihtsalt programmeerimiseks või laadimiseks ühendama oma FuncGeni USB -kaabli kaudu!
2. samm: plokkskeem - võrgustike loomine
Kahe kanaliga funktsioonigeneraator
Peamine seade. See, mille oleme eelmises etapis üle vaadanud
ESP-WROOM-32
Integreeritud süsteem-kiip WiFi ja BLE võimalustega. SoC on kinnitatud emaplaadile (käsitleme seda skemaatilises etapis) UART -mooduli kaudu ja toimib sõnumite saatjana põhiseadme ja Android -nutitelefoni vahel.
WiFi kohalik võrk
Nutitelefon ja seade suhtlevad TCP -serveri/kliendi konfiguratsiooni alusel otse WiFi või kohtvõrgu kaudu. Kui seadmed tunnevad WiFi -s üksteist ära, loob põhiseade sobivate parameetritega TCP -serveri ja suudab sõnumeid saata/vastu võtta. Seade toimib nutitelefoni teisejärgulisena. Teisest küljest ühendab Android -seade TCP -serveriga kliendivõrguseadmena, kuid seda peetakse esmaseks sõnumi saatjaks - nutitelefon on see, kes algatab täieliku suhtlustsükli: sõnumi saatmine - vastuse saamine.
Android nutitelefon
Android -operatsioonisüsteemil põhinev nutitelefon, mis töötab FuncGeni rakenduses
3. samm: osad, tööriistad, IDE ja materjalide arve
Materjalide arve (vt lisatud XLS -tabelit)
Kasutajaliides ja süsteemiühendused
- 1 x 2004A Char-LCD 20x4 sinine
- 1 x USB -tüüpi B -pistik
- 1 x 10 komplekt Mini Micro JST XH 2,54 mm 4 tihvti
- 1 x 6tk hetke SW
PCB tellimine (vastavalt Seeed Studio andmetele)
Alusmaterjal FR-4
Kihtide arv 2 kihti
PCB kogus 10
Erinevate kujunduste arv 1
PCB paksus 1,6 mm
PCB värv Sinine
Pinnaviimistlus HASL
Minimaalne jootmismaski tamm 0,4 mm ↑
Vase kaal 1 oz
Minimaalne puuraugu suurus 0,3 mm
Jälje laius / vahe 6/6 milj
Plaaditud poolavad / kastellitud augud nr
Impedantsi kontroll nr
Tööriistad
- Kuum liimipüstol
- Pintsetid
- Lõikur
- ~ 22AWG juhe tõrgete käsitlemiseks
- Jootekolb/jaam
- Jootmisvorm
- SMD ümbertöötlusjaam (valikuline)
- 3D -printer (valikuline)
- Ekstrudeeriv fail
- AVR ISP programmeerija
- USB -jadamuundur (valikuline, silumiseks)
Integreeritud arenduskeskkond (IDE) ja tarkvara
- Autodesk EAGLE või Cadence Schematic Editor / Allegro PCB Editor
- OpenSCAD (valikuline)
- Ultimaker Cura (valikuline)
- Saleae Logic (tõrkeotsinguks)
- Atmel Studio 6.3 või uuem
- Android Studio või Eclipse IDE
- Docklight Serial Monitor / muu COM -pordi jälgimistarkvara
- ProgISP AVR ATMEGA32L välgu programmeerimiseks
4. samm: riistvara disain - põhiplaat
Aku juhtimisahel
Aku laadimisahel põhineb MCP7383 IC -l, mis võimaldab meil valida soovitud laadimisvoolu Li -Ion aku jaoks - 3,7 V mahuga 850 mAh. Laadimisvool seadistatakse meie puhul takisti väärtuse (R1) programmeerimisega
R1 = 3KOhm, I (laeng) = 400mA
USB-pinge VBUS filtreeritakse π-filtri (C1, L3, C3) abil ja toimib laadimisahela toiteallikana.
Pingejaotusahel (R2, R3) võimaldab MCU -l näidata, kas väline USB -toiteallikas on ühendatud või mitte, pakkudes MCU A/D kanalile järgmist pinget:
V (näidik) ~ (2/3) V (BUS)
Kuna meie ATMEGA32L A/D on 12-bitine, saame arvutada digitaalse vahemiku:
A / D (vahemik) = 4095 V (näidik) / V (viide).
A/D ∈ [14AH: FFFH]
Smart Switch toiteplokk
Vooluring võimaldab süsteemil juhtida iga kavandatud ploki toiteallikat nii nuppude kui ka MCU tarkvara abil ning põhineb STM6601 Smart-Switchil, millel on POWER, mitte RESET. Terminalid, mida tahame kaaluda, on järgmised:
- PSHOLD - sisendliin, mis määrab seadme oleku: kui seda tõmmatakse LOW, lülitab seade välja kõik sekundaarsed toiteplokid (+3,3 V ja -3,3 V). Kui hoiate HIGH - seade hoiab olekut ON.
- nSR ja nPB - sisendliinid. Nuppude klemmid. Kui nendel tihvtidel tuvastatakse langev serv, proovib seade siseneda toite üles / alla režiimi
- nINT - väljundliin. Tõmmatakse LOW iga kord, kui vajutate nuppu
- ET - Väljundliin, kasutatakse sekundaarsete toiteallikate toiteallikana. Kui seda hoitakse madalal, on mõlemad sekundaarsed toiteallikad välja lülitatud
Enne lõpliku kujunduse juurde asumist on mõned olulised märkused:
- PSHOLD tuleks tõmmata kuni 3,3 V-ni, sest on juhtumeid, kus MCU-d sunnivad kõik sisend-/väljundid olema HIGH-Z olekus. Sel juhul pole MCU PSHOLD -i olek teada ja see võib seadme programmeerimisprotsessi dramaatiliselt mõjutada.
- STM6601 tuleks tellida EN -reguleerimisvalikuga pikal vajutamisel, mitte RESET -valiku asemel (olen sellesse langenud).
Toiteplokk: +3.3V
Põhitoiteallikas kõigi meie projekti süsteemide jaoks. Kui +3,3 V liini hoitakse GND tasemel (st pinget pole), on kõik IC välja arvatud nutikas lüliti keelatud. Vooluahel põhineb LDO LP-3875-3.3 IC, mida saab juhtida EN-terminali kaudu ja pakkuda voolu kuni 1A.
Selle vooluahela toiteallikaks on aku pinge, millele on lisatud A/D indikaator VBAT -i tuvastamiseks konfiguratsioonis, sarnaselt VBUS -ahelaga. Sellisel juhul erinevad arvutused veidi;
V (Aku-A/D) = 0,59 V (aku); A/D (vahemik) ∈ [000H: C03H]
Toiteplokk: -3.3V
Negatiivse pinge toiteahel võimaldab meil luua sümmeetrilisi lainekuju, mille alalisvoolu tegur on 0 V (st lainekuju keskmine väärtus võib olla 0 V). See vooluring põhineb LM2662MX IC - DC/DC muunduril, mis töötab "laadimispumba" meetodil. Vooluahela maksimaalne väljundvool on 200mA, mis on meie disaininõuetele piisav - oleme piiratud 80mA väljundvooluga iga seadme kanalist.
IC täidab kõiki vajalikke töid, nii et ainult osad, mida peame kinnitama, on kaks elektrolüütkondensaatorit: C33 lülitamiseks ja C34 -3,3 V liini ümbersõit (müra vähendamise kaalutlused). Lülitamise sagedus on konstruktsioonis tühine, kui paigutame vooluahela lainekuju genereerivatest osadest piisavalt kaugele (arutame seda PCB paigutuse etapis).
Mikrokontroller - MCU
See on meie süsteemi haldur ja tegevjuht - juhtimine, võrgutöötlus, sõnumiedastus ja kasutajaliidese tugi - kõik on MCU poolt.
Valitud MCU on Atmel ATMEGA32L, kus L tähistab toetatud pingetööd ∈ [2.7V: 5.5V]. Meie puhul on tööpinge +3,3 V.
Mõelgem põhilistele tööplokkidele, mida on vaja mõista, töötades MCU -ga meie disainis:
- Väline ostsillaator - on valikuline komponent, kuna oleme huvitatud 8MHz töösagedusest
-
Perifeerne juhtimine, SPI -võrk - kõik välisseadmed (välja arvatud ESP32) suhtlevad MCU -ga SPI kaudu. Kõigi seadmete (SCK, MOSI, MISO) jaoks on kolm jagatud liini ja igal välisseadmel on oma CS (Chip Select) liin. Seadme osaks olevad SPI -seadmed:
- D/A amplituudi juhtimiseks - kanal A
- D/A amplituudi juhtimiseks - kanal B
- AD9834 seade - kanal A
- AD9834 seade - kanal B
- D/A eelpinge juhtimiseks - kanal A
- D/A eelpinge juhtimiseks - kanal B
- Digitaalne potentsiomeeter LCD heleduse/kontrastsuse seadistamiseks
- LCD tugi - kuna LCD on üldine 20 x 4 tähemärgiga ekraan, kasutame 4 -bitist liidest (read D7: D4), juhtnuppe (read RS, E) ja heleduse/kontrastsuse juhtimist (read V0 ja anood)
- RGB LED -tugi - see moodul on valikuline, kuid MCU -ga on ühendatud tavaline katoodiga RGB LED -pistik koos vastavate takistitega.
-
Toitejuhtimine - MCU jälgib reaalajas režiimis toitesüsteemi ja tegeleb kõigi vajalike toitesündmustega:
- VBAT_ADC - aku pinge jälgimine ja oleku määramine (ADC0 kanal)
- PWR_IND - Välise toiteühenduse märge (ADC1 kanal)
- PS_HOLD - esmane toiteallikas kõigi määratletud süsteemide jaoks. Kui MCU tõmbab madalale, lülitatakse seade välja
- Nutika lüliti katkestusklemm - nuppude oleku jälgimine
- WiFi võrguhaldus - ESP32: MCU suhtleb ESP32 -ga UART -liidese kaudu. Kuna 8MHz võimaldab meil suhteliselt väikese veaga rakendada andmeedastuskiirust 115200, saame kasutada vooluahelas ESP32 ilma edastuskiiruse muutuste eelmääratlemiseta.
AVR ISP programmeerija
Meie MCU on programmeeritud SPI kaudu ja lähtestusjoon (/RST) tuleb nõuetekohaseks toimimiseks KÕRGE tõmmata (kui mitte - MCU leiab end igaveseks lähtestamise olekusse).
Seadme programmeerimiseks ja USB kaudu laadimiseks olen lisanud AVR ISP programmeerija (väikese suurusega toode, ostetud eBayst). Seadme täieliku USB toe säilitamiseks on vaja siduda A-tüüpi USB (D+, D-, VBUS ja GND) terminalid AVR ISP seadmega.
Lainekuju genereerimise ahel
Seadme tuum on need ahelad. AD9834 on väikese võimsusega DDS-seade, mis pakub meile kõiki lainekuju, mida tahaksime süsteemist alla laadida. Vooluahelad sisaldavad kahte sõltumatut AD9834 IC -d, millel on eraldatud välised 50 MHz ostsillaatorid (nagu on näha skeemidel). Eraldatud ostsillaatori põhjuseks on digitaalsete vooluahelate müra vähendamise kaalutlused, mistõttu otsustati käsitleda korralikke 50MHz liine, mille ostsillaatorid olid paigutatud AD9834 kõrvale.
Nüüd vaatame natuke matemaatikat:
Kuna DDS-seade töötab Phase Wheel-tehnoloogiaga, mille väljundväärtus on 28-bitises registris, saame lainekuju genereerimist kirjeldada matemaatiliselt:
dP (faas) = ωdt; ω = P '= 2πf; f (AD9834) = ΔP * f (clk) / 2^28; ΔP ∈ [0: 2^28 - 1]
Ja vastavalt AD9834 andmelehele, võttes arvesse maksimaalset sagedust, võib saada väljundsageduse eraldusvõime:
Δf = k * f (ostsillaator) / f (maksimaalne) = 0,28 * 50M / 28M = 0,187 [Hz]
AD9834 IC -d pakuvad analoogvoolu väljundit kolmnurga/siinuslaine jaoks (IOUT -terminal) ja digitaalset väljundit ruutlaine jaoks (terminal SIGN_OUT). Märgibiti kasutamine on natuke keeruline, kuid saame sellega hakkama - iga kord, kui DDS ületab võrdlusväärtuse läve, käitub SIGN_OUT vastavalt. Iga kanali väljundile on kinnitatud 200 Ohmi takisti, nii et väljundpingel oleks olulised väärtused:
I (ühe kanaliga) = V (väljund) / R (pinge valik); V (väljund) = R (VS)*I (SS) = 200I (SS) [A]
Amplituudi juhtimise (D/A) ahelad
Vastavalt AD9834 andmelehele saab selle amplituudi reguleerida, andes voolu DDS täisskaala süsteemile, nii et kahekordse D/A IC abil saame väljundsignaali amplituudi reguleerida, reguleerides seda voolu. Taaskord natuke matemaatikat:
I (täisskaala) = 18 * (V_REF - V_DAC) / R_SET [A]
Skeemide kohaselt ja mõned numbrid võrrandisse pannes:
I (täisskaala) = 3,86 - 1,17 * V_DAC [A]
Disainis kasutatav D/A moodul on 12-bitine MCP4922, kui vool on vahemikus [0mA: 3,86mA] ja lineaarse amplituudi funktsioon on:
V (amplituudi valimine) = 1 - [V (D / A) / (2^12 - 1)]
Lainekuju multipleksimisahel
Ruutlaine ja siinuse/kolmnurga laine genereerimise väljundid on eraldatud aadressil AD9834, seega peame mõlema väljundi jaoks kasutama kiiret multipleksimisahelat, et võimaldada kõigi soovitud lainekuju hankimist ühest eraldatud kanalist. Multiplekseri IC on ADG836L analooglüliti, millel on väga madal takistus (~ 0,5 Ohm).
Valikutabel, mida MCU kasutab väljundite jaoks sellisena:
Režiimi valik [D2: D1] | Väljundkanal A | Väljundkanal B
00 | Siinus/kolmnurk | Siinus/kolmnurk 01 | Siinus/kolmnurk | Ruut 10 | Ruut | Siinus/kolmnurk 11 | Ruut | Ruut
Bias Voltage Control (D/A) ahelad
Lainekuju generaatori üks peamisi omadusi on selle alalisvoolu väärtuse juhtimine. Selles konstruktsioonis tehakse seda, seades iga kanali jaoks soovitud D/A pinge ja need eelpinged summeeritakse multipleksitud väljunditega, mida oleme veidi varem arutanud.
D/A-st saadud pinge on vahemikus [0V: +3,3 V], seega on olemas op-amp-põhine vooluahel, mis kaardistab D/A vahemiku [-3,3 V: +3,3 V], võimaldades seadmel pakkuda täielikku vahemikku soovitud alalisvoolu komponendist. Jätame tüütu analüütilise matemaatika vahele ja keskendume ainult lõpptulemustele:
V_OUT (kanal B) = V_BIAS_B (+) - V_BIAS_B (-); V_OUT (kanal A) = V_BIAS_A (+) - V_BIAS_A (-)
Nüüd on alalisvoolu komponentide vahemik vahemikus [-3,3 V: +3,3 V].
Kokkuvõtlikud ahelad - alalisvoolu komponendid ja lainekuju väljundid
Praegu on meil kõik, mida vajame seadme õigeks väljundiks - eelpinge (alalisvoolukomponent) kogu pingevahemikus ja multipleksitud AD9834 väljundid. Selle saavutame, kasutades summeerimisvõimendit - op -amp konfiguratsiooni
Jätame nüüd matemaatika vahele (oleme juba palju matemaatilist lähenemist käsitlenud) ja kirjutame kokku võimendi väljundi lõpptulemuse:
V (seadme väljund) = V (positiivne eelarvamus) - V (negatiivne eelarvamus) - V (multipleksitud väljund) [V]
Seega:
V_OUT = ΔV_BIAS - V_AD9834 [V]
BNC tüüpi väljundühendused on ühendatud valiktakistustega (R54, R55; R56, R57). Selle põhjuseks on asjaolu, et juhul, kui disain võib olla düsfunktsionaalne, saame siiski valida, kas soovime kasutada summeerimisvõimendit.
Oluline märkus: lõpliku summeerimisvõimendi takisti võrke saab disainer reguleerida, et muuta seadmest maksimaalset amplituudi. Minu puhul on kõigil võimenditel sama võimendus = 1, seega on maksimaalne puhverdatud amplituud kolmnurga/siinuslaine korral 0,7 Vpp ja ruutlaine korral 3,3 Vpp. Konkreetse matemaatilise lähenemisviisi leiate sammu lisatud piltide hulgast.
ESP32 välismoodulina
MCU suhtleb ESP32 -ga UART -liidese kaudu. Kuna soovisin ESP32 jaoks oma PCB -d, on ühendamiseks saadaval 4 terminali: VCC, RX, TX, GND. J7 on PCB -de vaheline liideseühendus ja ESP32 eraldatakse seadme sees välise moodulina.
Kasutajaliides - LCD ja kõlar
Kasutatud vedelkristallekraan on üldine 20 x 4 tähemärgiline 4 -bitise liidesega ekraan. Nagu disainist näha, on LCD -klemmide "A" ja "V0" külge kinnitatud SPI digitaalne potentsiomeeter - selle eesmärk on reguleerida LCD -mooduli heledus ja kontrastsus programmiliselt.
Kõlar pakub kasutajale heliväljundit lihtsa ruutlaine genereerimise kaudu MCU -st. BJT T1 juhib voolu läbi kõlari, mis võib olla kahes olekus - ON / OFF.
5. samm: riistvara disain - ESP32 moodul
ESP32 kasutatakse peamise PCB välismoodulina. Seadmeside põhineb AT -käskudel, mis on saadaval seadme üldises püsivaras.
Selle disaini osas pole palju laiendada, kuid disaini kohta on mõned märkused:
- ESP32 korraliku UART -mooduli kasutamise tõrgete käsitlemiseks olen lisanud kolm valiktakistust nii TX- kui ka RX -liinidele. (0Ohm iga). Standardkonfiguratsiooni jaoks kasutatakse AT -käskude jaoks UART2 moodulit (R4, R7 peab olema joodetud)
- Seadmel on 4 -realine väljund - VCC, GND, TX, RX.
- IO0 ja EN tihvtid hindavad seadme tööd ning need tuleks kavandada vastavalt skeemile
Kõiki PCB funktsioone käsitleme järgmises etapis.
6. samm: trükkplaatide paigutus
PCB kavandamise eesmärgid
- Looge sisseehitatud süsteem kõigi sama plaadi integraallülituste jaoks
- Parandage seadme jõudlust, kujundades ühe peamise trükkplaadi
- Kulude vähendamine - kui soovite hindu otsida, on odavad kujundused TÕESTI madalad
- Minimeerige elektroonilise plaadi suurus
- Lihtne tõrkeotsing - iga võimaliku rikke korral saame kasutada TP -sid (testpunkte).
Tehnilised parameetrid
Mõlemal PCB -l: põhi- ja ESP32 -plaadil on tootmisprotsessis samad omadused - odav ja meie eesmärkidel kasutatav. Vaatame neid:
A - põhiplaat
- Suurus: 10 cm x 5,8 cm
- Kihtide arv: 2
- PCB paksus: 1,6 mm
- Minimaalne jälgimisruum/laius: 6/6mil
- Minimaalne ava läbimõõt: 0,3 mm
- Vask PCB servani minimaalne kaugus: 20mil
- Pinnaviimistlus: HASL (päris hea välimusega hõbedane odav tüüp)
B - põhiplaat
- Suurus: 3 cm x 4 cm
- Kihtide arv: 2
- PCB paksus: 1,6 mm
- Minimaalne jälgimisruum/laius: 6/6mil
- Minimaalne ava läbimõõt: 0,3 mm
- Vask PCB servani minimaalne kaugus: 20mil
- Pinnaviimistlus: HASL
Samm 7: 3D -ümbris
Ma ei kujundanud seda ise, sest tol ajal veensin seda seadet tööle, nii et ma ei olnud üldse kursis kõigi 3D -printimise põhitõdedega. Seega olen kasutanud Thingiverse'i SCAD -projekti ja lisanud piiridele erinevad avad vastavalt oma seadme spetsifikatsioonidele.
- Trükiseade: Creality Ender-3
- Voodi tüüp: klaas, paksus 5 mm
- Hõõgniidi läbimõõt: 1,75 mm
- Hõõgniidi tüüp: PLA+
- Düüsi läbimõõt: 0,4 mm
- Esialgne kiirus: 20 mm/sek
- Keskmine kiirus: 65 mm/sek
- Toetus: puudub
- Täidis: 25%
-
Temperatuur:
- Voodi: 60 (oC)
- Düüs: 215 (oC)
- Hõõgniidi värv: must
- Avauste koguarv: 5
-
Korpusepaneelide arv: 4
- TOP Shell
- Alumine kest
- Esipaneel
- Tagapaneel
8. samm: tarkvara juurutamine - MCU
GitHubi link Androidile ja Atmega32 koodile
Tarkvara algoritm
Kõik toimingud, mida MCU teeb, on kirjeldatud lisatud vooskeemidel. Lisaks sellele on projektile lisatud kood. Vaatame tarkvara spetsifikatsioone:
Sisselülitamine
Selles etapis teostab MCU kõik initsialiseerimisjärjestused koos salvestatud sidetüübi määramisega Android -seadmega: Otsene WiFi või WLAN -võrgu side - need andmed salvestatakse EEPROM -i. Kasutaja saab selles etapis Android -seadme sidumistüübi uuesti määratleda.
Otsene Android -seadme sidumine
Seda tüüpi sidumine põhineb WiFi -võrgu loomisel FuncGen -seadme poolt. See loob AP (pääsupunkt) ja TCP -serveri kohaliku seadme IP -le, millel on konkreetne SSID (WiFi -võrgu nimi) ja konkreetne pordi number. Seade peaks hoidma olekut - ühenduste jaoks avatud.
Kui Android -seade on FuncGeniga ühendatud, lülitub MCU ACTIVE režiimi ja reageerib vastavalt Android -seadme kasutaja juhistele.
WLAN -i sidumine
Kohalikus WiFi -võrgus suhtlemiseks peaks MCU andma ESP32 -le käske AP -i loomiseks, Android -seadmega suhtlemiseks ja oluliste võrguandmete vahetamiseks:
- Android -seade võtab FuncGenilt vastu oma MAC -aadressi ja salvestab selle mällu.
- FuncGeni seade saab Android -seadme valitud WLAN -parameetritelt: SSID, turvatüüp ja parool ning salvestab selle EEPROM -is.
Kui seadmed on tõepoolest ühendatud sama WLAN -iga, otsib Android -seade FuncGeni, skannides kõik WLAN -iga ühendatud seadmete MAC -aadressid. Kui Android -seade määrab MAC -i vaste, proovib see suhelda.
Ühendus ja olekukäsitlus - MCU
Kui seadmed omavahel suhtlevad, jääb protokoll (vt viimast etappi) samaks ja vooskeem on sama.
Seadme oleku jälgimine
Ajastatud katkestus annab MCU -le oleku käsitlemiseks vajalikud üksikasjad. Iga taimeri katkestamise tsüklit värskendatakse järgmist parameetrite loendit:
- Väline toide - sisse/välja
- Aku pinge olek
- UI värskendus iga kohandamise jaoks
- Nupp: vajutatud/mitte vajutatud
9. samm: tarkvara juurutamine - Androidi rakendus
Androidi rakendus on kirjutatud Java-Androidi stiilis. Püüan seda selgitada samamoodi nagu eelnevaid samme - jagades algoritmi eraldi koodiplokkideks.
Sisselülitamise jada
Seadme esimene jada. Siin esitatakse rakenduse logo koos Android -seadme GPS -i ja WiFi -moodulite lubamisega (ärge muretsege, GPS on vajalik ainult WiFi -võrkude õigeks skannimiseks).
Peamenüü
Pärast rakenduse käivitamist ilmuvad ekraanile neli nuppu. Nuppude toiming:
- OTSE ÜHENDUS: FuncGeni AP -ga ühenduse loomine IOT_FUNCGEN SSID abil. Kui ühendus õnnestub, lülitub seade kasutajaliidese põhirežiimi.
- WIFI -ÜHENDUS: Seade kontrollib, kas mällu on salvestatud andmeparameetreid: wifi.txt, mac.txt. Kui andmeid pole salvestatud, lükkab seade kasutaja taotluse tagasi ja kuvab hüpikteate, et kõigepealt tuleb teha WLAN-i sidumine.
- PAARISTAMINE: FuncGeniga suhtlemine samamoodi nagu DIRECT CONNECTION, kuid pideva sõnumivahetuse asemel toimub üks käepigistus. Android -seade kontrollib, kas see on juba WiFi -võrguga ühendatud, ja palub kasutajal parooli sisestada. Kui uuesti ühendamine õnnestub, salvestab Android -seade SSID ja parooli wifi.txt -faili. Pärast edukat suhtlust FuncGeniga salvestab see vastuvõetud MAC -aadressi mac.txt -faili.
- Väljumine: Piisavalt öeldud:)
WiFi skaneerimise haldur
Tahtsin, et rakendus oleks täielikult töökorras ja ilma rakendusesiseste kohandusteta. Niisiis, olen loonud WiFi skanneri, mis teostab kõik vajalikud toimingud WiFi -võrguga ühenduse loomiseks teadaoleva parooli ja SSID -ga.
Andmeedastus ja TCP -side
See on rakenduse peamine koodiplokk. Kõigi kasutajaliidese üksuste jaoks on määratletud sõnum kindlas vormingus (viimane etapp), mis sunnib FuncGeni pakkuma kanalitele soovitud väljundit. Tegevuses on kolme tüüpi kasutajaliidese välju:
-
Otsinguribad: Siin määratleme FuncGeni väljundparameetrite reaulatuse
- Amplituud
- Alalisvoolu nihe
- LCD heledus
- LCD kontrast
- Teksti redigeerimine: selleks, et täisarvud oleksid täpselt määratletud ja täpsed, sisestatakse sagedus ainult numbrite tekstikastide kaudu
-
Nupud: parameetrite valik saadaolevatest loenditest:
-
Lainekuju tüüp
- Siinus
- Kolmnurk
- DC
- Ruut
- VÄLJAS
-
Hankige teavet
- Aku olek (protsent)
- Vahelduvvoolu olek (väline toiteallikas)
-
Alglaadimisvõimalus (FuncGen MCU jaoks)
- Tehase seadistus
- Taaskäivita
- Lülita välja
- Otsene - taaskäivitage otsese sidumisrežiimiga
- WLAN - taaskäivitage WLAN -i sidumisrežiimis
- Peamenüüst väljumine: piisavalt öeldud:)
-
10. samm: testimine
Soovitan:
Reaalajas graafiku joonistamine Androidis Arduino kaudu HC-05: 3 sammu
Reaalajas graafiku joonistamine Androidis Arduino kaudu HC-05: Hei, siin on õpetus, kuidas reaalajas graafikut väärtuste graafikust mikrokontrollerilt, näiteks Arduino, rakendusele joonistada. See kasutab Bluetooth-moodulit, näiteks HC-05, et toimida sõnumsidevahendina andmete edastamiseks ja vastuvõtmiseks Ar
Kuidas peatada Facebooki videote automaatne esitamine Androidis !!: 10 sammu
Kuidas peatada Facebooki Androidi videote automaatse esitamise eest !!: See juhend annab teile teada, kuidas peatada Facebooki Androidi seadmetes nii andmete kui ka wifi videote automaatne esitamine. Palun tellige minu kanalTänan
Naatriumtolmuandur Androidis: 6 sammu
Sodiaaltolmu andur Androidis: aasta tagasi oli mu sõbral nädalavahetusel keskkonnaseire teemaline töötuba. Töötoa eesmärk oli ehitada vaarikaplaadiga ühendatud tolmuandur, et panna mõõtmisandmed mõnele serverile, mis pakkus sageli uuendatavat tolmu
Arduino kaasaskantav funktsioonigeneraator: 7 sammu (piltidega)
Arduino kaasaskantav funktsioonigeneraator: Funktsioonigeneraator on väga kasulik tööriist, eriti kui kaalume oma vooluahela reageerimist teatud signaalile. Selles juhendis kirjeldan väikese, hõlpsasti kasutatava kaasaskantava funktsioonigeneraatori ehitusjärjestust. Omadused
Como Hacer ja Guante Con Sensores Flex Y Conexión Androidis: 9 sammu
Como Hacer Un Guante Con Sensores Flex Y Conexión Androidi jaoks: El objetivo de este proyecto es crear and system de entrada para dispositivos m ó viles, que est á selle õpetuse inglise keeles vaatamiseks klõpsake siin: ht