Оглавление:

IOT123 - I2C HEARTBEAT BRICK: 6 шагов
IOT123 - I2C HEARTBEAT BRICK: 6 шагов

Видео: IOT123 - I2C HEARTBEAT BRICK: 6 шагов

Видео: IOT123 - I2C HEARTBEAT BRICK: 6 шагов
Видео: Zaful Bikini HAUL 2018 | TRY ON | Valerie pac 2024, Ноябрь
Anonim
IOT123 - I2C КИРПИЧ СЕРДЦА
IOT123 - I2C КИРПИЧ СЕРДЦА
IOT123 - I2C КИРПИЧ СЕРДЦА
IOT123 - I2C КИРПИЧ СЕРДЦА
IOT123 - I2C КИРПИЧ СЕРДЦА
IOT123 - I2C КИРПИЧ СЕРДЦА

КИРПИЧЫ IOT123 - это модульные блоки DIY, которые можно смешивать с другими КИРПИЧами IOT123, чтобы добавить функциональность узлу или носимому устройству. В их основе лежат двухсторонние прототипы квадратного сечения дюйма с соединенными между собой сквозными отверстиями.

Предполагается, что некоторое количество этих КИРПИЧОВ будет на нескольких узлах (главные MCU - ESP8266 или ATTINY84) на сайте. MCU не нуждается в предварительных знаниях о назначении датчиков или программных потребностях. Он сканирует узлы I2C, а затем запрашивает дамп свойств (данные датчика) от каждого ведомого устройства. Эти КИРПИЧЫ обеспечивают питание 5,0 В, 3,3 В и другую линию AUX, которую можно настроить.

Этот I2C HEARTBEAT BRICK указывает, жив ли ведомое устройство ATTINY, а также трафик I2C и имеет одно свойство:

СТАТУС («ЖИВУЮ»)

PB1 (белый) указывает на здоровье ATTINY.

PB3 (желтый) переключается с запросами I2C от мастера.

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

Сквозные отверстия, примыкающие к ATTINY85, остались неиспользованными, чтобы можно было использовать программатор pogo pin, в то время как DIP8 припаян к печатной плате. Еще одна абстракция - упаковка КИРПИЧОВ в маленькие цилиндры, которые подключаются к концентратору D1M WIFI BLOCK и перекачивают значения на сервер MQTT.

Шаг 1. Материалы и инструменты

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

Есть полный список материалов и источников.

  1. Бумажная печатная плата (7 x 7 отверстий)
  2. Светодиоды (красный, зеленый, синий)
  3. Резисторы (3 шт. По 1 кОм)
  4. ATTINY85 20ПУ (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 от Boards Manager не требуется. Записать загрузчик «EEPROM Retained», «8mHZ Internal» (все конфигурации показаны выше).

Репозиторий кода можно найти здесь.

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, убедитесь, что адрес ведомого устройства отличается в комбинации хоста ДАТЧИК / MCU, например. все субъекты Relay могут иметь один и тот же адрес, если у вас есть только один субъект Relay на MCU / узле.

Шаг 3: Сборка индикаторов

Сборка индикаторов
Сборка индикаторов
Сборка индикаторов
Сборка индикаторов
Сборка индикаторов
Сборка индикаторов

Индикаторы должны быть полностью настраиваемыми. Это сигналы событий от главной цепи, которые отображаются как Heartbeats. Для этой сборки мы будем использовать светодиодные индикаторы; ваша сборка может использовать реле (да, VCC сломан) или другой визуальный / сигнальный индикатор. Номиналы резисторов будут зависеть от личных предпочтений от того, насколько яркими они вам нужны.

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

Шаг 4: Сборка главной цепи

Сборка главной цепи
Сборка главной цепи
Сборка главной цепи
Сборка главной цепи
Сборка главной цепи
Сборка главной цепи

Сборка:

  1. На передней панели вставьте компоненты ATTINY85 (1), 3-полюсные 90-градусные вилочные разъемы (2) (3), 3-полюсные вилочные разъемы (4) (5) и припаяйте сзади.
  2. Сзади проследите желтый провод от ЖЕЛТОГО1 до ЖЕЛТОГО2 и припаяйте.
  3. Сзади проследите оранжевый провод от ORANGE1 до ORANGE2 и припаяйте.
  4. Сзади проследите синий провод от СИНЕГО 1 до СИНЕГО2 и припаяйте.
  5. Сзади проследите зеленый провод от GREEN1 до GREEN2 и припаяйте.
  6. Сзади проследите белый провод от БЕЛОГО1 до БЕЛОГО2 и припаяйте.
  7. Сзади проследите черный провод от ЧЕРНОГО1 до ЧЕРНОГО2 и припаяйте.
  8. Сзади проследите черный провод от ЧЕРНОГО3 до ЧЕРНОГО4 и припаяйте.
  9. Сзади проследите красный провод от RED1 до RED2 и припаяйте.
  10. Сзади проследите оголенный провод от RED3 до RED4 и припаяйте.
  11. Сзади проследите оголенный провод от SILVER1 до SILVER2 и припаяйте.
  12. Добавьте перемычку на линию 5V или 3V3.

При использовании индикаторов выше (см. Распиновку):

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

Шаг 5: Тестирование

Тестирование
Тестирование
Тестирование
Тестирование
Тестирование
Тестирование
Тестирование
Тестирование

Предполагается, что некоторые из этих КИРПИЧОВ будут находиться на нескольких узлах (MCU - ESP8266 или ATTINY84) в среде. Это модульный тест: отправляет команды I2C от UNO на ATTINY, который переключает индикатор приема. Светодиод ATTINY ALIVE горит постоянно.

Ранее мы создали I2C SHIELD для Arduino.

Если вы хотите вместо этого сделать макет:

  1. Подключите 5,0 В на UNO к VCC на BRICK.
  2. Подключите GND на UNO к GND на КИРПИЧЕ.
  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), и загорится индикатор получения.
  7. Когда введите в поле отправки 2 0 (так 16 2 0), и индикатор получения погаснет.

Специальные команды I2C BRICK для ведомых устройств от ведущего устройства UNO

#включают
константный байт _num_chars = 32;
char _received_chars [_num_chars]; // массив для хранения полученных данных
логическое _has_new_data = false;
voidsetup () {
Serial.begin (9600);
Serial.println ();
Serial.println ("СОБИРАЙТЕ АКТЕР IOT / РЕДАКТОР EEPROM ДАТЧИКА");
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;
для (адрес байта = 8; адрес <127; адрес ++)
{
Wire.beginTransmission (адрес);
const byte error = 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 = _num_chars - 1;
}
}
еще {
_received_chars [ndx] = '\ 0'; // завершаем строку
ndx = 0;
_has_new_data = true;
}
}
}
voidsend_to_i2c () {
char param_buf [16];
const String Received_string = String (_received_chars);
if (_has_new_data == true) {
int idx1 = полученная_строка.indexOf ('');
Адрес строки = полученная_строка.substring (0, idx1);
int address_int = адрес.toInt ();
if (address_int <8 || address_int> 127) {
Serial.println ("НЕВЕРНЫЙ ВХОД АДРЕСА:");
Serial.println (адрес);
возвращение;
}
int idx2 = полученная_строка.indexOf ('', idx1 + 1);
Строковый код;
if (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;
Строковый параметр;
if (has_parameter) {
параметр = полученная_строка.substring (idx2 + 1, idx2 + 17); // не более 16 символов
if (parameter.length () <1) {
Serial.println («МИН. ДЛИНА ПАРТАМЕТРА 1»);
_has_new_data = false;
возвращение;
}
}еще{
if (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 (параметр);
// ОТПРАВИТЬ ЧЕРЕЗ I2C
Wire.beginTransmission (адрес_инт);
Wire.write (code_int);
if (has_parameter) {
параметр.trim ();
strcpy (param_buf, параметр.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 здесь. Пакет JSON, отправленный в Crouton, отправляется через последнюю версию прошивки для ICOS10. Вы можете сделать Proof-of-Concept на обычном ESP8266, если сборка пока слишком велика.

Скетч UNO, используемый при тестировании, имеет функцию для сохранения нового адреса подчиненного устройства в EEPROM на ATTINY85, если у вас есть конфликт на целевой шине I2C.

Рекомендуемые: