Detector de fum de tigara

Autor: Udrescu Alexandra
Grupa: 335CB

Introducere

Am venit cu aceasta idee intrucat recent am schimbat senzorul de gaze pe care il am in bucatarie, care inchide gazele atunci cand simte in aer o concentratie mai mare a unor gaze inflamabile sau fum, incercand astfel sa previna un incendiu. Problema sa, insa, este ca, de multe ori, da alarme false (exemplu: se spala masa din bucatarie cu solutii ce contin alcool, cineva se da cu deodorant in preajma sa). Aceasta a fost ideea initiala, adica un detector de incendiu, insa am deviat de la aceasta idee, transformand proiectul intr-un detector de fun de tigara.

Actualul proiect realizeaza o alarma ce indica prezenta fumului de tigara in incaperea in care este plasata. Alarma are mai multe praguri de senzitivitate si monitorizeaza evolutia recenta a datelor obtinute de catre senzori, care sunt afisate sub forma de grafic pe calculator, in cadrul unei aplicatii scrise in Python. In plus, concentratiile curente ale gazelor monitorizate (CO, CO2, toluen, fum/microparicule) este afisata pe doua ecrane LCD.

Descriere generală

Proiectul curent verifica prezenta fumului de tigara folosindu-se de semnalul analog intors de senzorii MQ-2 si MQ-135. Pe baza formulelor detaliate in capitolele urmatoare, se calculeaza concentratia gazelor periculoase (CO, CO2, toluen), tinand cont si de faptul ca senzorii au o caracteristica neliniata dependentea de temperatura si umiditatea curenta, ce sunt aflate cu ajutorul senzorului DHT11.

In plus, se masoara si cantitatea fumului in aer folosindu-se senzorul fotoelectric Sharp GP2Y1014AU.

Astfel, alarma urmareste evolutia concentratiilor de CO, CO2, toluen si a cantitatii fumului in aer.

In continuare sunt setate cateva praguri acceptabile pentru cantitatea fiecarui gaz periculos, aflate prin testarea comportamentului alarmei in aer curat.

Odata ce cantitatile curente calculate pe baza informatiilor provenite de la senzorii anterior mentionati depasesc aceste praguri, alarma porneste, indicand pericolul prin semnal sonor - buzzer, cat si vizual - led rosu. In plus, la orice moment de timp concentratiile gazelor urmarite sunt afisate pe cele doua LCD-uri, iar datele de la senzori sunt reprezentate grafic pe calculator.

Totusi, pentru a oferi flexibilitate, alarma poate fi ajustata asfel incat sa fie mai sensibila sau mai toleranta la pericol, prin apasarea butonului ce ii seteaza senzitivitatea la unul din cele 3 praguri existente: SMALL, NORMAL, BIG. La SMALL, daca oricare din concentratiile gazelor periculoase sare peste prag, alarma porneste. La NORMAL, macar doua trebuie sa depaseasca pragul. Iar la BIG, daca cel putin trei au sarit peste prag, se da alarma. Aceasta senzitivitate se seteaza prin apasarea unui buton, numit SENZITIV.

Un al doilea buton, ON-OFF, permite unui administator sa inchida alarma prin apasarea sa. Astfel, gazele sunt in continuare monitorizate, insa nu se va mai semnaliza depasirea pragurilor. Alarma poate fi repornita printr-o alta apasare a aceluiasi buton.

Hardware Design

Schema Arduino

Daca poza nu se vede clar: Right Click → Open Image in New Tab

Lista de componente

Intrari:

  • 1 x Modul MQ-2
  • 1 x Modul MQ-135
  • 1 x Senzor optic pentru particule fine 2,5n - Sharp GP2Y1014AU
  • 1 x Senzor de temperatura si umiditate - DTH11
  • 2 x Buton

Iesiri:

  • 1 x LCD 1604
  • 1 x LCD 1602
  • 2 x Modul interfata I2C pentru LCD
  • 1 x Buzzer
  • 1 x Led rosu
  • 1 x PC

Componente aditionale:

  • 1 x Rezistor 150 Ohm
  • 1 x Rezistor 500 Ohm
  • 1 x Condensator 220 uF
  • 1 x Placa Prototipare Cablaj
  • fire tata-tata realizate dintr-un cablu UTP cu diametru de 1.5mm
  • fire mama-mama pentru Arduino

Software Design

