Arduino Perifericos
Arduino Perifericos
Resultando la recta:
Y = A*x + B Ecuación 1
SENSOR DE GAS LPG MQ-2
Donde: A = Y 1 − Y 0 Ecuación 2
X1− X0
Seleccionando de la gráfica:
X0 = 200 Y0= 1.7 ; X1= 10000 Y1=0.28
A= 𝑙𝑜𝑔 10 [ 0.28] −𝑙𝑜𝑔 10 [1.7 ]
𝑙𝑜𝑔 10 [ 10,000] − 𝑙𝑜𝑔 10 [200 ]
SENSOR DE GAS LPG MQ-2
Calculando Pendiente y coordenada de Abscisa:
A== = -0.461038747
2.30103]
𝑩=𝟏
. 𝟐𝟗𝟏𝟑𝟏𝟑
𝑨 ∗ [ 𝒍𝒐𝒈 ( 𝑹𝒔 / 𝑹𝒐 ) ] +𝑩
𝒑𝒑𝒎=𝟏𝟎
CODIGO EJEMPLO MQ-2
const int MQ_PIN = A0; // Pin del sensor // Obtener la resistencia promedio en N muestras
const int RL_VALUE = 5; // Resistencia RL del modulo en Kilo ohms float readMQ(int mq_pin)
const int R0 = 10; // Resistencia R0 del sensor en Kilo ohms {
float rs = 0;
// Datos para lectura multiple
for (int i = 0;i<READ_SAMPLE_TIMES;i++) {
const int READ_SAMPLE_INTERVAL = 100; // Tiempo entre muestras
const int READ_SAMPLE_TIMES = 5; // Numero muestras rs += getMQResistance(analogRead(mq_pin));
delay(READ_SAMPLE_INTERVAL);
// Ajustar estos valores para vuestro sensor según el Datasheet }
// (opcionalmente, según la calibración que hayáis realizado) return rs / READ_SAMPLE_TIMES;
const float X0 = 200; }
const float Y0 = 1.7;
const float X1 = 10000; // Obtener resistencia a partir de la lectura analogica
const float Y1 = 0.28; float getMQResistance(int raw_adc)
{
// Puntos de la curva de concentración {X, Y}
const float punto0[] = { log10(X0), log10(Y0) }; return (((float)RL_VALUE / 1000.0*(1023 - raw_adc) / raw_adc));
const float punto1[] = { log10(X1), log10(Y1) }; }
// Calcular pendiente y coordenada abscisas // Obtener concentracion 10^(coord + scope * log (rs/r0)
const float scope = (punto1[1] - punto0[1]) / (punto1[0] - punto0[0]); float getConcentration(float rs_ro_ratio)
const float coord = punto0[1] - punto0[0] * scope; {
return pow(10, coord + scope * log(rs_ro_ratio));
void setup() }
{
Serial.begin(9600);
}
void loop()
{
float rs_med = readMQ(MQ_PIN); // Obtener la Rs promedio
float concentration = getConcentration(rs_med/R0); // Obtener la concentración
// Mostrar el valor de la concentración por serial
Serial.println("Concentración: ");
Serial.println(concentration);
}
Conexión Arduino + MQ-2
BUS DE COMUNICACIÓN
DIGITAL I2C:
SINCRONIA DE BUS EN I2C
Protocolo I2C (Inter-integrated Circuit)
Nota: usar software Image2LCD para convertir imagen «Paint» a 128x64 e insertar código en Sketch Arduino
COMUNICACIÓN <<SPI>>
TFT 1.8” COLOR SPI CONEXIÓN ARDUINO
Nota: usar software Image2LCD para convertir imagen «Paint» a 128x160 e insertar código en Sketch Arduino
TFT 1.8” COLOR SPI CONEXIÓN ARDUINO
Nota: usar software Image2LCD para convertir imagen «Paint» a 128x160 e insertar código en Sketch Arduino
TFT 1.8” COLOR SPI CONEXIÓN ARDUINO
Nota: usar software Image2LCD para convertir imagen «Paint» a 128x160 e insertar código en Sketch Arduino
Librería TFT v1.0.5 métodos
Adafruit_ST7735(uint8_t CS, uint8_t RS, uint8_t RST);
fillScreen(uint16_t color);
setRotation(uint8_t r);
setTextColor(uint16_t c);
setTextSize(uint8_t s);
background(color c);
Librería TFT v1.0.5 métodos
fill(uint8_t red, uint8_t green, uint8_t blue);
fill(color c);
noFill();
stroke(color c);
noStroke();
textSize(uint8_t size);
uint8_t getRotation(void);
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, int16_t delta, uint16_t color)
triangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3)
fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1,int16_t x2, int16_t y2, uint16_t color);
drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size);
point(int16_t x, int16_t y)
quad(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3, int16_t x4, int16_t y4)
Librería TFT v1.0.5 métodos
Punto 2
Coord Y (filas)
radio
(Xcentral , Ycentral)
Punto 1
X1= Sen(2*angulo*0.17453)
Por tanto:
X1= Sen(angulo*0.034906)
Motor: STH-39D1126-06
MOTOR BIPOLAR: STH-39D1126-06
CARACTERISTICAS MOTOR:
BIPOLAR HIBRIDO.
Step: 1.8°por paso.
Voltaje: 6.15 Vdc.
Amperes: 1.5 Amp.
NEMA 16.
Conexión:
Fase A: +A naranja, -A café.
Fase B: +B rojo, -B amarillo.
Diámetro motor: 39*39mm
Altura del motor : 30mm
Longitud del eje: 20mm
CONEXIÓN ARDUINO: MOTOR BIPOLAR
CONTROL: MOTOR BIPOLAR
MOTOR BIPOLAR ARDUINO
UTILIZANDO DRIVER
POLOLU A4988
Diagrama Esquemático A4988
Conexión Mínima Pololu A4988
A4988 Driver Resolution
CONEXIÓN ARDUINO + A4988
CONEXIÓN ARDUINO + A4988
Arduino + 3 A4988 Drivers
Arduino + 3 A4988 Drivers
MOTOR UNIPOLAR 28BYJ-48 5VDC: CONEXIÓN ARDUINO
CONEXIÓN DE MOTOR
UNIPOLAR CON ARDUINO
Medio Paso:
CONEXIÓN ARDUINO Y
MÓDULO DE COMUNICACIÓN
BLUETOOTH
Wireless Regional Area Network
IEEE 802.20
80 Mbps
WMAN 34Mbps y 1 Gbps
Rango
WiMax
IEEE 802.16
Zigbee
WLAN WiFi
802.15.4
15.4c 802.11
Bluetooth 802.15.3
WPAN 802.15.1 802.15.3c
Ultra Wide Band
CONEXIÓN ARDUINO Y
MÓDULO DE COMUNICACIÓN
WiFi
COMANDOS GENERICOS:
AT Prueba la comunicación
AT+CWSAP="MICROS","PASSWORD",CANAL,ENC
Canal = 1 al 11
enc= 0-Open, 1-WEP, 2-WPA_PSK, 3-WPA2_PSK, 4-WPA_WPA2_PSK
(SOLO AL CONFIGURAR COMO AP, AT+CWMODE=2)
AT+CWLIF (Proporciona lista de IP´s de dispositivos asociados al módulo cuando esta en modo AP)
CONFIGURAR COMO ESTACION: (AT+CWMODE=1, Modo STA)
AT+CWLAP (Lista de AP´s en la cercanía)
AT+CWJAP="micros","12345678“
AT+CIPSTART=<Id>,"tipo","dir. IP",puerto
AT+GMR
AT+CWJAP=“miRED",“passRED"
AT+CIPCLOSE=1 // AT+CIPCLOSE=<Id_Conexion>