Мазмуну:

IOT123 - I2C 2CH РЕЛИ КИРПИШ: 5 кадам (Сүрөттөр менен)
IOT123 - I2C 2CH РЕЛИ КИРПИШ: 5 кадам (Сүрөттөр менен)

Video: IOT123 - I2C 2CH РЕЛИ КИРПИШ: 5 кадам (Сүрөттөр менен)

Video: IOT123 - I2C 2CH РЕЛИ КИРПИШ: 5 кадам (Сүрөттөр менен)
Video: IOT123 - ICOS10: STRUCTURE 2024, Июнь
Anonim
IOT123 - I2C 2CH РЕЛИ КИРПИШ
IOT123 - I2C 2CH РЕЛИ КИРПИШ
IOT123 - I2C 2CH РЕЛИ КИРПИШ
IOT123 - I2C 2CH РЕЛИ КИРПИШ
IOT123 - I2C 2CH РЕЛИ КИРПИШ
IOT123 - I2C 2CH РЕЛИ КИРПИШ
IOT123 - I2C 2CH РЕЛИ КИРПИШ
IOT123 - I2C 2CH РЕЛИ КИРПИШ

IOT123 КИРПИЧтери - бул модулдук бирдиктер, алар IOT123 КИРПИЧТЕРИ менен биригип, түйүнгө функционалдык мүмкүнчүлүктү кошууга болот. Алар дюймдук чарчы, тешиктер аркылуу бири-бири менен байланышкан эки жактуу протоборлорго негизделген.

Бул BRICKS бир катар сайтта бир нече түйүндөрдө болушу күтүлүүдө (Master MCUs - ESP8266 же ATTINY84). MCU сенсорлордун максаты же программалык камсыздоо муктаждыктары жөнүндө алдын ала билимге муктаж эмес. Ал I2C түйүндөрүн издейт, андан кийин ар бир кулдан мулк таштандысын (сенсордук маалыматтарды) сурайт. Бул BRICKs 5.0V, 3.3V жана настройкаланган башка AUX линиясын беришет.

Бул I2C 2CH RELAY BRICK I2C KY019 КИРПИЧТИН иштөө мүмкүнчүлүгүн кеңейтет жана эки окуу/жазуу касиетине ээ:

2CH RELAYS [0] (чыныгы/жалган)

2CH РЕЛЕЙЛЕРИ [1] (чыныгы/жалган)

ATTINY85 жанындагы тешиктер DIP8 ПХБга ширетилип жатканда, пого пин программистти иштетүү үчүн колдонулбай калган. Дагы бир абстракция, D1M WIFI BLOCK хабына туташтырылган кичинекей цилиндрлерге кирпичтерди таңгактоо, баалуулуктарды MQTT серверине чыгаруу.

1 -кадам: материалдар жана инструменттер

Материалдар жана куралдар
Материалдар жана куралдар
Материалдар жана куралдар
Материалдар жана куралдар
Материалдар жана куралдар
Материалдар жана куралдар

Материалдардын жана булактардын толук тизмеси бар.

  1. 2 Канал Реле (1)
  2. ATTINY85 20PU (1)
  3. 1 "Эки тараптуу протобер (1)
  4. Эркек Башы 90º (3P, 3P)
  5. Эркек баш (2P, 2P)
  6. Jumper Shunt (1)
  7. Байланыш зымы (~ 7)
  8. Лайнер жана Темир (1)

2 -кадам: ATTINY85ти даярдаңыз

ATTINY85ти даярдаңыз
ATTINY85ти даярдаңыз
ATTINY85ти даярдаңыз
ATTINY85ти даярдаңыз
ATTINY85ти даярдаңыз
ATTINY85ти даярдаңыз

ЭСКЕРТҮҮ: Crouton интеграциясына ээ болгуңуз келсе, ушул жерден китепкананы колдонуңуз жана "attiny_2ch_relay" орнотулган мисалын колдонуңуз.

Такта менеджеринен AttinyCore керек. "EEPROM Retained", "8mHZ Internal" жүктөгүчүн күйгүзүңүз (бардык конфигурация жогоруда көрсөтүлгөн).

Коддун кампасын бул жерден тапса болот.

Китепкананын ZIP кодун бул жерден тапса болот.

"ZIP китепканасын импорттоо" үчүн инструкциялар бул жерде.

Китепкана орнотулгандан кийин "attiny_2ch_relay" мисалын ача аласыз.

Камтылган программаны ATTINY85ке жүктөө үчүн, бул көрсөтмөлөрдөн кененирээк маалымат таба аласыз:

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

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

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

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

Улантуудан мурун нан тактасы аркылуу тестирлөө эң жакшы.

Эгерде сизде ASSIMILATE SENSORS бар болсо, анда SENSOR/MCU Host комбинациясында кул дареги башкача экенин текшериңиз, башкача айтканда, MCE/түйүнүндө бир гана Релейлик актер болгондо, Эстафетанын бардык актерлору бир эле дарекке ээ боло алышат.

3 -кадам: Районду чогултуңуз

Circuit чогултуу
Circuit чогултуу
Circuit чогултуу
Circuit чогултуу
Circuit чогултуу
Circuit чогултуу
  1. Алдыңкы бөлүктө ATTINY85 (1), 3P 90deg эркек баштыктары (2) (3), 3P эркек баштар (4) (5) жана арткы жагында ширетилген компоненттерди салыңыз.
  2. Арткы жагында сары зымды САРЫ 1ден САРЫ2ге чейин издеп, ширетүү керек.
  3. Арткы жагында, ORANGE1ден ORANGE2ге чейин кызгылт сары түстөгү зымды издеңиз.
  4. Арткы жагында, BLUE1ден BLUE2ге чейин көк зымды караңыз жана solder.
  5. Арткы жагында GREEN1ден GREEN2ге чейинки жашыл зымды байкап көрүңүз.
  6. Арткы жагында BLACK1ден BLACK2ге чейин кара зымды караңыз жана ширетүү.
  7. Арткы жагында BLACK3төн BLACK4ке чейин кара зымды караңыз жана ширетүү.
  8. Арткы жагында кызыл зымды RED1ден RED2ге чейин жана ширетүүнү издеңиз.
  9. Арткы жагында RED3төн RED4кө чейин жылаңач зымды издеңиз.
  10. Арткы жагында, SILVER1ден SILVER2ге чейинки жылаңач зымды издеңиз.
  11. 5V же 3V3 линиясына секиргич кошуңуз.

Эстафета эми анын пинтери аркылуу ПХБга же зымдар аркылуу, пин келишиминде көрсөтүлгөн пункттарга туташтырылышы мүмкүн.

4 -кадам: Тестирлөө

Тестирлөө
Тестирлөө
Тестирлөө
Тестирлөө
Тестирлөө
Тестирлөө
Тестирлөө
Тестирлөө

Бул BRICKS бир катар чөйрөдө бир нече түйүндөрдө (MCUs - ESP8266 же ATTINY84) болушу күтүлүүдө. Бул тест бирдиги: I2C командаларын UNOдон ATTINYге жөнөтөт, ал релелерди ачат же жабат.

Биз мурун Arduino үчүн I2C SHIELD курганбыз.

Эгерде сиз анын ордуна нан жегиси келсе:

  1. БУУдагы 5.0Вды БРИККтеги VCCге туташтырыңыз.
  2. БУУдагы GNDди БРИККтеги GNDге туташтырыңыз.
  3. A5ти БУУда SCL менен BRICKке туташтырыңыз.
  4. БУУдагы А4ты БРИКК боюнча SDAга туташтырыңыз.
  5. SDAдан VCCге 4K7 тартма каршылыгын туташтырыңыз.
  6. SCLден VCCге 4K7 тартма каршылыгын туташтырыңыз.

Тестти иштетүү

  1. UNOну USB менен Dev PCке туташтырыңыз.
  2. Кодду БУУга жүктөңүз.
  3. Arduino консолун ачыңыз.
  4. 9600 байды тандаңыз (БУУну кайра жүктөңүз жана керек болсо консолун кайра ачыңыз).
  5. Кулдун дареги консолго басып чыгарылат.
  6. Качан, жөнөтүү кутусуна 2 0: 1 (ошондуктан 15 2 0: 1) киргизиңиз, жана CH1 релеси күйөт.

  7. Качан, жөнөтүү кутусуна 2 0: 0 (ошондуктан 15 2 0: 0) киргизиңиз, жана CH1 релеси өчөт.
  8. Качан, жөнөтүү кутусуна 2 1: 1 (ошондуктан 15 2 1: 1) киргизиңиз, жана CH2 релеси күйөт.
  9. Качан, жөнөтүү кутусуна 2 1: 0 (ошондуктан 15 2 0: 0) киргизиңиз, жана CH2 релеси өчөт.

UNO кожоюнунун кулдары үчүн I2C BRICK adhoc буйруктары

#кошуу
const байт _num_chars = 32;
char _received_chars [_num_chars]; // алынган маалыматтарды сактоо үчүн массив
логикалык _has_new_data = жалган;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("IOT ACTOR/SENSOR EEPROM EDITOR СОНУН");
Serial.println ("консоль терезесинде жаңы сызыктын тандалышын камсыз кылуу");
Serial.println ();
Serial.println ("ADRESS 1 METADATA RECEIPT N/A (M2M ҮЧҮН) ЫРАСТАНДЫ");
Serial.println ("АДРЕС 2 АКТОР КОМАНДАСЫ");
Serial.println ();
Serial.println ("АВТОБУСТАГЫ АДРЕСТЕР:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
үчүн (байт дареги = 8; дарек <127; дарек ++)
{
Wire.beginTrmission (дарек);
const байт катасы = 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 ();
if (rc! = end_marker) {
_received_chars [ndx] = rc;
ndx ++;
эгер (ndx> = _num_chars) {
ndx = _num_chars - 1;
}
}
башка {
_received_chars [ndx] = '\ 0'; // сапты токтотуу
ndx = 0;
_has_new_data = чындык;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String алынды_сап = Стринг (_received_chars);
эгер (_has_new_data == true) {
int idx1 = алынды_string.indexOf ('');
Стринг дареги = алынды_string.substring (0, idx1);
int address_int = address.toInt ();
эгер (address_int <8 || address_int> 127) {
Serial.println ("ЖАРАКСЫЗ АДРЕС КИРИШИ:");
Serial.println (дареги);
кайтуу;
}
int idx2 = алынды_string.indexOf ('', idx1+1);
Стринг коду;
эгер (idx2 == -1) {
код = алынды_стринг.substring (idx1+1);
} башка {
код = алынды_стринг.substring (idx1+1, idx2+1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("ЖАРАКСЫЗ КОД КИРИШИ:");
Serial.println (код);
кайтуу;
}
bool has_parameter = idx2> -1;
String parameter;
if (has_parameter) {
параметр = алынды_сап.substring (idx2 + 1, idx2 + 17); // максимум 16 тамга
if (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = жалган;
кайтуу;
}
} башка {
эгер (code_int> 1) {
Serial.println ("ПАРАМЕТР КЕРЕК!");
_has_new_data = жалган;
кайтуу;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (алынган_сап);
Serial.print ("дарек =");
Serial.println (дареги);
Serial.print ("код =");
Serial.println (код);
Serial.print ("parameter =");
Serial.println (параметр);
// I2C аркылуу жөнөтүү
Wire.beginTransmission (address_int);
Wire.write (code_int);
if (has_parameter) {
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 = жалган;
}
}

GitHub тарабынан ❤ уюштурулган rawuno_i2c_command_input.ino караңыз

5 -кадам: Кийинки кадамдар

Кийинки кадамдар
Кийинки кадамдар
Кийинки кадамдар
Кийинки кадамдар
Кийинки кадамдар
Кийинки кадамдар
Кийинки кадамдар
Кийинки кадамдар

Кийинки ASSIMILATE ACTOR: 2CH RELAY бул кирпичти колдонот, буга чейин ATTINY85те орнотулган метадайындар аркылуу Crouton үчүн автоматтык конфигурациясы бар. Крутонго жөнөтүлгөн JSON пакети ICOS10 үчүн эң акыркы программалык камсыздоо аркылуу жөнөтүлөт. Эгерде сиз азырынча өтө эле көп болсоңуз, анда кадимки ESP8266 боюнча Proof-of-концепциясын жасай аласыз.

Сыноодо колдонулган UNO эскизи, эгерде сиз максаттуу I2C автобусунда кагылышуу болсо, ATTINY85те EEPROMга жаңы кул дарегин сактоо функциясына ээ. Бир нече схемалар кошулду, бирок сиз каалаган нерсеге жараша ылдыйкы схеманы өткөрүүнүн ар кандай жолдору бар, ошондуктан мен муну сизге калтырам:)

Сунушталууда: