Оглавление:
Видео: IOT123 - I2C BRICK MASTER JIG: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
При разработке ASSIMILATE SENSORS и ACTORS я держу UNO под рукой для отправки специальных команд I2C разрабатываемым прототипам. Одним из преимуществ I2C BRICKS является стандартизированная распиновка. Вместо того, чтобы каждый раз использовать макетные провода (см. Фритцинги), используется прочный низкотехнологичный экран.
Шаг 1. Материалы и инструменты
- Печатная плата Uninersal 4 см x 6 см (1)
- Монтажный провод (~ 6)
- Резисторы 4K7 (2) 6
- Мужской заголовок (12P, 8P)
- Женский заголовок (9P, или 3P, 3P)
- Припой и железо (1)
Шаг 2: Сборка
Если вы используете 2 3-контактных гнездовых разъема вместо 1-го 9-контактного женского разъема, ДАТЧИК / АКТОРЫ ASSIMILATE SENSOR / ACTORS поместятся на JIG, не разбирая их.
С проводки зачистите концы до 10 мм и залудите их.
- В нижней части печатной платы вставьте вилку (1) (2) и припаяйте ее сверху.
- На верхнюю часть печатной платы вставьте гнездовой разъем (3) и припаяйте его снизу.
- Сверху просуньте красный провод в красный 1 и красный 2.
- Внизу сквозной провод от RED1 до RED3.
- Снизу просуньте провод из RED2 в RED5 и припаяйте.
- Сверху проденьте провод из RED3 в RED4 и припаяйте.
- Сверху проденьте красный провод в RED6 и RED7.
- Внизу сквозной провод от RED6 к RED8.
- Снизу просуньте провод от RED7 к RED10 и припаяйте.
- Сверху проденьте провод из RED8 в RED9 и припаяйте.
- Сверху просуньте черный провод в ЧЕРНЫЙ1 и ЧЕРНЫЙ2.
- Внизу сквозной провод от ЧЕРНОГО1 к ЧЕРНОМУ3.
- Снизу просуньте провод из ЧЕРНОГО 2 в ЧЕРНЫЙ 5 и припаяйте.
- Сверху просуньте провод из ЧЕРНОГО 3 в ЧЕРНЫЙ 4 и припаяйте.
- Сверху проденьте синий провод в СИНИЙ1 и СИНИЙ2.
- Внизу сквозной провод от СИНЕГО 1 к СИНЕМУ3.
- Снизу просуньте провод от СИНЕГО 2 к СИНЕМУ 5 и припаяйте.
- Сверху проденьте провод через отверстие от СИНЕГО 3 к СИНЕМУ 4 и припаяйте.
- Сверху проденьте зеленый провод в ЗЕЛЕНЫЙ1 и ЗЕЛЕНЫЙ2.
- Внизу сквозной провод от ЗЕЛЕНОГО1 к ЗЕЛЁНОМ3.
- Снизу проденьте провод через отверстие от ЗЕЛЕНОГО2 к ЗЕЛЁНОМ5 и припаяйте.
- Сверху проденьте провод через отверстие от ЗЕЛЕНОГО3 к ЗЕЛЕНОМУ 4 и припаяйте.
- Вверху вставьте резистор 4K7 в отверстия SILVER3 и SILVER4.
- Внизу просуньте провод из SILVER3 в GREEN5 и припаяйте.
- Снизу просуньте провод от SILVER4 к RED10 и припаяйте.
- Вверху вставьте резистор 4K7 в отверстия SILVER1 и SILVER2.
- Внизу просуньте провод от SILVER1 к BLUE5 и припаяйте.
- Снизу просуньте провод от 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.
Рекомендуемые:
Нажмите Brick Switch для Макея Макея: 4 шага (с изображениями)
Click Brick Switch для Makey Makey: этот переключатель, напечатанный на 3D-принтере, позволит пользователю превратить Makey Makey в «скольжение пальца»; для " щелчка " в играх или стрелки вправо / влево для прокрутки презентаций. Добавление правого и левого клеммных колодок для
IOT123 - ПЕРЕРЫВ ВРАЧА ЗАРЯДНОГО УСТРОЙСТВА: 3 шага
IOT123 - ПЕРЕРЫВ ЗАРЯДНОГО ДОКТОРА: во время отладки версии 0.4 КОНТРОЛЛЕРА СОЛНЕЧНОГО ТРЕКЕРА я потратил много времени на подключение мультиметра к различным схемам переключателя NPN. Мультиметр не имел удобных для макетной платы соединений. Я посмотрел на несколько мониторов на базе MCU, включая
IOT123 - ДАТЧИК АССИМИЛЯЦИИ: TEMT6000: 4 шага
IOT123 - ASSIMILATE SENSOR: TEMT6000: ASSIMILATE SENSORS - это датчики среды, которые имеют добавленный уровень аппаратной и программной абстракции, что позволяет добавлять совершенно новые типы в ASSIMILATE SENSOR HUB и передавать показания на сервер MQTT без добавления кода
IOT123 - 5PIN ATTINY85 NRF24L01 BRICK: 4 шага
IOT123 - 5PIN ATTINY85 NRF24L01 КИРПИЧ: ОБНОВЛЕНИЕ: Эта установка в основном академическая или является базой для тестирования программного обеспечения / источника питания. Даже когда PB5 отключен как RESET, он не считывает значения точно с помощью analogRead: основного варианта использования показаний датчиков. Посмотрим на настройку ATTINY84
IOT123 - ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ATTINY85: последовательная сборка JIG: 4 шага
IOT123 - ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ATTINY85: Я использовал ATTINY85 для гибридных приложений с маломощным сенсором. Первоначально я думал, что нет возможности отлаживать эти чипы с помощью консоли, и использовал несколько хорошеньких «там». методы, чтобы посмотреть, что происходит во время выполнения. Потом я наткнулся на SoftwareSeria