Inhoudsopgave:

IOT123 - I2C MQ2 BAKSTEEN - Ajarnpa
IOT123 - I2C MQ2 BAKSTEEN - Ajarnpa

Video: IOT123 - I2C MQ2 BAKSTEEN - Ajarnpa

Video: IOT123 - I2C MQ2 BAKSTEEN - Ajarnpa
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, November
Anonim
IOT123 - I2C MQ2 BAKSTEEN
IOT123 - I2C MQ2 BAKSTEEN
IOT123 - I2C MQ2 BAKSTEEN
IOT123 - I2C MQ2 BAKSTEEN
IOT123 - I2C MQ2 BAKSTEEN
IOT123 - I2C MQ2 BAKSTEEN
IOT123 - I2C MQ2 BAKSTEEN
IOT123 - I2C MQ2 BAKSTEEN

De IOT123 BRICKS zijn doe-het-zelf modulaire units die kunnen worden gepureerd met andere IOT123 BRICKS, om functionaliteit toe te voegen aan een node of wearable. Ze zijn gebaseerd op de vierkante inch vierkante, dubbelzijdige protoboards met onderling verbonden doorgaande gaten.

Een aantal van deze BRICKS zal naar verwachting op meerdere knooppunten (Master MCU's - ESP8266 of ATTINY84) op een site staan. De MCU heeft geen voorkennis nodig van het doel van de sensoren of softwarebehoeften. Het scant naar I2C-knooppunten en vraagt vervolgens om een eigendomsdump (sensorgegevens) van elke slave. Deze BRICKs leveren 5.0V, 3.3V en een andere AUX-lijn die aanpasbaar is.

Deze I2C MQ2 BRICK dumpt 3 eigenschappen:

LPG (Parts Per Million), CO (PPM), ROOK (PPM)

Deze sensor bood een interessant scenario: hij heeft minimaal 2 minuten (tot 5 minuten) nodig om op te warmen, daarna moet hij voor gebruik 20 seconden worden gekalibreerd. Omdat de host-MCU alleen geïnteresseerd is in het verkrijgen van naam/waarde-paren (en een vervolgbericht), hebben we een eigenschap "PREPARE" geïntroduceerd. Omdat het vervolgbericht "1" is (er komen er nog meer), zal de host-MCU de BRICK blijven pollen totdat deze klaar is. Het wordt ook aanbevolen om de MQ2 voor gebruik "in te branden", d.w.z. 24 uur aangesloten te laten op uw 5V-circuit.

De sensorstenen van het Keyes-type worden eerst geabstraheerd omdat ze worden geleverd met vitamines (extra benodigde componenten) en relatief goedkoop zijn (ik kocht 37 voor 10 AUD). Andere boards/circuits zullen worden geïntroduceerd in de I2C BRICKS.

De doorgaande gaten naast de ATTINY85 zijn ongebruikt gelaten om een pogo-pin-programmeur mogelijk te maken terwijl de DIP8 op de PCB wordt gesoldeerd.

Een verdere abstractie, het verpakken van de BRICKS in kleine cilinders die worden aangesloten op een D1M WIFI BLOCK-hub, waarbij de waarden naar een MQTT-server worden gepompt, wordt ontwikkeld.

Stap 1: Materiaal en gereedschap

Materiaal en gereedschap
Materiaal en gereedschap
Materiaal en gereedschap
Materiaal en gereedschap
Materiaal en gereedschap
Materiaal en gereedschap

Er is een volledige lijst van materiaal en sourcing.

  1. MQ2 sensorsteen (1)
  2. ATTINY85 20PU (1)
  3. 1" Dubbelzijdig protoboard (1)
  4. Mannelijke kop 90º (3P, 3P)
  5. Mannelijke kop (2P, 2P)
  6. Jumper-shunt (1)
  7. Aansluitdraad (~7)
  8. Soldeer en ijzer (1)

Stap 2: Bereid de ATTINY85. voor

Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor
Bereid de ATTINY85. voor

AttinyCore van de Boards Manager is nodig. Brand bootloader "EEPROM Retained", "8mHZ Internal" (alle hierboven getoonde configuraties).

Gebruik de meegeleverde bron; compileren en programmeren naar de ATtiny85.

De GIST staat hier:

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

Mogelijk vindt u meer details in deze instructables:

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…

Best te testen via breadboard alvorens verder te gaan.

Als je bestaande ASSIMILATE SENSOREN hebt, zorg er dan voor dat het slave-adres anders is op een SENSOR/MCU Host-combinatie, d.w.z. alle temperatuursensoren kunnen hetzelfde adres hebben, zolang je maar één temperatuursensor op een MCU/node hebt.

Stap 3: Monteer het circuit

Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
  1. Plaats aan de voorkant de componenten ATTINY85 (1), 3P 90deg mannelijke headers (2) (3), 2P mannelijke headers (4) (5) en soldeer ze aan de achterkant vast.
  2. Trek aan de achterkant een oranje draad van ORANJE1 naar ORANJE2 en soldeer.
  3. Trek aan de achterkant een blauwe draad van BLUE1 naar BLUE2 en soldeer.
  4. Trek aan de achterkant een groene draad van GROEN1 naar GROEN2 en soldeer.
  5. Trek aan de achterkant een blootliggende draad van SILVER1 naar SILVER2 en soldeer.
  6. Trek aan de achterkant een blootliggende draad van SILVER3 naar SILVER4 en soldeer.
  7. Trek aan de achterkant een zwarte draad van ZWART1 naar ZWART2 en soldeer.
  8. Trek aan de achterkant een zwarte draad van BLACK3 naar BLACK4 en soldeer.
  9. Trek aan de achterkant een rode draad van RED1 naar RED2 en soldeer.
  10. Trek aan de achterkant een rode draad van RED3 naar RED4 en soldeer.
  11. Trek aan de achterkant een gele draad van GEEL1 naar GEEL2 en soldeer.

De sensor kan nu rechtstreeks via zijn pinnen op de printplaat worden aangesloten of via draden, op de punten die in het pincontract zijn aangegeven.

Stap 4: Testen

Testen
Testen
Testen
Testen
Testen
Testen

Een aantal van deze BRICKS zal naar verwachting op meerdere nodes (MCU's - ESP8266 of ATTINY84) in een omgeving staan. Dit is een unit-test: controleert de UNO-verzoeken/antwoorden totdat alle gegevens zijn gedumpt en negeert vervolgens de I2C-slave.

  1. Upload de UNO-code naar uw UNO-testharnas. Zorg ervoor dat ADDRESS_SLAVE overeenkomt met het I2C-adres van de BRICK.
  2. Sluit de 5.0V op UNO aan op een VCC op BRICK.
  3. Zorg ervoor dat de jumper voor die pin is ingeschakeld.
  4. Verbind de GND op UNO met GND op BRICK.
  5. Verbind de A5 op UNO met SCL op BRICK.
  6. Verbind de A4 op UNO met SDA op BRICK.
  7. Sluit een 4K7 pull-up weerstand aan van SDA naar VCC.
  8. Sluit een 4K7 pull-up weerstand aan van SCL naar VCC.
  9. Verbind uw UNO met uw Dev-pc via USB.
  10. Open de Arduino-console. Kies 9600 baud (start de UNO opnieuw en open de console indien nodig).
  11. De eigenschapsnamen en -waarden moeten eenmaal naar de console worden afgedrukt, waarna het woord slaap wordt herhaald.

Als u "setup" ziet en vervolgens 3 regels met rommel worden herhaald, heeft u mogelijk uw SDA- en SCL-regels achterstevoren.

I2C Master logging van I2C slave met plotter/metadata ondersteuning

#erbij betrekken
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property[2][24] = {"naam", "waarde"};
voidsetup() {
Draad.begin(); // join i2c bus (adres optioneel voor master)
Serieel.begin(9600); // start serieel voor uitvoer
vertraging (1000);
if (!_outputPlotterOnly){
Serial.println("setup");
Serieel.println();
}
}
voidloop() {
if (_i2cNodeProcessed){
if (!_confirmedMetadata){// laat de slaaf weten dat hij sensorgegevens moet gaan verzenden
vertraging(1);
Wire.beginTransmission (ADDRESS_SLAVE);
Draad.schrijven(1);
Wire.endTransmission();
vertraging (100);
_confirmedMetadata = waar;
}
_i2cNodeProcessed = onwaar;
if (!_outputPlotterOnly){
Serieel.println();
}
opbrengst;
}
Wire.requestFrom(ADDRESS_SLAVE, 16);
_packetSegment++;
char-pakket[16];
intindex = 0;
bool isContinueSegment = false;// continueSegment (de 3e) 1=meer, 0=laatste
while (Wire.available()) { // slave kan minder verzenden dan gevraagd
char c = Wire.read();
pakket[index] = int(c) > -1 ? c: '';// vervang ongeldige tekens door spaties
if (_packetSegment == 3){
_packetSegment = 0;
isContinueSegment = waar;
//Serial.println ("-------------");
//Serial.println(int(c));
//Serial.println ("-------------");
if (int(c) == 48 || int(c) == 86){// 0 op laatste eigenschap
_i2cNodeProcessed = waar;
// stuur waarden naar MQTT
pauze;
}
}
index++;
}
if (!isContinueSegment){
if (!_outputPlotterOnly){
Serial.println(pakket);
}
strcpy(_property[_packetSegment - 1], packet);// stel lokale var in met naam/waarde
}anders{
if (_outputPlotterOnly && _confirmedMetadata){
if (_i2cNodeProcessed){
Serial.println(_property[1]);
}anders{
Serial.print(_property[1]);
Serieel.print("");
}
}
}
}

bekijk rawuno_i2c_generic_sensor_test_w_plotter_v2.ino gehost met ❤ door GitHub

Stap 5: Volgende stappen

De basislay-out van de schakeling en de I2C-laag van de software is te relateren aan veel verschillende sensoren. Het belangrijkste om goed mee te beginnen, is het pakketcontract tussen master en slave.

Ik heb een (3D-geprint) verpakt netwerk van sensoren gepland / gestart die dit raamwerk gebruiken en ernaar zullen linken als onderdelen worden gepubliceerd.

Dit BLOK wordt gebruikt door de MQ2 ASSIMILATE SENSOR.

Aanbevolen: