- ESP32 integron një CPU të fuqishme, WiFi, Bluetooth dhe pajisje të shumta periferike në një SoC të vetëm me kosto të ulët.
- Pinout-i i tij shumë i multipleksuar lejon deri në 34 GPIO me funksione ADC, DAC, PWM, prekje dhe RTC.
- Ekzistojnë disa familje (WROOM, WROVER, S2, S3, C3, C6, CAM) të përshtatura për lloje të ndryshme projektesh.
- Mund të programohet me Arduino, ESP-IDF ose MicroPython, duke mbuluar gjithçka, nga prototipet e thjeshta deri te produktet profesionale.
Nëse punoni në botën e IoT, automatizimit të shtëpisë ose sistemeve të automatizimit , herët a vonë do të hasni ESP32. Dhe kur filloni të kërkoni informacion, është e lehtë të përfundoni më të hutuar sesa kur filluat: pin-e këtu, modele atje, modalitete me energji të ulët, WiFi, Bluetooth, kamera, PSRAM… Duket kaotike, por në realitet, është një platformë shumë koherente nëse e kuptoni me qetësi.
Në këtë artikull, do të gjeni një përmbledhje gjithëpërfshirëse dhe të organizuar mirë të ESP32 : çfarë është saktësisht, çfarë mund të bëjë në nivelin e harduerit, si janë të organizuara pin-et dhe funksionet e tij të veçanta, çfarë familjesh çipash ekzistojnë, si ndryshojnë ato nga njëra-tjetra, cilat pllaka janë më të zakonshmet, kur secila prej tyre i përshtatet më së miri nevojave tuaja dhe si ta filloni programimin e saj në praktikë. Qëllimi është që ju të keni një pamje të qartë mendore të ekosistemit ESP32 dhe të dini si të zgjidhni dhe përdorni tabelën e duhur pa frikën se do të bëni ndonjë gabim.
Çfarë është ESP32 dhe pse është bërë kaq popullor?
ESP32 është një sistem-në-një-çip (SoC) 32-bitësh me kosto të ulët, energji të ulët, i zhvilluar nga Espressif Systems. Ai integron një mikroprocesor të fuqishëm, Wi-Fi, Bluetooth (si standard ashtu edhe BLE), memorie, konvertues analog-në-dixhital dhe një gamë të gjerë pajisjesh periferike në një çip të vetëm. Kjo e bën atë një lloj "thike ushtarake zvicerane" për projektet e lidhura.
Variantet klasike përdorin një mikroprocesor me dy bërthama Xtensa LX6 , i cili zakonisht funksionon në 160 ose 240 MHz dhe arrin deri në 600 DMIPS performancë. Familjet më të fundit (siç janë ESP32-C3 ose C6) përdorin bërthama RISC-V me fuqi të ulët, ndërsa të tjera, si S2/S3, kanë parë përmirësime në memorie, konsum të energjisë dhe aftësi të lehta të IA-së.
Një nga karakteristikat kryesore të ESP32 është se integron WiFi 802.11 b/g/n dhe Bluetooth (BR/EDR dhe BLE) në të njëjtin çip silikoni, duke ndarë radion. Kjo eliminon nevojën për module të jashtme lidhjeje, kursen hapësirë në bord dhe ul kostot. Si rezultat, është bërë një standard de facto për projektet e automatizimit të shtëpisë, sensorët e lidhur, sistemet e automatizimit dhe prototipet komerciale.
Përveç procesorit dhe radios, ESP32 integron 520 KiB SRAM dhe ROM direkt në SoC, së bashku me kontrollues për menaxhimin e memories flash të jashtme nëpërmjet SPI. Modulet komerciale (si WROOM ose WROVER) zakonisht përfshijnë midis 4 dhe 16 MB memorie flash të integruar, dhe disa shtojnë PSRAM të jashtëm për aplikacione më të kërkuara (grafikë, kamera, IA, etj.).
Arkitektura e brendshme, memoria dhe menaxhimi i energjisë
Në arkitekturën e tij të brendshme, ESP32 kombinon një ose dy bërthama kryesore Xtensa LX6/LX7 ose RISC-V me një bashkëprocesor me energji ultra të ulët (ULP) . Ky bashkëprocesor është projektuar për të kryer detyra të vogla në modalitete me energji të ulët, siç është leximi periodik i sensorëve, ndërsa pjesa tjetër e çipit është në gjendje gjumi për të kursyer energjinë e baterisë.
Memoria është e organizuar në disa zona: përveç SRAM-it kryesor prej 520 KiB që përdoret nga procesori, çipi ka një rajon të shpejtë RTC RAM (afërsisht 8 kB) dhe një rajon të ngadaltë RTC RAM (afërsisht 8 kB të tjera). RTC RAM i shpejtë lejon që të dhënat të ruhen gjatë modalitetit të gjumit të thellë, në mënyrë që pas zgjimit, cilësimet ose gjendjet të mund të rikuperohen pa pasur nevojë të rillogariten të gjitha.
Lidhur me ruajtjen, dizajni tipik bazohet në memorien flash të lidhur me SPI ku ruhen firmware-i dhe të dhënat e tjera të paqëndrueshme. Shumë module ESP32 WROOM vijnë me 4 MB memorie flash, ndërsa versionet më të avancuara ose të orientuara drejt kamerave (ESP32-WROVER, ESP32-S3 me PSRAM, etj.) mund të kenë 8, 16 MB ose më shumë.
Menaxhimi i energjisë është një tjetër pikë e fortë e platformës. Çipi integron një rregullator të brendshëm me rënie të ulët të energjisë (LDO) , fusha të ndryshme të energjisë dhe mënyra të ndryshme të kursimit të energjisë. Në modalitetin e gjumit të thellë, konsumi mund të bjerë në rreth 5 μA, duke u zgjuar nëpërmjet matjeve GPIO, kohëmatësit, sensorit të prekjes ose ADC, varësisht nga mënyra se si janë konfiguruar bashkëprocesori RTC dhe ULP.
Për sa i përket sigurisë, ESP32 mbështet të gjitha veçoritë standarde IEEE 802.11 (WPA, WPA2, WPA3 në versionet e fundit, WAPI) dhe ofron mekanizma të sigurt nisjeje dhe enkriptim flash . Ai gjithashtu integron përshpejtues harduerësh për AES, SHA-2, RSA, ECC dhe një gjenerator numrash të rastësishëm (RNG), si dhe një zonë OTP 1024-bit ku mund të ruhen çelësa dhe parametra të pandryshueshëm.
Multipleksimi i pinout-it dhe funksionalitetit ESP32
Një nga gjërat më të habitshme kur hasni për herë të parë një ESP32 DevKitC ose një të ngjashëm është numri i kunjave dhe funksionet alternative . Mund të keni deri në 34 kunja GPIO në çip, por shumë prej tyre janë të multipleksuara me pajisje të tjera periferike të brendshme ose të rezervuara për qëllime shumë specifike.
Multipleksimi i pin-eve është një veçori kryesore e ESP32. Shumica e sinjaleve të brendshme (UART, I2C, SPI, PWM, etj.) mund të drejtohen në pothuajse çdo GPIO duke konfiguruar matricën e pin-eve të çipit, pa ndonjë penalizim të dukshëm të performancës. Pin-et e shfaqura në pllaka janë caktimet e parazgjedhura, por në përgjithësi mund të ricaktoni funksionet nëse është e nevojshme.
Kur hartoni një projekt, është e rëndësishme të mbani mend se disa kunja kanë kufizime të veçanta : disa përdoren gjatë nisjes (kunjat lidhëse), të tjerat lidhen me memorien flash SPI dhe të tjerat lidhen me ndërfaqe debugging si JTAG. Nëse i përdorni gabimisht, sistemi mund të mos niset ose të bëhet i paqëndrueshëm.
Pllakat e zhvillimit ESP32 DevKitC ose NodeMCU-32S i ekspozojnë këto kunja përmes dy rreshtave të kokave. Edhe pse secili prodhues mund të ndjekë një paraqitje paksa të ndryshme, ato në përgjithësi ndajnë të njëjtin numërim GPIO dhe shumicën e funksioneve, kështu që diagramet dhe tabelat e pinout janë të transferueshme nga një pllakë në tjetrën.
Kunja speciale: me rrip, vetëm me hyrje, RTC dhe me prekje
Brenda pinout-it GPIO, ekziston një grup kunjash të konfigurimit të nisjes, të njohura edhe si kunja lidhëse. Këto përdoren për të përcaktuar se si nis çipi, tensionin e disa komponentëve të brendshëm dhe disa parametra të memories flash SPI. Këto kunja lexohen gjatë një rivendosjeje të sistemit dhe niveli i tyre logjik në atë kohë fiksohet deri në rivendosjen ose fikjen tjetër.
Kunjat e zakonshme të lidhjes në ESP32 përfshijnë GPIO0, GPIO2, GPIO4, GPIO5, GPIO12 dhe GPIO15 . Për shembull, GPIO0 duhet të jetë i ulët për të hyrë në modalitetin e shkarkimit; GPIO2 nuk duhet të detyrohet të jetë i lartë gjatë nisjes; GPIO5 dhe GPIO15 zakonisht kanë rezistorë tërheqës për të siguruar gjendje të sakta; dhe GPIO12 është i përfshirë në zgjedhjen e tensionit për memorie të caktuara. Edhe pse këto kunja mund të ripërdoren në qarkun tuaj, është më mirë të mos i mbingarkoni ato ose të përdorni qarqe që ndryshojnë nivelin e tyre gjatë ndezjes.
Ekziston gjithashtu një grup i vogël kunjash që janë vetëm hyrje dixhitale dhe/ose analoge ; domethënë, ato nuk mund të përdoren si dalje: GPIO34, GPIO35, GPIO36 dhe GPIO39. Për më tepër, ndryshe nga pjesa tjetër e GPIO-ve, këto nuk kanë rezistorë të brendshëm tërheqës lart ose poshtë, kështu që do t'ju duhet t'i shtoni ato nga jashtë nëse keni nevojë të stabilizoni nivelin e tyre.
Disa GPIO janë të lidhura me nënsistemin RTC me fuqi të ulët dhe njihen si RTC GPIO . Ato përfshijnë kombinime të tilla si 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 dhe RTC_GPIO17-GPIO27. Këto kunja lejojnë, ndër të tjera, zgjimin e çipit nga modaliteti i gjumit të thellë duke përdorur bashkëprocesorin ULP ose burime ndërprerjesh me fuqi të ulët.
Përveç kësaj, ESP32 integron 10 sensorë prekjeje kapacitivë të shoqëruar me kunja specifike GPIO: TOUCH0 (GPIO4), TOUCH1 (GPIO0), TOUCH2 (GPIO2), TOUCH3 (GPIO15), TOUCH4 (GPIO13), TOUCH5 (GPIO12), TOUCH6 (GPIO14), TOUCH7 (GPIO27), TOUCH8 (GPIO33) dhe TOUCH9 (GPIO32). Kur një ngarkesë kapacitive (për shembull, një gisht) i afrohet këtyre kunjave, çipi zbulon ndryshimin në kapacitet, duke ju lejuar ta përdorni atë për butona prekjeje, rrëshqitës ose sensorë afërsie pa komponentë shtesë.
Së fundmi, duhet të përmendim pinin EN (Enable) , i cili kontrollon rregullatorin e brendshëm 3,3V të modulit. Zakonisht ka një rezistencë tërheqëse 3.3V, dhe tërheqja e tij në nivel të ulët e çaktivizon rregullatorin, duke rivendosur ose fikur në mënyrë efektive ESP32. Shumë aplikacione e përdorin këtë pinë si një rivendosje globale.
GPIO, ndërprerje dhe funksione analoge (ADC, DAC, PWM)
Në terma të përgjithshëm, ESP32 ofron deri në 34 kunja GPIO të konfigurueshme si hyrje ose dalje dixhitale, me mundësinë për të aktivizuar rezistorë të brendshëm tërheqës lart ose poshtë në shumicën e tyre. Pothuajse të gjitha këto kunja mund të konfigurohen si burime ndërprerjesh, gjë që thjeshton shumë projektimin e sistemeve që reagojnë ndaj ngjarjeve (butona, sensorë, detektorë, etj.).
Seksioni analog është mjaft gjithëpërfshirës: ESP32 përfshin dy ADC SAR 12-bitësh që ofrojnë deri në 18 kanale hyrëse. Kanalet ndahen midis ADC1 (8 kanale) dhe ADC2 (10 kanale). Caktimi tipik është si më poshtë: ADC1_CH0-GPIO36, ADC1_CH1-GPIO37, ADC1_CH2-GPIO38, ADC1_CH3-GPIO39, ADC1_CH4-GPIO32, ADC1_CH5-GPIO33, ADC1_CH6-GPIO34, ADC1_CH7-GPIO35; dhe 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 dhe ADC2_CH9-GPIO26.
Nëse po punoni me Wi-Fi ose Bluetooth aktiv, ka një detaj të rëndësishëm: ADC2 nuk është i disponueshëm ndërsa radioja është në përdorim . Në këto raste, për lexime analoge, duhet të përdorni kanalet ADC1, të cilat mund të përdoren pa kufizuar lidhshmërinë. Rezolucioni 12-bit ju jep 4096 nivele (0-4095), të cilat në një diapazon tipik 0-3,3V përkthehen në hapa prej rreth 0,8mV.
Për gjenerimin e sinjaleve analoge të daljes, ESP32 përfshin dy DAC 8-bitësh , të lidhur me GPIO25 (DAC1) dhe GPIO26 (DAC2). Këta konvertues ju lejojnë të konvertoni një vlerë dixhitale midis 0 dhe 255 në një tension analog midis 0 dhe 3,3 V, i dobishëm për gjenerimin e formave të thjeshta të valëve, referencave të tensionit, audio bazë ose modulimit të sinjalit pa pasur nevojë për çipa të jashtëm.
Në fushën PWM, pllaka përmban 16 kanale PWM të programueshme të menaxhuara nga një kontrollues i dedikuar. Çdo kanal PWM mund të lidhet me kunja të ndryshme GPIO, dhe si frekuenca ashtu edhe cikli i punës mund të rregullohen. Është ideale për të kontrolluar LED-et (duke përfshirë errësimin), servo-të, motorët DC dhe në përgjithësi çdo ngarkesë që kërkon një sinjal PWM të rregullueshëm.
Ndërfaqet e komunikimit: UART, I2C, SPI dhe të tjera
ESP32 gjithashtu dallohet për ndërfaqet e tij të larmishme të integruara. Në nivelin serial, ai ka tre UART harduerike: UART0, UART1 dhe UART2 , të afta të funksionojnë në modalitete asinkrone (si RS232 dhe RS485) dhe madje edhe IrDA, me shpejtësi deri në 5 Mbps. Në shumicën e bordeve të zhvillimit, kunjat UART0 janë të lidhura me konvertuesin USB-në-serial dhe përdoren për programim dhe debugging, kështu që është më mirë të mos i ripërdorni ato në projektet përfundimtare nëse nuk jeni shumë të njohur me procesin.
UART1 zakonisht rezervohet për memorien flash të integruar SPI , veçanërisht në module si ESP32-S3 ose versione me memorie flash të jashtme më komplekse. Për këtë arsye, shumë udhëzues rekomandojnë gjithmonë përdorimin e UART2 si port serial të përdoruesit kur dëshironi të lidhni pajisje të tjera UART (për shembull, module GPS, mikrokontrollues të tjerë, etj.).
Për sa i përket autobusit I2C, ESP32 përfshin një ose dy kontrollues I2C (në varësi të familjes) dhe, si parazgjedhje, lejon një autobus standard I2C me kunja SDA në GPIO21 dhe SCL në GPIO22 . Megjithatë, ashtu si me pajisjet e tjera periferike, ju mund të ri-maponi SDA dhe SCL në GPIO të tjera duke përdorur softuer, për shembull, me funksionin `wire.begin(SDA, SCL)` në Arduino. Ju mund të lidhni dhjetëra sensorë dhe pajisje në një autobus të vetëm I2C, me kusht që ato të respektojnë adresat e disponueshme.
Lidhur me SPI-në, çipi ofron tre magjistrale SPI: SPI, HSPI dhe VSPI . Gjigstrala bazë përdoret zakonisht brenda për memorien flash të integruar, kështu që për projektet tuaja, do të jeni kryesisht të interesuar për HSPI dhe VSPI. Shumë biblioteka standarde përdorin VSPI si parazgjedhje për të komunikuar me ekranet, lexuesit e kartave SD, modulet e radios së jashtme e kështu me radhë.
Ekziston një grup kunjash veçanërisht të ndjeshme që lidhen me memorien flash të brendshme SPI: GPIO6 (SCK/CLK), GPIO7 (SDO/SD0), GPIO8 (SDI/SD1), GPIO9 (SHD/SD2), GPIO10 (SWP/SD3) dhe GPIO11 (CSC/CMD). Këto kunja janë të rezervuara për komunikim me memorien flash dhe nuk duhet të përdoren në qarqet tuaja; lidhja e tyre me ndonjë gjë të jashtme shpesh do të shkaktojë bllokime, gabime nisjeje ose korruptim të të dhënave.
Përveç UART, I2C dhe SPI, ESP32 integron kontrollues I2S, CAN 2.0, Ethernet MAC, SD/SDIO, kontrollues infra të kuq TX/RX, numërues pulsesh dhe pajisje të tjera periferike të përparuara. Kjo i lejon, për shembull, të funksionojë si një portë rrjeti, të luajë ose kapë audio dixhitale, të komunikojë me autobusë industrialë ose të veprojë si një kontrollues për motorë dhe enkoderë më të sofistikuar.
Familjet dhe modelet ESP32: WROOM, WROVER, S2, S3, C3, C6 dhe ESP32-CAM
Kur kërkoni të blini një ESP32, emra si WROOM, WROVER, S2, S3, C3, C6 ose ESP32-CAM fillojnë të shfaqen shpejt . Ato nuk janë të njëjta, edhe pse të gjitha i përkasin ekosistemit ESP32. Nga njëra anë, kemi çipin SoC "të pastër", dhe nga ana tjetër, modulet dhe pllakat e zhvillimit që e integrojnë atë së bashku me komponentë të tjerë.
Një " modul ESP32 " (p.sh., ESP32-WROOM-32 ose ESP32-WROVER) është blloku metalik drejtkëndor që strehon çipin, memorien flash, ndonjëherë PSRAM dhe antenën. Këto module janë projektuar për t'u ngjitur direkt në pllaka të personalizuara. Shumë prodhues më pas montojnë " pllaka zhvillimi " sipër tyre, duke shtuar një portë USB, rregullatorë, kunja të aksesueshme dhe butona rivendosjeje/nisjeje, të tilla si DevKitC, NodeMCU-32S, LOLIN32, etj.
Brenda familjeve të çipave kemi, ndër të tjera, këto variante kryesore: seria klasike ESP32 (origjinali, me dy bërthama, WiFi + BT, shumë mirë i dokumentuar), seria ESP32-S2 (me një bërthamë, pa Bluetooth, me USB native, ideale për pajisjet e fokusuara në WiFi dhe USB), seria ESP32-S3 (me dy bërthama, më shumë RAM dhe mbështetje e përmirësuar për BLE 5 dhe aplikacione kamerash ose AI të lehta), seria ESP32-C3 (me bërthamë RISC-V, me kosto të ulët, WiFi + BLE 5, që synon të zëvendësojë ESP8266) dhe seria ESP32-C6 (me WiFi 6, BLE 5 dhe mbështetje për teknologji të tilla si Thread në skenarë të caktuar, të projektuara për automatizimin e shtëpisë dhe rrjetet moderne).
Moduli ESP32-WROOM është më i zakonshmi në pllakat tradicionale DevKit. Zakonisht vjen me 4 MB memorie flash (megjithëse ekzistojnë variante me 8 MB ose më shumë), RAM të brendshëm standard dhe Wi-Fi dhe Bluetooth të integruar. Është ideal për projekte të përgjithshme si sensorë, automatizim dhe automatizim shtëpiak, ku nuk keni nevojë për një kamerë ose sasi të mëdha RAM shtesë.
Moduli ESP32-WROVER shton PSRAM të jashtëm, duke e bërë atë më të përshtatshëm për projekte që kërkojnë shumë memorie: përpunim imazhi, memorje të mëdha buffer-ash, aplikacione grafike ose inteligjencë artificiale të integruar. Zakonisht është pak më i shtrenjtë; nëse projekti juaj nuk do ta përdorë atë memorie shtesë, në thelb po paguani për diçka që nuk do ta përdorni.
Pllaka ESP32-CAM është bërë një klasik për projektet e mbikëqyrjes me video me kosto të ulët. Ajo integron një ESP32 me një kamera (zakonisht një sensor OV2640) dhe një vend për kartë microSD. Është perfekte për ndërtimin e kamerave IP në shtëpi, zile inteligjente ose eksperimente të thjeshta me shikim. Megjithatë, ofron dukshëm më pak kunja GPIO të disponueshme dhe është disi më delikate për t'u programuar dhe furnizuar me energji.
Si të zgjidhni modelin e duhur ESP32 për projektin tuaj
Zgjedhja e modelit të duhur ESP32 nuk ka të bëjë aq shumë me memorizimin e të gjithë emrave, por me qartësimin e katër kërkesave kryesore : nëse ju nevojitet një aparat fotografik, nëse përparësia juaj është fuqia e ulët e baterisë, nëse aplikacioni juaj kërkon shumë memorie (për shembull PSRAM) dhe nëse ju nevojiten teknologji specifike si BLE 5 ose WiFi 6.
Nëse sapo keni filluar dhe dëshironi një pllakë për të mësuar, për të montuar sensorë, për të eksperimentuar me Wi-Fi dhe Bluetooth dhe për të ndjekur shumicën e tutorialeve, opsioni më i arsyeshëm është zakonisht një ESP32 DevKit me një modul WROOM . Është i lirë, shumë i pajtueshëm me shembuj dhe biblioteka, dhe ka shumë dokumentacion. Për shumë projekte "normale" të IoT dhe automatizimit të shtëpisë, ky opsion do të jetë më se i mjaftueshëm.
Kur projekti juaj përfshin një kamerë të integruar , keni dy mundësi kryesore: përdorni një pllakë ESP32-CAM (e cila është shumë ekonomike dhe kompakte, ideale për kamera të thjeshta WiFi) ose zgjidhni një ESP32-S3 me mbështetje për kamerat dhe më shumë memorie, nëse keni nevojë për më shumë performancë, algoritme disi më komplekse ose një ndërfaqe përdoruesi me ekran.
Nëse përparësia juaj është konsumi i ulët i energjisë me energjinë e baterisë , veçanërisht për nyjet sensorike që kalojnë pjesën më të madhe të kohës në modalitetin e gjumit, familja ESP32-C3 është shumë interesante. Përdor arkitekturën RISC-V, ka Wi-Fi dhe BLE moderne, konsum shumë të ulët të energjisë dhe energji të mjaftueshme për ndjeshmëri, transmetim të të dhënave dhe detyra logjike bazë.
Për projektet e automatizimit të shtëpisë të "gjeneratës së ardhshme", ku vlerësohen WiFi 6, BLE 5 dhe mbështetja e ardhshme për Thread ose Matter, familja ESP32-C6 është veçanërisht premtuese. Është disi më e re dhe ende jo aq e përhapur sa ESP32 klasik, por është projektuar për t'u përshtatur në ekosistemet gjithnjë e më komplekse të shtëpisë.
Rastet tipike të përdorimit dhe krahasimi me platformat e tjera
Në përdorim të përditshëm, ESP32 përdoret për automatizimin e shtëpisë, sensorët, pajisjet e veshshme, automatizimin dhe prototipet e IoT . Një shembull tipik është kontrollimi i releve për dritat, prizat, perdet ose motorët, duke komunikuar nëpërmjet Wi-Fi me një server lokal ose në cloud. Një tjetër aplikim i zakonshëm janë sensorët e temperaturës, lagështisë, pranisë ose cilësisë së ajrit që raportojnë periodikisht të dhëna në një backend.
Falë Bluetooth-it të integruar (përfshirë BLE), përdoret gjerësisht edhe në pajisje portative ose pajisje që vishen dhe komunikojnë me telefonin tuaj celular: monitorë të rrahjeve të zemrës, pedometra, monitorë të vegjël gjumi, etj. WiFi mund të rezervohet për ngarkimin e të dhënave në internet ose për ofrimin e një ndërfaqeje konfigurimi në internet, ndërsa BLE merret me komunikimin me aplikacionin ose sensorë të tjerë aty pranë.
Një tjetër aplikim shumë i zakonshëm është përdorimi i ESP32 si një portë hyrëse ose truri i një sistemi që komunikon nëpërmjet UART, SPI ose I2C me module të tjera (për shembull, një Arduino klasik, sensorë industrialë, ekrane, etj.) dhe ekspozon një ndërfaqe API, MQTT ose web nëpërmjet Wi-Fi. Përdoret gjithashtu në projekte audio, duke përfituar nga ndërfaqet I2S dhe aftësinë për të përpunuar zërin dhe muzikën në kohë reale.
Krahasuar me një Arduino Uno "të pastër", ESP32 ofron fuqi llogaritëse dukshëm më të madhe, lidhje të integruar WiFi/Bluetooth , më shumë memorie dhe më shumë pajisje periferike, duke ruajtur një kosto të ngjashme ose edhe më të ulët. Krahasuar me ESP8266 më të vjetër, ESP32 tejkalon pa dyshim bërthamat, RAM-in, numrin e kunjave GPIO dhe shumëllojshmërinë e ndërfaqeve.
Krahasuar me një Raspberry Pi Pico W, të dy janë më të barabartë në aspektin e fuqisë dhe performancës, por ekosistemi i softuerëve dhe librarive të ESP32 për IoT dhe automatizimin e shtëpisë është shumë i zhvilluar. Për më tepër, të kesh të gjithë paketën e lidhjes (përfshirë sigurinë e harduerit) në të njëjtin çip e bën më të lehtë përdorimin në produktet e përdoruesit fundor pa kërkuar sisteme të plota operative si modelet më të mëdha Raspberry Pi.
Mjedise zhvillimi: Arduino IDE, ESP-IDF dhe MicroPython
Kur programoni një ESP32, keni disa opsione të mjedisit të zhvillimit . Më i popullarizuari midis amatorëve dhe krijuesve është përdorimi i ekosistemit Arduino: ose Arduino IDE tradicionale, ose PlatformIO e integruar në Visual Studio Code, e cila thjeshton menaxhimin e bibliotekave dhe projekteve më të mëdha.
Për të shtuar mbështetjen për ESP32 në Arduino IDE, instaloni paketën e bordit "ESP32 by Espressif" nga Boards Manager, duke përdorur lidhjen e versionit të qëndrueshëm të ofruar nga Espressif në GitHub-in e tyre. Pasi të instalohet, mund të zgjidhni bordin (për shembull, "ESP32 Dev Module" ose modelin specifik nga DevKit juaj) dhe ta programoni pothuajse njësoj si një Arduino, duke përdorur funksione të tilla si pinMode, digitalWrite, analogRead, etj., si dhe bibliotekat specifike për WiFi, Bluetooth, HTTP, MQTT dhe më shumë.
Mjedisi zyrtar i Espressif është ESP-IDF (Espressif IoT Development Framework) , një strukturë C/C++ që ofron kontroll shumë të mirë mbi harduerin, përdorimin e FreeRTOS, menaxhimin e memories, konsumin e energjisë, grumbullimet e rrjetit dhe veçoritë e përparuara të sigurisë. Është zgjedhja e preferuar për projekte profesionale ose ato që kërkojnë maksimizimin e aftësive të çipit.
Një tjetër alternativë shumë e përshtatshme është MicroPython , një implementim i lehtë i Python-it i orientuar drejt mikrokontrolluesve. Në ESP32, ju lejon të punoni me WiFi, BLE, GPIO, I2C, SPI dhe më shumë, duke përdorur skripte Python që mund t'i ngarkoni dhe modifikoni shpejt. Është veçanërisht i dobishëm në arsim, prototipizim të shpejtë dhe situata ku shpejtësia e zhvillimit është më e rëndësishme sesa efikasiteti maksimal.
Pavarësisht mjedisit që zgjidhni, është gjithmonë e këshillueshme të konsultoheni me dokumentacionin zyrtar të Espressif (fletat e të dhënave, udhëzuesit për fillimin, referencat e API-t) dhe shembujt që përfshijnë si Arduino-ESP32 ashtu edhe ESP-IDF. Komuniteti në GitHub, forumet e dedikuara për ESP32 dhe platformat si Reddit ofrojnë gjithashtu një numër të madh projektesh të gatshme që mund të përshtaten sipas nevojave tuaja.
Vendosje e avancuar e pin-eve, kufizime dhe zgjerim me kamerë dhe kartë SD
Kur të futeni pak më thellë në përdorimin e ESP32, do të hasni detaje të avancuara të pinout-it që duhet t'i respektoni. Njëra prej tyre është papajtueshmëria e ADC2 me radion WiFi/Bluetooth të lartpërmendur; një tjetër është roli i pin-eve JTAG (GPIO12, 13, 14 dhe 15) nëse doni të kryeni debugging të harduerit. Nëse nuk do të përdorni JTAG, mund t'i trajtoni ato si GPIO normale, për sa kohë që mbani mend edhe funksionet e tyre të lidhjes.
Planifikimi i kujdesshëm i kunjave është thelbësor, veçanërisht në projektet që synojnë të përdorin funksione të shumëfishta njëkohësisht (GPIO, ADC, I2C, SPI, kamera, karta SD, etj.). Disa kunja janë të rezervuara për energji dhe sinjale kritike , të tilla si 3.3V, GND dhe ato të lidhura me memorien flash SPI. Duhet të shmangni tërheqjen e rrymave të larta nga kunjat 3.3V ose 5V në pllakë nëse rregullatori nuk mund ta përballojë atë, dhe shmangni lidhjen e ngarkesave të mëdha direkt me kunjat GPIO pa drajverë të përshtatshëm.
Disa komplete dhe pllaka zgjerimi të projektuara për ESP32 integrojnë funksionalitete specifike, të tilla si modulet e kamerave OV2640, lexuesit e kartave microSD dhe mbështetja e baterisë 18650. Ato zakonisht ofrojnë dy rreshta me kunja: një me kolektorë femërorë për prototipizim të shpejtë dhe një tjetër me terminale me vidë për instalime më të përhershme, për shembull në projekte IoT "në terren" ose instalime fikse.
Këto pllaka zakonisht përfshijnë rezistorë tërheqës/tërheqës poshtë në kunjat që kontrollojnë kamerën dhe kartën microSD, kështu që nëse keni ndërmend t'i ripërdorni ato si hyrje ose dalje për qëllime të përgjithshme, duhet të konsultoheni me fletën e të dhënave të tabelës së zgjerimit. Detaje të tilla si një çelës kryesor i energjisë, porta të dedikuara për karikimin e baterisë dhe LED-et e statusit bëjnë një ndryshim të rëndësishëm kur ndërtoni pajisje të pavarura me bateri.
Në praktikë, një kombinim i ESP32, kamerës OV2640, microSD dhe fuqisë së baterisë 18650 ju lejon të ndërtoni nyje shikimi në distancë mjaft të plota, të afta për transmetim, kapjen e imazheve periodike ose ekzekutimin e algoritmeve të thjeshta të zbulimit, karikimin e baterisë nëpërmjet USB kur është e nevojshme dhe mbajtjen e gjithçkaje në një format kompakt.
Pas shqyrtimit të funksionimit të brendshëm të çipit, pinout-it të tij, familjeve të produkteve, rasteve tipike të përdorimit dhe mjeteve të zhvillimit, bëhet e qartë se ESP32 ofron një sasi të madhe funksionaliteti të integruar, fleksibilitet në dizajn dhe opsione me energji të ulët me një çmim shumë të përballueshëm, duke e bërë atë një platformë që është shumë e vështirë të krahasohet kur kërkoni të ndërtoni IoT, automatizim shtëpiak ose projekte automatizimi që kombinojnë lidhjen pa tel, fuqinë e mirë të përpunimit dhe një ekosistem të pjekur softuerësh.