Съдържание:
- Стъпка 1: Материали и инструменти
- Стъпка 2: Подгответе ATTINY85
- Стъпка 3: Сглобяване на показателите
- Стъпка 4: Сглобяване на главната верига
- Стъпка 5: Тестване
- Стъпка 6: Следващи стъпки
Видео: IOT123 - I2C СЪРДЕЧНА ТУХА: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Тухлите 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: Материали и инструменти
Има пълен списък на материали и източници.
- Хартиена платка (7 x 7 отвора)
- LED (червен, зелен, син)
- Резистори (3 от 1K)
- ATTINY85 20PU (1)
- 1 "Двустранна протоборд (1)
- Заглавие за мъже 90º (3P, 3P)
- Мъжко заглавие (2P, 2P)
- Джъмпер шунт (1)
- Свързващ проводник (~ 7)
- Припой и желязо (1)
Стъпка 2: Подгответе 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 е прекъснат) или друг визуален/сигнален индикатор. Стойностите на резистора ще зависят от личните предпочитания от това колко ярки искате да ги искате.
- Отгоре поставете син светодиод в RED1 (+) и BLACK1 (G) и запойте отдолу.
- На дъното огънете кабела от RED1, така че да докосне медната подложка на SILVER8 и да го подрежете.
- На дъното отрежете кабела от BLACK1 над спойката.
- Отгоре вмъкнете зелен светодиод в RED2 (+) и BLACK2 (G) и запойте отдолу.
- На дъното огънете проводника от RED2, така че да докосне медната подложка на SILVER9 и да го подрежете.
- На дъното подрежете кабела от BLACK2 над спойката.
- Отгоре вмъкнете червен светодиод в ЧЕРВЕНО3 (+) и ЧЕРНО3 (G) и запойте отдолу.
- На дъното огънете кабела от RED3, така че да докосне медната подложка на SILVER10 и да го подрежете.
- На дъното подрежете кабела от BLACK3 над спойката.
- Отгоре поставете 1K резистор в проходните отвори SILVER1 и SILVER4.
- На дъното проследете, подрежете и запоявайте кабела от СРЕБЪРНО1 към ЧЕРНО1.
- Отгоре поставете 1K резистор в отворите SILVER2 и SILVER4.
- На дъното проследете, подрежете и запоявайте кабела от SILVER2 към BLACK2.
- Отгоре поставете 1K резистор в отворите SILVER3 и SILVER4.
- На дъното проследете, подрежете и запоявайте кабела от СРЕБЪРНО3 към ЧЕРНО3.
- Отдолу запоявайте проводници на SILVER4 и подрязвайте на около 5 мм, като се простират.
- Отдолу запояйте черен проводник върху SILVER4.
- Отдолу запояйте бял проводник в SILVER5, като осигурите непрекъснатост за водене от RED1.
- Отдолу запоявайте жълт проводник в SILVER6, като гарантирате непрекъснатост на извеждането от RED2.
- Отдолу запоявайте оранжев проводник в SILVER7, осигурявайки непрекъснатост за водене от RED3.
Стъпка 4: Сглобяване на главната верига
Монтаж:
- Отпред поставете компонентите ATTINY85 (1), 3P 90deg мъжки хедери (2) (3), 3P мъжки хедери (4) (5) и спойнете отзад.
- Отзад проследете жълт проводник от ЖЪЛТО1 до ЖЪЛТО2 и запойте.
- Отзад проследете оранжев проводник от ORANGE1 до ORANGE2 и запойте.
- Отзад проследете син проводник от СИН1 до СИН2 и запойте.
- Отзад проследете зелен проводник от ЗЕЛЕН1 до ЗЕЛЕН2 и запойте.
- Отзад проследете бял проводник от БЯЛО1 до БЯЛО2 и запойте.
- Отзад проследете черен проводник от BLACK1 до BLACK2 и запойте.
- Отзад проследете черен проводник от BLACK3 до BLACK4 и запойте.
- Отзад проследете червен проводник от RED1 до RED2 и запойте.
- Отзад проследете гола жица от RED3 до RED4 и запойте.
- Отзад проследете гола жица от СРЕБЪР1 до СРЕБЪР2 и запойте.
- Добавете джъмпер към линията 5V или 3V3.
Ако използвате горните индикатори (вижте схемата на раздаване):
- Отзад запоявайте белия проводник в PB1.
- Отзад запояйте жълтия проводник в PB3.
- Отзад запоявайте оранжевия проводник в PB4.
- Отзад запоявайте черния проводник в GND.
Стъпка 5: Тестване
Очаква се редица от тези ТУРКИ да бъдат на множество възли (MCUs - ESP8266 или ATTINY84) в среда. Това е единичен тест: изпраща I2C команди от UNO към ATTINY, който превключва LED за получаване. Индикаторът ATTINY ALIVE свети.
По -рано сме изградили I2C SHIELD за Arduino.
Ако вместо това искате да го направите на червено:
- Свържете 5.0V на UNO към VCC на BRICK.
- Свържете GND на UNO към GND на BRICK.
- Свържете A5 на UNO към SCL на BRICK.
- Свържете A4 на UNO към SDA на BRICK.
- Свържете издърпващ резистор 4K7 от SDA към VCC.
- Свържете издърпващ резистор 4K7 от SCL към VCC.
Изпълнение на теста
- Свържете вашия UNO към вашия Dev компютър с USB.
- Качете кода в UNO.
- Отворете конзолата Arduino.
- Изберете 9600 бода (рестартирайте UNO и отново отворете конзолата, ако трябва).
- Адресът на подчиненото устройство ще се отпечата на конзолата.
- Когато, въведете в полето за изпращане 2 1 (така 16 2 1) и LED за получаване се включва.
- Когато, въведете в полето за изпращане 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 шина.
Препоръчано:
Сърдечна честота на STONE LCD: 7 стъпки
Пулс на STONE LCD: Преди време открих модул за сензор за сърдечен ритъм MAX30100 при пазаруване онлайн. Този модул може да събира данни за кислород в кръвта и сърдечната честота на потребителите, които също са лесни и удобни за използване. Според данните открих, че има библиотеки на M
Интернет неонова LED сърдечна светлина: 6 стъпки (със снимки)
Интернет неонова LED сърдечна светлина: Мили извън този специален човек или просто социално дистанциране? Искате ли да ги уведомите, че мислите за тях? Изградете тази свързана с интернет неонова LED сърдечна лампа и я настройте да бие от вашия телефон или компютър, по всяко време и отвсякъде. Тази инструкция
Сърдечна лампа: 6 стъпки (със снимки)
Heart Lamp: Здравейте на всички! Това е първият ми проект с инструкции. Исках да направя лампа със сърце, която да осветява бюрата ни. В този проект се използват 3D отпечатани части. Предпочетох прозрачна нажежаема жичка да отразява светлината навън и използвах червено захранване за осветяване
Сърдечна светлина: 3 стъпки
Сърдечна светлина: Сърцева светлинна верига с печатна платка от веригата на Stariver
IOT123 - LIR2032 АКУМУЛАТОРНА ТУХА: 4 стъпки
IOT123 - LIR2032 АКУМУЛАТОРНА ТУХА: IOT123 ТУРЦИТЕ са модулни модули „Направи си сам“, които могат да се комбинират с други IOT123 ТУКЛИ, за да се добави функционалност към възел или носим. Те се основават на инчови квадратни, двустранни протобордове със свързани помежду си отвори. Въпреки че инструкциите