1. Calibrarea senzorilor MQ-2 si MQ-135 pentru a determina rezistenta echivalenta in aer curat

Senzorii din gama MQ sunt senzori de tip Metal Oxide Semiconductor (MOS), care folosesc bioxidul de staniu (SnO2) ca material semiconductor oxid metalic. Principiul de functionare al unui senzor MQ se bazeaza pe proprietatea materialelor semiconductoare oxizi metalici de crestere a conductibilitatii, si implicit de scadere a rezistentei electrice, atunci cand creste concentratia unui gaz tinta, care intra in contact cu suprafata sa. Senzorul contine in interior o rezistenta de incalzire deoarece fenomenul se produce la temperaturi de 200oC – 400oC.

Pentru masurarea rezistentei semiconductorului in prezenta unui gaz se foloseste divizorul de tensiune din figura. Tensiunea de iesire Vout este dependenta de rezistenta semiconductorului Rs, deci de concentratia gazului:

\begin{align} R_S = R_L\frac{Vcc-Vout}{Vout} \end{align}

\begin{align} Vout = Vcc\frac{R_L}{R_L + R_S} = R_L\frac{Vcc}{Vout}-1 \end{align} unde: unde: RL_MQ2=4,7KΩ , RL_MQ135=20KΩ si Vcc=5V

Pentru citirea tensiunii de iesire Vout a senzorului se foloseste convertorul CAD pe 10 biti, incorporat in placa Arduino, care poate detecta 1024 (210) nivele ale tensiunii analogice, intre 0-5V. Deci, se va realiza o aproximare deoarece vor exista doar 1024 valori distincte intre 0 si 5V (pas de 4,89mV):

\begin{align} VoutCAD = \frac{k_{out}∙5V}{1023} = k_{out}∙4,89mV \end{align} unde unde kout=0÷1023

Caracteristica de sensibilitate a sensorului In Specificatiile Tehnice ale senzorilor MQ-2 si MQ-135 sunt date Caracteristicile de sensibilitate ale sensorilor, indicand depenenta concentratiei gazelor tinta de rezistenta senzorului. Senzorii din gama MQ au o selectivitate scazuta, reactionand la mai multe gaze. Daca simultan sunt prezente mai multe gaze, masuratorile sunt afectate, senzorul neputand sa identifice gazul cu cea mai mare concentratie

Asa cum se precizeaza, graficele au fost obtinute la temperatura T=20oC si umiditate H=65% , 21% concentratie de O2. Graficele au o scala logaritmica: pe axa X este valoarea concentratiei gazului analizat (notata C) exprimata in ppm, iar pe axa Y raportul RS/R0 , unde rezistentele senzorului RS si R0 sunt:

Rs ≝ Rs20_65_nedeterminat in mediu cu Cgaze nedeterminat, la T=20oC si H=65%; R0_MQ2 ≝ Rs20_65_1000ppm_H2 in mediu H2 cu CH2=1000ppm, la T=20oC si H=65%;

R0_MQ135 ≝ Rs20_65_100ppm_NH4 in mediu NH4 cu C=100ppm, la T=20oC si H=65%;

Aceste grafice nu ofera o functie de forma: C[ppm]=f(Vout) , care sa permita determinarea concentratiei gazului analizat (in ppm) stiind valoarea tensiunii de iesire Vout a senzorului. Determinarea functiei C[ppm]=f(Vout) necesita calcule suplimentare.

Ecuatiile concentratiilor gazelor

Pe Internet sunt cateva abordari pentru determinarea acestor functii, iar rezultatele cel mai des folosite sunt cele din biblioteca Arduino IDE pentru senzorii MQ: https://github.com/miguel5612/MQSensorsLib. In algoritmul utilizat de mine pentru stabilirea acestor functii, suplimentar voi tine cont si de dependenta de temperatura si umiditate a senzorilor MQ.

1. Aproximam graficul caracteristicii de sensibilitate al fiecarui gaz din Caracteristica de sensibilitate a senzorului ca fiind liniar, de forma:

Y=m∙X+p unde m=panta dreptei

p=intersectia graficului actual cu axa OY, deci unde X=0

Deoarece graficele sunt de tip log-log (ambele axe au o scala logaritmica), ecuatia este de forma:

log⁡(y)=m∙log⁡(x)+p

2. Aproximam fiecare grafic cu o dreapta. Consideram 2 puncte (x1,y1) si (x2,y2) de pe fiecare grafic, pentru a calcula ecuatia dreptei (determinam panta - m si intersectia cu axa OY - p):

