Tabla de contenido:

IOT123 - LADRILLO I2C MQ2: 5 Pasos
IOT123 - LADRILLO I2C MQ2: 5 Pasos

Video: IOT123 - LADRILLO I2C MQ2: 5 Pasos

Video: IOT123 - LADRILLO I2C MQ2: 5 Pasos
Video: ING•009 ... ENUNCIATIVAS AFIRMATIVAS CON VERBOS PREDICATIVOS 2024, Mes de julio
Anonim
IOT123 - LADRILLO I2C MQ2
IOT123 - LADRILLO I2C MQ2
IOT123 - LADRILLO I2C MQ2
IOT123 - LADRILLO I2C MQ2
IOT123 - LADRILLO I2C MQ2
IOT123 - LADRILLO I2C MQ2
IOT123 - LADRILLO I2C MQ2
IOT123 - LADRILLO I2C MQ2

Los LADRILLOS IOT123 son unidades modulares de bricolaje que se pueden combinar con otros LADRILLOS IOT123, para agregar funcionalidad a un nodo o dispositivo portátil. Se basan en los protoboards de dos lados de una pulgada cuadrada con orificios pasantes interconectados.

Se espera que varios de estos BRICKS estén en múltiples nodos (Master MCU - ESP8266 o ATTINY84) en un sitio. La MCU no necesita conocimientos previos sobre el propósito de los sensores o las necesidades de software. Busca nodos I2C y luego solicita un volcado de propiedad (datos del sensor) de cada esclavo. Estos LADRILLOS suministran 5.0V, 3.3V y otra línea AUX que es personalizable.

Este LADRILLO I2C MQ2 vuelca 3 propiedades:

GLP (Partes por millón), CO (PPM), HUMO (PPM)

Este sensor proporcionó un escenario interesante: necesita al menos 2 minutos (hasta 5 minutos) para calentarse, luego necesita calibrarse durante 20 segundos antes de su uso. Como la MCU del host solo está interesada en obtener pares de nombre / valor (y un mensaje de continuación), hemos introducido una propiedad "PREPARE". Como su mensaje de continuación es "1" (más por venir), la MCU anfitriona seguirá sondeando el LADRILLO hasta que esté listo. También se recomienda "quemar" el MQ2 antes de usarlo, es decir, dejar conectado a su circuito de 5 V durante 24 horas.

Los ladrillos del sensor tipo Keyes se extraerán primero, ya que vienen con vitaminas (se necesitan componentes adicionales) incluidas y son relativamente baratos (compré 37 por 10AUD). Se introducirán otras placas / circuitos en I2C BRICKS.

Los orificios pasantes adyacentes al ATTINY85 se han dejado sin usar, para habilitar un programador de pines pogo mientras el DIP8 está soldado a la PCB.

Se está desarrollando una abstracción adicional, empaquetar los BRICKS en pequeños cilindros que se conectan a un concentrador D1M WIFI BLOCK, bombeando los valores a un servidor MQTT.

Paso 1: Material y herramientas

Material y herramientas
Material y herramientas
Material y herramientas
Material y herramientas
Material y herramientas
Material y herramientas

Hay una lista completa de lista de materiales y abastecimiento.

  1. Bloque de sensor MQ2 (1)
  2. ATTINY85 20PU (1)
  3. Protoboard de doble cara de 1 "(1)
  4. Cabezal macho 90º (3P, 3P)
  5. Encabezado macho (2P, 2P)
  6. Puente de derivación (1)
  7. Cable de conexión (~ 7)
  8. Soldadura y Hierro (1)

Paso 2: Prepare el ATTINY85

Prepare el ATTINY85
Prepare el ATTINY85
Prepare el ATTINY85
Prepare el ATTINY85
Prepare el ATTINY85
Prepare el ATTINY85
Prepare el ATTINY85
Prepare el ATTINY85

Se necesita AttinyCore de Boards Manager. Grabe el cargador de arranque "EEPROM Retained", "8mHZ Internal" (todas las configuraciones se muestran arriba).

Utilice la fuente incluida; compilar y programar en el ATtiny85.

El GIST está aquí:

gist.github.com/IOT-123/4c501046d365d01a60…

Puede encontrar más detalles en estos instructivos:

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/How-to-Program-AT…

www.instructables.com/id/How-to-program-th…

www.instructables.com/id/Programming-the-A…

www.instructables.com/id/Programming-an-At…

Es mejor probar a través de la placa de pruebas antes de continuar.

Si tiene SENSORES ASIMILADOS existentes, asegúrese de que la dirección esclava sea diferente en una combinación de SENSOR / MCU Host, es decir, todos los sensores de temperatura pueden tener la misma dirección siempre que solo tenga un sensor de temperatura en un MCU / nodo.

Paso 3: ensamble el circuito

