Оглавление:

IOT123 - I2C KY019 BRICK: 5 шагов
IOT123 - I2C KY019 BRICK: 5 шагов

Видео: IOT123 - I2C KY019 BRICK: 5 шагов

Видео: IOT123 - I2C KY019 BRICK: 5 шагов
Видео: Keyboard PCB | Serial output | Alphabet Numbers Signs 2024, Декабрь
Anonim
IOT123 - I2C KY019 КИРПИЧ
IOT123 - I2C KY019 КИРПИЧ
IOT123 - I2C KY019 КИРПИЧ
IOT123 - I2C KY019 КИРПИЧ

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

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

Этот КИРПИЧ I2C KY019 является первым из АКТЕРОВ и имеет одно свойство чтения / записи:

Переключатель (истина / ложь)

Сначала мы рассмотрим сенсорные блоки типа Keyes, поскольку они поставляются с витаминами (необходимы дополнительные компоненты) и относительно дешевы (я купил 37 за 10 австралийских долларов). Другие платы / схемы будут представлены в I2C BRICKS.

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

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

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

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

  1. KY-019 Реле (1)
  2. ATTINY85 20ПУ (1)
  3. 1 "двусторонняя макетная плата (1)
  4. Мужской заголовок 90º (3P, 3P)
  5. Монтажный провод (~ 7)
  6. Припой и железо (1)

Шаг 2: Подготовьте ATTINY85

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

ПРИМЕЧАНИЕ. Если вы собираетесь интегрировать Crouton, воспользуйтесь библиотекой отсюда и используйте установленный пример «attiny_ky019».

AttinyCore от Boards Manager не требуется. Записать загрузчик «EEPROM Retained», «8mHZ Internal» (все конфигурации показаны выше).

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

ZIP-архив библиотеки можно найти здесь.

Инструкции по «Импорту библиотеки ZIP» здесь.

После установки библиотеки вы можете открыть пример attiny_ky019.

Чтобы загрузить прошивку в ATTINY85, вы можете найти более подробную информацию в этих инструкциях:

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

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

www.instructables.com/id/How-to-program-th…

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

www.instructables.com/id/Programming-an-At…

Лучше всего протестировать через макетную плату, прежде чем продолжить.

Если у вас есть ДАТЧИКИ ASSIMILATE, убедитесь, что адрес ведомого устройства отличается в комбинации хоста SENSOR / MCU, то есть все субъекты Relay могут иметь один и тот же адрес, если у вас есть только один субъект Relay на MCU / узле.

Шаг 3: соберите схему

Соберите схему
Соберите схему
Соберите схему
Соберите схему
Соберите схему
Соберите схему
Соберите схему
Соберите схему
  1. На лицевой стороне вставьте компоненты ATTINY85 (1), 3-полюсные 90-градусные вилки (2) (3) и припаяйте сзади.
  2. Сзади проследите желтый провод от ЖЕЛТОГО1 до ЖЕЛТОГО2 и припаяйте.
  3. Сзади проследите синий провод от СИНЕГО 1 до СИНЕГО2 и припаяйте.
  4. Сзади проследите зеленый провод от GREEN1 до GREEN2 и припаяйте.
  5. Сзади проследите черный провод от ЧЕРНОГО1 до ЧЕРНОГО2 и припаяйте.
  6. Сзади проследите черный провод от ЧЕРНОГО3 до ЧЕРНОГО4 и припаяйте.
  7. Сзади проследите красный провод от RED1 до RED2 и припаяйте.
  8. Сзади проследите красный провод от RED3 до RED4 и припаяйте.

Теперь реле можно подключить напрямую через свои контакты к печатной плате или с помощью проводов к точкам, указанным в контакте контактов.

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

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

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

Ранее мы создали 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 и выберите 9600 бод (перезапустите UNO и снова откройте консоль, если необходимо).
  4. Адрес ведомого устройства будет напечатан на консоли.
  5. Когда, введите в поле отправки 2 1 (так 12 2 1), и реле включится.
  6. Когда, введите в поле отправки 2 0 (так 12 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

Шаг 5. Дальнейшие действия

Следующие шаги
Следующие шаги
Следующие шаги
Следующие шаги
Следующие шаги
Следующие шаги
Следующие шаги
Следующие шаги

Последующий ASSIMILATE ACTOR: KY019, который использует этот кирпич, имеет автоматическую настройку для Crouton с помощью метаданных, уже установленных в ATTINY85 здесь. Пакет JSON, отправленный в Crouton, отправляется через последнюю версию прошивки для ICOS10. Вы можете сделать Proof-of-Concept на обычном ESP8266, если сборка пока слишком велика.

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

Было добавлено несколько схем, но есть разные способы подключения нисходящей цепи в зависимости от того, чего вы хотите достичь, поэтому я оставлю это вам:)

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