log⁡(y1)=m∙log⁡(x1)+p

log⁡(y2)=m∙log⁡(x2)+p

\begin{align}m = \frac{log(y_2)-log(y_1)}{log(x_2)-log(x_1)} = \frac{log(\frac{y_2}{y_1})}{\frac{x_2}{x_1}}\end{align}

\begin{align}p = log(y_1)-m∙log(x_1)\end{align}

3. Ecuatiile pentru concentratiile gazelor tinta sunt:

\begin{align} log⁡(C) = \frac{log⁡(\frac{R_S}{R_0})-p)}{m} = \frac{log(10^{-p}\frac{R_S}{R_0})}{m}\end{align}

Rezulta formula concentratiei gazului:

\begin{align}C_{[ppm]} = 10^{-\frac{p}{m}}(\frac{R_s}{R_0})^{\frac{1}{m}} = a(\frac{R_{s_{20.65.nedeterminat}}}{R_{0_{MQ}}})^b\end{align}

unde:

\begin{align}a = 10^{-\frac{p}{m}}\end{align}

\begin{align}b = \frac{1}{m}\end{align}

Valorile m si p pentru senzorul MQ-2 sunt cele din tabelul de mai jos.

Valorile m si p pentru senzorul MQ-135 sunt cele din tabelul de mai jos.

Dependenta de temperatura si umiditate

Ecuatiile pentru C[ppm] in cazul lui MQ-2 si MQ-135 sunt valabile pentru masuratori ale senzorilor efectuate la temperatura T=20oC si umiditate H=65%, in timp ce masuratorile in timp real se realizeaza la temperatura T si umiditatea H. Conform Specificatiilor Tehnice ale senzorilor MQ-2 si MQ-135, raportul Rs/Ro din graficele de mai jos - Caracteristica de temperatura si umiditate depinde de temperatura si umiditate.

Pe axa X este valoarea C = concentratiei gazului analizat exprimata in ppm, iar pe axa Y raportul RS/R0 , (alt R0, nu cel din Caracteristica de sensibilitate) unde:

Rs_MQ2 ≝ RsT_H_1000ppm_H2 in mediu H2 cu C=1000ppm, la T si H diferite;

R0TH_MQ2 ≝ Rs20_33_1000ppm_H2 in mediu H2 cu C=1000ppm, la T=20oC si H=33%;

Rs_MQ135 ≝ RsT_H_1000ppm_H2 in mediu NH4 cu C=1000ppm, la T si H diferite;

R0TH_MQ135 ≝ Rs20_33_1000ppm_H2 in mediu NH4 cu C=1000ppm, la T=20oC si H=33%;

Sunt date doar doua curbe, corespunzatoare umiditatii relative H85% si H33%.

Stabilirea dependentei valorii masurate Rs_T_H_nedeterminat de Rs_20_65_nedeterminat

Rezistenta masurata de senzor la un moment dat, Rs_T_H_nedeterminat, este realizata intr-un mediu cu concentratii de gaze nedeterminate, la o temperatura T si umiditatea H, indicata de senzorul de temperatura si umiditate. Folosind graficele de mai sus - Caracteristica de temperatura si umiditate din Fisa tehnica a senzorului – se stabileste o relatie intre rezistenta senzorului in momentul masuratorii (Rs_T_H_nedeterminat) si rezistenta senzorului in acelasi mediu, la T=20oC si H=65% (Rs_20_65_nedeterminat).

MQ2

