- ESP32 yhdistää tehokkaan suorittimen, Wi-Fi:n, Bluetoothin ja lukuisia oheislaitteita yhteen edulliseen SoC-piiriin.
- Sen erittäin monimutkainen pinnien kytkentä mahdollistaa jopa 34 GPIO:n käytön ADC-, DAC-, PWM-, kosketus- ja RTC-toiminnoilla.
- Saatavilla on useita tuoteperheitä (WROOM, WROVER, S2, S3, C3, C6, CAM), jotka on mukautettu erityyppisiin projekteihin.
- Se voidaan ohjelmoida Arduinolla, ESP-IDF:llä tai MicroPythonilla, ja se kattaa kaiken yksinkertaisista prototyypeistä ammattimaisiin tuotteisiin.
Jos työskentelet esineiden internetin, kodin automaation tai automaatiojärjestelmien parissa , törmäät ennemmin tai myöhemmin ESP32:een. Ja kun alat etsiä tietoa, on helppo päätyä entistä hämmentyneemmäksi kuin aloittaessasi: nastat täällä, mallit tuolla, virransäästötilat, WiFi, Bluetooth, kamerat, PSRAM… Se vaikuttaa kaoottiselta, mutta todellisuudessa se on erittäin yhtenäinen alusta, jos sen ymmärtää rauhallisesti.
Tässä artikkelissa löydät kattavan ja hyvin jäsennellyn yleiskatsauksen ESP32:sta : mikä se tarkalleen ottaen on, mitä se pystyy tekemään laitteistotasolla, miten sen nastat ja erikoistoiminnot on järjestetty, mitä piiriperheitä on olemassa, miten ne eroavat toisistaan, mitkä piirilevyt ovat yleisimpiä, milloin kukin sopii parhaiten tarpeisiisi ja miten ohjelmointi aloitetaan käytännössä. Tavoitteena on, että saat selkeän kuvan ESP32-ekosysteemistä ja tiedät, miten valita ja käyttää oikeaa piirilevyä ilman pelkoa virheiden tekemisestä.
Mikä on ESP32 ja miksi siitä on tullut niin suosittu?
ESP32 on Espressif Systemsin kehittämä edullinen, vähän virtaa kuluttava 32-bittinen järjestelmäpiiri (SoC) . Se yhdistää tehokkaan mikroprosessorin, Wi-Fin, Bluetoothin (sekä tavallisen että BLE:n), muistin, analogia-digitaalimuuntimet ja laajan valikoiman oheislaitteita yhdelle sirulle. Tämä tekee siitä eräänlaisen "veitsen" verkottuneille projekteille.
Klassisissa varianteissa käytetään kaksiytimistä Xtensa LX6 -mikroprosessoria , joka toimii tyypillisesti 160 tai 240 MHz:n taajuudella ja saavuttaa jopa 600 DMIPS:n suorituskyvyn. Uudemmat tuoteperheet (kuten ESP32-C3 tai C6) käyttävät vähän virtaa kuluttavia RISC-V-ytimiä, kun taas toiset, kuten S2/S3, ovat nähneet parannuksia muistissa, virrankulutuksessa ja kevyissä tekoälyominaisuuksissa.
Yksi ESP32:n keskeisistä ominaisuuksista on, että se integroi WiFi 802.11 b/g/n:n ja Bluetoothin (BR/EDR ja BLE) samalle piisirulle ja jakaa radion. Tämä poistaa ulkoisten liitäntämoduulien tarpeen, säästää tilaa piirilevyllä ja vähentää kustannuksia. Tämän seurauksena siitä on tullut tosiasiallinen standardi kodin automaatioprojekteille, kytketyille antureille, automaatiojärjestelmille ja kaupallisille prototyypeille.
Prosessorin ja radion lisäksi ESP32 integroi 520 KiB SRAM- ja ROM-muistia suoraan SoC:iin sekä ohjaimia ulkoisen flash-muistin hallintaan SPI:n kautta. Kaupalliset moduulit (kuten WROOM tai WROVER) sisältävät tyypillisesti 4–16 Mt integroitua flash-muistia, ja jotkut lisäävät ulkoisen PSRAM-muistin vaativampia sovelluksia (grafiikka, kamerat, tekoäly jne.) varten.
Sisäinen arkkitehtuuri, muisti ja energianhallinta
Sisäisessä arkkitehtuurissaan ESP32 yhdistää yhden tai kaksi Xtensa LX6/LX7- tai RISC-V-pääydintä erittäin vähän virtaa kuluttavaan (ULP) apuprosessoriin . Tämä apuprosessori on suunniteltu suorittamaan pieniä tehtäviä virransäästötiloissa, kuten lukemaan antureita säännöllisesti, kun muu siru on lepotilassa akun säästämiseksi.
Muisti on jaettu useisiin osiin: prosessorin käyttämän 520 KiB:n SRAM-päämuistin lisäksi sirulla on nopea RTC RAM -alue (noin 8 kB) ja hidas RTC RAM -alue (noin toiset 8 kB). Nopea RTC RAM -muisti mahdollistaa tietojen säilyttämisen syvän lepotilan aikana, joten heräämisen jälkeen asetukset tai tilat voidaan palauttaa ilman, että kaikkea tarvitsee laskea uudelleen.
Tallennustilan osalta tyypillinen suunnittelu perustuu SPI-kytkettyyn flash-muistiin, johon laiteohjelmisto ja muut pysyvät tiedot tallennetaan. Monissa ESP32 WROOM -moduuleissa on 4 Mt flash-muistia, kun taas edistyneemmissä tai kamerakeskeisissä versioissa (ESP32-WROVER, ESP32-S3 PSRAM-muistilla jne.) sitä voi olla 8, 16 Mt tai enemmän.
Virranhallinta on yksi alustan vahvuuksista. Sirussa on sisäinen virrankatkaisun säädin (LDO) , erilaisia virrankäyttöalueita ja erilaisia virransäästötiloja. Syvässä lepotilassa kulutus voi laskea noin 5 μA:iin, ja se herää GPIO:n, ajastimen, kosketusanturin tai ADC-mittausten kautta riippuen siitä, miten RTC- ja ULP-apuprosessori on konfiguroitu.
Turvallisuuden osalta ESP32 tukee kaikkia IEEE 802.11 -standardin mukaisia ominaisuuksia (WPA, WPA2, WPA3 uudemmissa versioissa, WAPI) ja tarjoaa turvalliset käynnistysmekanismit ja flash-salauksen . Se integroi myös laitteistokiihdyttimet AES:lle, SHA-2:lle, RSA:lle, ECC:lle ja satunnaislukugeneraattorin (RNG) sekä 1024-bittisen OTP-alueen, johon voidaan tallentaa muuttumattomia avaimia ja parametreja.
ESP32-pinnitys ja toiminnallisuus multipleksoinnissa
Yksi silmiinpistävimmistä asioista, kun kohtaat ESP32 DevKitC:n tai vastaavan ensimmäistä kertaa, on nastojen ja vaihtoehtoisten toimintojen määrä . Sirulla voi olla jopa 34 GPIO-nastaa, mutta monet niistä on multipleksoitu muiden sisäisten oheislaitteiden kanssa tai varattu tiettyihin tarkoituksiin.
Pinnien multipleksointi on ESP32:n keskeinen ominaisuus. Useimmat sisäiset signaalit (UART, I2C, SPI, PWM jne.) voidaan reitittää lähes mihin tahansa GPIO:hon konfiguroimalla sirun pinnimatriisi ilman havaittavaa suorituskyvyn heikkenemistä. Piirilevyillä näkyvät pinnien kytkennät ovat oletusasetuksia, mutta toimintoja voi yleensä määrittää uudelleen tarvittaessa.
Projektia suunniteltaessa on tärkeää pitää mielessä, että joillakin nastoilla on erityisrajoituksia : joitakin käytetään käynnistyksen aikana (pinnien kytkeminen), toiset on kytketty SPI-flash-muistiin ja jotkut liittyvät virheenkorjausliitäntöihin, kuten JTAG. Jos niitä käytetään väärin, järjestelmä ei välttämättä käynnisty tai siitä voi tulla epävakaa.
ESP32 DevKitC- tai NodeMCU-32S-kehityskorttien pinnien läpi kulkee kaksi liitinriviä. Vaikka valmistajat saattavat noudattaa hieman erilaista asettelua, niillä on yleensä sama GPIO-numerointi ja useimmat toiminnot, joten pinnikytkentäkaaviot ja -taulukot ovat siirrettävissä kortilta toiselle.
Erikoisnastat: vannekiinnitys, vain syöttö, RTC ja tuntoaistin
GPIO-pinniston sisällä on joukko käynnistyskonfiguraatiopinnejä, jotka tunnetaan myös nimellä kiinnityspinni . Näitä käytetään määrittämään piirin käynnistymistapa, tiettyjen sisäisten komponenttien jännite ja joitakin SPI-flash-muistin parametreja. Nämä nastat luetaan järjestelmän nollauksen aikana, ja niiden looginen taso lukitaan seuraavaan nollaukseen tai virrankatkaisuun asti.
Yleisiä ESP32:n liitäntänastoja ovat GPIO0, GPIO2, GPIO4, GPIO5, GPIO12 ja GPIO15 . Esimerkiksi GPIO0:n on oltava matalalla, jotta se siirtyy lataustilaan; GPIO2:ta ei saa pakottaa korkeaksi käynnistyksen aikana; GPIO5:ssä ja GPIO15:ssä on tyypillisesti ylösvetovastukset oikeiden tilojen varmistamiseksi; ja GPIO12 osallistuu tiettyjen muistien jännitteen valintaan. Vaikka näitä nastoja voidaan käyttää uudelleen piireissäsi, on parasta olla ylikuormittamatta niitä tai käyttää piirejä, joiden taso muuttuu käynnistyksen aikana.
On myös pieni ryhmä nastoja, jotka ovat vain digitaalisia ja/tai analogisia tuloja ; eli niitä ei voida käyttää lähtöinä: GPIO34, GPIO35, GPIO36 ja GPIO39. Lisäksi, toisin kuin muissa GPIO-liitännöissä, näissä ei ole sisäisiä ylös- tai alasvetovastuksia, joten ne on lisättävä ulkoisesti, jos niiden tasoa halutaan vakauttaa.
Jotkin GPIO-piirit on kytketty pienitehoiseen RTC-alijärjestelmään, ja niitä kutsutaan RTC GPIO -piireiksi . Näihin kuuluvat yhdistelmät, kuten RTC_GPIO0-GPIO36, RTC_GPIO3-GPIO39, RTC_GPIO4-GPIO34, RTC_GPIO5-GPIO35, RTC_GPIO6-GPIO25, RTC_GPIO7-GPIO26, RTC_GPIO8-GPIO33, RTC_GPIO9-GPIO32, RTC_GPIO10-GPIO4, RTC_GPIO11-GPIO0, RTC_GPIO12-GPIO2, RTC_GPIO13-GPIO15, RTC_GPIO14-GPIO13, RTC_GPIO15-GPIO12, RTC_GPIO16-GPIO14 ja RTC_GPIO17-GPIO27. Näiden pinnien avulla voidaan muun muassa herättää siru syvästä lepotilasta ULP-apuprosessorin tai pienitehoisten keskeytyslähteiden avulla.
Lisäksi ESP32 integroi 10 kapasitiivista kosketusanturia, jotka on liitetty tiettyihin GPIO-nastoihin: TOUCH0 (GPIO4), TOUCH1 (GPIO0), TOUCH2 (GPIO2), TOUCH3 (GPIO15), TOUCH4 (GPIO13), TOUCH5 (GPIO12), TOUCH6 (GPIO14), TOUCH7 (GPIO27), TOUCH8 (GPIO33) ja TOUCH9 (GPIO32). Kun kapasitiivinen kuorma (esimerkiksi sormi) lähestyy näitä nastoja, siru havaitsee kapasitanssin muutoksen, jolloin sitä voidaan käyttää kosketuspainikkeisiin, liukusäätimiin tai läheisyysanturiin ilman lisäkomponentteja.
Lopuksi on mainittava EN (Enable) -nasta , joka ohjaa moduulin sisäistä 3,3 V:n säädintä. Siinä on tyypillisesti 3,3 V:n ylösvetovastus, ja sen vetäminen matalalle poistaa säätimen käytöstä, mikä käytännössä nollaa tai sammuttaa ESP32:n. Monissa sovelluksessa tätä nastaa käytetään globaalina nollauksena.
GPIO, keskeytykset ja analogiatoiminnot (ADC, DAC, PWM)
Yleisesti ottaen ESP32 tarjoaa jopa 34 GPIO-nastaa, jotka voidaan konfiguroida digitaalisiksi tuloiksi tai lähtöiksi, ja useimpiin niistä voidaan ottaa käyttöön sisäiset ylös- tai alasvetovastukset. Lähes kaikki nämä nastat voidaan konfiguroida keskeytyslähteiksi, mikä yksinkertaistaa huomattavasti tapahtumareaktiivisten järjestelmien (painikkeet, anturit, ilmaisimet jne.) suunnittelua.
Analogiaosa on varsin kattava: ESP32 sisältää kaksi 12-bittistä SAR-AD-muunninta , jotka tarjoavat jopa 18 tulokanavaa. Kanavat on jaettu ADC1:een (8 kanavaa) ja ADC2:een (10 kanavaa). Tyypillinen syöttöjärjestys on seuraava: ADC1_CH0-GPIO36, ADC1_CH1-GPIO37, ADC1_CH2-GPIO38, ADC1_CH3-GPIO39, ADC1_CH4-GPIO32, ADC1_CH5-GPIO33, ADC1_CH6-GPIO34, ADC1_CH7-GPIO35; ja ADC2_CH0-GPIO4, ADC2_CH1-GPIO0, ADC2_CH2-GPIO2, ADC2_CH3-GPIO15, ADC2_CH4-GPIO13, ADC2_CH5-GPIO12, ADC2_CH6-GPIO14, ADC2_CH7-GPIO27, ADC2_CH8-GPIO25 ja ADC2_CH9-GPIO26.
Jos käytät aktiivista Wi-Fi- tai Bluetooth-yhteyttä, on tärkeä yksityiskohta: ADC2 ei ole käytettävissä radion ollessa käytössä . Näissä tapauksissa analogisten lukemien saamiseksi sinun on käytettävä ADC1-kanavia, joita voidaan käyttää ilman, että yhteyksiä rajoitetaan. 12-bittinen resoluutio antaa sinulle 4096 tasoa (0-4095), mikä tyypillisellä 0-3,3 V:n alueella tarkoittaa noin 0,8 mV:n askelia.
Analogisten lähtösignaalien generointia varten ESP32 sisältää kaksi 8-bittistä DA-muunninta , jotka on kytketty GPIO25:een (DAC1) ja GPIO26:een (DAC2). Näiden muuntimien avulla voit muuntaa digitaalisen arvon välillä 0–255 analogiseksi jännitteeksi välillä 0–3,3 V, mikä on hyödyllistä yksinkertaisten aaltomuotojen, jännitereferenssien, perusäänen tai signaalimoduloinnin generoinnissa ilman ulkoisia siruja.
PWM-kentässä kortilla on 16 ohjelmoitavaa PWM-kanavaa, joita hallinnoi erillinen ohjain. Mikä tahansa PWM-kanava voidaan yhdistää eri GPIO-nastoihin, ja sekä taajuutta että käyttösuhdetta voidaan säätää. Se sopii erinomaisesti LEDien (mukaan lukien himmennys), servojen, tasavirtamoottoreiden ja yleisesti ottaen minkä tahansa säädettävää PWM-signaalia vaativan kuorman ohjaamiseen.
Viestintäliitännät: UART, I2C, SPI ja muut
ESP32 erottuu myös monipuolisten integroitujen liitäntöjensä ansiosta. Sarjaportilla siinä on kolme laitteisto-UART-liitäntää: UART0, UART1 ja UART2 , jotka pystyvät toimimaan asynkronisissa tiloissa (kuten RS232 ja RS485) ja jopa IrDA:n kautta jopa 5 Mbps:n nopeudella. Useimmissa kehityslevyissä UART0-nastat on kytketty USB-sarjamuuntimeen ja niitä käytetään ohjelmointiin ja virheenkorjaukseen, joten niitä ei kannata käyttää uudelleen lopullisissa projekteissa, ellet ole perehtynyt prosessiin kovin hyvin.
UART1 on yleensä varattu integroidulle SPI-flash-muistille , erityisesti moduuleissa, kuten ESP32-S3, tai versioissa, joissa on monimutkaisempi ulkoinen flash-muisti. Tästä syystä monet oppaat suosittelevat aina UART2:n käyttöä käyttäjän sarjaporttina, kun haluat liittää muita UART-laitteita (esimerkiksi GPS-moduuleja, muita mikrokontrollereita jne.).
I2C-väylän osalta ESP32 sisältää yhden tai kaksi I2C-ohjainta (tuoteperheestä riippuen) ja sallii oletusarvoisesti standardin I2C-väylän, jossa on SDA-nastat GPIO21:ssä ja SCL GPIO22:ssa . Kuten muidenkin oheislaitteiden kanssa, voit kuitenkin yhdistää SDA:n ja SCL:n muihin GPIO-liitäntöihin ohjelmistolla, esimerkiksi Arduinon `wire.begin(SDA, SCL)`-funktiolla. Voit liittää kymmeniä antureita ja laitteita yhteen I2C-väylään, kunhan ne noudattavat käytettävissä olevia osoitteita.
SPI:n osalta siru tarjoaa kolme SPI-väylää: SPI, HSPI ja VSPI . Perusväylää käytetään tyypillisesti sisäisesti sisäiselle flash-muistille, joten projekteissasi sinua kiinnostavat ensisijaisesti HSPI ja VSPI. Monet standardikirjastot käyttävät VSPI:tä oletuksena kommunikoidakseen näyttöjen, SD-kortinlukijoiden, ulkoisten radiomoduulien ja niin edelleen kanssa.
Sisäiseen SPI-flash-muistiin liittyy joukko erityisen herkkiä nastoja: GPIO6 (SCK/CLK), GPIO7 (SDO/SD0), GPIO8 (SDI/SD1), GPIO9 (SHD/SD2), GPIO10 (SWP/SD3) ja GPIO11 (CSC/CMD). Nämä nastat on varattu flash-muistin kanssa tapahtuvaan tiedonsiirtoon , eikä niitä tule käyttää piireissäsi; niiden kytkeminen ulkoisiin laitteisiin aiheuttaa usein kaatumisia, käynnistysvirheitä tai tietojen vioittumista.
UARTin, I2C:n ja SPI:n lisäksi ESP32 integroi I2S:n, CAN 2.0:n, Ethernet MAC:n, SD/SDIO-ohjaimet, TX/RX-infrapunaohjaimet, pulssilaskimet ja muita edistyneitä oheislaitteita. Tämä mahdollistaa sen esimerkiksi toiminnan verkkoyhdyskäytävänä, digitaalisen äänen toistamisen tai tallentamisen, kommunikoinnin teollisuusväylien kanssa tai toiminnan ohjaimena kehittyneemmille moottoreille ja enkoodereille.
ESP32-tuoteperheet ja -mallit: WROOM, WROVER, S2, S3, C3, C6 ja ESP32-CAM
Kun etsit ostettavaa ESP32:ta, esiin alkaa nopeasti tulla nimiä kuten WROOM, WROVER, S2, S3, C3, C6 tai ESP32-CAM . Ne eivät ole samoja, vaikka ne kaikki kuuluvatkin ESP32-ekosysteemiin. Toisaalta meillä on "puhdas" SoC-siru ja toisaalta moduulit ja kehityskortit, jotka integroivat sen muiden komponenttien kanssa.
" ESP32-moduuli " (esim. ESP32-WROOM-32 tai ESP32-WROVER) on suorakaiteen muotoinen metallilohko, joka sisältää sirun, flash-muistin, joskus PSRAM-muistin ja antennin. Nämä moduulit on suunniteltu juotettaviksi suoraan räätälöidyille piirilevyille. Monet valmistajat asentavat sitten niiden päälle " kehityskortteja " lisäämällä USB-portin, säätimiä, helppokäyttöisiä nastoja ja nollaus-/käynnistyspainikkeita, kuten DevKitC, NodeMCU-32S, LOLIN32 jne.
Siruperheiden sisällä meillä on muun muassa seuraavat päävariantit: klassinen ESP32- sarja (alkuperäinen, kaksiytiminen, WiFi + BT, erittäin hyvin dokumentoitu), ESP32-S2 -sarja (yksiytiminen, ilman Bluetoothia, natiivilla USB:llä, ihanteellinen WiFi- ja USB-laitteisiin), ESP32-S3 -sarja (kaksiytiminen, enemmän RAM-muistia ja parannettu tuki BLE 5:lle ja kamera- tai valo-tekoälysovelluksille), ESP32-C3- sarja (RISC-V-ydin, edullinen, WiFi + BLE 5, tarkoituksena on korvata ESP8266) ja ESP32-C6 -sarja (WiFi 6:lla, BLE 5:llä ja tietyissä tilanteissa Thread-tuella, suunniteltu kodin automaatioon ja nykyaikaisiin verkkoihin).
ESP32-WROOM- moduuli on yleisin perinteisissä DevKit-levyissä. Siinä on tyypillisesti 4 Mt flash-muistia (vaikka on olemassa myös 8 Mt:n tai suuremman kokoisia versioita), vakiona sisäistä RAM-muistia sekä integroitu Wi-Fi ja Bluetooth. Se sopii erinomaisesti yleisiin projekteihin, kuten antureihin, automaatioon ja kodin automaatioon, joissa et tarvitse kameraa tai suuria määriä lisä-RAM-muistia.
ESP32-WROVER- moduuli lisää ulkoisen PSRAM-muistin, mikä tekee siitä sopivamman projekteille, jotka vaativat paljon muistia: kuvankäsittelyyn, suuriin puskureihin, grafiikkasovelluksiin tai sulautettuun tekoälyyn. Se on yleensä hieman kalliimpi; jos projektisi ei aio käyttää kyseistä ylimääräistä muistia, maksat käytännössä jostakin, mitä et käytä.
ESP32-CAM- piirilevystä on tullut edullisten videovalvontaprojektien klassikko. Se yhdistää ESP32:n kameraan (yleensä OV2640-anturiin) ja microSD-korttipaikkaan. Se sopii täydellisesti kodin IP-kameroiden, älykkäiden ovikellojen tai yksinkertaisten näkökokeilujen rakentamiseen. Siinä on kuitenkin huomattavasti vähemmän vapaita GPIO-nastoja ja se on hieman herkempi ohjelmoida ja syöttää virtaa.
Kuinka valita oikea ESP32-malli projektiisi
Oikean ESP32-mallin valinnassa ei niinkään ole kyse kaikkien nimien ulkoa opettelusta, vaan neljän keskeisen vaatimuksen selvittämisestä : tarvitsetko kameran, onko akun alhainen varaustaso sinulle tärkeää, vaatiiko sovelluksesi paljon muistia (esimerkiksi PSRAM) ja tarvitsetko tiettyjä teknologioita, kuten BLE 5 tai WiFi 6.
Jos olet vasta aloittelija ja haluat kortin, jolla voit oppia, asentaa antureita, kokeilla Wi-Fiä ja Bluetoothia ja seurata useimpia tutoriaaleja, järkevin vaihtoehto on yleensä ESP32 DevKit, jossa on WROOM-moduuli . Se on edullinen, erittäin yhteensopiva esimerkkien ja kirjastojen kanssa ja sisältää paljon dokumentaatiota. Monille "tavallisille" IoT- ja kodin automaatioprojekteille tämä vaihtoehto on enemmän kuin riittävä.
Kun projektiisi kuuluu integroitu kamera , sinulla on kaksi päävaihtoehtoa: käyttää ESP32-CAM-korttia (joka on erittäin taloudellinen ja kompakti, ihanteellinen yksinkertaisille WiFi-kameroille) tai valita ESP32-S3, jossa on kameratuki ja enemmän muistia, jos tarvitset enemmän suorituskykyä, hieman monimutkaisempia algoritmeja tai käyttöliittymän näytöllä.
Jos prioriteettisi on alhainen virrankulutus akkuvirralla , erityisesti anturisolmuille, jotka viettävät suurimman osan ajastaan lepotilassa, ESP32-C3-perhe on erittäin mielenkiintoinen. Se käyttää RISC-V-arkkitehtuuria, siinä on moderni Wi-Fi ja BLE, erittäin alhainen virrankulutus ja riittävästi tehoa tunnistukseen, tiedonsiirtoon ja peruslogiikkatehtäviin.
"Seuraavan sukupolven" kotiautomaatioprojekteissa, joissa WiFi 6, BLE 5 ja tuleva Thread- tai Matter-tuki ovat tärkeitä, ESP32-C6-perhe on erityisen lupaava. Se on jonkin verran uudempi eikä vielä yhtä yleinen kuin klassinen ESP32, mutta se on suunniteltu sopimaan yhä monimutkaisempiin kodin ekosysteemeihin.
Tyypillisiä käyttötapauksia ja vertailu muihin alustoihin
Arkikäytössä ESP32:ta käytetään kodin automaatiossa, antureissa, puetuissa laitteissa, automaatiossa ja IoT-prototyypeissä . Tyypillinen esimerkki on valojen, pistorasioiden, kaihtimien tai moottoreiden releiden ohjaaminen, jotka kommunikoivat Wi-Fin kautta paikalliseen palvelimeen tai pilveen. Toinen yleinen sovellus on lämpötila-, kosteus-, läsnäolo- tai ilmanlaatuanturit, jotka raportoivat tietoja säännöllisesti taustajärjestelmään.
Integroidun Bluetoothin (mukaan lukien BLE) ansiosta sitä käytetään laajalti myös kannettavissa laitteissa tai puettavissa laitteissa , jotka kommunikoivat matkapuhelimen kanssa: sykemittareissa, askelmittareissa, pienissä unimonitoreissa jne. WiFi voidaan varata tietojen lataamiseen internetiin tai web-määrityskäyttöliittymän tarjoamiseen, kun taas BLE hoitaa tiedonsiirron sovelluksen tai muiden lähellä olevien antureiden kanssa.
Toinen hyvin yleinen sovellus on ESP32:n käyttö järjestelmän yhdyskäytävänä tai aivoina , joka kommunikoi UART:n, SPI:n tai I2C:n kautta muiden moduulien (esimerkiksi klassisen Arduinon, teollisuusantureiden, näyttöjen jne.) kanssa ja tarjoaa API:n, MQTT:n tai web-käyttöliittymän Wi-Fin kautta. Sitä käytetään myös ääniprojekteissa, joissa hyödynnetään I2S-rajapintoja ja kykyä käsitellä ääntä ja musiikkia reaaliajassa.
Verrattuna "puhtaaseen" Arduino Unoon, ESP32 tarjoaa huomattavasti enemmän laskentatehoa, integroidun WiFi/Bluetooth-yhteyden , enemmän muistia ja enemmän oheislaitteita, säilyttäen samalla tai jopa alhaisemman hinnan. Vanhempaan ESP8266:een verrattuna ESP32 voittaa selvästi ytimien, RAM-muistin, GPIO-nastojen määrän ja rajapintojen monipuolisuuden suhteen.
Raspberry Pi Pico W:hen verrattuna nämä kaksi ovat tehon ja suorituskyvyn suhteen tasaväkisempiä, mutta ESP32:n IoT:n ja kodin automaation ohjelmisto- ja kirjastoverkosto on erittäin kypsä. Lisäksi koko yhteyspinon (mukaan lukien laitteiston suojaus) sijoittaminen samalle sirulle helpottaa sen käyttöä loppukäyttäjätuotteissa ilman, että vaaditaan täydellisiä käyttöjärjestelmiä, kuten suuremmissa Raspberry Pi -malleissa.
Kehitysympäristöt: Arduino IDE, ESP-IDF ja MicroPython
ESP32:n ohjelmoinnissa on useita kehitysympäristövaihtoehtoja . Harrastajien ja kehittäjien keskuudessa suosituin on Arduino-ekosysteemin käyttö: joko perinteinen Arduino IDE tai Visual Studio Codeen integroitu PlatformIO, joka yksinkertaistaa kirjastojen ja suurempien projektien hallintaa.
Lisätäksesi ESP32-tuen Arduino IDE:hen, asenna "ESP32 by Espressif" -korttipaketti Boards Managerista käyttämällä Espressifin GitHubissa tarjoamaa vakaan version linkkiä. Asennuksen jälkeen voit valita kortin (esimerkiksi "ESP32 Dev Module" tai tietyn mallin DevKitistäsi) ja ohjelmoida sen lähes täsmälleen kuten Arduino, käyttämällä funktioita, kuten pinMode, digitalWrite, analogRead jne., sekä erityisiä kirjastoja WiFi:lle, Bluetoothille, HTTP:lle, MQTT:lle ja muille.
Espressifin virallinen ympäristö on ESP-IDF (Espressif IoT Development Framework) , C/C++-kehys, joka tarjoaa erittäin tarkan hallinnan laitteistoon, FreeRTOS-käyttöön, muistin hallintaan, virrankulutukseen, verkkopinoihin ja edistyneisiin tietoturvaominaisuuksiin. Se on ensisijainen valinta ammattimaisiin projekteihin tai sellaisiin, jotka vaativat sirun ominaisuuksien maksimointia.
Toinen erittäin kätevä vaihtoehto on MicroPython , kevyt Python-toteutus, joka on suunnattu mikrokontrollereille. ESP32:ssa sen avulla voit työskennellä WiFi:n, BLE:n, GPIO:n, I2C:n, SPI:n ja muiden kanssa käyttämällä Python-skriptejä, joita voit nopeasti ladata ja muokata. Se on erityisen hyödyllinen koulutuksessa, nopeassa prototyyppien luonnissa ja tilanteissa, joissa kehitysnopeus on tärkeämpää kuin maksimaalinen tehokkuus.
Valitsemastasi ympäristöstä riippumatta on aina suositeltavaa tutustua viralliseen Espressifin dokumentaatioon (tietolomakkeet, aloitusoppaat, API-viittaukset) ja esimerkkeihin, jotka sisältävät sekä Arduino-ESP32:n että ESP-IDF:n. GitHubin yhteisö, ESP32-foorumit ja alustat, kuten Reddit, tarjoavat myös laajan määrän valmiita projekteja, joita voidaan mukauttaa tarpeisiisi.
Edistynyt pinnien kytkentä, rajoitukset ja laajennus kameralla ja SD-kortilla
Kun perehdytään ESP32:n käyttöön hieman tarkemmin, törmätään monimutkaisiin pinnijärjestelyihin , joita kannattaa ottaa huomioon. Yksi näistä on ADC2:n yhteensopimattomuus edellä mainitun WiFi/Bluetooth-radion kanssa; toinen on JTAG-nastojen (GPIO12, 13, 14 ja 15) rooli laitteistovirheenkorjauksessa. Jos et aio käyttää JTAGia, voit käsitellä niitä tavallisina GPIOina, kunhan pidät mielessä myös niiden sidontatoiminnot.
Nastojen huolellinen suunnittelu on olennaista erityisesti projekteissa, joissa pyritään hyödyntämään useita toimintoja samanaikaisesti (GPIO, ADC, I2C, SPI, kamera, SD-kortti jne.). Jotkut nastat on varattu virtalähteelle ja kriittisille signaaleille , kuten 3,3 V, GND ja SPI-flash-muistiin kytketyille signaaleille. Suurten virtojen ottamista levyn 3,3 V:n tai 5 V:n nastoista tulisi välttää, jos säädin ei pysty käsittelemään niitä, ja välttää suurten kuormien kytkemistä suoraan GPIO-nastoihin ilman sopivia ohjaimia.
Joissakin ESP32:lle suunnitelluissa sarjoissa ja laajennuskorteissa on tiettyjä toimintoja, kuten OV2640-kameramoduulit, microSD-kortinlukijat ja 18650-akun tuki . Niissä on tyypillisesti kaksi riviä nastoja: toisessa naarasliittimet nopeaa prototyyppien valmistusta varten ja toisessa ruuviliittimet pysyvämpiä asennuksia varten, esimerkiksi "kenttä"-IoT-projekteissa tai kiinteissä asennuksissa.
Näissä korteissa on tyypillisesti ylös-/alasvetovastukset nastoista, jotka ohjaavat kameraa ja microSD-korttia, joten jos aiot käyttää niitä uudelleen yleiskäyttöisinä tuloina tai lähtöinä, sinun tulee tutustua laajennuskortin datalehteen. Tiedot, kuten päävirtakytkin , erilliset akun latausportit ja tilan merkkivalot, ovat merkittäviä, kun rakennetaan akkukäyttöisiä erillisiä laitteita.
Käytännössä ESP32:n, OV2640-kameran, microSD-muistikortin ja 18650-akun yhdistelmä mahdollistaa melko täydellisten etänäkösolmujen rakentamisen, jotka pystyvät suoratoistamaan, ottamaan säännöllisesti kuvia tai suorittamaan yksinkertaisia tunnistusalgoritmeja, lataamaan akun USB:n kautta tarvittaessa ja pitämään kaiken kompaktissa muodossa.
Tarkasteltuani sirun sisäisiä toimintoja, sen pinnien järjestelyä, tuoteperheitä, tyypillisiä käyttötapauksia ja kehitystyökaluja, käy selväksi, että ESP32 tarjoaa valtavan määrän integroituja toimintoja, suunnittelun joustavuutta ja vähän virtaa kuluttavia vaihtoehtoja erittäin edulliseen hintaan. Tämä tekee siitä alustan, jota on erittäin vaikea verrata, kun etsit ratkaisua IoT-, kotiautomaatio- tai automaatioprojekteihin, jotka yhdistävät langattoman yhteyden, hyvän prosessointitehon ja kypsän ohjelmistoekosysteemin.