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

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

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

Video: IOT123 - I2C KY019 Աղյուս. 5 քայլ
Video: Arduino keypad door lock with i2c LCD -Test1 2024, Նոյեմբեր
Anonim
IOT123 - I2C KY019 Աղյուս
IOT123 - I2C KY019 Աղյուս
IOT123 - I2C KY019 Աղյուս
IOT123 - I2C KY019 Աղյուս

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

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

Այս I2C KY019 աղյուսը առաջինն է ԴԱՍԱՀՈՍՆԵՐԻ,, և ունի մեկ կարդալու/գրելու հատկություն.

Փոխարկիչ (ճիշտ/սխալ):

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

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

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

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

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

  1. KY-019 ռելե (1)
  2. ATTINY85 20PU (1)
  3. 1 "երկկողմանի նախատախտակ (1)
  4. Արական վերնագիր 90º (3P, 3P)
  5. Միացման մետաղալար (7 ~)
  6. Sոդման և երկաթ (1)

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

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

Նշում. Եթե մտադիր եք ունենալ Crouton ինտեգրում, խնդրում ենք օգտագործել գրադարանը այստեղից և օգտագործել «attiny_ky019» տեղադրված օրինակը:

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

Կոդերի պահեստը կարելի է գտնել այստեղ:

Գրադարանի ZIP- ը կարելի է գտնել այստեղ:

«ZIP գրադարան ներմուծելու» հրահանգներն այստեղ են:

Գրադարանը տեղադրվելուց հետո կարող եք բացել «attiny_ky019» օրինակը:

Սարքաշարը ATTINY85- ում վերբեռնելու համար կարող եք ավելի մանրամասն տեղեկություններ գտնել այս հրահանգներում:

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- ի համակցությունից, այսինքն ՝ Relay- ի բոլոր դերակատարները կարող են ունենալ նույն հասցեն, քանի դեռ MCU/հանգույցում ունեք միայն մեկ Relay դերասան:

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

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

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

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

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

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

Մենք նախկինում կառուցել ենք I2C SHIELD Arduino- ի համար:

Եթե ցանկանում եք դրա փոխարեն սեղան դնել

  1. Միացրեք 5.0V- ը UNO- ում `BRICK- ի VCC- ին:
  2. Միացրեք GND- ը UNO- ին GND- ին `BRICK- ում:
  3. Միացրեք UN5- ի A5- ը SCL- ին BRICK- ով:
  4. Միացրեք UNO- ի A4- ը SDA- ին BRICK- ում:
  5. SDK- ից միացրեք 4K7 ձգման դիմադրություն VCC- ին:
  6. Միացրեք 4K7 քաշվող դիմադրություն SCL- ից VCC- ին:

Թեստը վարելը:

  1. USB- ով միացրեք ձեր UNO- ն ձեր Dev համակարգչին:
  2. Վերբեռնեք կոդը ՄԱԿ -ում:
  3. Բացեք Arduino վահանակը: Ընտրեք 9600 baud (վերագործարկեք UNO- ն և անհրաժեշտության դեպքում վերաբացեք վահանակը):
  4. Ստրուկի հասցեն տպվելու է մխիթարելու համար:
  5. Երբ, մուտքագրեք ուղարկման տուփ 2 1 (ուրեմն 12 2 1), և ռելեն միանում է:
  6. Երբ, մուտքագրեք ուղարկման տուփ 2 0 (ուրեմն 12 2 0), և ռելեն անջատվում է:

I2C BRICK adhoc հրամաններ ստրուկների համար ՄԱԿ -ի տիրոջ կողմից:

#ներառում
const byte _num_chars = 32;
char _ստացված_դասարաններ [_num_chars]; // ստացված տվյալները պահելու զանգված
բուլյան _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println («ASSIMILATE IOT ACTOR/SENSOR EEPROM EDITOR»);
Serial.println («ապահովել վահանակի պատուհանում ընտրված նոր տողը»);
Serial.println ();
Serial.println ("ՀԱՍRԵ 1 ՀԱՍՏԱՏՈ MԹՅԱՆ ՄԵՏԱԴԵՏԱՅԻ ՀԱՅՏԱՐԱՐՈ NԹՅՈՆԸ N/A (M2M- ի համար)");
Serial.println («Հասցե 2 դերասանի հրահանգ»);
Serial.println ();
Serial.println ("ՀԱՍRԵՆԵՐԸ Ավտոբուսում.");
scan_i2c_ հասցեներ ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int սարքի_հաշիվ = 0;
համար (բայտ հասցե = 8; հասցե <127; հասցե ++)
{
Wire.beginTransmission (հասցե);
const byte սխալ = Wire.endTransmission ();
եթե (սխալ == 0)
{
Serial.println (հասցե);
}
}
}
voidloop () {
recv_with_end_marker ();
send_to_i2c ();
}
voidrecv_with_end_marker () {
ստատիկ բայթ ndx = 0;
char end_marker = '\ n';
char rc;
while (Serial.available ()> 0 && _has_new_data == false) {
rc = Serial.read ();
եթե (rc! = end_marker) {
_ընդունված_դարձեր [ndx] = rc;
ndx ++;
եթե (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
ուրիշ {
_received_chars [ndx] = '\ 0'; // դադարեցնել տողը
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const Լարված ստացված_լար = Լար (_ստացված_շարքեր);
եթե (_has_new_data == true) {
int idx1 = ստացվել է_լարը.indexOf ('');
Լարային հասցե = ստացված_ստրինգ. Ենթալար (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("ԱՆՎALԱՐ ՀԱՍRԵ ՄՏԱՈՄ.");
Serial.println (հասցե);
վերադարձ;
}
int idx2 = ստացվել է_լարը.indexOf ('', idx1+1);
Լարային կոդ;
եթե (idx2 == -1) {
կոդ = ստացված_թել. ենթալար (idx1+1);
} ուրիշ {
կոդ = ստացված_թել. ենթալար (idx1+1, idx2+1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("ԱՆՎALԱՐ ԿՈԴԻ ՄՈPՏՔ.");
Serial.println (ծածկագիր);
վերադարձ;
}
bool has_parameter = idx2> -1;
Լարային պարամետր;
եթե (պարամետր ունի) {
պարամետր = ստացված_թել. ենթաշերտ (idx2 + 1, idx2 + 17); // առավելագույնը 16 նիշ
if (parameter.length () <1) {
Serial.println ("ՄԱՍՆԱԿՈ MԹՅԱՆ ԱՌԱՆ ԼԵՆԳ 1");
_has_new_data = false;
վերադարձ;
}
} ուրիշ {
եթե (code_int> 1) {
Serial.println ("ՊԱՐԱՄԵՏՐԸ ՊԱՐՏԱԴԻՐ է");
_has_new_data = false;
վերադարձ;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (ստացված_լար);
Serial.print ("հասցե =");
Serial.println (հասցե);
Serial.print ("կոդը =");
Serial.println (ծածկագիր);
Serial.print ("պարամետր =");
Serial.println (պարամետր);
// ՈENDԱՐԿԵԼ VIA I2C- ով
Wire.beginTransmission (address_int);
Wire.write (code_int);
եթե (պարամետր ունի) {
parameter.trim ();
strcpy (param_buf, parameter.c_str ());
Wire.write (param_buf);
}
Wire.endTransmission ();
Serial.println ();
Serial.println («ուղարկվել է I2C- ով»);
Serial.println ();
Serial.println ("");
_has_new_data = false;
}
}

դիտել rawuno_i2c_command_input.ino- ն, որը տեղակայված է it -ի կողմից GitHub- ի կողմից

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

Հաջորդ քայլերը
Հաջորդ քայլերը
Հաջորդ քայլերը
Հաջորդ քայլերը
Հաջորդ քայլերը
Հաջորդ քայլերը
Հաջորդ քայլերը
Հաջորդ քայլերը

Հետևյալ ASSIMILATE ACTOR: KY019- ը, որն օգտագործում է այս աղյուսը, ունի ավտոմատ կազմաձևում Crouton- ի համար `այստեղ արդեն ATTINY85- ում տեղադրված մետատվյալների միջոցով: Crouton- ին ուղարկված JSON փաթեթը ուղարկվում է ICOS10- ի վերջին որոնվածի միջոցով: Սովորական ESP8266- ի վրա կարող եք կատարել «Proof-of-concept» հասկացությունը, եթե ներկայումս կառուցվածքը չափազանց շատ է:

Փորձարկման ժամանակ օգտագործվող UNO- ի էսքիզը գործառույթ ունի ՝ ATTINY85- ում EEPROM հասցեին նոր ստրուկի հասցե պահպանելու համար, եթե բախում ունեք ձեր թիրախային I2C ավտոբուսում:

Ավելացվել են մի քանի սխեմաներ, բայց հոսանքի հոսանքի հոսանքի միացման տարբեր եղանակներ կան ՝ կախված այն բանից, թե ինչի եք ուզում հասնել, այնպես որ դա թողնում եմ ձեզ համար:)

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