Indholdsfortegnelse:

IOT123 - I2C MQ2 BRICK: 5 trin
IOT123 - I2C MQ2 BRICK: 5 trin

Video: IOT123 - I2C MQ2 BRICK: 5 trin

Video: IOT123 - I2C MQ2 BRICK: 5 trin
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Juli
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

IOT123 BRICKS er DIY modulære enheder, der kan moses sammen med andre IOT123 BRICKS, for at tilføje funktionalitet til en node eller bærbar. De er baseret på tommer firkantede, dobbeltsidede protoboards med indbyrdes forbundne huller.

Et antal af disse BRICKS forventes at være på flere noder (Master MCU'er - ESP8266 eller ATTINY84) på et websted. MCU'en behøver ingen forudgående viden om sensorernes formål eller softwarebehov. Den scanner efter I2C -noder og anmoder derefter om en egenskabsdump (sensordata) fra hver slave. Disse BRICK'er leverer 5.0V, 3.3V og en anden AUX -linje, der kan tilpasses.

Denne I2C MQ2 BRICK dumper 3 ejendomme:

LPG (dele pr. Million), CO (PPM), RØG (PPM)

Denne sensor gav et interessant scenario: Det kræver mindst 2 minutter (op til 5 minutter) at varme op, derefter skal det kalibreres i 20 sekunder før brug. Da værtens MCU kun er indrettet til at få navn/værdi -par (og en fortsat meddelelse), har vi introduceret en "FORBERED" -egenskab. Da dens fortsatte meddelelse er "1" (mere kommer), vil værts -MCU'en blive ved med at afstemme BRICK, indtil den er klar. Det anbefales også at "indbrænde" MQ2 før brug, dvs. lade være forbundet til dit 5V kredsløb i 24 timer.

Keyes -type sensorsten bliver abstraheret først, da de kommer med vitaminer (ekstra komponenter kræves) inkluderet og er relativt billige (jeg købte 37 for 10AUD). Andre tavler/kredsløb vil blive introduceret til I2C BRICKS.

De gennemgående huller ved siden af ATTINY85 er blevet efterladt ubrugte for at muliggøre en pogo pin programmerer, mens DIP8 er loddet til printet.

En yderligere abstraktion, emballering af BRICKS i små cylindre, der sættes i et D1M WIFI BLOCK -hub, der pumper værdierne til en MQTT -server, udvikles.

Trin 1: Materiale og værktøjer

Materiale og værktøj
Materiale og værktøj
Materiale og værktøj
Materiale og værktøj
Materiale og værktøj
Materiale og værktøj

Der er en fuld liste over materiale og indkøbsliste.

  1. MQ2 sensorsten (1)
  2. ATTINY85 20PU (1)
  3. 1 "Dobbeltsidet protoboard (1)
  4. Mandskærebord 90º (3P, 3P)
  5. Male Header (2P, 2P)
  6. Jumper Shunt (1)
  7. Tilslutningskablet (~ 7)
  8. Lodde og jern (1)

Trin 2: Forbered ATTINY85

Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85
Forbered ATTINY85

AttinyCore fra bestyrelseschefen er påkrævet. Brænd bootloader "EEPROM beholdt", "8mHZ intern" (alle konfigurationer vist ovenfor).

Brug den medfølgende kilde; kompilere og programmere til ATtiny85.

GIST er her:

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

Du kan finde flere detaljer i disse instruktioner:

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…

Bedst at teste via breadboard, inden du fortsætter.

Hvis du har eksisterende ASSIMILATE SENSORS, skal du sørge for, at slaveadressen er forskellig på en SENSOR/MCU Host -kombination, dvs. at alle temperatursensorer kan have den samme adresse, så længe du kun har en temperatursensor på en MCU/node.

Trin 3: Saml kredsløbet

Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
Saml kredsløbet
  1. På forsiden indsættes komponenterne ATTINY85 (1), 3P 90deg hanhoveder (2) (3), 2P hanhoveder (4) (5) og loddes af på bagsiden.
  2. På bagsiden kan du spore en orange ledning fra ORANGE1 til ORANGE2 og lodde.
  3. På bagsiden kan du spore en blå ledning fra BLUE1 til BLUE2 og lodde.
  4. På bagsiden kan du spore en grøn ledning fra GREEN1 til GREEN2 og lodde.
  5. På bagsiden skal du spore en ledning fra SILVER1 til SILVER2 og lodde.
  6. På bagsiden kan du spore en ledning fra SILVER3 til SILVER4 og lodde.
  7. På bagsiden kan du spore en sort ledning fra BLACK1 til BLACK2 og lodde.
  8. På bagsiden kan du spore en sort ledning fra BLACK3 til BLACK4 og lodde.
  9. På bagsiden skal du spore en rød ledning fra RØD1 til RØD2 og lodde.
  10. På bagsiden kan du spore en rød ledning fra RED3 til RED4 og lodde.
  11. På bagsiden skal du spore en gul ledning fra GUL1 til GUL2 og lodde.

Sensoren kan nu tilsluttes direkte via sine ben til printkortet eller via ledninger til de punkter, der er vist i stiftkontrakten.

Trin 4: Test

Test
Test
Test
Test
Test
Test

Et antal af disse BRICKS forventes at være på flere noder (MCU'er - ESP8266 eller ATTINY84) i et miljø. Dette er en enhedstest: kontrollerer UNO -anmodninger/svar, indtil alle data er dumpet, og ignorerer derefter I2C -slaven.

  1. Upload UNO -koden til din UNO test sele. Sørg for, at ADDRESS_SLAVE matcher BRICK's I2C -adresse.
  2. Tilslut 5.0V på UNO til en VCC på BRICK.
  3. Sørg for, at jumperen til den pin er tændt.
  4. Tilslut GND på UNO til GND på BRICK.
  5. Tilslut A5 på UNO til SCL på BRICK.
  6. Tilslut A4 på UNO til SDA på BRICK.
  7. Tilslut en 4K7 pull-up modstand fra SDA til VCC.
  8. Tilslut en 4K7 pull-up modstand fra SCL til VCC.
  9. Tilslut din UNO til din Dev PC med USB.
  10. Åbn Arduino -konsollen. Vælg 9600 baud (genstart UNO, og åbn konsollen igen, hvis du skal).
  11. Ejendomsnavne og -værdier skal udskrives på konsollen, når ordet søvn gentages.

Hvis du ser "opsætning", gentages 3 linjer affald, du har muligvis dine SDA- og SCL -linjer tilbage til fronten.

I2C Master logning fra I2C slave med plotter/metadata support

#omfatte
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = false;
bool _confirmedMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = falsk;
char _property [2] [24] = {"navn", "værdi"};
voidsetup () {
Wire.begin (); // slutte sig til i2c -bus (adresse valgfri til master)
Serial.begin (9600); // start seriel til output
forsinkelse (1000);
hvis (! _outputPlotterOnly) {
Serial.println ("opsætning");
Serial.println ();
}
}
voidloop () {
hvis (_i2cNodeProcessed) {
hvis (! _confirmedMetadata) {// lad slaven vide for at begynde at sende sensordata
forsinkelse (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
forsinkelse (100);
_confirmedMetadata = true;
}
_i2cNodeProcessed = false;
hvis (! _outputPlotterOnly) {
Serial.println ();
}
Vend tilbage;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
trækasse [16];
intindex = 0;
bool isContinueSegment = false; // continueSegment (det tredje) 1 = mere, 0 = sidste
mens (Wire.available ()) {// slave kan sende mindre end ønsket
char c = Wire.read ();
pakke [indeks] = int (c)> -1? c: ''; // erstat ugyldige tegn med mellemrum
hvis (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = true;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
hvis (int (c) == 48 || int (c) == 86) {// 0 på sidste ejendom
_i2cNodeProcessed = true;
// send værdier til MQTT
pause;
}
}
indeks ++;
}
hvis (! isContinueSegment) {
hvis (! _outputPlotterOnly) {
Serial.println (pakke);
}
strcpy (_property [_packetSegment - 1], packet); // sæt lokal var med navn/værdi
}andet{
if (_outputPlotterOnly && _confirmedMetadata) {
hvis (_i2cNodeProcessed) {
Serial.println (_property [1]);
}andet{
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

se rawuno_i2c_generic_sensor_test_w_plotter_v2.ino hostet med ❤ af GitHub

Trin 5: Næste trin

Det grundlæggende layout af kredsløbet og I2C-laget i softwaren kan relateres til mange forskellige sensorer. Det vigtigste at komme i gang med er pakkekontrakten mellem master og slave.

Jeg har planlagt/startet et (3D -printet) pakket netværk af sensorer, der bruger denne ramme og vil linke til det, når dele offentliggøres.

Denne BLOCK bruges af MQ2 ASSIMILATE SENSOR.

Anbefalede: