Cojocari.adrian [610346]

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE
2018

VARIATOR TENSIUNE ALT ERNATIVA – ONLINE

PROIECT DE DIPLOMĂ

Autor: Cojocari Adrian

Conducător științific: Prof.dr.ing. Liviu Miclea

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

DECAN
Prof.dr.ing. Liviu MICLEA Vizat,

DIRECTOR DEPARTAMENT AUTOMATIC Ă
Prof.dr.ing. Hon oriu VĂ LEAN

Autor : Cojocari Adrian

Variator de tensiune alternativă controlat online

1. Enunțul temei: Acest proie ct este compus din două părți una hardware și alta
software, parte a software pune la dispoziție o apli cație web cu ajutorul careia
trimitem către microcontroller o valoare de referință, partea hardware funcț ionează
ca și un variator de tensiune alternativă.

2. Conținutul proiectului: Pagina de prezentare , Declara ție privin d autenticitatea
proiectului, S inteza proiectului , Cuprins, Introducere , Studiul bilbiografic , Analiză,
proiectare, implementare, testare, Concluzii.

3. Locul documentației: Universitatea Tehnic ă din Cluj -Napoca

4. Consultanți: Prof.dr.ing. L iviu Miclea

5. Data emiterii temei:

6. Data predării:

Semnătura autorului

Semnătura c onducătorului științific

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

Declarație pe proprie răspundere privind
autenticitatea proiectului de diplomă

Subsemnatul(a) COJOCARI ADRIAN ,
legitimat(ă) cu p seria nr. , CNP ,
autorul lucrării:
Variator tensiune alternativă -online

_________________________________ ________
elaborată în vederea susținerii examenului de finalizare a studiilor de licență l a
Facultatea de Automatică și Calculatoare , specializarea Choose an item. , din cadrul
Universității Tehnice din Cluj -Napoca, sesiunea Choose an item. a anului universitar
2017 -201 8, declar pe proprie răspundere, că această lucrare este rezultatul pr opriei
activități intelectuale, pe baza cercetărilor mele și pe baza informațiilor obținute din surse
care au fost citate, în textul lucrării, și în bibliografie.
Declar, că această lucrare nu conține porțiuni plagiate, iar sursele bibliografice au
fost folosite cu respectarea legislației române și a convențiilor internaționale privind
drepturile de autor.
Declar, de asemenea, că această lucrare nu a mai fost prezentată în fața unei alte
comisii de examen de licență.
In cazul constatării ulterioare a unor d eclarații false, voi suporta sancțiunile
administrative, respectiv, anularea examenului de licență .

Data Prenume NUME
____ Cojocari Adrian
(semnă tura)

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE

SINTEZA
proiectului de diplomă cu titlul:
Titlul lucrării

Autor: Cojocari Adrian
Conducător științific: Prof.dr.ing. Liviu Miclea
1. Cerințele temei:
Controlul tensiunii alternative de ieșire prin intermediul unei aplica ții web, sincronizare
microcontroller -ului cu circuitul de zero -cross d etector (momentul în care sinusoida are
amplitudinea zero ), controlul triacului cu ajutorul unui PWM timer .
2. Soluții alese:
Triacul este controlat de ESP32, am folosit un zero cross detector pentru pentru a putea
realiza sincronizarea dintre tensiunea de intratre și tensiu nea de ieșire, pentru controlul
on-line transmiterea informațiilor este bidirecțional ă, între mirocontroller și utilizator s -a
realizat comunicarea TCP/IP .
3. Rezultate obținute:
În functie de valoarea setata online avem o tensiune de iesire care se comportă ca un
PWM cu rezoluțoa de 0-100 %.
4. Testări și verificări:
Testările le -am facut cu un bec și un osciloscop. În funcție de valoare transmisă de la
calculator/te lefon verificam cu un osciloscop cum se comporta tensiunea acestuia
comparând -o cu cea a unui bec care functionează normal, nefiind influențat de alți
factori.
5. Contribuții personale:
Controlul tensiunii de ieșire ,comunicarea dintre module, cumnicarea TCP/IP, realizarea
aplicați ei web.
6. Surse de documentare:
Ca și surse de documentar e am mai multe cărți, articole științifice, publicații,
datasheeturi ale componetelor.

FACULTATEA DE AUTOMATIC Ă ȘI CALCULATOARE
Semnătura autorului

Semnătura conduc ătorului științific

1
Cuprins
1 INTRODUCERE ………………………….. ………………………….. ………………………….. ………………………….. 2
1.1 CONTEXT GENERAL ………………………….. ………………………….. ………………………….. …………………….. 2
1.2 OBIECTIVE ………………………….. ………………………….. ………………………….. ………………………….. …… 3
1.3 SPECIFICAȚII ………………………….. ………………………….. ………………………….. ………………………….. … 3
2 STUDIU BIBLIOGRAFIC ………………………….. ………………………….. ………………………….. ……………….. 4
3 ANALIZĂ, PROIECTARE, IMPLEM ENTARE, TESTARE ………………………….. ………………………….. …… 20
3.1 ANALIZĂ ȘI PROIECTARE ………………………….. ………………………….. ………………………….. ……………… 20
3.2 IMPLEMENTARE ………………………….. ………………………….. ………………………….. ……………………….. 32
3.3 TESTARE ………………………….. ………………………….. ………………………….. ………………………….. …… 38
4 CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. …. 40
4.1 REZULTATE OBȚINUTE ………………………….. ………………………….. ………………………….. ………………… 40
4.2 DIREC ȚII DE DEZVOLTARE ………………………….. ………………………….. ………………………….. …………….. 41
5 BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. …………………………. 42

Introducere
2 1 Introducere
1.1 Context general
Obiectivele acestei lucrări sunt de a crea un variator de tensiune alternativă folosit
pentru controlul luminozității unui bec, folosind comunicația între microcontroller, zero
cross detector și pagină web care poate fi urmărită de uilizator în timp real. Satisfacerea
utilizatorului este obiectivul pentru care am realizat acest proiect .
Important pentru realizarea proiectului este faptul că se poate realiza în practică,
iar aplicațiile inteligente de acest gen contribuie la dezvoltarea conceptului Internet of
Things, care la rândul lui facilitează viața om ului de zi cu zi, economisind nu doar timp ci
și scazând consumul de electricitate, în plus faptul că putem adapta luminoazitatea ajută
să evităm oboseala din ochi. acest proiect merită realizat, deoarece componentele
hardware sunt accesibile ca preț, imp lementarea fiind ușoară și accesibilă tuturor, iar
vânzarea acestui produs pe piață poate atrage mulți clienți.
Am ales acest proiect deoarece combină partea de hardware cu partea de software,
deoarece nu am mai proiectat până acuma plăcuțe PCB ( printed circuit board) mi -a făcut
plăcere să încerc ceva nou și să reușesc să pot să aplic cunoștințele adunate atât pe partea
de hardware cât și software.
În lucrarea de licență se va implementa un dimmer pentru curentul alternativ care
poate fi folosit pentru a controla intensitatea luminii unui bec și multe altele cum ar fi
turația unui motor în curent alternativ. Aceste proiect este interesant deoarece sistem
combina în el atât curent continuu cât și curent alternativ, astfel pentru a putea controla
intensitate a becului folosim componente hardware precum zero cross detector si solid
state relay -uri.l
Aceasta lucrare este alcătuită din 5 capitole:

1. Introducere,unde se prezintă pe scurt despre ce este vorba în acest document,
obiectivele și specifica țiile.
2. Studiul bibliografic conține rezultatul studierii unor materiale și înțelegerea
acestora.
3. Analiza, proiectarea , implemntarea și testarea fac o intrudcere pentru
implementare, se descriu materialele utilizate, metodele aplicate, tehni cile de abordare a
problemelor, t ehnicilie impementarii descrise detaliat, comunicarea între componente,
crearea boardului PCB și modul în care se utilizează aplicația făcută.
4. Concluziile reprezintă ideile principale în urma realizării acestui proiect, dacă
acesta este neces ar unui individ, și dacă poate avea succes pe piață.
5. În bibliografie se prezintă sursele folosite pentru documentație, pentru
dezvoltarea cunoștințelor în scopul realizării acestui proiect de diplomă.

Introducer e
3 Mai jos aceste capitole vor fi prezentate detaliat, pentru înțelegerea implementarii
proiectului.
1.2 Obiective
Obiectivele care evidențiază orientarea lucrării sunt :
1. Comunicarea TCP/IP
2. Preluarea datelor de pe web și transmiterea acestora catre esp32.
3. Sincronizarea development boardului cu zero cross detecto rul la frecvența de 50
Hz.
4. Setarea luminozită ții care corespunde cu valoarea preluata de pe web.
5. Indicarea luminuozității în timp real.

Aceste obiective constă din mai multe implementări, algoritmi, comunicări între
sisteme. Pentru a reuși să transmitem o valoare trebuie să cream un html server care să
ruleze pe ESP32, acesta la rândul lui va transmite datele necesare către variatorul de
tensiune, care cu un PWM clock și cu ajutorul zero -cross detectorului controlează un solid
state relay ce ajustează lum inozitatea la valorea dorită.
Controlul luminozității va fi realizat pentru a reduce consumul de energie și totodată
pentru a evita oboseala ochilor. Acest control se va realiza manual de către om prin
intermediul unei aplicații web.
Toate obiectivele imp lementate vor forma variatorul de tensiune . Cu toate că în
proiectul acesta controlează un bec, acest domeniu ca și orice altul, nu are limite în idei și
implementari, astfel ieșirea din circuitul realizat poate fi conectată atât la un bec cât și la
orice alt dispozitiv controlat în curent alternativ.

1.3 Specifica ții
În urma implementării dimmerului, se dore ște să se obțină o luminozitate precisă,
specificată de utilizator într -o încapere.
Reglajul intesității luminii se face printr -un pwm clock care transm ite întreruperi
către ieșirea pinii de ieșire a microcontrolerului acestea fiind influențate de valorea setată
de utilizator, frecvența prizei, și zero – cross detectorul care detectează la rândul lui
momentul când sinusoida trece prin zero si anunță micro controllerul.
Următorul pas ar fi comunicarea wireless a microcontrollerului, creând astfel pagina
web, pentru a primi informații de la ESP32 pentru prezentarea în timp real a intensității
luminozității becului și pentru a trimite valoarea dorita la be cul nostru. La partea de
control , se va folosi un tiristor care va porni și opri becul pe ambele semiperioade în
funcție de luminozitatea dorită.
În pagina web va fi implementat un slide bar, cu ajutorul careia va putea fi setată
valoare luminozității becului .

Studiu bibliografic
4
2 Studiu bibliografic
Manipularea luminii este o caracteristică foarte importantă a fiecărui iubitor de
electronică. De la iluminări pana la transmiteri de date prin lumină infraroșu, lumina este
ca un pod între electronică și fizică care duce într -o mulțime de noi direcții. [1]
Cuvântul cheie care se definește caracteristica unei fascicule de lumină se numește
lungime de undă. Lumina călătorește prin sub formă de undă, și distanța dintre doua
vârfuri a unei unde este definită ca și lunfime de unda, după cum se poate observa în figura
2.1.

Figure 2.1 Lungime de undă
O altă caractestistică a fasciculei de lumină este insitatea . Intensitatea radiantului
este măsurată de rata cu care energia intersectează suprafața unei sfere mărginită de un
cerc care se află la vârful unui con , in Wattsi pe steradiani . Pentru a înțelege asta
imaginațivăo sferă cu o mică stea în interiorul ei, steaua împărte lumina în proporții egale
pe toată suprafaț a cercului, acuma adăugați un con cu vârful unde este steaua. Unghiul de
la vărful conului este un radian ( aproximativ 57.3 °). Area definită de conul imaginat e
definită ca și steradian. După cum puteți vedea în figura 2.2.

Figure 2.2 Steradian

Studiu bibliografic
5 Implementarea proiectul propus, ” variatorul de tensiune online ”, ca și orice altă
temă are multe alte posibile abordări și totodată multe posibilități și idei de dezvoltare. În
funcție de nivelul de dificultate ales se pot determina problemele care vor fi atinse,
specificațiile, restricțiile si limitările acestuia.
Ideea de baza a acestui proiect a afost de a atinge conceptul Internet of things și
totodată de a participa la dezvoltarea acestuia. O posibila schema ce poate interpreta
modul in care Internet of Things functionează o putem regăsi în figura 2. 3.

Figure 2.3 Conceptul IoT

Când luăm în considerare conceptul ”Internet of things”, e ușor să pierdem din
vedere idee principală: nu mai construim software pentru dispozitive individuale, dar
creând networkuri de inteligență face posibil sa regândim modul în care ne organizam
lucrul, ne jucăm sau chiar socializăm în sine. [2]
Astfel aju ngem la cel mai exploatat domeniu ”Casa inteligentă”. Tehnologiile precum
”Sisteme de automatizare a casei” sunt încă sub dezvoltare și nu au ajuns la ultimul lor
nivel de maturitate. Având ca țintă dezvoltarea unui sistem capabil sa propage un sistem
capabil sa controleze dispozitivele din casă acesta fiind securizat, acesta a reușit să atingă
domenii din System Automation, Hardware Engineering, Software Engineering, Human
Machine Interaction, Mobile Programming, Produce Line Arhitecture, Software Testing
and Data Management Systems. [3]
Aflându -ne în plină dezvoltare tehnologică oamenii au ajuns la nivelul în care
reușesc să controleze singuri fără ajutorul unor oameni specializați dispozitivele
predestinate contrulului apat elor electrice din casă, acestea punând la dispoziție o
interfață accesibila ușor de înțeles, astfel se deschid ușile noilor producători care reușesc
să facă dispotive tot mai accesibile, rapide și ușor de folosit. Aceste dispozitive nu doar

Studiu bibliografic
6 comunică între ele pentru realizarea scopurilor propuse ci și lasă utilizatorul să acceseze
datele de care dispun acestea în timp real. Comunicarea sistemelor între ele se dezvolta
în timp continuu. Microcontrollerele comunică cu senzori și alte dispozitive fără fir, și
totodată cu dispozitivele conectate la aceeași rețea sau mai noi la dispoitive conectate la
aceeași aplicație, ne mai fiind obligatoriu sa fie conectate la aceeași rețea. De exemplu
controlul luminii dintr -o încapere poate fi controlată de pe telefon, ca lculator sau tabletă,
nu mai e nevoie să te deplasezi până la întrerupător.
Dacă vă întrebați ”De ce avem nevoie de o casă inteligentă ?” este un lucru ca cineva
să își cumpere un smartphone sau un smartwatch și cu totul altceva să îți cumperi o ială
intelgentă, un bec inteligent, sau chiar un frigider, benficiile sunt prea multe și
semnificative ca să încape într -un singur articol. Totuși câteva dintre beneficii ar fi:
 Poate salva bani – unele companii de asigurare încurajează aceasta idee asa
că ofera a numite beneficii clienților care folosesc dispozitive inteligente cum
ar fi detectoare de fum, gaze, etc.
 Poate îmbunătăți securitatea – cumparând sisteme de securitate inteligente
ce pot fi controlate on -line.
 Poate salva vieți – sistemele de health moni tors pot detecta potențiale
probleme și pot anunța doctorii sau alți membri ai familiei.
 Poate salva energie și avea un impact real asupra încălzirii globale –
dispozitivele care știu singure când să intre in mod economisire, sau care pot
fi ajustate după necesitățile personale scad nivelul de energie consumată și
scad din daunele pe care le producem mediului înconjurător.
Deci schimbarile nu pot fi așa rapide și fundamentale cum a fost când toată lumea a
început să folosească smartphonurile dar într -un tim p mai îndelungat acestea pot fi
drastice. [4]
Un dispoitiv inteligent ar ca scop să ușureze taskurile unui om, ajutândul pe acesta
să câștige timp, acesta la rândul lui este compus din trei componente : hardware, software
și rețea. În primul rând acesta trebuie să aibă abilitatea de a recunoaște ce se întâmplă
atât într -o clădire cât și în afara acesteia. Tocmai de aceea dispozitivile comunica
încontinuu cu unul sau mai mulți senzori. De exemplu, un dispozitiv poate detecta
numărul de persoane, intensitatea luminii, activitatea dintr -o încăpere, nivelul diferitor
gaze cum ar fi dioxidul de carbon, nivelul de gălăgie și mulți alți factori care ar putea fi
reglați sau informațiile cărora pot ajuta microcontrollerul să ia o decizi e. Pentru a lua o
decizie acesta are nevoie de anumiți algoritmi de procesare, dupa ce decizia a fost luată
dispoitivul reglează anumite procese, de aceea are nevoie de actuatori și regulatoare.
Lucrurile descrise mai sus sunt defapt o ramură a inteligențe i artificiale și se încadrează
în partea software a unui dispozitiv inteligent .
Propun să considerăm o întrebare, ”Pot mașinile gândi ?” [5]
Raspunul la această întrebare e foart e simplu, inteligența artificială in ziua de az i încă se
dezvoltă, însă oamenii reușesc să o strecoare tot mai mult în viața de zi cu zi, avem nevoie
să o antrenăm tot mai mult, avem nevoie de mai mult ajutor din partea oamenilor. [6]

Studiu bibliografic
7 Componenta hardware implică partea de s enzori și microcontrollere care reușesc
să adune informații despre consumul de energie, sau factori care pot influența domeniul
pentru care este predestinat dispozitivul. Toate aceste date pot fi accesate de obicei în
timp real datorită componentei rețea c are este utilizată pentru a conecta dispozitivele
între ele. Datele acumulate ajută microcontrollerul sa ia anumite decizii care la început
sunt predefinite de programator însă dacă dispoitivul este legat la un sistem ce
predispune inteligență artificiale acesta se poate adapta singur în funcție de datele culese.
E aproape imposibil să creezi un dispozitiv sau aplicație nouă, însă lumea e în
continuă dezvoltare de aceea trebuie mereu sa tindem să aducem îmbunătățiri, care să
ajute un individ să câștige timp îndeplinindu -și anumite taskuri mai rapid astfel
economisind timp.
Tocmai de aceea dispozitivul nostru va ajuta un individ sa controleze luminozitatea
unui bec fără ca acesta sa se deplaseze la întrerupător sau să foloseasca un potențiometru
fizic.
În ace s scop vom folosi tehnologii precum zero cross detector, solid state relay,
ESP32 development board sau comunicare online. Astfel reușim să abordăm tema ”Casă
Inteligenta” care poate fi controlată prin ajutorul dispozitivelor ce fac parte din familia
Internet of things. O posibilă schemă a unei case inteligente este prezentată în figura 2. 4.

Figure 2.4 Casă inteligentă
Un bec inteligent face parte din categoria Smart Home care la rândul lui face partie
din Smart City, toate astea reprezintă un număr ridicat de dispozitive care se conecteaza
la internet prin automatizarea încăperilor.
Pentru a putea controla intensitatea acestuia avem nevoie de un dimmer de curent
alternativ. Curentul alternativ este curent ul care își modifică amplitudinea și polaritatea
cu o anumită frecvență în unitatea de tim p. [7]
Pentru o sursă de curent alternativ se definesc doi parametri :

Studiu bibliografic
8  Amplitudinea maximă a intensității curentului respectiv tensiunii e lectrice
 Frecvența de variație la bornele sursei de curent alternativ.
La nivel mondial, alimentarea consumatorilor se face prin doua standarte:
 European : AC : 220 -240 V , 50 Hz
 Nord American : AC : 110 V , 60 Hz [7]

Curentul alternativ este folosit peste tot, atât în industrie cât și în condițiile casnice.
Utilizarea acestuia se justifică printr -o serie de avantaje :
 Ușor de generat
 Costuri reduse
 Se poate transporta ușor la distanțe mari cu pierderi mici
 Se poate transforma
In figura 2.5. putem vedea o perioada a unei unde sinusoidale unde linia punctata
reprezintă valoarea efectivă.

Figure 2.5 Perioada unei sinusoide
Deși generatoarele electromecanice și multe alte fenomene f izice produc în mod natural
forme de undă sinusoidale, acestea nu sunt singurele forme de unde alternative existente.
Există o varietate de unde alternative produse de circu itele electronice. În fiugra 2.6 . sunt
câteva exemple. [7]

Studiu bibliografic
9
Figure 2.6 Forme de undă alternative

Valoarea efectivă a curentului alternativ poate fi definită ca și valoarea unui curent
continuu care are același efect termic ca și curentul alternativ dat.
Valorea medie a curentului aternativ poate fi definită ca și valoarea medie calculată
numai ausprea unei semiperioade pozitive. După cum zice definiția valoarea medie
reprezintă un curent continuu mediu care transportă aceeași sarcină electrică pe durata
unei semi perioade ca și curentul alternativ dat.
Pentru a putea controla curentul alternativ avem nevoie de un circuit care sa detecteze
trecerea sinusoidei prin zero cum este reprezentat în figura 2. 7.

Figure 2.7 Trecerea sinusoidei prin zero

Aici apare fenomenul ”zero -crossing” în curentul alternativ acesta este punctul in care
nu este prezenta tensiunea. Î ntr-o undă sinusodială sau altă formă de unda acesta apare
de obicei de 2 ore într -o perioadă de timp. Pe ntru a detecta zero -crossin gul am folosit
circuitul H11AA1 prezentat in figura 2. 8.

Studiu bibliografic
10
Figure 2.8 H11AA1

H11AA1 este un isolator bi -direcțional care se cuplează optic format din două
LED -uri infraroșu din ga llium arsenide invers paralele cuplate la un NPN fotoranzistor
întro cutie cu 6 pini . Designul acestuia a fost gândit pentru a monitoriza undele
curentului alternativ.
Domeniile în care acesta poate fi folosit sunt următoarele :
 Detectare linii telefonic e
 AC motor
 PLC
 Monitorizare curent alternativ
După ce am detectat zero crossul vom transmite un inpul s către microcontrollerul,
microcontrollerul ales este ESP32. Am ales acest microcontroller deoarece în momentul
de față este una dintre cele mai bune aleg ere dacă luăm în calcul raptortul preț calitate,
acesta fiind un hybrid Wi -Fi și bluetooth chip poate funcționa ca și un sistem sau ca un
slave device pentru a hostui un MCU. ESP32 se poate conecta cu alte sisteme pentru a le
oferi funcționalități Wi -fi și Bluetooth prin interețele SPI/SDIO sau I2C/UART.
ESP32 are un consum ultra mic, proiectat pentru dispozitive mobile, elctronice
portabile si aplicații Internet of Things, ESP32 poate atinge un nivel foarte mic de
consum, pe lângă asta acesta are mai multe moduri de consum, acestea fiind influențate
de modulele folosite. Datorită designului robut acesta este capabil să funcționeze în
medii industriale destul de severe cum ar fi temperaturi cuprinse între -40°C până la
+125 °C. Datorită circuitele de calibra re avansate, ESP32 poate să -și elimine dinamic
imperfecțiunile externe ale circuitului și să se adapteze schimbărilor în condiții externe.
Acestea ne pune la dispoziție câteva kit -uri de dezvoltare :
 ESP32 -PICO -KIT – cel mai mic board de dezvoltare, dator ită dimensiunii
reduse, acesta este complet funcțional cu un număr minim de comp onente,
având toți pinii expuși. Microcontrollerul folosit : ESP32 -PICO -D4.
 ESP32 -WROVER -KIT – este boardul de dezvoltare cel mai versatil, cu o lista
bogata de funcții cum ar fi LCD, Jtag, Camera header, RGB LEDs, etc.
Microcontrollerul folosit : ESP32 -WROVER.
 ESP32 -DevKitC – este un board entry level, ușor de conectat și folosit.
Microcontrollerul folosit : ESP32 -WROOM -32.

Studiu bibliografic
11  ESP32 -LyraTD -MSC – este un board audio , acesta dispune funcții precum
Acoustic Echo cancelation, recunoaștere vocală, activare vocală.
Microcontrollerul folosit : ESP32 -WROVER.
 ESP32 -LyraT – dezvoltată pentru industria audio ce se folosește de
recunoaștere vocală. Microcontrollerul folosit : ESP32 -WROVER.

Următorul pas este sa controlăm AC curentul printr -un PWM clock. În general toate
microcontrollerele sunt echipate cu convertoare analog digitale pentru a converti
valorile analogice în valori digitale, dar nu există convertoare digital analogice în
AVR(reglare automata a tensiunii) în acest caz cea mai bună soluție este PWM. Acesta în
general este folosit pentru controlul luminozității luminii și vitezeii unui motor prin
variația ciclului de funcționare.
Ciclul de funcționare este definit ca durata pentru care forma de undă este în
stare activă raportată la perioada totală a aces tuia conform exemplului din rela ția (2.1).
𝐷𝑢𝑡𝑦𝑐𝑦𝑐𝑙𝑒 = 𝑡
𝑇 (2.1)
Unde :
 Dutycycle este ciclul de funcționare
 t este timpul în care forma de undă este în stare activă
 T este perioada undei
Cu ajutorul ciclului de funcționare putem determina tensiunea de ieșire( output
voltage) care depinde de tensiunea de intrare ( input voltage) conform exemplului din
relația (2.2).
𝑂𝑢𝑡𝑝𝑢𝑡𝑣𝑜𝑙𝑡𝑎𝑔𝑒 =𝐷𝑢𝑡𝑦𝑐𝑦𝑐𝑙𝑒 ∗𝐼𝑛𝑝𝑢 𝑡𝑣𝑜𝑙𝑡𝑎𝑔𝑒 (2.2)
În Figura 2. 9. puteți vedea fenomenulde duty cycle ( ciclu de funcționare)

Figure 2.9 Duty cycle
Un simplu generator de unde unde poate fi combinat cu un comparator pentru a
genera un PWM. Prin variația valorii de a intrare dată terminalului negativ a
comparatorului obținem unde cu perioade diferite după cum putem observa în figura
2.10.

Studiu bibliografic
12
Figure 2.10 PWM waveform
Comparatorul este folosi t pentru a varia doar ciclul de funcționare, pentru a putea
modifica perioada de ieșire a semnalului vom folosi timere PWM.
Ca și exemplu putem controla luminozitatea unui LED doar ajustândui ciclul de
funcționare. Cu un led RGB putem controla si culoarea luminii combinând cele trei culori
și setânduli valori de dimming diferite. Dacă toate trei au aceeași valoare de dimming
atunci rezultatul va fi o lumină alba cu o luminozitate care va varia. Albastrul amestecat
întro cantitate egală cu verdeale emana o n uanță de turcoaz. Un exemplu un pic mai
complex ar fi coluoarea roș ie să aibă valoare 100 %, verde 50 % iar albastru 0 % pentru
a primi culoarea portocalie.
Frecvența undei dreptunghiulare nu trebuie sa fie maximă pentru a obține efectul de
dimming. Un d uty cycle de 20 % la frecvența de 1 Hz este destul de evident ca va avea
efectul de ON / OFF pe când un duty cycle de 20 % la 100 de Hz va crea un efect de
dimming cu o perioada scurtă.

Timerul este o componentă crucială pentru un sistem embeded. Acestea sunt
folosite pentru a măsura timpul sau pentru a numară evenimente externe, timerul mai
poate fi numit si counter ( numărător) difernța dintre acestea doua poate fi folosita mai
mult la nivel hardware în figura 2. 11. veți putea vedea forma unui simplu ti mer/counter.
[8]

Figure 2.11 Timer / Counter