Folosind WebPlotDesigner (https://apps.automeris.io/wpd/) pentru cele doua grafice din Caracteristica de temperatura si umiditate din Fisa tehnica a senzorului MQ-2 (umiditate 85% si umiditate 33%), se determina valorile raportului (Rs_T_H_1000ppm_H2)/(Rs_20_33_1000ppm_H2) din 5oC in 5oC (tabelul de mai jos).

Aproximam ca fiind liniara caracteristica intre doua puncte succesive din tabelul de mai sus, pentru a putea interpola. Prin interpolare (facuta in Matlab) tabelul de mai sus este extins pentru valori ale temperaturii din grad in grad (intre 0-500oC), pentru H85% si H33% Folosind extrapolarea, pentru oricare T (intre 0-500oC) si H (intre 0-99%) masurate de senzorul DTH11, se poate calcula valoarea raportului (Rs_T_H_1000ppm_H2)/(Rs_20_33_1000ppm_H2) ≝ Z.

\begin{align}\frac{R_{s_{20.65.1000ppm.H_2}}}{R_{s_{20.33.1000ppm.H_2}}} = \frac{R_{0_MQ2}}{R_{s_{20.33.1000ppm.H_2}}} = 0,9471\end{align}

\begin{align}\frac{R_{s_{T.H.1000ppm.H_2}}}{R_{0_{MQ2}}} = \frac{R_{s_{T.H.1000ppm.H_2}}}{R_{s_{20.65.1000ppm.H_2}}} ∙ \frac{R_{s_{20.33.1000ppm.H_2}}}{R_{0_{MQ2}}}=\frac{z}{0,9471} = f\end{align}

Presupunem ca acest raport se pastreaza si in cazul altor gaze:

\begin{align}\frac{R_{s_{T.H.1000ppm.H_2}}}{R_{0_{MQ2}}} = \frac{R_{s_{T.H.nedeterminat}}}{R_{s_{20.65.nedeterminat}}} = f\end{align}

Formula folosita in cod este (unde valoarea rezistentei Rs_T_H_nedeterminat se determina in urma masuratorii):

\begin{align}R_{s_{20.65.nedeterminat}} = \frac{R_{s_{T.H.nedeterminat}}}{f}\end{align}

unde f=Z/0,9471, iar Z=(Rs_T_H_1000ppm_H2)/(Rs_20_33_1000ppm_H2).

MQ135

Se urmeaza aceasi pasi ca si in cazul senzorului MQ-2.

Valorile raportului (Rs_T_H_100ppm_NH4)/(Rs_20_33_100ppm_NH4) pentru cele doua grafice corespunzatoare H=85% si H=33% (din 5oC in 5oC) sunt:

Folosind extrapolarea se calculeaza:

\begin{align}\frac{R_{s_{20.65.1000ppm.NH_4}}}{R_{s_{20.33.1000ppm.NH_4}}} = 0,9458\end{align}

si pentru oricare T (intre 0-50oC) si H (intre 0-99%) masurate de senzorul DTH11, se poate calcula valoarea raportului (Rs_T_H_100ppm_NH4)/(Rs_20_33_100ppm_NH4) ≝ Z

Prin acelasi trationament ca mai devreme, se obtine:

\begin{align}\frac{R_{s_{T.H.1000ppm.NH_4}}}{R_{0_{MQ135}}} = \frac{R_{s_{T.H.nedeterminat}}}{R_{s_{20.65.nedeterminat}}} = f\end{align}

Iar ceea ce vom folosi in program este:

\begin{align}R_{s_{20.65.nedeterminat}} = \frac{R_{s_{T.H.nedeterminat}}}{f}\end{align}

unde f=z/0,9458, iar z=(Rs_T_H_1000ppm_NH4)/(Rs_20_33_1000ppm_NH4).

Calibrarea senzorului (determinarea valorii rezistentei R_0_MQ)

Pentru a calcula C[ppm] mai este nevoie de rezistentele senzorilor MQ R_0_MQ2, respectiv R_0_MQ135, ce pot fi obtinute prin masuratori facute in aer curat, in absenta altor gaze poluante, la temperatura T si umiditate H: . \begin{align}R_{0_{MQ2}} = R_{s_{20.65.1000ppm.H_2}} = R_{s_{T.H.aercurat}} \frac{0,9471}{9,83∙z}\end{align}

\begin{align}R_{0_{MQ135}} = R_{s_{20.65.1000ppm.NH_4}} = R_{s_{T.H.aercurat}} \frac{0,9458}{3,6∙z}\end{align}

Pentru determinarea R_0_MQ se parcurg pasii:

a) Se considera cunoscuta temperatura T si umiditatea H la momentul masuratorii deoarece se foloseste un senzor DHT11, care ne furnizeaza aceste valori.

b) Se masoara tensiunea Vout de la iesirea senzorului in aer curat si conform (1) si (2) se calculeaza valoarea rezistentei senzorului la temperatura T si umiditatea H, notata Rs_T_H_aercurat:

\begin{align}R_{s_{T.H.aercurat}} =R_L∙\frac{1023}{k_{out}-1}\end{align} unde: RL_MQ2=4,7KΩ si RL_MQ135=20KΩ

c) Se inlocuiesc in ultimele 2 formule valorile calculate pentru Z si Rs_T_H_aercurat si se determina valoarea R_0_MQ2, respectiv R_0_MQ135.

Pentru acesti pasi, am scris un program ce afla aceste 2 valori: R_0_MQ2, respectiv R_0_MQ135.

Rezultatele obtinute sunt: [Vezi sectiunea Rezultate Obtinute]

  • R_0_MQ2=0.8kΩ
  • R_0_MQ135=2.2kΩ
2. Colectarea datelor de la senzori si afisarea concentratiilor gazelor monitorizate, folosind formulele de detrminare a concentratiilor gazelor folosite

Determinarea ecuatiilor concentratiilor gazelor sensor MQ-2 Determinarea ecuatiilor concentratiilor gazelor sensor MQ-135

3. Determinarea densitatii particulelor din aer conform caracteristicii senzorului Sharp GP2Y1010AU0F

In documentatia tehnica a senzorului Shart GP2Y1010AU0F este dat un grafic al dependentei tensiunii de iesire 𝑉𝑜𝑢𝑡 a senzorului de densitatea de particule mici din componenta fumului (o vom nota cu d). Am aproximat graficul cu doua drepte iar dupa inversarea axelor am obtinut ecuatia d=g(Vout). Mai jos este descris algoritmul folosit.

Pentru a usura calculele, vrem sa exprimam densitatea particulelor mici in functie de valoarea tensiunii de iesire V_out a senzorului: Graficul acestei functii, obtinut prin inversarea axelor, este cel din figura.

Acest grafic poate fi aproximat cu 2 drepte, care se intersecteaza in punctul (x,y) = (3.58, 0.52), determinat cu aplicatia WebPlotDesigner.

Dreapta 1:

(x1,y1) = (0.59, 0)

(x2,y2) = (3.58, 0.52)

Dreapta 2:

(x1,y1) = (3.66, 0.8)

(x2,y2) = (3.58, 0.52)

Determinam ecuatiile celor doua drepte, folosind doua puncte (x,y) de fiecare dreapta:

D =

a∙Vout+b pentru Vout=0,59÷3,58V
m∙Vout+n pentru 3,58V < Vout < 5V

unde a=0.174; b=-0.102; m=3.5; n=-12.01

Consideram tensiunea Vout=0,59V tensiunea in aer curat, cand nu exista particule mici in aer. Deci pentru orice valoare 0 < Vout < 0,59V , densitatea particulelor va fi 0.

Rezulta:

D =

0 pentru Vout=0÷0.59V
0.174∙Vout-0.102 pentru Vout=0,59÷3,58V
3.5∙Vout-12.01 pentru 3,58V < Vout < 5V

Deoarece se foloseste convertorul CAD incorporat in placa Arduino, care este un CAD pe 10 biti, exista doar 1024 valori distincte intre 0 si 5V (treapta de 4.89mV) pentru Vout:

Vout=kout/1023∙5V=kout∙4,89mV

unde kout=120÷1023

4. Obtinerea input-ului de la senzorul fotoelectric de particule mici SHARP GP2Y1010AU0F

Principalele caracteristici:

  • Densitatea max. particule detectate: 580 μg/m3
  • Disponibil dupa 1 secunda de la pornire

Conform Documentatiei Tehnice a senzorului, ciclul de functionare a LED-ului IR are o Perioada T=10ms, controlata de pinul de control starii led-ului infrarosu.

Pe acest pin se va simula un semnal PWM (Pulse Witdh Modulation).

Ciclul de functionare al LED-ului IR este urmatorul:

  • In starea initiala LED-ul IR este oprit ⇒ se aplica o tensiune Vcc (”1” logic) pe pin;
  • Se porneste LED-ul IR pentru 0,32ms ⇒ pin-ul trebuie tras la masa (“0” logic);
  • Se citeste iesirea analogica a senzorului la 0,28ms dupa oprirea LED-ului IR;
  • Se opreste LED-ul IR pentru 9,72ms ⇒ aplicarea unei tensiuni Vcc (”1” logic).
5. Reprezentarea grafica a datelor furnizate de placa Arduino catre PC prin interfata Seriala

Aceast feature, scris in Python si ruland pe calculatorul la care este conectata placuta, preia informata transimisa de Arduino pe interfata Seriala USART si prelucreaza datele pentru a le reprezenta sub forma grafica. Astfel, se face un grafic cu valorile recente.

