Taula de continguts:

IOT123 - I2C MQ2 BRICK: 5 passos
IOT123 - I2C MQ2 BRICK: 5 passos

Vídeo: IOT123 - I2C MQ2 BRICK: 5 passos

Vídeo: IOT123 - I2C MQ2 BRICK: 5 passos
Vídeo: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Desembre
Anonim
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK
IOT123 - I2C MQ2 BRICK

Els IOT123 BRICKS són unitats modulars de bricolatge que es poden combinar amb altres IOT123 BRICKS, per afegir funcionalitat a un node o usable. Es basen en protobardes de doble cara quadrades de polzades amb forats interconnectats.

Es preveu que alguns d’aquests BRICKS estiguin en diversos nodes (MCU mestres - ESP8266 o ATTINY84) en un lloc. La MCU no necessita cap coneixement previ del propòsit dels sensors ni de les necessitats del programari. Busca nodes I2C i després sol·licita un buidatge de propietats (dades del sensor) a cada esclau. Aquests BRICKs subministren 5.0V, 3.3V i una altra línia AUX que es pot personalitzar.

Aquest I2C MQ2 BRICK aboca 3 propietats:

GLP (parts per milió), CO (PPM), FUM (PPM)

Aquest sensor va proporcionar un escenari interessant: necessita com a mínim 2 minuts (fins a 5 minuts) per escalfar-se, i després cal calibrar-lo durant 20 segons abans d’utilitzar-lo. Com que la MCU amfitrió només té intesetes en obtenir parells nom / valor (i un missatge de continuació), hem introduït una propietat "PREPARAR". Com que el missatge de continuació és "1" (més per arribar), l'MCU amfitrió seguirà sondejant el BRICK fins que estigui llest. També es recomana "Cremar" el MQ2 abans d'utilitzar-lo, és a dir, deixar-lo connectat al circuit de 5V durant 24 hores.

Els maons del sensor del tipus Keyes s’abstraccionaran primer, ja que inclouen vitamines (es necessiten components addicionals) i són relativament econòmics (n’he comprat 37 per 10 AUD). Altres blocs / circuits s’introduiran als I2C BRICKS.

Els forats passants adjacents a l'ATTINY85 s'han deixat sense utilitzar, per habilitar un programador de pogo pin mentre el DIP8 està soldat al PCB.

S'està desenvolupant una altra abstracció, que empaqueta els BRICKS en petits cilindres que es connecten a un hub D1M WIFI BLOCK, que bombeja els valors a un servidor MQTT.

Pas 1: material i eines

Material i eines
Material i eines
Material i eines
Material i eines
Material i eines
Material i eines

Hi ha una llista completa de llista de subministraments i material.

  1. Maó sensor MQ2 (1)
  2. ATTINY85 20PU (1)
  3. 1 "protoborda de doble cara (1)
  4. Capçalera masculina 90º (3P, 3P)
  5. Capçalera masculina (2P, 2P)
  6. Jumper Shunt (1)
  7. Cable de connexió (~ 7)
  8. Soldadura i ferro (1)

Pas 2: prepareu l'ATTINY85

Prepareu l'ATTINY85
Prepareu l'ATTINY85
Prepareu l'ATTINY85
Prepareu l'ATTINY85
Prepareu l'ATTINY85
Prepareu l'ATTINY85
Prepareu l'ATTINY85
Prepareu l'ATTINY85

Cal AttinyCore del gestor de juntes. Grava el carregador d'arrencada "EEPROM retingut", "8mHZ Internal" (totes les configuracions es mostren més amunt).

Utilitzeu la font inclosa; compileu i programeu a l'ATtiny85.

El GIST és aquí:

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

Podeu trobar més detalls en aquests instructius:

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…

El millor és provar-ho mitjançant taulers abans de continuar.

Si teniu SENSORS ASSIMILATS existents, assegureu-vos que l'adreça esclava sigui diferent en una combinació d'amfitrió SENSOR / MCU, és a dir, tots els sensors de temperatura poden tenir la mateixa adreça sempre que només tingueu un sensor de temperatura en un node / MCU.

Pas 3: Munteu el circuit

Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
Muntatge del circuit
  1. A la part frontal, inseriu els components ATTINY85 (1), capçaleres masculines 3P 90deg (2) (3), capçaleres masculines 2P (4) (5) i soldeu-les per la part posterior.
  2. A la part posterior, traqueu un fil taronja de TARONJA1 a TARONJA2 i soldeu-lo.
  3. A la part posterior, traqueu un fil blau de BLAU 1 a BLAU 2 i soldeu-lo.
  4. A la part posterior, traqueu un fil verd de GREEN1 a GREEN2 i soldeu-lo.
  5. A la part posterior, traça un fil nu de SILVER1 a SILVER2 i solda.
  6. A la part posterior, traça un fil nu de SILVER3 a SILVER4 i solda.
  7. A la part posterior, traça un fil negre de BLACK1 a BLACK2 i solda.
  8. A la part posterior, traça un fil negre de BLACK3 a BLACK4 i solda.
  9. A la part posterior, traqueu un cable vermell de RED1 a RED2 i soldeu-lo.
  10. A la part posterior, traqueu un cable vermell de RED3 a RED4 i soldeu-lo.
  11. A la part posterior, traqueu un cable groc de GROC1 a GROC2 i soldeu-lo.

Ara el sensor es pot connectar directament a través dels seus pins a la PCB o mitjançant cables, als punts que es mostren al contracte de pins.

Pas 4: proves

Proves
Proves
Proves
Proves
Proves
Proves

S'espera que diversos d'aquests BRICKS estiguin en diversos nodes (MCU - ESP8266 o ATTINY84) en un entorn. Es tracta d’una prova unitària: comprova les sol·licituds / respostes de l’ONU fins que s’han bolcat totes les dades i després descuida l’esclau I2C.

  1. Pengeu el codi UNO al vostre arnès de proves UNO. Assegureu-vos que ADDRESS_SLAVE coincideixi amb l'adreça I2C de BRICK.
  2. Connecteu el 5.0V a UNO a un VCC a BRICK.
  3. Assegureu-vos que el pont del pin estigui activat.
  4. Connecteu el GND a UNO a GND a BRICK.
  5. Connecteu l'A5 a UNO a SCL a BRICK.
  6. Connecteu l'A4 a UNO a SDA a BRICK.
  7. Connecteu una resistència de captació 4K7 des de SDA a VCC.
  8. Connecteu una resistència de captació 4K7 de SCL a VCC.
  9. Connecteu la vostra UNO al vostre PC de desenvolupament amb USB.
  10. Obriu la consola Arduino. Trieu 9600 baud (reinicieu UNO i torneu a obrir la consola si cal).
  11. Els noms i els valors de les propietats s’han d’imprimir a la consola un cop es repeteixi la paraula son.

Si veieu "configuració", es repetiran 3 línies d'escombraries, és possible que tinguis les línies SDA i SCL al capdavant.

Registre mestre I2C des de l'esclau I2C amb suport de traçador / metadades

#incloure
# defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = fals;
char _property [2] [24] = {"nom", "valor"};
voidsetup () {
Wire.begin (); // unir-se al bus i2c (adreça opcional per al mestre)
Serial.begin (9600); // iniciar sèrie per a la sortida
retard (1000);
if (! _outputPlotterOnly) {
Serial.println ("configuració");
Serial.println ();
}
}
voidloop () {
if (_i2cNodeProcessed) {
if (! _confirmedMetadata) {// feu saber a l'esclau que comença a enviar dades del sensor
retard (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
retard (100);
_confirmMetadata = true;
}
_i2cNodeProcessed = fals;
if (! _outputPlotterOnly) {
Serial.println ();
}
tornar;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
paquet char [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (the 3rd) 1 = more, 0 = last
while (Wire.available ()) {// slave pot enviar menys del que es demana
char c = Wire.read ();
paquet [índex] = int (c)> -1? c: ''; // substitueix els caràcters no vàlids per espais
if (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = true;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
if (int (c) == 48 || int (c) == 86) {// 0 a la darrera propietat
_i2cNodeProcessed = cert;
// enviar valors a MQTT
trencar;
}
}
índex ++;
}
if (! isContinueSegment) {
if (! _outputPlotterOnly) {
Serial.println (paquet);
}
strcpy (_property [_packetSegment - 1], paquet); // defineix la variable local amb nom / valor
} més {
if (_outputPlotterOnly && _confirmMetadata) {
if (_i2cNodeProcessed) {
Serial.println (_property [1]);
} més {
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

veure rawuno_i2c_generic_sensor_test_w_plotter_v2.ino allotjat amb ❤ per GitHub

Pas 5: passos següents

El disseny bàsic del circuit i la capa I2C del programari es poden relacionar amb molts sensors diferents. El més important per encertar és el contracte de paquets entre amo i esclau.

He programat / iniciat una xarxa empaquetada (impresa en 3D) de sensors que utilitza aquest marc i hi vincularé a mesura que es publiquin parts.

Aquest BLOC el fa servir el SENSOR ASSIMILAT MQ2.

Recomanat: