Оглавление:

IOT123 - I2C BRICK MASTER JIG: 4 шага
IOT123 - I2C BRICK MASTER JIG: 4 шага

Видео: IOT123 - I2C BRICK MASTER JIG: 4 шага

Видео: IOT123 - I2C BRICK MASTER JIG: 4 шага
Видео: How LEGO Minifigures are made 2024, Ноябрь
Anonim
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG
IOT123 - I2C BRICK MASTER JIG

При разработке ASSIMILATE SENSORS и ACTORS я держу UNO под рукой для отправки специальных команд I2C разрабатываемым прототипам. Одним из преимуществ I2C BRICKS является стандартизированная распиновка. Вместо того, чтобы каждый раз использовать макетные провода (см. Фритцинги), используется прочный низкотехнологичный экран.

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

Материалы и инструменты
Материалы и инструменты
Материалы и инструменты
Материалы и инструменты
Материалы и инструменты
Материалы и инструменты
Материалы и инструменты
Материалы и инструменты
  1. Печатная плата Uninersal 4 см x 6 см (1)
  2. Монтажный провод (~ 6)
  3. Резисторы 4K7 (2) 6
  4. Мужской заголовок (12P, 8P)
  5. Женский заголовок (9P, или 3P, 3P)
  6. Припой и железо (1)

Шаг 2: Сборка

сборка
сборка
сборка
сборка
сборка
сборка

Если вы используете 2 3-контактных гнездовых разъема вместо 1-го 9-контактного женского разъема, ДАТЧИК / АКТОРЫ ASSIMILATE SENSOR / ACTORS поместятся на JIG, не разбирая их.

С проводки зачистите концы до 10 мм и залудите их.

  1. В нижней части печатной платы вставьте вилку (1) (2) и припаяйте ее сверху.
  2. На верхнюю часть печатной платы вставьте гнездовой разъем (3) и припаяйте его снизу.
  3. Сверху просуньте красный провод в красный 1 и красный 2.
  4. Внизу сквозной провод от RED1 до RED3.
  5. Снизу просуньте провод из RED2 в RED5 и припаяйте.
  6. Сверху проденьте провод из RED3 в RED4 и припаяйте.
  7. Сверху проденьте красный провод в RED6 и RED7.
  8. Внизу сквозной провод от RED6 к RED8.
  9. Снизу просуньте провод от RED7 к RED10 и припаяйте.
  10. Сверху проденьте провод из RED8 в RED9 и припаяйте.
  11. Сверху просуньте черный провод в ЧЕРНЫЙ1 и ЧЕРНЫЙ2.
  12. Внизу сквозной провод от ЧЕРНОГО1 к ЧЕРНОМУ3.
  13. Снизу просуньте провод из ЧЕРНОГО 2 в ЧЕРНЫЙ 5 и припаяйте.
  14. Сверху просуньте провод из ЧЕРНОГО 3 в ЧЕРНЫЙ 4 и припаяйте.
  15. Сверху проденьте синий провод в СИНИЙ1 и СИНИЙ2.
  16. Внизу сквозной провод от СИНЕГО 1 к СИНЕМУ3.
  17. Снизу просуньте провод от СИНЕГО 2 к СИНЕМУ 5 и припаяйте.
  18. Сверху проденьте провод через отверстие от СИНЕГО 3 к СИНЕМУ 4 и припаяйте.
  19. Сверху проденьте зеленый провод в ЗЕЛЕНЫЙ1 и ЗЕЛЕНЫЙ2.
  20. Внизу сквозной провод от ЗЕЛЕНОГО1 к ЗЕЛЁНОМ3.
  21. Снизу проденьте провод через отверстие от ЗЕЛЕНОГО2 к ЗЕЛЁНОМ5 и припаяйте.
  22. Сверху проденьте провод через отверстие от ЗЕЛЕНОГО3 к ЗЕЛЕНОМУ 4 и припаяйте.
  23. Вверху вставьте резистор 4K7 в отверстия SILVER3 и SILVER4.
  24. Внизу просуньте провод из SILVER3 в GREEN5 и припаяйте.
  25. Снизу просуньте провод от SILVER4 к RED10 и припаяйте.
  26. Вверху вставьте резистор 4K7 в отверстия SILVER1 и SILVER2.
  27. Внизу просуньте провод от SILVER1 к BLUE5 и припаяйте.
  28. Снизу просуньте провод от SILVER2 к RED10 и припаяйте.

Шаг 3. Код для ООН

Кодекс ООН
Кодекс ООН

Набросок здесь рудиментарный. Это позволяет вам использовать консольный вход, чтобы UNO отправлял сообщения I2C на I2C ATTINY85 BRICK.

Все инструкции выводятся на экран с поддерживаемыми параметрами.

Специальные команды 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

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

Из представленных сборок видно, что движущихся частей достаточно, чтобы вы могли построить свою собственную АССИМИЛЯЦИОННУЮ СЕТЬ IOT.

Каждая из отдельных функций узлов (датчики и субъекты) управляется децентрализованно, независимо от того, знает ли мастер MCU какие-либо сведения о поддерживаемых функциях.

Любое приложение, подключенное к брокеру MQTT, может контролировать / наблюдать за каждой функцией узла IOT. Это M2M, веб-приложения, IFTTT и так далее. Гораздо проще (или, если хотите, богаче) интерфейсы с вашим миром IOT.

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