Pentru realizarea comunicatiei cu placa Arduino, am folosit biblioteca serial.

Pentru realizarea celor 4 grafice:

  • Tensiunea intoarsa de senzorul MQ-2
  • Tensiunea intoarsa de senzorul MQ-135
  • Tensiunea intoarsa de senzorul SHARP GP2Y1010AU0F
  • Temperatura curenta

am folosit biblioteca matplotlib.pyplot care permite realizarea graficelor.

In plus, pentru a putea realiza graficele live, fiind actualizate de cate ori se transmite un mesaj pe interfata Seriala, am folosit matplotlib.animation.

6. Biblioteci externe folosite

Pentru a usura implementarea, am folosit cateva biblioteci externe:

Wire.h - Biblioteca ce faciliteaza scrierea pe un LCD

LiquidCrystal_I2C.h - Biblioteca ce permite comunicatia cu LCD-urile prin protocolul I2C

dht.h si biblioteca driver Adafruit Unified Sensor - Biblioteca ce usureaza comunicatia cu senzorul de temperatura si umiditate DTH

7. Pragurile alese pentru gazele urmarite

Pragurile de alerta alese:

  • 0.45 mg/m3 - fum - Sharp_GP2Y1010AU0F
  • 5ppm - toluen - MQ-135
  • 25ppm - CO - MQ-135
  • 2500ppm - CO2 - MQ-2
  • 45oC - DHT11

Alarma de senzitivitate SMALL:

Daca minim 1 din acestea sunt peste prag ⇒ dau alarma

Alarma de senzitivitate NORMAL:

Daca minim 2 din acestea sunt peste prag ⇒ dau alarma

Alarma de senzitivitate BIG:

Daca minim 3 din acestea sunt peste prag ⇒ dau alarma

Rezultate Obţinute

Rezultatul calibrarii senzorilor MQ-2 si MQ-135:

  • ne intereseaza sa completam in program valoarea lui R0_20_65

Configuratia fizica a proiectului:

Video demonstrativ:

https://youtu.be/9-HW2dlnqfE

https://youtube.com/shorts/fVq45B6JstQ?feature=share

Concluzii

Alarma curenta, desi semnalizeaza corect prezenta fumului de tigara, nu este insa ideala deoarece poate da si alarme false in prezenta spirtului, alcoolului, produselor chimice de curatat etc. Acest lucru este cauzat de faptul ca senzorii din familia MQ au selectivitate scazut si nu sunt specializati numai pe un singur gaz, ci reactioneaza la mai multe intr-o oarecare masura. Prin urmare, o alarma imbunatatita ar presupune sa se coreleze cat mai multi senzori de acest tip pentru a incerca sa se limiteze situatiile de alarma falsa. Ideal insa ar fi sa se foloseasca alt tip de senzori mai specializati, dar aceastia ori nu sunt specific compatibili cu Arduino (desi pot fi facuti evident sa functioneze cu un set-up diferit), ori sunt foarte scumpi (ex: senzorii infrarosu, dedicati unui anumit tip de gaz).

Abordarea aleasa de mine pentru a imbunatati performanta senzorilor MQ a fost aceea de a adauga senzorul Sharp_GP2Y1010AU0F care detecteaza corect prezenta particulelor mici din componenta fumului si care nu reactioneaza in prezenta altor gaze.

Important este carui public ii este adresat produsul:

  • scump, eficient, foarte specializat ce nu isi poate permite sa dea alarme false
  • pentru uz zilnic, ieftin, ce poate sa dea din cand in cand alarme false

Download

Bibliografie/Resurse

Pentru a scrie codul in Python care genereaza graficele real-time, am folosit:

  • generarea in timp real al graficelor in Python

https://pythonprogramming.net/live-graphs-matplotlib-tutorial/

  • crearea mai multor grafice in aceeasi fereastra simultan in Python

https://matplotlib.org/3.5.0/gallery/subplots_axes_and_figures/subplots_demo.html

  • citirea datelor de pe interfata seriala intre Python si Arduino

http://www.mikeburdis.com/wp/notes/plotting-serial-port-data-using-python-and-matplotlib/

Detector de fum de tigara - PDF

pm/prj2022/rtilimpea/detector_de_fum_de_tigara.txt · Last modified: 2022/06/02 07:28 by alexandra.udrescu01
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0