Turinys:

IOT123 - I2C MQ2 BRICK: 5 žingsniai
IOT123 - I2C MQ2 BRICK: 5 žingsniai

Video: IOT123 - I2C MQ2 BRICK: 5 žingsniai

Video: IOT123 - I2C MQ2 BRICK: 5 žingsniai
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Liepa
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“yra moduliniai „pasidaryk pats“įrenginiai, kuriuos galima sumaišyti su kitais „IOT123 BRICKS“elementais, kad mazgas ar nešiojamas papildytų funkcionalumą. Jie yra pagrįsti kvadratinėmis, dvipusiomis protobordais, tarpusavyje sujungtais per skyles.

Tikimasi, kad nemažai šių plytų bus keliuose svetainės mazguose (pagrindiniai MCU - ESP8266 arba ATTINY84). MCU nereikia išankstinių žinių apie jutiklių paskirtį ar programinės įrangos poreikius. Jis nuskaito, ar nėra I2C mazgų, tada iš kiekvieno vergo prašo nuosavybės iškelties (jutiklio duomenys). Šie BRICK maitina 5.0V, 3.3V ir kitą AUX liniją, kurią galima pritaikyti.

Šis „I2C MQ2 BRICK“išskiria 3 savybes:

SND (dalys milijonui), CO (PPM), DŪMAS (PPM)

Šis jutiklis pateikė įdomų scenarijų: jam reikia sušilti mažiausiai 2 minutes (iki 5 minučių), tada prieš naudojimą reikia kalibruoti 20 sekundžių. Kadangi pagrindinis MCU tik nori gauti vardų/verčių poras (ir tęstinį pranešimą), mes pristatėme „PREPARE“ypatybę. Kadangi jo tęstinis pranešimas yra „1“(bus dar daugiau), pagrindinis MCU tęs apklausą BRICK, kol ji bus paruošta. Taip pat rekomenduojama prieš naudojimą įdegti MQ2, t. Y. 24 valandas palikti prijungtą prie 5 V grandinės.

„Keyes“tipo jutiklių plytos pirmiausia bus paimtos, nes jose yra vitaminų (reikalingi papildomi komponentai) ir jie yra gana chemiški (aš nusipirkau 37 už 10AUD). Kitos plokštės/grandinės bus pristatytos „I2C BRICKS“.

Skylės, esančios greta ATTINY85, buvo nenaudojamos, kad būtų galima naudoti „Pogo“smeigtuko programuotoją, kol DIP8 yra lituojamas prie PCB.

Toliau kuriama, kad BRICKS būtų supakuotas į mažus cilindrus, kurie jungiami prie D1M WIFI BLOCK koncentratoriaus, siurbiant vertes į MQTT serverį.

1 žingsnis: medžiaga ir įrankiai

Medžiaga ir įrankiai
Medžiaga ir įrankiai
Medžiaga ir įrankiai
Medžiaga ir įrankiai
Medžiaga ir įrankiai
Medžiaga ir įrankiai

Yra visas medžiagų ir šaltinių sąrašas.

  1. MQ2 jutiklio plyta (1)
  2. ATTINY85 20PU (1)
  3. 1 "dvipusė protoboard (1)
  4. Vyriška antraštė 90º (3P, 3P)
  5. Vyriška antraštė (2P, 2P)
  6. Džemperio šuntas (1)
  7. Prijungimo laidas (~ 7)
  8. Lituoklis ir geležis (1)

2 žingsnis: Paruoškite ATTINY85

Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85
Paruoškite ATTINY85

Reikia „AttinyCore“iš valdybos. Įrašykite įkrovos įkėlimo programą „EEPROM Retained“, „8mHZ Internal“(visa konfigūracija parodyta aukščiau).

Naudokite pridėtą šaltinį; kompiliuoti ir programuoti į ATtiny85.

GIST yra čia:

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

Daugiau informacijos rasite šiose instrukcijose:

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…

Prieš tęsiant, geriausia išbandyti per duonos lentą.

Jei turite ASSIMILATE JUTIKLIŲ, įsitikinkite, kad SENSOR/MCU pagrindinio kompiuterio derinio slaptasis adresas skiriasi, t. Y. Visi temperatūros jutikliai gali turėti tą patį adresą, jei MCU/mazge turite tik vieną temperatūros jutiklį.

3 žingsnis: Surinkite grandinę

Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
Surinkite grandinę
  1. Priekyje įdėkite komponentus ATTINY85 (1), 3P 90 laipsnių išorines antgalius (2) (3), 2P vyriškas antraštes (4) (5) ir lituokite ant nugaros.
  2. Galinėje pusėje atsekite oranžinę vielą nuo ORANGE1 iki ORANGE2 ir lydmetalį.
  3. Galinėje pusėje atsekite mėlyną laidą nuo BLUE1 iki BLUE2 ir lydmetalį.
  4. Galinėje pusėje atsekite žalią laidą nuo GREEN1 iki GREEN2 ir lydmetalį.
  5. Galinėje pusėje atsekite pliką vielą nuo SILVER1 iki SILVER2 ir lydmetalį.
  6. Galinėje pusėje atsekite pliką vielą nuo SILVER3 iki SILVER4 ir lydmetalį.
  7. Galinėje pusėje atsekite juodą laidą nuo BLACK1 iki BLACK2 ir lydmetalį.
  8. Galinėje pusėje atsekite juodą laidą nuo BLACK3 iki BLACK4 ir lydmetalį.
  9. Galinėje pusėje atsekite raudoną vielą nuo RED1 iki RED2 ir lydmetalį.
  10. Galinėje pusėje atsekite raudoną vielą nuo RED3 iki RED4 ir lydmetalį.
  11. Galinėje pusėje atsekite geltoną vielą nuo GELTONOS1 iki GELTONOS2 ir lydmetalį.

Dabar jutiklį galima tiesiogiai prijungti per kaiščius prie PCB arba per laidus prie kaiščio sutartyje nurodytų taškų.

4 žingsnis: bandymas

Testavimas
Testavimas
Testavimas
Testavimas
Testavimas
Testavimas

Tikimasi, kad daugelis šių plytų bus keliuose aplinkos mazguose (MCU - ESP8266 arba ATTINY84). Tai yra vieneto testas: tikrina JT užklausas/atsakymus, kol visi duomenys neišmetami, tada ignoruoja I2C vergą.

  1. Įkelkite UNO kodą į savo UNO bandymo diržus. Įsitikinkite, kad ADDRESS_SLAVE atitinka BRICK I2C adresą.
  2. Prijunkite 5,0 V UNO prie BRCK VCC.
  3. Įsitikinkite, kad to kaiščio jungiklis yra įjungtas.
  4. Prijunkite UNO GND prie BRICK GND.
  5. Prijunkite A5 ant UNO prie SCL BRICK.
  6. Prijunkite A4 UNO prie SDA BRICK.
  7. Prijunkite 4K7 ištraukiamąjį rezistorių iš SDA prie VCC.
  8. Prijunkite 4K7 ištraukiamąjį rezistorių iš SCL prie VCC.
  9. Prijunkite UNO prie „Dev“kompiuterio naudodami USB.
  10. Atidarykite „Arduino“konsolę. Pasirinkite 9600 baudų (iš naujo paleiskite UNO ir vėl atidarykite konsolę).
  11. Nuosavybės pavadinimai ir reikšmės turėtų būti atspausdinti konsolėje, tada pakartotas žodis miegas.

Jei matote „sąranka“, kartojamos 3 šiukšlių eilutės, SDA ir SCL linijos gali būti sugrąžintos į priekį.

„I2C Master“registravimas iš „I2C slave“su braižytuvo/metaduomenų palaikymu

#įtraukti
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = klaidinga;
bool _confirmMetadata = klaidinga;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"vardas", "vertė"};
voidsetup () {
Wire.begin (); // prisijungti prie i2c magistralės (adresas neprivalomas meistrui)
Serial.begin (9600); // pradėti seriją išėjimui
vėlavimas (1000);
if (! _outputPlotterOnly) {
Serial.println („sąranka“);
Serial.println ();
}
}
voidloop () {
if (_i2cNodeProcessed) {
if (! _confirmMetadata) {// praneškite vergui, kad pradėtų siųsti jutiklio duomenis
uždelsimas (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Viela.rašyti (1);
Wire.endTransmission ();
vėlavimas (100);
_confirmMetadata = tiesa;
}
_i2cNodeProcessed = false;
if (! _outputPlotterOnly) {
Serial.println ();
}
grįžti;
}
Wire.requestFrom (ADDRESS_SLAVE, 16);
_packetSegment ++;
anglies paketas [16];
intindex = 0;
bool isContinueSegment = false; // toliauSegmentas (trečiasis) 1 = daugiau, 0 = paskutinis
o (Wire.available ()) {// vergas gali siųsti mažiau nei prašoma
char c = Wire.read ();
paketas [indeksas] = int (c)> -1? c: ''; // netinkamus simbolius pakeiskite tarpais
if (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = tiesa;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
jei (int (c) == 48 || int (c) == 86) {// 0 paskutinėje nuosavybėje
_i2cNodeProcessed = tiesa;
// siųsti reikšmes MQTT
pertrauka;
}
}
indeksas ++;
}
if (! isContinueSegment) {
if (! _outputPlotterOnly) {
Serial.println (paketas);
}
strcpy (_property [_packetSegment - 1], paketas); // nustatyti vietinį kintamąjį su pavadinimu/verte
}Kitas{
if (_outputPlotterOnly && _confirmMetadata) {
if (_i2cNodeProcessed) {
Serial.println (_property [1]);
}Kitas{
Serial.print (_property [1]);
Serial.print ("");
}
}
}
}

Peržiūrėti rawuno_i2c_generic_sensor_test_w_plotter_v2.ino, kurį priglobė „GitHub“❤

5 veiksmas: kiti veiksmai

Pagrindinis grandinės išdėstymas ir programinės įrangos I2C sluoksnis yra susiję su daugeliu skirtingų jutiklių. Pagrindinis dalykas, kurį reikia pradėti, yra paketo sutartis tarp šeimininko ir vergo.

Aš suplanavau/pradėjau (3D spausdintą) supakuotą jutiklių tinklą, kuris naudoja šią sistemą ir bus susietas su juo, kai bus paskelbtos dalys.

Šią bloką naudoja MQ2 ASISIMILATE JUTIKLIS.

Rekomenduojamas: