Tabla de contenido:
- Paso 1: Material y herramientas
- Paso 2: Prepare el ATTINY85
- Paso 3: ensamble el circuito
- Paso 4: prueba
- Paso 5: Pasos siguientes
Video: IOT123 - LADRILLO I2C MQ2: 5 Pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
Hay una lista completa de lista de materiales y abastecimiento.
- Bloque de sensor MQ2 (1)
- ATTINY85 20PU (1)
- Protoboard de doble cara de 1 "(1)
- Cabezal macho 90º (3P, 3P)
- Encabezado macho (2P, 2P)
- Puente de derivación (1)
- Cable de conexión (~ 7)
- Soldadura y Hierro (1)
Paso 2: 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
- 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.
- En la parte posterior, traza un cable naranja de NARANJA1 a NARANJA2 y suelda.
- En la parte posterior, traza un cable azul de AZUL1 a AZUL2 y suelda.
- En la parte posterior, traza un cable verde de VERDE1 a VERDE2 y suelda.
- En la parte posterior, traza un cable desnudo de SILVER1 a SILVER2 y suelda.
- En la parte posterior, traza un cable desnudo de SILVER3 a SILVER4 y suelda.
- En la parte posterior, traza un cable negro de NEGRO1 a NEGRO2 y suelda.
- En la parte posterior, traza un cable negro desde NEGRO3 a NEGRO4 y suelda.
- En la parte posterior, traza un cable rojo de RED1 a RED2 y suelda.
- En la parte posterior, traza un cable rojo de RED3 a RED4 y suelda.
- 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
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.
- 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.
- Conecte el 5.0V en UNO a un VCC en BRICK.
- Asegúrese de que el puente para ese pin esté activado.
- Conecte GND en UNO a GND en BRICK.
- Conecte el A5 en UNO a SCL en BRICK.
- Conecte el A4 en UNO a SDA en BRICK.
- Conecte una resistencia pull-up 4K7 de SDA a VCC.
- Conecte una resistencia pull-up 4K7 de SCL a VCC.
- Conecte su UNO a su Dev PC con USB.
- Abra la consola Arduino, elija 9600 baudios (reinicie UNO y vuelva a abrir la consola si es necesario).
- 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:
Pantalla LCD I2C / IIC - Use una pantalla LCD SPI para la pantalla LCD I2C usando el módulo SPI a IIC con Arduino: 5 pasos
Pantalla LCD I2C / IIC | Use una pantalla LCD SPI para la pantalla LCD I2C usando el módulo SPI a IIC con Arduino: Hola a todos, ya que una pantalla LCD SPI 1602 normal tiene demasiados cables para conectar, por lo que es muy difícil conectarlo con arduino, pero hay un módulo disponible en el mercado que puede Convierta la pantalla SPI en la pantalla IIC, por lo que solo necesita conectar 4 cables
Pantalla LCD I2C / IIC - Convierta una pantalla LCD SPI en una pantalla LCD I2C: 5 pasos
Pantalla LCD I2C / IIC | Convierta una pantalla LCD SPI en la pantalla LCD I2C: el uso de la pantalla lcd spi necesita demasiadas conexiones, lo cual es realmente difícil de hacer, así que encontré un módulo que puede convertir la pantalla lcd i2c en la pantalla lcd spi, así que comencemos
Adaptador I2c LCD de caracteres (ejemplo de conexión I2c): 12 pasos (con imágenes)
Adaptador I2c LCD de caracteres (ejemplo de conexión I2c): estoy haciendo un esquema de conexión para un adaptador i2c de pantalla de caracteres. Verifique las actualizaciones en mi sitio. Ahora agrego también un esquema de conexión de cableado para usar la biblioteca original, no mi bifurcada. para las pantallas LCD de caracteres, proyección bifurcada
IOT123 - ASIMILAR SENSOR: MQ2: 4 Pasos
IOT123 - ASSIMILATE SENSOR: MQ2: ASSIMILATE SENSORS son sensores de entorno que tienen una capa de abstracción de hardware y software adicional, lo que hace posible que se agreguen tipos completamente nuevos a un ASSIMILATE SENSOR HUB y las lecturas se bombeen a un servidor MQTT sin codificación agregada
IOT123 - RIELES PARA PCB I2C: 5 Pasos
IOT123 - RIELES PARA PCB I2C: Donde no se necesitan carcasas duraderas, los SENSORES y ACTORES DE RED IOT ASIMILADOS pueden apilarse de manera más eficiente y con menos recursos y esfuerzo, directamente sobre rieles minimalistas. Los cilindros de revestimiento se pueden utilizar (como se muestra en esta construcción) o el und