Studiu bibliografic
13
În figura 2.8 de mai sus este prezentat un timer pe opt biți, programul încarcă în
registrul acestuia valori între 0x00 și 0xFF la fiecare clock primit, cand valoarea este
depașită acesta transmite un semnal către interior care este tratat ca și o întrerupere iar
procesorul hotărăște ce să facă în continuare. Dacă counterul este crescător acesta
numără de la 0x00 la 0xFF, dacă este d escrescător acesta numără de la 0xFF la 0x00. De
obicei timerul pornește în momentul în care îi setăm un anumit bit în registrul de
control. Valorile unui timer sunt reținute întru registru la care procesorul are acces,
odată ce valoarea a depășit capacit atea maximă a registrului acesta provoacă o
întrerupere iar timerul se resetează automat, însă procesorul poate apela o întrerupere
în orice moment dorește el atunci timerul doar își va transmite valoarea din registru
după care registru va continua sa își incrementeze valorea de unde aceasta a rămas. Un
timer de genul are de obicei aceeași acuratețe ca și frecvența clockului de intrare. Mai
există și timere de capturare de intrare (input capture timer) pe care le putem observa
în figura 2. 12.

Figure 2.12 Input capture timer
Un timer de capturare de intrare are un registru zăvor conectat către registru de
numărare a counterului. Timerul funționeaza la un clock rate constant, de obicei acesta
este derivativ de la clockul procesorului, astfel încât registrul de numărare este
incrementat constat( sau decrementat pentru un counter descrescător). [8] Una dintre
folosințele acestui timer este pentru a măsura timpul dintre doua tranzacții a vârfului a
două impulsuri. Prin citirea valoarea curentă in registrul zăvor și compararea acesteea
cu citirea anterioara, programul poate determina câte cicluri de clock au trecut între cele
doua impulsuri. În unele cazuri registru de numărare a counteru lui poate fi resetat
automat după ce valoarea acestuia a fost scrisă in registrul zăvor, în acest caz programul
interpretează direct valoarea pe care o citește ca și numărul de clockuri trecute. Un pin
de capturare poate fi programat să captureze pe margin ea crescătoare sau cea
descrescătoare a semnalului de intrare. Acestea vor fi folosi pentru a detecta frecvența
curentului alternativ.
Controlul becului se va face cu un triac. Triacul este o componenta
semiconductoare folosită pentru a înlocui douna tiri stoare montate în antifază prevăzut
cu o poartă și două borne pentru curent. Acesta are avantajul, față de tiristoare, faptul că
poate fi trecut în starea de conducție în ambele semiperiode, pozitivă și negativă,
structura internă a unui triac este repreze ntată în figura 2.13.

Studiu bibliografic
14
Figure 2.13 Structura internă a unui triac
Simbolul acestuia poate fi regăsit în figura 2.14.

Figure 2.14 Structura internă și simbolu l unui triac
 Când se aplică pe poarta G un impuls pozitiv, A1 este mai pozitiv decât A2
triacul amorsează și conduce de la A1 spre A2. În acest caz conduc
tranzistoarele T1 și T2.
 Când se aplică pe poarta G un impuls pozitiv, A2 este mai pozitiv decât A1
pozitiv triacul amorsează și conduce de la A2 spre A1. În acest caz conduc
tranzistoarele T2 și T1.
Pentru a identifica terminalele triacului se măsoara cu multimetrul rezistența dintre
A1 și G. În ambele sensuri rezistența trebuie să fie mică ( câteva sute de ohmi). Între A2 și
restul terminalelor rezistența este mare.
Acesta va fi protejat de un circuit snubber. Acesta funcționează ca și un absorbant
de nergie folosite pentru a anula spike -urile de tensiune cauzate de impedanța
circuitului când un switch sau o rezistență, electrică sau mecanică, se deschide. Cel mai
comun snubber este întâlnit snubber este format dintr -un condensator și o rezitență
contectate în serie în jurul switch -ului (rezistorului) reprezentat în figura 2.15.

Figure 2.15 Circuit snubber

Studiu bibliografic
15 Pentru a alimenta microcontrollerul avem nevoie de o tensiune continua cu
valorea de 5 V, pentru asta vom volosi un circuit redresor care transforma curentul
alternativ în curent continuu. Acest circuit va avea câteva elemente esențiale, cum ar fi o
punte redresoare, un transformator, un regulator și niște condensatoare.
Astfel pentru început curentul va trece printr -un transformator care transformă
două sute douăzeci de volți în șase volți curent altern ativ, după care vom folosi o punte
redresoare pentru a transorma curentul continuu în curentul alternativ, după punte
redresoare vom folosi niște condensatoare pentru a elimina spike -urile de tensiune,
după aceasta vom folosi un regulator pentru regla tens iunea de aliemntare a
microcontrollerului. Pentru a vă face o idee mai bună puteți urmări schema din figura
2.16. care reprezintă un modul prin care este alimentat microcontrollerul nostru ESP32.

Figure 2.16 Schema aliemntare ESP32
Pentru a realiza un dimmer online este nevoie de implementarea unei interfețe cu
care să comunice utilizatorul, acesta are nevoie să cunoasca valoarea la care este setat
becul în timp real. Pentru a face un sistem mai complex treb uie investit. Această
interfață trebuie să fie în timp real, deoarece aceasta este cererea pieței in momentul de

Studiu b ibliografic
16 față, iar pentru a putea fi scos produsul trebui țină pasul cu dezvoltarea pieței din punc
de vedere tehnologic.
Aplicațiile web și rețelele wi reless fac parte din tehnologiile folosite azi [9].
Pentru realizarea unui dimmer online se folosește un sistem încorporat, un
microcontroller, care să comande luminozitatea . Acest sitem va avea capacitatea de a
comunica cu uti lizatorul prin intermediul internetului, de aici deducem ca
microcontrollerul nostru va avea un modul de internet. Sisteme încorcoporate pot să
facă schimb de date din orice colț al planetei. Aceste sisteme online sunt făcute pentru a
ne ușura viața.
Aplicațiile web realizate prin sisteme încorcporate, pot fi conectate peste tot prin
intermediul unei adrese IP. Există și alternative cum ar fi ethernetul sau sitemele LAN.
Aceste sisteme în general, trimit date, le prelucrează, și apo face controlul cu ajut orul
comunicării bidirecționale, de la sistem la client, de exemplu utilizatorul poate vedea
valoarea care a fost setată pentru bec în timp real, totodată acesta poate trimite o altă
valoare către microcontroller, acesta analizeaza valoarea dorită o seteaz ă și ii trimite
utilizatorului înapoi pagina web cu noile valori setate.Pentru prima dată, informațiile
primite de la microcontroller se analizează și se verifică, după aceea se trimit către
aplicație. La fel și pentru datele primite de către client, se ve rifică dacă acestea sun bune
după care sunt trimite la microcontroller pentru a fi introduse în algoritmii de control.
Sistemele încorporate în general funcționează după principiul schimbării datelor
primite, din acest motiv este nevoie de o monitorizare c ontinuuă. Arhitectura unui sitem
încorporat se poate analiza în figura 2.16.

Figure 2.17 Arhitectura unui sistem încorporat
Ideea principală a aceste aplicații este de a realiza o comunicare bipozițională
între client și microcontroller cu ajutorul căreia utilizatorul să poată urmări real – time
ce valori setează și ce răspuns primește de la microcontroller. Pentru a face o
comunicare bipozițională este nev oie de cererile HTTP, POST sau GET. Aceste cereri se
încadrează în categoria serviciilor REST( Representational State Transfer) care vor fi
prezentate în figura 2. 17. pentru a fi întelese mai usor.

Studiu bibliografic
17
Figure 2.18 REST( Representational State Transfer)
REST su nt folosite de site -uri precum Amazon, Yahoo, Google, Flickr, Facebook,
Myspace, LinekdIn, Microsoft, Ebay, etc… Acestea este gândit ca să arate cum o aplicație
Web cu design bun se comportă : o rețea de pagini web ( o mașina virtuală de stări),
unde use rul progrezează în aplicație prin selecția linkurilor ( tranziții de stare),
rezultând în pagina următoare ( care reprezintă urmtoarea stare a aplicației ) să fie
transferat către user și remodelată pentru propria folosință. [10] . Un browser web
comunică cu serverul de obicei folosind una din cele două metode HTTP – GET si POST.
Ambele transmit informația în mod diferit și au avantajele și dezavantajele lor.
Metod GET transmitele datele în linkul URL ca și parametri care de ob icei sunt
stringuri separate de caractele albe ( exemplu : caracterul &)
Avantajele și dezavantajele acestei metode sunt următoarele :
 Din moment ce datele trimise prin metoda GET sunt afișate în linkul URL,
acestea nu sunt foarte sigure.
 Datele care pot fi transmise sunt limitate.
 Metoda este mai rapidă.
Metoda POST trimite datele sub formă de pachet de date într -o comunicare separată cu
scriptul de procesare. Datele trimise prin POST nu sunt vizibile in linkul URL.
Avantajele si dezavantajel aceste meto de sunt următoarele :
 Este mai sigură decât metoda GET.
 Limita de date pe care le putem trimite este mult mai mare.
 Este mai lentă ca și metoda GET.
Un lucru care ar trebui punctat este că interacțiunea dintre două componente prin
protocolul TCP/IP are lo c sub forma unei arhitecturi server – client. Clientul trimite o
cerere în timp ce serverul o procesează și îi raspunde acestuia. În figura 2.1 8. puteți
vedea cum circulă datele când deschideți pagina web.

Studiu bibliografic
18
Figure 2.19 Data Flow a unui website
Microcontrollerul nostru poate fi programat prin mediul de programare Arduino cât
și Eclipse.
Arduino este un software open – source la care poate contribui oricine dorește, este
una dintre cele mai simplu de utiliza t platforme cu microcontroller. Ide -ul Arduino
suportă limbajele de programare C și C++ folosind reguli speciale de organizare a
codului. Un program simplu este compus de obicei din două funcții :
 Setup() : funcție rulată o singură dată când se inițializează stările.
 Loop() : funcție apelată în mod repetat până la oprirea plăcuței.
Aceste funcții sunt legate între ele cu funcția main().
Eclispe este un mediu de programare mai dezvoltat, în cazul no stru vom folosi ECLIPSE
CDT, proiectul CDT ne pune la disponibilitate un mediu de programare C/C++ complet
funcțional bazat pe platforma eclipse. CDT simplifică munca utilizatorului punândune la
dispoziție tooluri și utilități care ne ajuta să urmărim evol uția microcontrollerului și a
aplicației în timp real la nivel de regiștri sau chiar memorie. Acesta ne pune la dispoziție
utilități precumn :

 Build ( ca și make).
 Compile ( ca și gcc).
 Debug ( ca și gdb).

Pentru proiectarea unui PCB( printed circuit boa rd / plăcuță de circuit printată)
există multe tooluri însă acest document va cuprinde câteva informații despre mediul de
proiectare EAGLE. Acesta poate fi programat atât vizual cât si cu ajutorul unui script, ne
pune la dispoziție crearea atât a schematic ului cât si a boardului, în plus are tooluri de
verificare ce îți zice traseele ce nu se încadrează in normele europene de proiectare. În
figura 2 .19 puteți observa o mică reprezentare a programului EAGLE .

Studiu bibliografic
19

Figure 2.20 EAGLE software

După studiul bibliografic prezentat mai sus, s -a ales implementarea unui dimmer
online, cu un microctronoller, un zero cross detector, un t riac, un modul pentru
conectarea la aplicație cu IP -ul primit prin calculatorul person al.
În urma cercetărilor am ales această implementare, deoarece este ceva nou, și
combină atât partea hardware cât și cea software, în plus este un produs care poate
ajuta la dezvoltarea conceptului internet of things, ceea ce înseamnă ca acest produs
poate avea succes pe piața deoarece ajută clientul să economisească timp, problema cea
mai mare a omenirii fiind veșnica lipsă de timp.

Analiză, proiectare, implementare, testare
20 3 Analiză, proiectare, implementare , testare
3.1 Analiză și proiectare

Ac dimmerul stă la baza tuturor sistemelo r create pentru a controla lumina fie ca e
vorba de un simplu bec sau led sau un led RGB. Datorită faptului că sistemul este real –
time, toate modificările impuse de client vor putea fi observate imediat. Pentru realizarea
acestui proiect este nevoie de un microcontroller, un circuit de control a curentului
altenativ, un bec, si o sursa de alimentare. În figura 3.1 este reprezentat schematic un ac
dimmer și componentele acestuia.

Figure 3.1 Schema Ac dimmer ului

Analizând acest proiect, regăsim mai multe module care trebuie tratate :
 Impelemntarea aplicației web.
 Conectarea microcontrollerului la Wi -Fi.
 Detectarea frecvenței tensiunii.
 Colectarea de date de la aplicația web.
 Setarea valorii necesare corespu nzătoare luminozității becului.
 Sincronizarea impulsurilor triacului cu cele a zero -cross detectorului.

Analiză, proiectare, implementare, testare
21

În figura 3.2. vom putea urmări care va fi corelația utilizator – aplicație a proiectului
nostru.

Figure 3.2 Diagrama cazurilor de utilizare
În primul rând, ne vom ocupa de selecția unui microcontroller, datorită studiului
bibliografic realizat, am ales familia de microcontroller ESP32, pentru aceasta avem
următoarele motive : este unul dintre cele mai folosite micocontrollere folosite pentru
proiectele legate de internet of things, pe lângă funcțiile Bluetooth de care dispune acesta
are treizeci și doi de pini INPUT/OUTPUT și un procesor cu două nuclee pe treizeci și doi
de bitsi și totul la mai puțin d e 15 dolari. Acesta dispune de un procesor Tensillica Xtensa
32-bit LX6 cu 2 nuclee, o frecvență ce poate ajunge până la 240 MHZ și are un co -procesor
ultra -low power care permite să faci conversii ADC, calcule aritmetice toate astea în timp
ce ești în mod ul de deep -sleep. Are un modul Wi -fi 802.11 de 2.4 Ghz care ajunge până la
150 Mbit/s, un modul Bluetooth v4.2 BR și bluetooth low energy ( BLE ). Memoria este
împărțită în modul următor:

 Memorie internă : ROM 448 KiB , SRAM 520 KiB, RTC fast/slow SRAM: 8 Kib
fiecare.
 Memorie externă : suportă până la 16 MiB externi.

În concluzie vom alege ESP32 devkit C deoarece este un sistem cu un consum de putere
foarte mică, are integrat modul Wi -Fi, este rapid și accesibil.

Analiză, proiectare, implementare, testare
22 În figura 3.3. puteți observa arhitectura acestui microcontroller.

Figure 3.3 Structura arhitectura ESP32
Pentru a conecta microcontrollerul la aplicația noastra we b, vom folosi comunicarea prin
TCP / IP ( Transmision control/Internet protocol). Astfel este necesar ca
microcontrollerul să aibă încorporat un modul de internet. Această metodă de
comunicare utilizează socket -uri, datele sunt primite în ordinea în care acestea au fost
trimise. Transmision controrl protocol / Internet protocol ( TCP/I P) utilizează
comunicarea de tip client – server în care calculatorul utilizatorului activează ca și client
iar în cazul nostru microcontrollerul funcționează ca și server care trimtie ca și răspuns o
pagină WEB(în rețea). Protocoale precum HTTP ( Hypertex t Transfer Protocol), FTP( File
transfer protocol) si Telnet sunt la fel întâlnite în comunicarea TCP/IP.
Protoculul TCP/IP funcționează după următorul principiu, microcontrollerul se
conecteză la net prin intermediul adresei IP primit la un server, când i ntroducem în
browser acest IP la adresa URL se accesează aplicația Web, care este transmisă de
microcontroller aceasta întâlninduse în codul scris pe plăcuță. Aplicația conține
HTML,CSS și Javascript.
În aplicația creată pentru AC dimmer utilizatorul poate urmări în timp real ce
valoare are setată ca și referință ac dimmerul și totodată acesta poate modifica această
valoare. Această comunicare este bidirecțională, deoarece este de la sistem la utilizator și
viceversa, și se realizează prin metodele descrise în studiul bibliografic : GET/ PUT și
comenzile AJAX pentru a putea urmări totul real -time. După cum a fost descris în studiul
bibliografic aceste comenzi se folosesc de linkurile URL, deci microcontrollerul își preia
valoare referință din linkul URL.

Analiză, proiectare, implementare, testare
23 Ajax( asynchronous JavaScrpit and XML) în schimb nu se identifică ca un limbaj de
progamare, în schimb, acesta folosește informația pe care o preia de pe web serv er pentru
a afișare, acesta permite actualizarea asincronă a informațiilor pentru aplicațoa noast ră.
În figura 3.4. putem urmări cum funcționea AJAX, mai detaliat, modul prin care se
trimit cereri către server și cum acesta răspunde la rândul lui cu informații înapoi căre
informații preluând de la server doar strictul necesar, specificat de utilizator .

Figure 3.4 Structura AJAX

Reglarea tensiunii de ieșire se poate ajusta cu ajutorul unui triac, care conduce pe
ambele semiperioade a curentului alternativ. Acest control are ca și avantaj față de releu
viteza cu care poate fi comutat triacul, un rezultat mult mai precis și mai silențios. Astfel
cu ajutorul unui dimmer vom putea controla cat la sută dintr -o semiperioada să folosim
din tensiune, o reprezentare a semnalului transformat puteți observa în fig ura 3.5.

Figure 3.5 Ac dimmer
Pentru a putea controla triacul avem nevoie de o sincronizare între triac și forma de
undă generată de curentul alternativ. Pentru asta vom folosi un zero cross detector.
Acesta este folosit pentru a detecta momentul în care o sinusoidă tranzicționează din
partea pozitivă în cea negativă acest moment coincide cu momentul în care tensiunea are
valoarea zero. Acest lucru poate fi făcut cu un optocuplor și cu un LED care în moment ul
în care a detectat zero -crossul va trimite un impuls catre microcontrollerul nostru, iar
acesta după un algoritm creat de noi, va controla triacul, care va controla la rândul lui

Anal iză, proiectare, implementare, testare
24 tensiunea de ieșire. O scurtă reprezentare a modului de funționare a octoc uplorului va fi
prezentată în figura 3.6.

Figure 3.6 Zero – Cross ( momentul de tensiune zero)
Pentru a putea controla triacul nu e destul sa avem un zero cross detector trebuie să
cunoaștem și frevența ten siunii, știm ca există două valori standarte de 50 Hz și 60 Hz însă
pentru a face dispozitivul cât mai fiabil vom implementa un circuit ce are capabilitatea de
detecta singur care e frecvența tensiunii. Pentru asta avem nevoie de un timer input
capture car e va detecta impulsurile primite de la zero cross detector, care va putea detecta
timpul dintre două impulsuri și astfel va detecta automat frecvența tensiunii de intrare.
Pentru a folosi timer input capture trebuie să înțelegem mai detaliat cum funcționea ză
acesta, acesta înregistrează în memorie timpul în care apare o întrerupere și setează un
flag, aceasta permite sistemului să funcționeze în continuare fără întreruperi iar intrările
pe pinul setat ca și ce urmărește evenimetul extern care ne interesează pe noi încă pot să
declanșeze întreruperi timpul exact în care aceste evenimente sau produs fiind
înregistrate în memorie. În figura 3.7. pute observa structura unui input capture timer.

Figure 3.7 Timer s implu cu input capture
După ce am stabilit frecvența tensiunii putem controla si triacul, dar pentru asta
avem nevoie de un PWM timer care va număra numărul de cicluri ș i în funcție de acestea
controlează triacul care la rândul lui reglează tensiunea de ie șire. PWM este un termin
des întâlnit în proiectele ce au ca scop controlul unei tensiuni de ieșire cu ajutorul unui
microcontroller, luminozitatea putea fi controlata cu un potențiometru, însă din moment
ce dorim să facem acest proces online, vom avea ne voie ca tot acest proces să fie executat
de microcontroller care are ieșire digitală, și are doua stări ON sau OFF. Aici intervine
PWM clock -ul aceste are abilitatea de a simula variația tensiunii oscilând ieșie de la

Analiză, proiectare, implementare, testare
25 microcontroller către triac. De exempl u dacă pe o perioadă de timp care va corespunde
frecvenței detectate anterior jumătate te timp timerul va ține triacul on și jumătate off,
becul ba arde cu luminozitate de 50 % dupa cum se poate observa în figura 3.8.

Figure 3.8 50 % duty cycle

Acuratețea cu care vom putea controla tensiunea de ieșire este cunoscută ca și
rezoluția PWM -ului. Cu cât este mai mare aceasta cu atât mai multe nivele de
luminozitate, dacă este vorba despre controlul luminozităț ii unui bec, putem avea, din
moment ce ciclul de funcționare în cazul nostru este fixat la 50 Hz o rezoluție cat mai
mare necesita un timing cât mai bun de la microcontroller. Un alt factor limitator este
execuția codului, deoarece nu dorim ca microcontro llerul nostru doar să controleze
triacul ci să facă si alte taskuri, cum ar fi sa preia datele de pe net, sa ruleze
întreruperile necesare, să achiziționeze datele de la componentele externe, ect.
Avantajul unei rezoluții mare a PWM clock -ului este că d iferența dintre OFF și
valoare minimă respectiv ON și valoare maximă este foarte mică. De exemplu pentru
o frecvență de 50 Hz vom avea un ciclu de funcționare de 20000 microsecunde dupa
formula 3.1., diferența dintre off și cea mai mică posibilă ieșire de tensiune va fi
minimum 50 % , din tensiunea de intrat, la o rezoluție de 2000 microsecunde va fi
10%, ceea ce se va putea observa în figura 3.9 .
𝑇= 1
𝑓 (3.1)
 T – timpul.
 f – frecvența.

Analiză, proiectare, implementare, testare
26
Figure 3.9. 10 % PWM rezolution

Odată ce avem toate datele achiziționate și procesate vom putea controla triacul,
care la rândul lui controlează tensiunea setând în intervale foarte mici stări de ON/OFF.
Acesta va primi un impuls pe poartă ( gate ) de doua ori la o perio dă, odată pe
semiperioada negativă, odată pe semiperioada pozitivă. În funcția de valoarea obținută de
la utilizator, acesta va primi impulsul cu o întarziere astfel din va conduce doar o anumita
perioada de timp din semiperioada pozitivă respectiv negativ ă, datorită aceste întarzieri
noi vom crea efectul de dimming ceea ce se poate urmări în figura 3.10.

Figure 3.10 Manipularea tensiunii cu ajutorul unui triac

În următoarele paragrafe va fi descris în det aliat implementarea ac dimmerului.
Vom începe cu mediul de implementare. Aplicația online AC dimmer este implementată
în limbajul C embedded, în mediul de dezvoltare Eclipse IDE. Codul conține partea de
sincronizare cu zerro cross detectorul, partea de com anda a triacului, partae de control și
de comunicare cu pagina Web. Implementarea aplicației web este scrisă într -un vector de
tip caracter, care este transmisă de către microcontroller, rezultând interfața aplicației.
Deoarece este încă într -o stare de d ezvoltare, putem considera ESP32 ca și o placuță
exeperimentală. Fiind o plăcuță destul de dificil de înțeles cu multe bug -uri în ajutorul
nostru vin cei de la Espressif care ne pun la dispoziție mai multe librazii cu funcții
predefinite, însă pentru a aju nge să folosim aceste librării avem nevoie să parcurgem mai
mulți pași pe care îi vom urmări mai jos.

Analiză, proiectare, implementare, testare
27 Pentru început vom avea nevoie de un toolchain, dacă folosiți windows procesul este
un pic mai lung deoarece acesta nu are integrată comanda ”make”, deci pe a instala
toolchainul nostru vom avea nevoie de un GNU compatibil. Vom folosi mediul MSYS2, nu
avem nevoie de cunoștințe avansate pentru a folosi acest mediu deoarece acesta va rula
mai mereu în spate. Pentru a instala acesta exista un zip file pe sit e-ul oficial Espresiff
[11]. După ce ați descărcat și setat MSYS2 va trebui să deschideți terminalul MSUS2
MINGW32, creați un director nou cu numele esp după care downl oadați in acel director
esp-idf de pe repository -ul ESP -IDF [12]. Urmează să setam PATH -ul esp -idf folosind
variabila de mediu IDF_PATH. Pentru aceasta e destul să deschidem un termina MSYS2 și
să introducem : export IDF_PATH="C:/msys32/home/user -name/esp/esp -idf". Odată ce
am parcus aceșt i pași, urmează să setăm ESP -IDF în mediul de programare Eclipse. Eclipse
folosește ESP -IDF makefile. Aceasta înseamnă ca va trebui să creăm un proiect ESP -IDF,
putem folosi un idf -template de pe github sau să folosim unul dintre proiectele exemple
care se afla în arhiva noastra EPS -IDF. Proiectul trebui importat ca și ”Existing Code as
Makefile Project”. La următorul pas ne va cere să specificăm un directory trebuie să setăm
sursă nouă . Ca și toolchain vom selecta Cygwin GCC, veți observa un mesaj de aten ție care
va zice Cygwin GCC Toolchain nu poate fi găsit, va trebui să o ignorați, aceasta problema
va fi rezolvată în pașii următori. În continuare va trebui sa accesam proprietățile
proiectului, apăsăm click dreapta pe proiect și alegem proprietăți după c are mergem la
”C/C++ Build” și urmărim următorii pași :
 Debifăm ”use default build command” după care scr iem în căsuța dedicată
comenziide build customizată :
python ${IDF_PATH }/tools/windows/eclipse_make.py
 Mergem la ”Enviroment” la categoria ”C/C++ Build ”.
 Apăsăm add și introducem BATCH_BUILD cu valoarea 1.
 Apăsăm add și introducem IDF_PATH, valoarea trebuie să corespundă cu
calea la care se află ESP_IDF.
 PATH variable va trebui înlocuită cu calea undea a fost instalat mingw32. De
exemplu dacă a cesta a fost instalat în local disk atunci vom folosi
C:\msys32 \usr\bin;C: \msys32 \mingw32 \bin;C: \msys32 \opt\xtensa –
esp32 -elf\bin
 Accesăm ”C/C++ general” după care mergem la ”Preprocessor Include Paths,
Macros”
 Mergem la fereastra Providers accesăm CDT GCC Built -in Compiler Settings
Cygwin, la ”Command to get compiler specs” va trebui să înlocuim textul
${COMMAND } cu xtensa -espre32 -elf-gcc
 Selectăm ”CDT GCC Build Output Parser” și scriem xtensa -esp32 -elf la
începutul comenzii.
 Mergem la C/C++ General – Indexer și de bifăm opțiunea ”Allow heuristic
resolution of includes”. Când aceasta opțiune este activată Eclipse eșuează
câteodată să gasească calea corectă către fișiere.
Înainte de a build -ui proiectul nostru Eclipse ne poate arăta multe erori și mesaje
de atenționar e despre valori nedefinite. Aceasta este din cauză că unele fișiere sunt
generate automat ca și parte a procesului esp -idf build. Aceastea vor dispărea după ce

Analiză, proiectare, implementare, testare
28 executam un build ”curat”. Aceasta s e execută în modul următor : click dreapta Project
mergem l a build după care selectăm opțiunea clean build.
Deaorece este o plăcuță încă în stadiul de avansare nu putem face debug, astfel
suntem obligați să flashuim proiectul, pentru asta e nevoie să urmărim următorii pași :
 Click dreapta pe Project Explorer
 Selectăm Build – targets, Create
 La target name scriem flash restul opțiunilor le lăsăm în mod implicit
 Ne va apărea în proiect optiunea Build Targets – flash cu ajutorul căruia vom
putea flashui programul pe ESP32 după cum se poate observa în figura 3.11.

Figure 3.11 Program flash
Acuma că avem totul configurat mai ramâne să setma serial portul și alte opțiuni
pentru a putea flash -ui programul. Pentru aceasta vom deschide un terminal msys2, unde
vom naviga pâ nă la directorul unde se află proiectul nostru, după care vom scrie comanda
make menuconfig, dacă ați făcut totul corect până acuma, va apărea fereastra
reprezentată în figura 3.12.

Figure 3.12 Configura proiect( serial port, baud rate, etc..)

În menu, va trebui sa navigăm la serial flasher config după care selectăm Default
serial port pentru a configura portul seiral, vom confirma selecțiile noastre cu enter, vom
alege save configuration după care vom ie și din fereastră cu exit. Din acest moment avem
un template gata funcționabil și putem trece la implementarea codului pentru AC

Analiză, proiectare, implementare, testa re
29 dimmerul nostru. Dacă întâlniți probleme mai multe detalii puteți găsi pe pagina oficială
esp-idf [13] .
După cum a fost specificat mai sus deaorece e încă în dezvoltare nu putem face
depanare pas cu pas, în schimb putem urmări evoluți programului nostru pe portul serial.
Vom urmări portul serial cu ajutorul programului PuTTy. Acesta este un program ușor de
folosit, open source, care poate fi folosit ca și client pentru raw TCP, ca si terminal, ca și
Telnet și SSH. În figura 3.13. se poate vedea terminalulk PuTTy, pentru proiectul nostru
vom folosi conectarea serială, aceasta se poate face selectând portul la care este conectat
microcontrollerul iar viteza de transmisie ( baud -rate -ul) folosit de ESP32 este : 115200.

Figure 3.13 PuTTY
Odată ce am făcut conexiunea putem vizualiza în terminal toate mesajele afișate cu
medota p rintf(). Este foarte important să știm că portul serial poate comunica doar cu un
singur end point în același moment. Astfel odată ce ne -am conectat pentru a urmări cum
evoluează programul portul la care suntem conectați va apărea ca și ocupat, iar programul
va putea fi flash -ui din nou doar după ce ne deconectăm la port, astfel mediu de
programare Eclipse ne va afișa o eroare în care va fi scris că portul este ocupat. Este foarte
important să folosim aceeași viteză de transmisie ( baud rate) pe care o folosește si
microcontrollerul nostru, deoarece comunicarea serială are un fir separat pentru tactul

Analiză, proiectare, implementare, testare
30 de transmitere care este folosit pentru a ajuta dispozitivul slave să se sincronizeze cu
dispozitivul master. Acestea pot interpreta datele în același mod doar dacă tactul de
transmisie a masterului este același cu tactul de recepție a slavelui. După cum se poate
observa în figura 3.14. unde XCK este firul de tact care ajută la sincronizarea datelor.

Figure 3.14 Comunicare serială
Microcontrollerul ESP32 pe care îl puteți vedea în figura 3.15. este conectat la
calculator printr -un cablu USB, pentru a putea comunica cu portul serial acesta are niste
adaptoare USB to UART, datorită librăriilor celor de la esp -idf printf() afișează pe portul
serial și nu în consola mediului de programare.

Figure 3.15 ESP32
Există următoarele opțiuni pentru a alimenta ESP32 :
 Portul Micro USB
 Prin pinii de 5 V / G ND
 Prin pinii de 3.3 V /GND

Acesta se va conecta pe pinii IO05 pentru intrare detectare zero cross detecotr si pinul
I017 pentru controlul triacului. Astfel acesta va prelua datele de la zero – cross detectorul
nostru care se află integrat pe chipul repre zentat în figura 3.16.

Analiză, proiectare, implementare, testare
31

Figure 3.16 Ac Dimmer
Modulul nostru conține un triac care este declanșat în funcție de mecanismul de
detectare a undei sinusoidale prin zero și este folosit pentru a programa inten sitatea
becurilor, elementelor de încalzire a ventilatoarelor sau a unor motoare controlul având
loc printr -un micro -controller. Acesta poate lucra cu o tensiune de la 110 până la 240 V,
În figura 3.17. putem observa pinii de conectare cu ESP32.

Figure 3.17 Pini conectare ESP32
Unde :
 Vcc – corespunde pinului de 5V la ESP32
 Sync – corespunde pinului IO5 de la ESP32
 Gate – corespunde pinului IO15 de la ESP32
 GND – corespunde pinului de ground de la ESP32

Iar în figura 3.18. puteți o bserva circuitul de conectare a alimentarii a plăcuței.

Analiză, proiectare, implementare, testare
32
Figure 3.18 Alimentare ac dimmer
Unde becul poate fi înlocuit cu orice element care ar avea necesitatea de a putea fi
controlat în funcție de tensiunea pe care o primeste.

3.2 Implementare
Pentru implementarea aplicației web a vatiaroului de tensiune online va trebui ca
atât microcontroller -ul ESP32 cât și calculatorul personal să fie conectat la aceeași rețea.
Microcontrollerul are două opțiuni de a fi setat : ca și stație de lucru sau ca și punct de
acces . Dacă acesta se setează ca și punct de acces putem privi microcontrollerul ca pe un
router deaorce la acesta se poate conecta mai multe dispozitive, însă dacă se setează ca
fiind o stație de lucru, înseamnă că acesta funcționează ca terminal sau ca un calculator
personal. În cazul nostru microcontrollerul va fi setat ca și STA ( stație de lucru ), deci
terminalul trebuie să se conecteze la Wi -Fi, în cod va trebui sa precizăm noi numele rețelei
și parola pe care dorim să le utilizăm, trebuie să ne asigurăm că si ESP32 și calculatorul
personal trebuie sa fie conectate la aceeași rețea.
Odată ce s -au conectat la aceeași rețea se crează o cererere pentru IP -ul la care sunt
conectați calculatorul si microcontrollerul. Acest IP este setat în funcție de rețeaua la care
este conectat, iar dacă se conectează și alți utilizatori la server, IP -ul se poate schimba, în
acest caz microcontrollerul reface conectarea la internet cu noul IP.
În figura 3.19. veți putea urmări ce afișează consola în momentul în care
microcontrollerul se contează la WI -FI, returnând starea de conectare, și adresa IP la care
se poate găsi aplicația web.

Analiză, proiectare, implementare, testare
33
Figure 3.19 Conectare rețea consola PuTTY

Pagina web este transmisă printr -o buclă la adresa de IP care a fost identificată mai
sus, însă pentru a face asta în loop vom avea o secvență ce va verigfica conexiunea noastră
la rețea, în cazul în care verificarea conexiuni i ne întoarce un rezultat negativ, ESP32 se
reconectează la acces point.
Pentru rețea în librăriile celor de la Espressif găsim două funcții :

 initialise_wifi()
 evenet_handler()

Funcția initialise_wifi() are rolul de a conecta ESP32 la rețeaua de intern et, aici se
configurează parametrii precum modul de operare a microcontrollerul -ului, STA sau AP,
numele și parola rețelei la care se va conecta microcontrollerul. Aici se află și funcția
event_handler(), care are rolul de a verifica statusul conexiunii. Î n figura 3.20 veți putea
observa care este fluxul conexiunii la internet. Stocarea datelor se va face în memoria
RAM, am ales acest tip de stocare deoarce funcția initialise_wifi() este apelată o singură
dată, iar datele sunt păstrate.

Analiză, proiectare, implementare, testare
34
Figure 3.20 Flux de conectare

Am ales să implementăm o aplicație web pentru a ușura lucrul utilizatorului. Am
ales ca aceasta să fie una intuitivă și cât mai ușor de folosit. Aceste pagină este gândintă,
în primul rând, pen tru setarea luminozității unui bec însă poate fi folosită și în alte
scopuri. Utilizatorul trebui doar să seteze valoarea dorită, iar microcontroller -ul se va
ocupa de restul în funcție de valoarea care îi este trimisă.
Pagina web va fi implementată folosi nd urmatoarele tehonologii :
 HTML ( HyperText MarkupLanguage) folosit pentru prezentarea
informațiilor,tabelelor etc..
 JavaScript limbaje de programare simplu, interpretat orientat pe obiecte cunoscut
ca limbajul de scripting pentru paginile web.
 CSS ( ca scading style sheets), folosit pentru a controla stilul paginii, si pentru a face
codul mai ușor de urmărit.
Codul paginii web a fost scris într -un fișier text, după care a fost scris într -un vector de tip
caracter și transcris în programul nostru care tra nsmite pagina la serber.
Realizarea aplicației web depinde de două funcții :
 http_server()
 http_server_netconn()

Creierul aplicației este funcția htpp_server() în care este apelată și funcția
http_server_netconn() . De fiecare dată când se face un transf er de informații în interiorul
funcției se creaază o nouă conexiune, Ip -ul fiind cel afișat în implemnetarea codului, iar
portul la algere. Comunicarea are loc prin TCP/IP, protocul descris mai în detaliu mai sus.
Dacă funcția care accepta conexiunea din librăria Espressif, returnează zero, atunci se
trece la a doua funcție, care trasmnite codul HTML. Această procedură va avea loc atât
timp cât bucla nu va întâlni un răspuns negativ și cât timp există date care trebuie
transmise către aplicația web.

Analiză, proiectare, implementar e, testare
35 În funcția http_server_netconn() se implementează preluarea datelor din pagina web
pentru prelucrarea acestora de către microcontroller.
O metodă simplă de preluare a datelor care reprezintă valoarea de referință a tensiunii
de ieșire sunt metodele din famili a REST : GET și POST, dar nu trebuie sa uităm de
noțiunea REAL -TIME care asigura de transferul de date bidirecțională fără a reâncărca
pagina de fiecare dată.
Principiul de bază a acestor servicii este introducerea valorilor pe care dorim să le
transmitem în link -ul URL după adresa de IP care este folosită pentru accesarea paginii.
Din aceste valori vom identifica valoare pe care dorim să o folosim ca și valoare. Un
exemplu de URL care folosește metodele menționate mai sus poate fi observat în figura
3.21.

Figure 3.21 Metoda GET
În linkul URL de la browser s -a introdus adresa IP la care e conectată și
microcontrollerul nostru ESP32, odată ce am mutat bila pe bara de progresie valoare
careia îi corespunde ace asta se va transmite prin linkul URL dupa cum se poate urmări în
linkul din figura 3.21, după IP s -a concatenat valoarea noastră.
Pentru a putea schimba valoare de referință de fără a reâncarca pagina web de fiecare
dată s-a folosti XMLHttpRequest -uri, a cestea se folosesc în programarea ajax. Principalul
avantaj al acesta este ca ne permite să actualizăm doar o parte din datele prezente pe
pagina web. Altfel pentru a prelua datele nu mai avem nevoie sa dăm refresh de fiecare
dată la pagină.
AJAX ( Asynch ronous JavaScript And XML) nu poate fi interpretat ca un limbaj de
programare, ci utilizează o combinație între: crerea informației de la un web server și
afișarea sau folosirea informației. AJAX permite schimbul de informații asincron cu un
server web în spatele aplicației web. După cum putem descifra și din denumirea
conceptului AJAX, acesta este întâlnit în partea HTML deoarece este scris în JavaScript ,
partea HTML fiind conectată cu partea C a codului. Aplicația folosește o transmisie
bidirecționala cu microcontrollerul nostru. Una este reprezentată de transmisia
informațiilor de la pagina web către microcontroller, iar cea de a doua este invers, adică
de la microcontrollwer la pagina web. De la microcontroller se transmit informații legate
de interfața paginii, iar de la pagină se transmit informaț ii despre valoare de referință.
Controlul reprezintă cea mai importantă parte a variatorului de tensiune, pe lângă
pagina web care ține de parte de interacțiune cu utilizatorul. Pentru a putea stapâni becul
avem nevoie de o valoare de referință.

Analiză, proiectare, implementare, testare
36 Elementul de control al variatorului de tensiune este un triac, care poate fi observat
în figura 3.22.

Figure 3.22 Triac
Pentru ca acesta să poată fi controlat avem nevoie să folosim un pwm timer. ESP32
LED PWM controller este un controler generic care poate fi găsit aproape în orice
microcontroller. Câteva din proprietățile releveante ale acestuia din punct de vedere al
aplicației sunt :
 șaisprezece canale ( opt cu viteză mare, opt cu viteză mică)
 rezoluție până la 24 de biți
 tranziții automate
 fiecare canal poate avea un ciclu de funcționare diferit
 generări de întreruperi
 opt unități de timere diferite
Fiecare canal este format dintr -un comparator care compară do uă registre, cel în
care este salvată valoare de start și cel în care se află valoarea de duty. Ieșirea canalului
este pozitivă(high) de la valoarea de start salvată în registru și ramâne așa pană acesta
ajunge la valoare de duty după care aceasta devine n egativă(low). În figura 3.23. avem
diagrama bloc a controlerului PWM din ESP32.

Figure 3.23 ESP32 PWM controller

Analiză, proiectare, implementare, testare
37 Setările pe care le vom face noi vor fi următoarele : pentru început vom atașa un
canal, după care va trebui să îl configurăm, ca și sursă pentru timer putem alege dintre
REF_TICK sau APB_CLK, clockul este divizat de un divizor de 18 biți, clockul care rezultă
incrementează valoarea din numărător pentru a genera ”ref_pulse”. Pentru a cinfigura
cananlul trebuie să îi atasăm acestui o valaoare ”ref_pulse” care va fi folosită de către
comparatori pentru a genera PWM -ul. Când valoarea din timer este egală cu
LEDC_HPOINT parametru blochează ieșirea canalului ca și ieșire pozitivă ( high) și
rămâne așa p entru LED_DUTY tickuri de timer. Ieșirea este redirecționată către un pin de
ieșire al microcontrollerului, iar semnalul de PWM poate fi întâlnit pe acel pin.
Însă pentru a putea folosi PWM -ul avem nevoie să capturăm și momentul în care
sinusoida trece pri n zero, după cum am menționat mai sus, pentru asta vom genera o
întrerupere pe un pin după cum veți putea observa în figura 3.24.

Figure 3.24 Întrerupere pentru momentul de trecere a sinusoidei prin zero
În interiorul acestei întreruperi vom reseta PWM timerul care se sincronizează cu
triacul nostru. Odată ce avem toate acestea puse la punct putem implementa proiectul cu
având toate datele necesare enumare mai sus. Astftel am obținut un variator online de
tensiune prezentat în figura 3.25.

Figure 3.25 Variator tensiune

Analiză, proiectare, implementare, testare
38 3.3 Testare
Testarea s-a făcut pas cu pas. Pentru început am testat comunicarea
microcontrollerului cu serverul folosind metoda ping în consolă, a stfel am putut verifica
dacă serverul nostru răspunde la cererile noastre după cum se vede figura 3.26

Figure 3.26 Testare comunicare server
După ce am reușit să primim un rezultat pozitiv, am transmis valo area către
microcontroller, iar comportamentul tensiunii a fost urmărit pe oscilioscop.

Figure 3.27 Zerro cross detector osciloscop

Analiză, proiectare, implementare, testare
39 După cum se vede în figura 3.26. zero cross detectorul funcționează bine , următorul
pas este să urmărim controlul triacului, acesta a fost urmărit cu ajutorul osciloscopui din
nou, odată ce am observat ca datele sunt corecte, vom test a aplicația în întregime. Astfel
vom da mai multe valori de referință pe care le vom putea ve dea vizual prin intermediul
becului ce va fi conectat ca și consmator, dupa cum se poate observa în figura 3.27.
După cum se observă în figura 3.28. aplicația funcționează cum ne -am propus.

Figure 3.28 Testare variator

Concluzii
40 4 Concluzii
4.1 Rezultate ob ținute
În urma implementării variatorului de tensiune online am reușit să controlăm un
intensitatea luminozității unui bec. Acest proiect reduce consumul energiei, plus oferă un
avantaj de comoditate u tilizatorului, din moment ce acesta permite controlul doar
accesând linkul url care e mereu la îndemână.
În acest proiect s -au realizat obiectivele propuse în introducere. S -a realizat
detectarea trecerei sinusoidei a curentului alternativ prin punctul de tensiune zero, s -a
sincronizat aceasta cu microcontrollerul nostru, cu ajutorul unui PWM timer s -a făcut
controlul triacului având ca referință valoare primite de la microcontroller prin baza
comunicării microcontrollerului cu aplicația web. Comunicare în tre microcontroller și
pagina web are loc prin protocolul TCP/IP pentru comunicarea bipozițională adică de la
microcontroller la pagina web și invers. Toate componentele au fost conectate pentru
realizarea proiectului fizic, după ce proiectul a fost imple mentat s -au făcut testele
enumerate mai sus pentru a se asigura de funcționare corectă a acestuia.
Tot ce a fost prezentat anterior, pus în practica, cu ajutorul studiului bibliografic
realizat, alcătuiește variatorul de tensiune alternativa online.

Figu re 4.1 Proiect final, variator tensiune alternatva onlines

Concluzii
41
4.2 Direc ții de dezvoltare
Deoarece trăim într -o lume care se află într -o continua dezvoltare tehnologică,
domeniul ales de noi nu are nici o limită pe care am putea să ne -o impunem.
O idee de dezvoltare ar fi creearea unei aplicații mobile pentru a ușura accesul
utilizatorului către controlul variatorului.
Dacă ar fi să ne orientăm în domeniul controlului luminozității am putea introduce
un bec RGB pen tru a putea diversifica controlul acestuia și a introduce noi culori în viața
utilizatorului. O altă inovație ar fi poziționarea unor senzori care să comunice cu
microcontrollerul, care la rândul lui ar comunica cu aplicația web și ar ajusta singur,
automat luminozitatea în funcție de date primite, pentru a realiza un consum de energie
mai mic și o uniformitate mare.
Direcții noi de dezvoltare pot fi în domeniul de control, astfel în loc de triac am putea
folosi un switch state relay care nu mai are nevoie de circuit de protectie snubber, are o
viteză de comutație mai mare, și este mai ușor de controlat, principiile acestuia de
funcționare fiind mult mai ușor de înțeles.

Bibliografie
42 5 Bibliografie

[1]
F. Kittler, "REAL TIME ANALYSIS,TIME AXI S MANIPULATION".
[2] T. O'Reilly, "Software Above the Level of a Single Device: The
Implications," in Solid Conference , 2014.
[3] M. A. Zeeshan Ahmed, Smart House: Artificially Intelligent Home
Automation System, Paperback, 2011.
[4] S. Kovach, "There's actually a strong case for connecting everything in
your home to the internet," Business Inside , 2015.
[5] A. M. Turing, COMPUTING MACHINERY AND INTELLIGENCE, 1950.
[6] D. Matskevich, "Artificial Intelligence Still Needs Human Help,"
Forbesc, 2018.
[7] T. R. Kuphaldt, Introducere în circuite electrice și electronice vol.2
Curent alternativ.
[8] M. Barr, "Beginner's Corner: Pulse Width Modulation," in Embedded
Systems Programming , September 2001.
[9] Avichal R. Kapur Vaishali U . Patil, Avichal R. Kapur Vaishali U. Patil,,
2015.
[10 "Roy Fielding in his Ph.D. dissertation," 2000.
[11 "dl.espressif.com," [Online]. Available:
https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolch
ain-20180110.zip.
[12 "ESP-IDF repository," [Online]. Available:
https://github.com/espressif/esp -idf.

Similar Posts