Съдържание:

IOT123 - I2C 2CH РЕЛЕ ТУХА: 5 стъпки (със снимки)
IOT123 - I2C 2CH РЕЛЕ ТУХА: 5 стъпки (със снимки)

Видео: IOT123 - I2C 2CH РЕЛЕ ТУХА: 5 стъпки (със снимки)

Видео: IOT123 - I2C 2CH РЕЛЕ ТУХА: 5 стъпки (със снимки)
Видео: 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 ТУКЛИ, за да се добави функционалност към възел или носим. Те се основават на инчови квадратни, двустранни протобордове със свързани помежду си отвори.

Очаква се редица от тези ТУРКИ да бъдат на множество възли (Master MCUs - ESP8266 или ATTINY84) на сайт. MCU не се нуждае от предварителни познания за целите на сензорите или софтуерните нужди. Той сканира за I2C възли, след което иска дамп на свойство (данни на сензора) от всяко подчинено устройство. Тези тухли захранват 5.0V, 3.3V и друга AUX линия, която може да се персонализира.

Тази I2C 2CH РЕЛЕ ТУХА разширява функционалността на I2C KY019 BRICK и има две свойства за четене/запис:

2CH РЕЛА [0] (вярно/невярно)

2CH РЕЛА [1] (вярно/невярно)

Проходните отвори, съседни на ATTINY85, са оставени неизползвани, за да се даде възможност за програмиране на pogo pin, докато DIP8 е запоен към печатната платка. Разработва се още една абстракция, опаковане на ТУКЛИТЕ в малки цилиндри, които се включват в D1M WIFI BLOCK хъб, изпомпвайки стойностите към MQTT сървър.

Стъпка 1: Материали и инструменти

Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти
Материали и инструменти

Има пълен списък на материали и източници.

  1. 2 -канално реле (1)
  2. ATTINY85 20PU (1)
  3. 1 "Двустранна протоборд (1)
  4. Заглавие за мъже 90º (3P, 3P)
  5. Мъжко заглавие (2P, 2P)
  6. Джъмпер шунт (1)
  7. Свързващ проводник (~ 7)
  8. Припой и желязо (1)

Стъпка 2: Подгответе ATTINY85

Подгответе ATTINY85
Подгответе ATTINY85
Подгответе ATTINY85
Подгответе ATTINY85
Подгответе ATTINY85
Подгответе ATTINY85

ЗАБЕЛЕЖКА: Ако възнамерявате да имате интеграция на Crouton, моля, използвайте библиотеката от тук и използвайте инсталирания пример „attiny_2ch_relay“.

Необходим е AttinyCore от мениджъра на борда. Записване на буутлоудъра „EEPROM запазена“, „8mHZ Вътрешна“(всички конфигурации са показани по -горе).

Хранилището на кодовете може да се намери тук.

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, т.е. всички релейни актьори могат да имат един и същ адрес, стига да имате само един Relay актьор на MCU/възел.

Стъпка 3: Сглобете веригата

Сглобете веригата
Сглобете веригата
Сглобете веригата
Сглобете веригата
Сглобете веригата
Сглобете веригата
  1. Отпред поставете компонентите ATTINY85 (1), 3P 90deg мъжки хедери (2) (3), 3P мъжки хедери (4) (5) и спойнете отзад.
  2. Отзад проследете жълт проводник от ЖЪЛТО1 до ЖЪЛТО2 и запойте.
  3. Отзад проследете оранжев проводник от ORANGE1 до ORANGE2 и запойте.
  4. Отзад проследете син проводник от СИН1 до СИН2 и запойте.
  5. Отзад проследете зелен проводник от ЗЕЛЕН1 до ЗЕЛЕН2 и запойте.
  6. Отзад проследете черен проводник от BLACK1 до BLACK2 и запойте.
  7. Отзад проследете черен проводник от BLACK3 до BLACK4 и запойте.
  8. Отзад проследете червен проводник от RED1 до RED2 и запойте.
  9. Отзад проследете гола жица от RED3 до RED4 и запойте.
  10. Отзад проследете гола жица от СРЕБЪР1 до СРЕБЪР2 и запойте.
  11. Добавете джъмпер към линията 5V или 3V3.

Релето вече може да бъде свързано директно чрез своите щифтове към печатната платка или чрез проводници, към точките, показани в договора на щифта.

Стъпка 4: Тестване

Тестване
Тестване
Тестване
Тестване
Тестване
Тестване
Тестване
Тестване

Очаква се редица от тези ТУРКИ да бъдат на множество възли (MCUs - ESP8266 или ATTINY84) в среда. Това е единичен тест: изпраща I2C команди от UNO към ATTINY, който отваря или затваря релетата.

По -рано сме изградили I2C SHIELD за Arduino.

Ако вместо това искате да го направите на червено:

  1. Свържете 5.0V на UNO към VCC на BRICK.
  2. Свържете GND на UNO към GND на BRICK.
  3. Свържете A5 на UNO към SCL на BRICK.
  4. Свържете A4 на UNO към SDA на BRICK.
  5. Свържете издърпващ резистор 4K7 от SDA към VCC.
  6. Свържете издърпващ резистор 4K7 от SCL към VCC.

Изпълнение на теста

  1. Свържете вашия UNO към вашия Dev компютър с USB.
  2. Качете кода в UNO.
  3. Отворете конзолата Arduino.
  4. Изберете 9600 бода (рестартирайте UNO и отново отворете конзолата, ако трябва).
  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 се изключва.

I2C BRICK adhoc команди за подчинени от UNO master

#включва
const байт _num_chars = 32;
char _received_chars [_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 ("АДРЕС 1 ПОТВЪРДИ ПОЛУЧАВАНЕ НА МЕТАДАННИ Н/Д (ЗА M2M)");
Serial.println ("АДРЕС 2 АКТОРСКА КОМАНДА");
Serial.println ();
Serial.println ("АДРЕСИ В АВТОБУСА:");
scan_i2c_addresses ();
Serial.println ();
Serial.println ("");
}
voidscan_i2c_addresses () {
int device_count = 0;
for (байт адрес = 8; адрес <127; адрес ++)
{
Wire.beginTransmission (адрес);
грешка в байта на 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 ++;
if (ndx> = _num_chars) {
ndx = _ брой_чарси - 1;
}
}
иначе {
_received_chars [ndx] = '\ 0'; // прекратяваме низа
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const Низ получен_стринг = Низ (_received_chars);
if (_has_new_data == true) {
int idx1 = получен_стринг.indexOf ('');
Адрес на низ = получен_стринг.подстринг (0, idx1);
int address_int = address.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("INVALID ADDRESS INPUT:");
Serial.println (адрес);
връщане;
}
int idx2 = получен_стринг.indexOf ('', idx1+1);
Код на низ;
ако (idx2 == -1) {
код = получен_стринг.подстринг (idx1+1);
} else {
код = получен_стринг.подстринг (idx1+1, idx2+1);
}
int code_int = code.toInt ();
if (code_int <0 || code_int> 5) {
Serial.println ("INVALID CODE INPUT:");
Serial.println (код);
връщане;
}
bool has_parameter = idx2> -1;
Низов параметър;
if (has_parameter) {
параметър = получен_стринг.подстринг (idx2 + 1, idx2 + 17); // 16 символа макс
if (parameter.length () <1) {
Serial.println ("PARTAMETER MIN. LENGTH 1");
_has_new_data = false;
връщане;
}
} else {
if (code_int> 1) {
Serial.println ("ИЗИСКВАН ПАРАМЕТЪР!");
_has_new_data = false;
връщане;
}
}
Serial.println ();
Serial.print ("input orig =");
Serial.println (получен_стринг);
Serial.print ("address =");
Serial.println (адрес);
Serial.print ("code =");
Serial.println (код);
Serial.print ("параметър =");
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 = false;
}
}

вижте rawuno_i2c_command_input.ino хоствано с ❤ от GitHub

Стъпка 5: Следващи стъпки

Следващи стъпки
Следващи стъпки
Следващи стъпки
Следващи стъпки
Следващи стъпки
Следващи стъпки
Следващи стъпки
Следващи стъпки

Последващият ASSIMILATE ACTOR: 2CH RELAY, който използва тази тухла, има автоматична конфигурация за Crouton чрез метаданните, вече инсталирани в ATTINY85 тук. Изпратеният до Crouton пакет JSON се изпраща чрез най -новия фърмуер за ICOS10. Можете да направите Proof-of-concept на обикновен ESP8266, ако компилацията е твърде много за сега.

Скицата UNO, използвана при тестване, има функция за запазване на нов подчинен адрес в EEPROM на ATTINY85, ако имате сблъсък на целевата си I2C шина. Добавени са няколко схеми, но има различни начини за свързване на веригата надолу по веригата в зависимост от това какво искате да постигнете, така че ще оставя това за вас:)

Препоръчано: