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

IOT123 - I2C ԱՌՈՈԹՅԱՆ ԿՈICՐ `6 քայլ
IOT123 - I2C ԱՌՈՈԹՅԱՆ ԿՈICՐ `6 քայլ

Video: IOT123 - I2C ԱՌՈՈԹՅԱՆ ԿՈICՐ `6 քայլ

Video: IOT123 - I2C ԱՌՈՈԹՅԱՆ ԿՈICՐ `6 քայլ
Video: IOT123 - ICOS10: STRUCTURE 2024, Հունիսի
Anonim
IOT123 - I2C ԱՌՈԱՊԱՀ աղյուս
IOT123 - I2C ԱՌՈԱՊԱՀ աղյուս
IOT123 - I2C ԱՌՈԱՊԱՀ աղյուս
IOT123 - I2C ԱՌՈԱՊԱՀ աղյուս
IOT123 - I2C ԱՌՈԱՊԱՀ աղյուս
IOT123 - I2C ԱՌՈԱՊԱՀ աղյուս

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

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

Այս I2C HEARTBEAT աղյուսը ցույց է տալիս, արդյոք ATTINY ստրուկը կենդանի է, ինչպես նաև I2C երթևեկը և ունի մեկ հատկություն.

ՍՏԱՏՈUSՍ («ՈIԻVE»)

PB1 (սպիտակ) ցույց է տալիս ATTINY առողջությունը:

PB3 (դեղին) միացնում է վարպետի I2C հարցումները:

PB4 (նարնջագույն) միանում է վարպետից ստացվող I2C- ով:

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

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

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

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

  1. Թղթե PCB (7 x 7 անցք)
  2. LEDS (կարմիր, կանաչ, կապույտ)
  3. Ռեզիստորներ (3 հատ 1 Կ)
  4. ATTINY85 20PU (1)
  5. 1 "երկկողմանի նախատախտակ (1)
  6. Արական վերնագիր 90º (3P, 3P)
  7. Արական վերնագիր (2P, 2P)
  8. Jատկող շանթ (1)
  9. Միացման մետաղալար (7 ~)
  10. Sոդման և երկաթ (1)

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

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

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

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

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

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

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

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

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

www.instructables.com/id/Programming-the-….

www.instructables.com/id/How-to-Program-A…

www.instructables.com/id/Programming-the-…

www.instructables.com/id/How-to-Program-A…

www.instructables.com/id/Programming-the-…

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

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

Քայլ 3. theուցանիշների հավաքում

Theուցանիշների հավաքում
Theուցանիշների հավաքում
Theուցանիշների հավաքում
Theուցանիշների հավաքում
Theուցանիշների հավաքում
Theուցանիշների հավաքում

Theուցանիշները պետք է լիովին կարգավորելի լինեն: Դա իրադարձությունների ազդանշաններն են հիմնական միացումից, որոնք դիտվում են որպես Սրտի բաբախում: Այս կառուցման համար մենք կօգտագործենք LED ցուցիչներ; ձեր կառուցվածքը կարող է օգտագործել ռելեներ (այո, VCC- ն կոտրված է) կամ տեսողական/ազդանշանի վրա հիմնված մեկ այլ ցուցիչ: Դիմադրության արժեքները կախված կլինեն անձնական նախասիրությունից, թե որքան պայծառ եք դրանք ցանկանում:

  1. Վերևում տեղադրեք կապույտ լուսադիոդ ՝ RED1 (+) և BLACK1 (G) մեջ, իսկ ներքևում ՝ զոդ:
  2. Ներքևում թեքեք կապարը RED1- ից, որպեսզի այն դիպչի SILVER8- ի պղնձե բարձիկին և զարդարեք այն:
  3. Ներքևում կտրեք կապարը BLACK1- ից ՝ զոդման վերևում:
  4. Վերևում տեղադրեք կանաչ LED- ը RED2 (+) և BLACK2 (G) մեջ, իսկ ներքևում ՝ զոդեք:
  5. Ներքևում, կապարը թեքեք RED2- ից, որպեսզի այն դիպչի SILVER9- ի պղնձե բարձիկին և կտրեք այն:
  6. Ներքևի մասում կտրեք կապարը BLACK2- ից ՝ զոդման վերևում:
  7. Վերևում տեղադրեք կարմիր LED- ը RED3 (+) և BLACK3 (G) մեջ, իսկ ներքևում ՝ զոդեք:
  8. Ներքևում, կապարը թեքեք RED3- ից, որպեսզի այն դիպչի SILVER10- ի պղնձե բարձիկին և եզրին:
  9. Ներքևում կտրեք կապարը BLACK3- ից ՝ զոդման վերևում:
  10. Վերևում տեղադրեք 1K դիմադրություն SILVER1 և SILVER4 անցքերի մեջ:
  11. Ներքևի մասում հետևեք, կտրեք և կպցրեք կապարը SILVER1- ից BLACK1- ի վրա:
  12. Վերևում տեղադրեք 1K դիմադրություն SILVER2 և SILVER4 անցքերի մեջ:
  13. Ներքևում SILVER2- ից BLACK2- ի վրա հետևեք, կտրեք և կպցրեք կապարը:
  14. Վերևում տեղադրեք 1K դիմադրություն SILVER3 և SILVER4 անցքերի մեջ:
  15. Ներքևում SILVER3- ից հետևեք, զարդարեք և կպցրեք կապարը BLACK3- ի վրա:
  16. Ստորին մասում, մետաղալարերը կպցրեք SILVER4- ի վրա և կտրեք մոտ 5 մմ երկարությամբ:
  17. Ներքևում սև մետաղալար կպցրեք SILVER4- ի վրա:
  18. Ստորին մասում մի սպիտակ մետաղալար կպցրեք SILVER5- ի վրա `ապահովելով կապույտ կապի շարունակությունը RED1- ից:
  19. Ստորին մասում, դեղին մետաղալար կպցրեք SILVER6- ի մեջ `ապահովելով կապույտության շարունակականությունը RED2- ից:
  20. Ներքևում մի նարնջագույն մետաղալար կպցրեք SILVER7- ի մեջ ՝ ապահովելով կապույտության շարունակականությունը RED3- ից:

Քայլ 4: Հիմնական շղթայի հավաքում

Հիմնական շղթայի հավաքում
Հիմնական շղթայի հավաքում
Հիմնական շղթայի հավաքում
Հիմնական շղթայի հավաքում
Հիմնական շղթայի հավաքում
Հիմնական շղթայի հավաքում

Վեհաժողով:

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

Եթե օգտագործում եք վերը նշված ցուցանիշները (տե՛ս pinout դիագրամը)

  1. Հետևի մասում սպիտակ մետաղալարը կպցրեք PB1- ի:
  2. Հետևի մասում դեղին մետաղալարը կպցրեք PB3- ի:
  3. Հետևի մասում նարնջագույն մետաղալարը կպցրեք PB4- ի:
  4. Հետևի մասում սև մետաղալարը կպցրեք GND- ի:

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

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

Սպասվում է, որ այս ԿՈICՐԵՐԻ մի մասը կլինեն մի քանի հանգույցների վրա (MCUs - ESP8266 կամ ATTINY84) միջավայրում: Սա միավորի թեստ է. Ուղարկում է I2C հրամաններ UNO- ից ATTINY- ին, որը միացնում է Receive LED- ը: ATTINY ALIVE LED- ը մնում է միացված:

Մենք նախկինում կառուցել ենք 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 վահանակը:
  4. Ընտրեք 9600 baud (վերագործարկեք UNO- ն և անհրաժեշտության դեպքում վերաբացեք վահանակը):
  5. Ստրուկի հասցեն տպվելու է վահանակում:
  6. Երբ, մուտքագրեք ուղարկման տուփ 2 1 (ուրեմն 16 2 1), և ստացվող LED- ը միանում է:
  7. Երբ, մուտքագրեք ուղարկման վանդակում 2 0 (ուրեմն 16 2 0), և Receive LED- ն անջատվում է:

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- ի կողմից

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

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

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

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

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