lunes, 11 de diciembre de 2017

LECTOR DE GASES

  ONOSBY ARCAS
VISTA FINAL


1°DISEÑO y ENSAMBLE
Desarrollado en solidworks




BASE SENSOR

COMPUESTA POR:
-Sensor
-4 Imanes de 3mm de diámetro x 1mm de grosor
-Led smd blanco
-Resistencia * (en este video no aparece)
-PCB * (en este video no aparece)
-Base de madera de MDF de 2.6mm




























2° Selección de Gases y Sensores
      Se seleccionaron los siguientes sensores: MQ-2, MQ-135 , MQ - 5, DHT
HOJAS DE DATOS





3° PROGRAMAS

PROGRAMA | Detector de sensor
Básicamente lo que este programa hace es que por medio del pin A1 de arduino
entra una corriente que varia sengun el sensor conectado y asi es como detecta el sensor conectado

  5v-------Resistencia-------A1

#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#define analogpila 1
#define PINTO 4
#define vent 13
#define pinled 9
float ass=0,voltaj=0,SENSOR=0;
int analogValor = 0,ledDelay=800;
float voltajeeeee = 0;


U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA,U8X8_PIN_NONE);


void setup(){u8g2.begin();
 pinMode(pinled,OUTPUT);
  pinMode(vent,OUTPUT);
  pinMode(PINTO,INPUT);
 
 }

void scan() {
   analogValor = analogRead(analogpila);
  voltajeeeee = 0.0048*analogValor;
  delay(500);
}


 
void loop(){

int cambio = digitalRead(PINTO);
  digitalWrite(vent,LOW);
  digitalWrite(pinled,LOW);
int swi =0;

if(cambio==1){
  digitalWrite(pinled,HIGH);
  int m;
    u8g2.clearBuffer();
u8g2.drawLine(35-m,34,35-m,37);
u8g2.drawLine(36-m,33,36-m,38);
u8g2.drawLine(37-m,34,37-m,41);
u8g2.drawLine(38-m,36,38-m,43);
u8g2.drawLine(39-m,38,39-m,45);
u8g2.drawLine(40-m,40,40-m,46);
u8g2.drawLine(41-m,43,41-m,46);

u8g2.drawLine(39-m,18,39-m,30);
u8g2.drawLine(40-m,16,40-m,34);
u8g2.drawLine(41-m,17,41-m,36);
u8g2.drawLine(42-m,18,42-m,40);
u8g2.drawLine(43-m,20,43-m,44);
u8g2.drawLine(44-m,25,44-m,46);
u8g2.drawLine(45-m,32,45-m,47);
u8g2.drawLine(46-m,38,46-m,50);
u8g2.drawLine(47-m,40,47-m,52);
u8g2.drawLine(48-m,46,48-m,54);
u8g2.drawLine(49-m,48,49-m,54);

u8g2.drawLine(47-m,8,47-m,28);
u8g2.drawLine(48-m,6,48-m,33);
u8g2.drawLine(49-m,5,49-m,37);
u8g2.drawLine(50-m,4,50-m,42);
u8g2.drawLine(51-m,4,51-m,46);
u8g2.drawLine(52-m,4,52-m,52);
u8g2.drawLine(53-m,4,53-m,54);
u8g2.drawLine(54-m,6,54-m,56);
u8g2.drawLine(55-m,20,55-m,57);
u8g2.drawLine(56-m,28,56-m,58);
u8g2.drawLine(57-m,36,57-m,58);
u8g2.drawLine(58-m,53,58-m,58);

u8g2.drawLine(59-m,6,59-m,22);
u8g2.drawLine(60-m,5,60-m,52);
u8g2.drawLine(61-m,3,61-m,55);
u8g2.drawLine(62-m,2,62-m,57);
u8g2.drawLine(63-m,2,63-m,58); //izquierda
u8g2.drawLine(64-m,2,64-m,58);//centro
u8g2.drawLine(65-m,2,65-m,57);// derecha
u8g2.drawLine(66-m,3,66-m,54);
u8g2.drawLine(67-m,4,67-m,50);
u8g2.drawLine(68-m,5,68-m,46);


u8g2.drawLine(80-m,8,80-m,28);
u8g2.drawLine(79-m,6,79-m,33);
u8g2.drawLine(78-m,5,78-m,37);
u8g2.drawLine(77-m,4,77-m,42);
u8g2.drawLine(76-m,4,76-m,46);
u8g2.drawLine(75-m,4,75-m,52);
u8g2.drawLine(74-m,4,74-m,54);
u8g2.drawLine(73-m,6,73-m,56);
u8g2.drawLine(72-m,20,72-m,57);
u8g2.drawLine(71-m,28,71-m,58);
u8g2.drawLine(70-m,36,70-m,58);
u8g2.drawLine(69-m,53,69-m,58);

u8g2.drawLine(88-m,18,88-m,30);
u8g2.drawLine(87-m,16,87-m,34);
u8g2.drawLine(86-m,17,86-m,36);
u8g2.drawLine(85-m,18,85-m,40);
u8g2.drawLine(84-m,20,84-m,44);
u8g2.drawLine(83-m,25,83-m,46);
u8g2.drawLine(82-m,32,82-m,47);
u8g2.drawLine(81-m,38,81-m,50);
u8g2.drawLine(80-m,40,80-m,52);
u8g2.drawLine(79-m,46,79-m,54);
u8g2.drawLine(78-m,48,78-m,54);

u8g2.drawLine(92-m,34,92-m,37);
u8g2.drawLine(91-m,33,91-m,38);
u8g2.drawLine(90-m,34,90-m,41);
u8g2.drawLine(89-m,36,89-m,43);
u8g2.drawLine(88-m,38,88-m,45);
u8g2.drawLine(87-m,40,87-m,46);
u8g2.drawLine(86-m,43,86-m,46);
u8g2.sendBuffer();
delay(2000);


m=62;
int n=6;

u8g2.clearBuffer();
 u8g2.drawLine(11,5+n,5,20+n);
 u8g2.drawLine(12,5+n,5,21+n);
 u8g2.drawLine(13,5+n,5,22+n);
 u8g2.drawLine(14,5+n,5,23+n);
 u8g2.drawLine(15,5+n,5,24+n);
 u8g2.drawLine(16,5+n,5,26+n);
 u8g2.drawLine(5,26+n,26,26+n);
 u8g2.drawLine(6,27+n,25,27+n);
 u8g2.drawLine(7,28+n,25,28+n);
 u8g2.drawLine(16,5+n,35,5+n);
 u8g2.drawLine(15,6+n,36,6+n);
 u8g2.drawLine(14,7+n,34,7+n);
 u8g2.drawLine(37,7+n,26,28+n);
 u8g2.drawLine(36,6+n,26,27+n);
 u8g2.drawLine(35,7+n,26,28+n);
 u8g2.drawLine(37,8+n,27,28+n);
 u8g2.drawLine(37,9+n,28,28+n);
 u8g2.drawLine(37,9+n,27,28+n);

 u8g2.drawLine(40,5+n,40,28+n);
 u8g2.drawLine(41,5+n,41,28+n);
 u8g2.drawLine(42,5+n,42,28+n);
  u8g2.drawLine(43,5+n,43,28+n);
 u8g2.drawLine(44,28+n,57,5+n);
 u8g2.drawLine(44,27+n,56,5+n);
 u8g2.drawLine(44,26+n,55,6+n);
 u8g2.drawLine(44,25+n,54,7+n);
 u8g2.drawLine(44,24+n,53,8+n);
 u8g2.drawLine(44,23+n,52,9+n);
 u8g2.drawLine(54,8+n,58,6+n);
 u8g2.drawLine(54,7+n,59,7+n);
 u8g2.drawLine(60,10+n,60,28+n);
 u8g2.drawLine(61,10+n,61,28+n);
 u8g2.drawLine(62,10+n,62,28+n);
 u8g2.drawLine(63,10+n,63,28+n);
 u8g2.drawLine(61,5+n,63,10+n);
 u8g2.drawLine(54,9+n,63,10+n);
 u8g2.drawLine(54,8+n,63,10+n);
 u8g2.drawLine(60,5+n,62,10+n);
 u8g2.drawLine(59,5+n,61,10+n);
 u8g2.drawLine(58,5+n,60,10+n);
 u8g2.drawLine(55,10+n,58,5+n);
 u8g2.drawLine(55,8+n,62,8+n);

  u8g2.drawLine(11+m,5+n,5+m,20+n);
 u8g2.drawLine(12+m,5+n,5+m,21+n);
 u8g2.drawLine(13+m,5+n,5+m,22+n);
 u8g2.drawLine(14+m,5+n,5+m,23+n);
 u8g2.drawLine(15+m,5+n,5+m,24+n);
 u8g2.drawLine(16+m,5+n,5+m,26+n);
 u8g2.drawLine(5+m,26+n,26+m,26+n);
 u8g2.drawLine(6+m,27+n,25+m,27+n);
 u8g2.drawLine(7+m,28+n,25+m,28+n);
 u8g2.drawLine(16+m,5+n,35+m,5+n);
 u8g2.drawLine(15+m,6+n,36+m,6+n);
 u8g2.drawLine(14+m,7+n,34+m,7+n);
 u8g2.drawLine(37+m,7+n,26+m,28+n);
 u8g2.drawLine(36+m,6+n,26+m,27+n);
 u8g2.drawLine(35+m,7+n,26+m,28+n);
 u8g2.drawLine(37+m,8+n,27+m,28+n);
 u8g2.drawLine(37+m,9+n,28+m,28+n);
 u8g2.drawLine(37+m,9+n,27+m,28+n);

 u8g2.drawLine(107,5+n,123,5+n);
 u8g2.drawLine(106,6+n,123,6+n);
 u8g2.drawLine(105,7+n,123,7+n);
 u8g2.drawLine(100,26+n,123,26+n);
 u8g2.drawLine(100,27+n,122,27+n);
 u8g2.drawLine(100,28+n,121,28+n);
 u8g2.drawLine(108,15+n,120,15+n);
 u8g2.drawLine(108,16+n,120,16+n);
 u8g2.drawLine(108,17+n,120,17+n);
 u8g2.drawLine(107,7+n,107,17+n);
 u8g2.drawLine(106,7+n,106,16+n);
 u8g2.drawLine(105,7+n,105,15+n);
 u8g2.drawLine(121,26+n,121,15+n);
 u8g2.drawLine(122,26+n,122,16+n);
 u8g2.drawLine(123,26+n,123,17+n);


u8g2.drawLine(5,34+n,123,34+n);
  u8g2.setFont(u8g2_font_crox1t_tf);
u8g2.setCursor(7,47+n); 
u8g2.print("ARCAS TECHNOLOGY'S");
u8g2.sendBuffer();
delay(1500);
  swi++;
 
u8g2.clearBuffer();
  u8g2.sendBuffer();
}


while(swi==1){
  for(int tiempo =0;tiempo!=1;tiempo++){
    SENSOR=0;
  ass=0;
  analogValor = analogRead(analogpila);
  voltajeeeee = 0.0048*analogValor;
   
 if (voltajeeeee>=.02){
   
for(int luna=0;luna!=6;luna++) {
  if(luna==0){
     Serial.println("DETECTANDO SENSOR");
  }
  analogValor = analogRead(analogpila);
float  voltaj = 0.0048*analogValor;
ass= ass+voltaj;
    
  delay(50);
if(luna==5){
  SENSOR=ass/5;
}
  }


//MQ135  

if (SENSOR>=.03 && SENSOR<.30){
   digitalWrite(vent,HIGH);
   u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(20,25); 
u8g2.print("SENSOR");
 u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.setCursor(33,41); 
u8g2.print("MQ-135"); 
 u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.setCursor(25,55); 
u8g2.print("CAMBIE PIC");
u8g2.sendBuffer();
delay(1000);
}

//MQ2  
else if(SENSOR>=.60 && SENSOR<1.10){
      digitalWrite(vent,HIGH);
   u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(20,25); 
u8g2.print("SENSOR");
 u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.setCursor(39,41); 
u8g2.print("MQ-2"); 
 u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.setCursor(25,55); 
u8g2.print("CAMBIE PIC");
u8g2.sendBuffer();
delay(1000);
}


//DHT
else if (SENSOR>=1.90 && SENSOR<8.90){
    u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(20,25); 
u8g2.print("SENSOR");
 u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.setCursor(43,41); 
u8g2.print("DHT"); 
 u8g2.setFont(u8g2_font_ncenB08_tr);
u8g2.setCursor(25,55); 
u8g2.print("CAMBIE PIC");
u8g2.sendBuffer();
delay(1000);
}
 
}
else{
   u8g2.setFont(u8g2_font_ncenB12_tr);
u8g2.setCursor(0,25); 
u8g2.print("NO DETECTO");
 u8g2.setCursor(22,45); 
u8g2.print("SENSOR");
u8g2.sendBuffer();
delay (1000);
  }
  }
swi=2;
}
u8g2.clearBuffer(); 
u8g2.sendBuffer();
}



FUNCIONAMIENTO CON SENSOR CONECTADO


SENSOR CONECTADO MQ-2

SENSOR CONECTADO MQ-135

SENSOR CONECATDO DHT



FUNCIONAMIENTO SIN SENSOR CONECTADO








PROGRAMA | DHT SENSOR DE TEMPERATURA
Este programa solo se enfoca al sensor DHT

#include "DHT.h"
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
int DHTPIN= 12;    
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);
#define analogpila 1
#define PINTO 4
#define pinled 9

float ass=0,voltaj=0,SENSOR=0;
int analogValor = 0,ledDelay=800;
float voltajeeeee = 0;


U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA,U8X8_PIN_NONE);


void setup(){u8g2.begin();
dht.begin(); 
 pinMode(pinled,OUTPUT);
  pinMode(PINTO,INPUT);
 
 }

void scan() {
   analogValor = analogRead(analogpila); 
voltajeeeee = 0.0048*analogValor;
  Serial.print("Vol::");
 Serial.println(voltajeeeee);
  delay(500);
}


 
void loop(){

int cambio = digitalRead(PINTO);
  digitalWrite(pinled,LOW);
int swi =0;
if(cambio==1){
    digitalWrite(pinled,HIGH);
  int m;
    u8g2.clearBuffer();
u8g2.drawLine(35-m,34,35-m,37);
u8g2.drawLine(36-m,33,36-m,38);
u8g2.drawLine(37-m,34,37-m,41);
u8g2.drawLine(38-m,36,38-m,43);
u8g2.drawLine(39-m,38,39-m,45);
u8g2.drawLine(40-m,40,40-m,46);
u8g2.drawLine(41-m,43,41-m,46);

u8g2.drawLine(39-m,18,39-m,30);
u8g2.drawLine(40-m,16,40-m,34);
u8g2.drawLine(41-m,17,41-m,36);
u8g2.drawLine(42-m,18,42-m,40);
u8g2.drawLine(43-m,20,43-m,44);
u8g2.drawLine(44-m,25,44-m,46);
u8g2.drawLine(45-m,32,45-m,47);
u8g2.drawLine(46-m,38,46-m,50);
u8g2.drawLine(47-m,40,47-m,52);
u8g2.drawLine(48-m,46,48-m,54);
u8g2.drawLine(49-m,48,49-m,54);

u8g2.drawLine(47-m,8,47-m,28);
u8g2.drawLine(48-m,6,48-m,33);
u8g2.drawLine(49-m,5,49-m,37);
u8g2.drawLine(50-m,4,50-m,42);
u8g2.drawLine(51-m,4,51-m,46);
u8g2.drawLine(52-m,4,52-m,52);
u8g2.drawLine(53-m,4,53-m,54);
u8g2.drawLine(54-m,6,54-m,56);
u8g2.drawLine(55-m,20,55-m,57);
u8g2.drawLine(56-m,28,56-m,58);
u8g2.drawLine(57-m,36,57-m,58);
u8g2.drawLine(58-m,53,58-m,58);

u8g2.drawLine(59-m,6,59-m,22);
u8g2.drawLine(60-m,5,60-m,52);
u8g2.drawLine(61-m,3,61-m,55);
u8g2.drawLine(62-m,2,62-m,57);
u8g2.drawLine(63-m,2,63-m,58); //izquierda
u8g2.drawLine(64-m,2,64-m,58);//centro
u8g2.drawLine(65-m,2,65-m,57);// derecha
u8g2.drawLine(66-m,3,66-m,54);
u8g2.drawLine(67-m,4,67-m,50);
u8g2.drawLine(68-m,5,68-m,46);


u8g2.drawLine(80-m,8,80-m,28);
u8g2.drawLine(79-m,6,79-m,33);
u8g2.drawLine(78-m,5,78-m,37);
u8g2.drawLine(77-m,4,77-m,42);
u8g2.drawLine(76-m,4,76-m,46);
u8g2.drawLine(75-m,4,75-m,52);
u8g2.drawLine(74-m,4,74-m,54);
u8g2.drawLine(73-m,6,73-m,56);
u8g2.drawLine(72-m,20,72-m,57);
u8g2.drawLine(71-m,28,71-m,58);
u8g2.drawLine(70-m,36,70-m,58);
u8g2.drawLine(69-m,53,69-m,58);

u8g2.drawLine(88-m,18,88-m,30);
u8g2.drawLine(87-m,16,87-m,34);
u8g2.drawLine(86-m,17,86-m,36);
u8g2.drawLine(85-m,18,85-m,40);
u8g2.drawLine(84-m,20,84-m,44);
u8g2.drawLine(83-m,25,83-m,46);
u8g2.drawLine(82-m,32,82-m,47);
u8g2.drawLine(81-m,38,81-m,50);
u8g2.drawLine(80-m,40,80-m,52);
u8g2.drawLine(79-m,46,79-m,54);
u8g2.drawLine(78-m,48,78-m,54);

u8g2.drawLine(92-m,34,92-m,37);
u8g2.drawLine(91-m,33,91-m,38);
u8g2.drawLine(90-m,34,90-m,41);
u8g2.drawLine(89-m,36,89-m,43);
u8g2.drawLine(88-m,38,88-m,45);
u8g2.drawLine(87-m,40,87-m,46);
u8g2.drawLine(86-m,43,86-m,46);
u8g2.sendBuffer();
delay(2000);
m=62;
int n=6;

u8g2.clearBuffer();
 u8g2.drawLine(11,5+n,5,20+n);
 u8g2.drawLine(12,5+n,5,21+n);
 u8g2.drawLine(13,5+n,5,22+n);
 u8g2.drawLine(14,5+n,5,23+n);
 u8g2.drawLine(15,5+n,5,24+n);
 u8g2.drawLine(16,5+n,5,26+n);
 u8g2.drawLine(5,26+n,26,26+n);
 u8g2.drawLine(6,27+n,25,27+n);
 u8g2.drawLine(7,28+n,25,28+n);
 u8g2.drawLine(16,5+n,35,5+n);
 u8g2.drawLine(15,6+n,36,6+n);
 u8g2.drawLine(14,7+n,34,7+n);
 u8g2.drawLine(37,7+n,26,28+n);
 u8g2.drawLine(36,6+n,26,27+n);
 u8g2.drawLine(35,7+n,26,28+n);
 u8g2.drawLine(37,8+n,27,28+n);
 u8g2.drawLine(37,9+n,28,28+n);
 u8g2.drawLine(37,9+n,27,28+n);

 u8g2.drawLine(40,5+n,40,28+n);
 u8g2.drawLine(41,5+n,41,28+n);
 u8g2.drawLine(42,5+n,42,28+n);
  u8g2.drawLine(43,5+n,43,28+n);
 u8g2.drawLine(44,28+n,57,5+n);
 u8g2.drawLine(44,27+n,56,5+n);
 u8g2.drawLine(44,26+n,55,6+n);
 u8g2.drawLine(44,25+n,54,7+n);
 u8g2.drawLine(44,24+n,53,8+n);
 u8g2.drawLine(44,23+n,52,9+n);
 u8g2.drawLine(54,8+n,58,6+n);
 u8g2.drawLine(54,7+n,59,7+n);
 u8g2.drawLine(60,10+n,60,28+n);
 u8g2.drawLine(61,10+n,61,28+n);
 u8g2.drawLine(62,10+n,62,28+n);
 u8g2.drawLine(63,10+n,63,28+n);
 u8g2.drawLine(61,5+n,63,10+n);
 u8g2.drawLine(54,9+n,63,10+n);
 u8g2.drawLine(54,8+n,63,10+n);
 u8g2.drawLine(60,5+n,62,10+n);
 u8g2.drawLine(59,5+n,61,10+n);
 u8g2.drawLine(58,5+n,60,10+n);
 u8g2.drawLine(55,10+n,58,5+n);
 u8g2.drawLine(55,8+n,62,8+n);

  u8g2.drawLine(11+m,5+n,5+m,20+n);
 u8g2.drawLine(12+m,5+n,5+m,21+n);
 u8g2.drawLine(13+m,5+n,5+m,22+n);
 u8g2.drawLine(14+m,5+n,5+m,23+n);
 u8g2.drawLine(15+m,5+n,5+m,24+n);
 u8g2.drawLine(16+m,5+n,5+m,26+n);
 u8g2.drawLine(5+m,26+n,26+m,26+n);
 u8g2.drawLine(6+m,27+n,25+m,27+n);
 u8g2.drawLine(7+m,28+n,25+m,28+n);
 u8g2.drawLine(16+m,5+n,35+m,5+n);
 u8g2.drawLine(15+m,6+n,36+m,6+n);
 u8g2.drawLine(14+m,7+n,34+m,7+n);
 u8g2.drawLine(37+m,7+n,26+m,28+n);
 u8g2.drawLine(36+m,6+n,26+m,27+n);
 u8g2.drawLine(35+m,7+n,26+m,28+n);
 u8g2.drawLine(37+m,8+n,27+m,28+n);
 u8g2.drawLine(37+m,9+n,28+m,28+n);
 u8g2.drawLine(37+m,9+n,27+m,28+n);

 u8g2.drawLine(107,5+n,123,5+n);
 u8g2.drawLine(106,6+n,123,6+n);
 u8g2.drawLine(105,7+n,123,7+n);
 u8g2.drawLine(100,26+n,123,26+n);
 u8g2.drawLine(100,27+n,122,27+n);
 u8g2.drawLine(100,28+n,121,28+n);
 u8g2.drawLine(108,15+n,120,15+n);
 u8g2.drawLine(108,16+n,120,16+n);
 u8g2.drawLine(108,17+n,120,17+n);
 u8g2.drawLine(107,7+n,107,17+n);
 u8g2.drawLine(106,7+n,106,16+n);
 u8g2.drawLine(105,7+n,105,15+n);
 u8g2.drawLine(121,26+n,121,15+n);
 u8g2.drawLine(122,26+n,122,16+n);
 u8g2.drawLine(123,26+n,123,17+n);
u8g2.drawLine(5,34+n,123,34+n);
  u8g2.setFont(u8g2_font_crox1t_tf);
u8g2.setCursor(7,47+n); 
u8g2.print("ARCAS TECHNOLOGY'S");
u8g2.sendBuffer();
delay(1500);
  swi++;
u8g2.clearBuffer();
  u8g2.sendBuffer();
}
while(swi==1){
   for(int tiempo =0;tiempo!=1;tiempo++){
    SENSOR=0;
  ass=0;
  analogValor = analogRead(analogpila);
  voltajeeeee = 0.0048*analogValor;
   
   
for(int luna=0;luna!=6;luna++) {
  analogValor = analogRead(analogpila);
float  voltaj = 0.0048*analogValor;
ass= ass+voltaj;
if(luna==5){
  SENSOR=ass/5;
}
  }

  u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(25,30); 
u8g2.print("SENSOR");

  u8g2.setFont(u8g2_font_ncenB10_tr);
u8g2.setCursor(45,45); 
u8g2.print("DHT"); 
u8g2.sendBuffer();
delay(800);
 float h = dht.readHumidity();
  int t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    u8g2.clearBuffer();         
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(0,30); 
u8g2.print("CONECTE SENSOR"); 
u8g2.sendBuffer();
    return;
  }
  float hic = dht.computeHeatIndex(t, h, false);
u8g2.clearBuffer();  
u8g2.setFont(u8g2_font_helvB10_tf);
u8g2.setCursor(21,12); 
u8g2.print("Temperatura");
u8g2.setFont(u8g2_font_helvR10_tf);
u8g2.setCursor(50,28); 
u8g2.print(t);u8g2.print(" C");
u8g2.drawCircle(68,18,1.7);
      
u8g2.setFont(u8g2_font_helvB08_tf);
u8g2.setCursor(75,45); 
u8g2.print("Humedad");
u8g2.setFont(u8g2_font_helvR08_tf);
u8g2.setCursor(81,58); 
u8g2.print(h);u8g2.print("%");

u8g2.setFont(u8g2_font_helvB08_tf);
u8g2.setCursor(10,45); 
u8g2.print("S.Termica");
u8g2.setFont(u8g2_font_helvR08_tf);
u8g2.setCursor(16,58); 
u8g2.print(hic);u8g2.print(" C");
u8g2.drawCircle(44,50,1);
u8g2.sendBuffer();
delay(2500);
  }
swi=2;
}
u8g2.clearBuffer(); 
u8g2.sendBuffer();
}


FUNCIONAMIENTO



PROGRAMA | SENSOR MQ-2


float RL_VALOR=5,MQ1=0,RAL=9.83,GAS_LP=0;
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

String inputstring = ""; 
float LPCurve[3]={2.3,0.21,-0.47};
float Ro=10;
U8G2_SSD1306_128X32_UNIVISION_F_SW_I2C u8g2(U8G2_R0,SCL,SDA,U8X8_PIN_NONE);

void setup(){
  Serial.begin(9600);
u8g2.begin();
u8g2.clearBuffer();         
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.setCursor(0,30); 
u8g2.print("Calibrando"); 
u8g2.sendBuffer();
Ro = Calibracion(MQ1);  
 }


 
void loop(){

  for(int bola=4,bota=4;bola!=46,bota!=11;bola++,bota++){
  u8g2.clearBuffer(); 
  u8g2.setFont(u8g2_font_courB08_tf);
  u8g2.setCursor(52,11); 
  u8g2.print("MQ-2");
  u8g2.drawCircle(bola,bota,2, U8G2_DRAW_ALL);
  u8g2.drawLine(0,15,128,15);
  u8g2.drawLine(0,13,128,13);
  u8g2.setFont(u8g2_font_helvR12_tf);
  u8g2.setCursor(0,30); 
  u8g2.print("LPG:");         
  u8g2.setFont(u8g2_font_timR12_tf);
  u8g2.setCursor(38,30); 
  u8g2.print(porcentaje_gas(lecturaMQ(MQ1)/Ro,GAS_LP));
  u8g2.setFont(u8g2_font_helvR08_tf);
  u8g2.setCursor(100,30); 
  u8g2.print("PPM");
  u8g2.sendBuffer();         
  delay(1);
}

for(int bola=10,bota=10;bola!=46,bota!=4;bola++,bota--){
  u8g2.clearBuffer(); 
  u8g2.setFont(u8g2_font_courB08_tf);
  u8g2.setCursor(52,11); 
  u8g2.print("MQ-2");
  u8g2.drawCircle(bola,bota,2, U8G2_DRAW_ALL);
  u8g2.drawLine(0,15,128,15);
  u8g2.drawLine(0,13,128,13);
  u8g2.setFont(u8g2_font_helvR12_tf);
  u8g2.setCursor(0,30); 
  u8g2.print("LPG:");         
  u8g2.setFont(u8g2_font_timR12_tf);
  u8g2.setCursor(38,30); 
  u8g2.print(porcentaje_gas(lecturaMQ(MQ1)/Ro,GAS_LP));
  u8g2.setFont(u8g2_font_helvR08_tf);
  u8g2.setCursor(100,30); 
  u8g2.print("PPM");
  u8g2.sendBuffer();         
  delay(1);
}for(int bola=16,bota=4;bola!=46,bota!=10;bola++,bota++){
  u8g2.clearBuffer(); 
  u8g2.setFont(u8g2_font_courB08_tf);
  u8g2.setCursor(52,11); 
  u8g2.print("MQ-2");
  u8g2.drawCircle(bola,bota,2, U8G2_DRAW_ALL);
  u8g2.drawLine(0,15,128,15);
  u8g2.drawLine(0,13,128,13);
  u8g2.setFont(u8g2_font_helvR12_tf);
  u8g2.setCursor(0,30); 
  u8g2.print("LPG:");         
  u8g2.setFont(u8g2_font_timR12_tf);
  u8g2.setCursor(38,30); 
  u8g2.print(porcentaje_gas(lecturaMQ(MQ1)/Ro,GAS_LP));
  u8g2.setFont(u8g2_font_helvR08_tf);
  u8g2.setCursor(100,30); 
  u8g2.print("PPM");
  u8g2.sendBuffer();         
  delay(1);
}for(int bola=22,bota=10;bola!=46,bota!=4;bola++,bota--){
  u8g2.clearBuffer(); 
  u8g2.setFont(u8g2_font_courB08_tf);
  u8g2.setCursor(52,11); 
  u8g2.print("MQ-2");
  u8g2.drawCircle(bola,bota,2, U8G2_DRAW_ALL);
  u8g2.drawLine(0,15,128,15);
  u8g2.drawLine(0,13,128,13);
  u8g2.setFont(u8g2_font_helvR12_tf);
  u8g2.setCursor(0,30); 
  u8g2.print("LPG:");         
  u8g2.setFont(u8g2_font_timR12_tf);
  u8g2.setCursor(38,30); 
  u8g2.print(porcentaje_gas(lecturaMQ(MQ1)/Ro,GAS_LP));
  u8g2.setFont(u8g2_font_helvR08_tf);
  u8g2.setCursor(100,30); 
  u8g2.print("PPM");
  u8g2.sendBuffer();         
  delay(1);
}



}

float calc_res(int raw_adc)
{return ( ((float)RL_VALOR*(1023-raw_adc)/raw_adc));}

float Calibracion(float mq_pin){
int i;
float val=0;
for (i=0;i<50;i++) {
val += calc_res(analogRead(mq_pin));
delay(50);}

val = val/50;                                                                                    
val = val/RAL;
return val;
}

float lecturaMQ(int mq_pin){
int i;
float rs=0;
for (i=0;i<5;i++) {
rs += calc_res(analogRead(mq_pin));
delay(50);
 }
rs = rs/5;
return rs;
}

 int porcentaje_gas(float rs_ro_ratio, int gas_id){
if ( gas_id == GAS_LP ) {
return porcentaje_gas(rs_ro_ratio,LPCurve);
   }
  return 0;
}
int porcentaje_gas(float rs_ro_ratio, float *pcurve){
return (pow(10, (((log(rs_ro_ratio)-pcurve[1])/pcurve[2]) + pcurve[0])));
}


FUNCIONAMIENTO






Gracias por ver proyecto si gustan una guia para desarrollarlo dejen un comentario















No hay comentarios:

Publicar un comentario