Ensamblar el circuito
Ensamblar el circuito
Ensamblar el circuito
Ensamblar el circuito
Ensamblar el circuito
Ensamblar el circuito
  1. En el frente, inserte los componentes ATTINY85 (1), conectores macho 3P 90deg (2) (3), conectores macho 2P (4) (5) y suelde en la parte posterior.
  2. En la parte posterior, traza un cable naranja de NARANJA1 a NARANJA2 y suelda.
  3. En la parte posterior, traza un cable azul de AZUL1 a AZUL2 y suelda.
  4. En la parte posterior, traza un cable verde de VERDE1 a VERDE2 y suelda.
  5. En la parte posterior, traza un cable desnudo de SILVER1 a SILVER2 y suelda.
  6. En la parte posterior, traza un cable desnudo de SILVER3 a SILVER4 y suelda.
  7. En la parte posterior, traza un cable negro de NEGRO1 a NEGRO2 y suelda.
  8. En la parte posterior, traza un cable negro desde NEGRO3 a NEGRO4 y suelda.
  9. En la parte posterior, traza un cable rojo de RED1 a RED2 y suelda.
  10. En la parte posterior, traza un cable rojo de RED3 a RED4 y suelda.
  11. En la parte posterior, traza un cable amarillo de AMARILLO1 a AMARILLO2 y suelda.

El sensor ahora se puede conectar directamente a través de sus pines a la PCB o mediante cables, a los puntos que se muestran en el contrato de pines.

Paso 4: prueba

Pruebas
Pruebas
Pruebas
Pruebas
Pruebas
Pruebas

Se espera que varios de estos BRICKS estén en varios nodos (MCU: ESP8266 o ATTINY84) en un entorno. Esta es una prueba unitaria: verifica las solicitudes / respuestas de UNO hasta que se hayan descargado todos los datos, luego descuida el esclavo I2C.

  1. Cargue el código UNO en su arnés de prueba UNO. Asegúrese de que ADDRESS_SLAVE coincida con la dirección I2C de BRICK.
  2. Conecte el 5.0V en UNO a un VCC en BRICK.
  3. Asegúrese de que el puente para ese pin esté activado.
  4. Conecte GND en UNO a GND en BRICK.
  5. Conecte el A5 en UNO a SCL en BRICK.
  6. Conecte el A4 en UNO a SDA en BRICK.
  7. Conecte una resistencia pull-up 4K7 de SDA a VCC.
  8. Conecte una resistencia pull-up 4K7 de SCL a VCC.
  9. Conecte su UNO a su Dev PC con USB.
  10. Abra la consola Arduino, elija 9600 baudios (reinicie UNO y vuelva a abrir la consola si es necesario).
  11. Los nombres y valores de las propiedades deben imprimirse en la consola una vez, luego se repite la palabra sleep.

Si ve "configuración" y luego se repiten 3 líneas de basura, es posible que tenga sus líneas SDA y SCL al revés.

Registro maestro I2C desde esclavo I2C con soporte para plotter / metadatos

#incluir
# defineADDRESS_SLAVE10
bool _outputPlotterOnly = falso;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = falso;
char _property [2] [24] = {"nombre", "valor"};
voidsetup () {
Wire.begin (); // unirse al bus i2c (dirección opcional para el maestro)
Serial.begin (9600); // iniciar serial para salida
retraso (1000);
if (! _outputPlotterOnly) {
Serial.println ("configuración");
Serial.println ();
}
}
voidloop () {
if (_i2cNodeProcessed) {
if (! _confirmedMetadata) {// avisa al esclavo que comience a enviar datos del sensor
retraso (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
retraso (100);
_confirmedMetadata = true;
}
_i2cNodeProcessed = falso;
if (! _outputPlotterOnly) {
Serial.println ();
}
regreso;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
paquete de char [16];
índice = 0;
bool isContinueSegment = false; // continueSegment (el tercero) 1 = más, 0 = último
while (Wire.available ()) {// el esclavo puede enviar menos de lo solicitado
char c = Wire.read ();
paquete [índice] = int (c)> -1? c: ''; // reemplaza los caracteres inválidos con espacios
if (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = true;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
if (int (c) == 48 || int (c) == 86) {// 0 en la última propiedad
_i2cNodeProcessed = verdadero;
// enviar valores a MQTT
rotura;
}
}
índice ++;
}
if (! isContinueSegment) {
if (! _outputPlotterOnly) {
Serial.println (paquete);
}
strcpy (_property [_packetSegment - 1], packet); // establece var local con nombre / valor
}demás{
if (_outputPlotterOnly && _confirmedMetadata) {
if (_i2cNodeProcessed) {
Serial.println (_property [1]);
}demás{
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

ver rawuno_i2c_generic_sensor_test_w_plotter_v2.ino alojado con ❤ por GitHub

Paso 5: Pasos siguientes

El diseño básico del circuito y la capa I2C del software se puede relacionar con muchos sensores diferentes. Lo principal para empezar es el contrato de paquete entre el maestro y el esclavo.

He programado / iniciado una red de sensores empaquetados (impresos en 3D) que utilizan este marco y se vincularán a él a medida que se publiquen las piezas.

Este BLOQUE es utilizado por el SENSOR DE ASIMILACIÓN MQ2.

Recomendado: