Съдържание:

IOT123 - I2C СЪРДЕЧНА ТУХА: 6 стъпки
IOT123 - I2C СЪРДЕЧНА ТУХА: 6 стъпки

Видео: IOT123 - I2C СЪРДЕЧНА ТУХА: 6 стъпки

Видео: IOT123 - I2C СЪРДЕЧНА ТУХА: 6 стъпки
Видео: IOT123 - ICOS10: STRUCTURE 2024, Ноември
Anonim
IOT123 - I2C СЪРДЕЧНА ТУХА
IOT123 - I2C СЪРДЕЧНА ТУХА
IOT123 - I2C СЪРДЕЧНА ТУХА
IOT123 - I2C СЪРДЕЧНА ТУХА
IOT123 - I2C СЪРДЕЧНА ТУХА
IOT123 - I2C СЪРДЕЧНА ТУХА

Тухлите IOT123 са модулни единици „Направи си сам“, които могат да бъдат комбинирани с други IOT123 ТУКЛИ, за да се добави функционалност към възел или носим. Те се основават на инчови квадратни, двустранни протобордове със свързани помежду си отвори.

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

Тази I2C HEARTBEAT тухла показва дали подчиненият ATTINY е жив, също и I2C трафика и има едно свойство:

СЪСТОЯНИЕ ("ЖИВ")

PB1 (бял) показва здравето на ATTINY.

PB3 (жълто) превключва с I2C заявки от главния.

PB4 (оранжево) превключва с I2C приемане от главния.

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

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

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

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

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

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

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

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

Необходим е AttinyCore от мениджъра на борда. Записване на буутлоудъра „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: Сглобяване на показателите

Сглобяване на показателите
Сглобяване на показателите
Сглобяване на показателите
Сглобяване на показателите
Сглобяване на показателите
Сглобяване на показателите

Показателите са предназначени да бъдат напълно адаптивни. Сигналите за събития от главната верига се виждат като сърдечни удари. За тази конструкция ще използваме LED индикатори; вашата конструкция може да използва релета (да, VCC е прекъснат) или друг визуален/сигнален индикатор. Стойностите на резистора ще зависят от личните предпочитания от това колко ярки искате да ги искате.

  1. Отгоре поставете син светодиод в RED1 (+) и BLACK1 (G) и запойте отдолу.
  2. На дъното огънете кабела от RED1, така че да докосне медната подложка на SILVER8 и да го подрежете.
  3. На дъното отрежете кабела от BLACK1 над спойката.
  4. Отгоре вмъкнете зелен светодиод в RED2 (+) и BLACK2 (G) и запойте отдолу.
  5. На дъното огънете проводника от RED2, така че да докосне медната подложка на SILVER9 и да го подрежете.
  6. На дъното подрежете кабела от BLACK2 над спойката.
  7. Отгоре вмъкнете червен светодиод в ЧЕРВЕНО3 (+) и ЧЕРНО3 (G) и запойте отдолу.
  8. На дъното огънете кабела от RED3, така че да докосне медната подложка на SILVER10 и да го подрежете.
  9. На дъното подрежете кабела от BLACK3 над спойката.
  10. Отгоре поставете 1K резистор в проходните отвори SILVER1 и SILVER4.
  11. На дъното проследете, подрежете и запоявайте кабела от СРЕБЪРНО1 към ЧЕРНО1.
  12. Отгоре поставете 1K резистор в отворите SILVER2 и SILVER4.
  13. На дъното проследете, подрежете и запоявайте кабела от SILVER2 към BLACK2.
  14. Отгоре поставете 1K резистор в отворите SILVER3 и SILVER4.
  15. На дъното проследете, подрежете и запоявайте кабела от СРЕБЪРНО3 към ЧЕРНО3.
  16. Отдолу запоявайте проводници на SILVER4 и подрязвайте на около 5 мм, като се простират.
  17. Отдолу запояйте черен проводник върху SILVER4.
  18. Отдолу запояйте бял проводник в SILVER5, като осигурите непрекъснатост за водене от RED1.
  19. Отдолу запоявайте жълт проводник в SILVER6, като гарантирате непрекъснатост на извеждането от RED2.
  20. Отдолу запоявайте оранжев проводник в SILVER7, осигурявайки непрекъснатост за водене от RED3.

Стъпка 4: Сглобяване на главната верига

Сглобяване на главната верига
Сглобяване на главната верига
Сглобяване на главната верига
Сглобяване на главната верига
Сглобяване на главната верига
Сглобяване на главната верига

Монтаж:

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

Ако използвате горните индикатори (вижте схемата на раздаване):

  1. Отзад запоявайте белия проводник в PB1.
  2. Отзад запояйте жълтия проводник в PB3.
  3. Отзад запоявайте оранжевия проводник в PB4.
  4. Отзад запоявайте черния проводник в GND.

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

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

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

По -рано сме изградили 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 1 (така 16 2 1) и LED за получаване се включва.
  7. Когато, въведете в полето за изпращане 2 0 (така 16 2 0) и светодиодът за получаване се изключва.

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

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

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

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

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

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