Բովանդակություն:

IOT123 - I2C MQ2 Աղյուս. 5 քայլ
IOT123 - I2C MQ2 Աղյուս. 5 քայլ

Video: IOT123 - I2C MQ2 Աղյուս. 5 քայլ

Video: IOT123 - I2C MQ2 Աղյուս. 5 քայլ
Video: MQ-2 датчик газов и дыма подключаем к Arduino 2024, Նոյեմբեր
Anonim
IOT123 - I2C MQ2 Աղյուս
IOT123 - I2C MQ2 Աղյուս
IOT123 - I2C MQ2 Աղյուս
IOT123 - I2C MQ2 Աղյուս
IOT123 - I2C MQ2 Աղյուս
IOT123 - I2C MQ2 Աղյուս
IOT123 - I2C MQ2 Աղյուս
IOT123 - I2C MQ2 Աղյուս

IOT123 Աղյուսները DIY մոդուլային միավորներ են, որոնք կարող են համակցվել այլ IOT123 Աղյուսների հետ ՝ հանգույցին ֆունկցիոնալություն հաղորդելու կամ կրելու համար: Դրանք հիմնված են դյույմ քառակուսի, երկկողմանի նախատախտակների վրա, որոնք փոխկապակցված են անցքերով:

Սպասվում է, որ այս ԿՈICՐԵՐԻ մի մասը կլինեն մի քանի հանգույցների վրա (Master MCUs - ESP8266 կամ ATTINY84) կայքում: MCU- ին սենսորների նպատակի կամ ծրագրակազմի կարիքների մասին նախնական գիտելիքներ պետք չեն: Այն սկանավորում է I2C հանգույցները, այնուհետև յուրաքանչյուր ստրուկից պահանջում է սեփականության աղբանոց (տվիչների տվյալներ): Այս աղյուսները մատակարարում են 5.0V, 3.3V և մեկ այլ AUX գիծ, որը հարմարեցված է:

Այս I2C MQ2 BRICK- ը թափում է 3 հատկություն.

LPG (Parts per Million), CO (PPM), SMOKE (PPM):

Այս տվիչը տրամադրեց հետաքրքիր սցենար. Այն տաքացնելու համար անհրաժեշտ է առնվազն 2 րոպե (մինչև 5 րոպե), այնուհետև օգտագործելուց առաջ պետք է չափագրվի 20 վայրկյան: Քանի որ ընդունող MCU- ն մտադիր է ստանալ միայն անուն/արժեք զույգեր (և շարունակել հաղորդագրությունը), մենք ներդրել ենք «ՊԱՏՐԱՍՏՆԵԼ» հատկությունը: Քանի որ նրա շարունակական ուղերձը «1» է (դեռ շատ), հյուրընկալող MCU- ն կշարունակի հարցում անցկացնել BRICK- ի վրա, մինչև այն պատրաստ լինի: Նաև խորհուրդ է տրվում օգտագործելուց առաջ «այրել» MQ2- ը, այսինքն ՝ թողնել միացված 5V միացումին 24 ժամ:

Keyes տիպի սենսորային աղյուսները նախ կվերացվեն, քանի որ դրանք գալիս են վիտամիններով (անհրաժեշտ են լրացուցիչ բաղադրիչներ) և համեմատաբար ավելի թափանցիկ են (37 -ը գնել եմ 10 AUD- ով): Այլ տախտակներ/սխեմաներ կներկայացվեն I2C Աղյուսներին:

ATTINY85- ի հարակից անցքերը մնացել են չօգտագործված, ինչը հնարավորություն է տալիս միացնել pogo- ի ծրագրավորողին, մինչ DIP8- ը կպցված է PCB- ին:

Մշակվում է ևս մեկ աբստրակցիա ՝ ԿՈICՐԵՐԸ փաթեթավորելով փոքր բալոններում, որոնք միանում են D1M WIFI BLOCK հանգույցին ՝ արժեքները մղելով MQTT սերվերի վրա:

Քայլ 1: Նյութեր և գործիքներ

Նյութ և գործիքներ
Նյութ և գործիքներ
Նյութ և գործիքներ
Նյութ և գործիքներ
Նյութ և գործիքներ
Նյութ և գործիքներ

Կա Նյութերի և աղբյուրների ամբողջական օրինագիծ:

  1. MQ2 սենսորային աղյուս (1)
  2. ATTINY85 20PU (1)
  3. 1 "երկկողմանի նախատախտակ (1)
  4. Արական վերնագիր 90º (3P, 3P)
  5. Արական վերնագիր (2P, 2P)
  6. Jատկող շանթ (1)
  7. Միացման մետաղալար (7 ~)
  8. Sոդման և երկաթ (1)

Քայլ 2. Պատրաստեք ATTINY85- ը

Պատրաստեք ATTINY85- ը
Պատրաստեք ATTINY85- ը
Պատրաստեք ATTINY85- ը
Պատրաստեք ATTINY85- ը
Պատրաստեք ATTINY85- ը
Պատրաստեք ATTINY85- ը
Պատրաստեք ATTINY85- ը
Պատրաստեք ATTINY85- ը

Խորհուրդների կառավարիչից անհրաժեշտ է AttinyCore: Այրեք bootloader «EEPROM պահպանված է», «8mHZ ներքին» (բոլորը կազմաձևված են վերևում):

Օգտագործեք ներառված աղբյուրը; կազմել և ծրագրավորել ATtiny85- ին:

GIST- ը այստեղ է.

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

Ավելի մանրամասն կարող եք գտնել այս հրահանգներում.

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…

Շարունակելուց առաջ լավագույնն է փորձարկել հացահատիկի միջոցով:

Եթե ունեք ASSIMILATE SENSORS, համոզվեք, որ ստրուկի հասցեն տարբերվում է SENSOR/MCU Host- ի համակցությունից, այսինքն ՝ peratերմաստիճանի բոլոր տվիչները կարող են ունենալ նույն հասցեն, քանի դեռ MCU/հանգույցի վրա ունեք միայն մեկ peratերմաստիճանի տվիչ:

Քայլ 3: Հավաքեք շրջանը

Հավաքեք շրջանը
Հավաքեք շրջանը
Հավաքեք շրջանը
Հավաքեք շրջանը
Հավաքեք շրջանը
Հավաքեք շրջանը
  1. Առջևում տեղադրեք ATTINY85 (1), 3P 90deg արական վերնագրեր (2) (3), 2P արական վերնագրերի (4) (5) բաղադրամասերը և ամրացրեք հետևի մասում:
  2. Հետևի մասում նշեք նարնջագույն մետաղալարեր ORANGE1- ից ORANGE2 և կպցրեք:
  3. Հետևի մասում կապույտ մետաղալարեր գտեք BLUE1- ից մինչև BLUE2 և կպցրեք:
  4. Հետևի մասում հետևեք կանաչ մետաղալարից GREEN1- ից GREEN2 և ամրացրեք:
  5. Հետևի մասում հետևեք մերկ մետաղալարից SILVER1- ից մինչև SILVER2 և ամրացրեք:
  6. Հետևի մասում հետևեք մերկ մետաղալարից SILVER3- ից մինչև SILVER4 և կպցրեք:
  7. Հետևի մասում հետևեք սև մետաղալարից BLACK1- ից մինչև BLACK2 և զոդեք:
  8. Հետևի մասում հետևեք սև մետաղալարից BLACK3- ից մինչև BLACK4 և զոդեք:
  9. Հետևի մասում հետևեք կարմիր մետաղալարից RED1- ից մինչև RED2 և ամրացրեք:
  10. Հետևի մասում գծեք կարմիր մետաղալարեր RED3- ից RED4- ից և ամրացրեք դրանք:
  11. Հետևի մասում նշեք դեղին մետաղալարը YELLOW1- ից YELLOW2- ից և ամրացրեք:

Այժմ սենսորը կարող է ուղղակիորեն միացված լինել PCB- ին կամ լարերի միջոցով `քորոցային պայմանագրում նշված կետերին:

Քայլ 4: Փորձարկում

Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում

Սպասվում է, որ այս ԿՈICՐԵՐԻ մի մասը կլինեն մի քանի հանգույցների վրա (MCUs - ESP8266 կամ ATTINY84) միջավայրում: Սա միավորի թեստ է. Ստուգում է ՄԱԿ -ի հարցումները/պատասխանները, մինչև բոլոր տվյալները թափվեն, այնուհետև անտեսում է I2C ստրուկը:

  1. Վերբեռնեք ՄԱԿ -ի ծածկագիրը ձեր ՄԱԿ -ի փորձարկման գոտում: Համոզվեք, որ ADDRESS_SLAVE- ը համապատասխանում է BRICK- ի I2C հասցեին:
  2. Միացրեք 5.0V- ը UNO- ում `BRICK- ի VCC- ին:
  3. Համոզվեք, որ այդ քորոցի համար թռիչքը միացված է:
  4. Միացրեք GND- ը UNO- ին GND- ին `BRICK- ում:
  5. Միացրեք UN5- ի A5- ը SCL- ին BRICK- ով:
  6. Միացրեք UNO- ի A4- ը SDA- ին BRICK- ում:
  7. SDK- ից միացրեք 4K7 ձգման դիմադրություն VCC- ին:
  8. Միացրեք 4K7 քաշվող դիմադրություն SCL- ից VCC- ին:
  9. USB- ով միացրեք ձեր UNO- ն ձեր Dev համակարգչին:
  10. Բացեք Arduino վահանակը: Ընտրեք 9600 baud (վերագործարկեք UNO- ն և անհրաժեշտության դեպքում վերաբացեք վահանակը):
  11. Գույքի անունները և արժեքները պետք է տպվեն վահանակում մեկ անգամ, այնուհետև քուն բառը կրկնվի:

Եթե տեսնում եք «կարգաբերում», ապա աղբի 3 տող կրկնվում է, հնարավոր է, որ ձեր SDA և SCL գծերը հետ լինեն:

I2C Master մուտքագրում I2C ստրուկից ՝ plotter/metadata աջակցությամբ:

#ներառում
#defineADDRESS_SLAVE10
bool _outputPlotterOnly = կեղծ;
bool _confirmMetadata = false;
int _packetSegment = 0;
bool _i2cNodeProcessed = false;
char _property [2] [24] = {"անուն", "արժեք"};
voidsetup () {
Wire.begin (); // միանալ i2c ավտոբուսին (հասցեն ՝ ըստ ցանկության մագիստրոսի համար)
Serial.begin (9600); // սկսել սերիան ելքի համար
ուշացում (1000);
եթե (! _outputPlotterOnly) {
Serial.println («կարգավորում»);
Serial.println ();
}
}
voidloop () {
եթե (_i2cNodeProcessed) {
եթե (! _confippedMetadata) {// տեղեկացրու ստրուկին, որ սկսի ուղարկել սենսորի տվյալները
ուշացում (1);
Wire.beginTransmission (ADDRESS_SLAVE);
Wire.write (1);
Wire.endTransmission ();
ուշացում (100);
_confippedMetadata = ճշմարիտ;
}
_i2cNodeProcessed = կեղծ;
եթե (! _outputPlotterOnly) {
Serial.println ();
}
վերադարձ;
}
Մետաղալար. Խնդրում ենք (ADDRESS_SLAVE, 16);
_packetSegment ++;
char փաթեթ [16];
ինտինդեքս = 0;
bool isContinueSegment = false; // continueSegment (3 -րդ) 1 = ավելին, 0 = վերջին
while (Wire.available ()) {// ստրուկը կարող է ավելի քիչ ուղարկել, քան պահանջվում է
char c = Wire.read ();
փաթեթ [ինդեքս] = int (գ)> -1? c: ''; // անվավեր նիշերը փոխարինել բացատներով
եթե (_packetSegment == 3) {
_packetSegment = 0;
isContinueSegment = ճշմարիտ;
//Serial.println("------------- ");
//Serial.println(int(c));
//Serial.println("------------- ");
եթե (int (c) == 48 || int (c) == 86) {// 0 վերջին հատկության վրա
_i2cNodeProcessed = true;
// արժեքներ ուղարկել MQTT
ընդմիջում;
}
}
ցուցանիշ ++;
}
եթե (! isContinueSegment) {
եթե (! _outputPlotterOnly) {
Serial.println (փաթեթ);
}
strcpy (_property [_packetSegment - 1], փաթեթ); // սահմանել տեղական փոփոխական անվանում/արժեք
} ուրիշ {
եթե (_outputPlotterOnly && _confippedMetadata) {
եթե (_i2cNodeProcessed) {
Serial.println (_ սեփականություն [1]);
} ուրիշ {
Serial.print (_ սեփականություն [1]);
Serial.print ("");
}
}
}
}

դիտել rawuno_i2c_generic_sensor_test_w_plotter_v2.ino հյուրընկալված ❤ -ի կողմից GitHub- ի կողմից

Քայլ 5: Հաջորդ քայլերը

Շղթայի հիմնական դասավորությունը և ծրագրաշարի I2C շերտը կարող են առնչվել տարբեր սենսորների: Հիմնական բանը, որից պետք է ճիշտ սկսել, դա տուփի և ստրուկի միջև փաթեթային պայմանագիրն է:

Ես պլանավորել/սկսել եմ (3D տպագրությամբ) սենսորների փաթեթավորված ցանց, որն օգտագործում է այս շրջանակը և կկապվի դրան, քանի դեռ մասերը հրապարակվում են:

Այս ՊԼՈԿԸ օգտագործվում է MQ2 ASSIMILATE SENSOR- ի կողմից:

Խորհուրդ ենք տալիս: