<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I2CHUB_V1 &#8211; IoT-devices, LLC &#8211; Electronics manufacturer for IoT</title>
	<atom:link href="https://iot-devices.com.ua/tag/i2chub_v1/feed/" rel="self" type="application/rss+xml" />
	<link>https://iot-devices.com.ua</link>
	<description>Від модулів до складних пристроїв</description>
	<lastBuildDate>Sun, 07 Jan 2024 17:30:24 +0000</lastBuildDate>
	<language>uk</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://iot-devices.com.ua/wp-content/uploads/2020/05/iot-devices_logo_inversed_kromka_512x512_82ce62_white-100x100.jpg</url>
	<title>I2CHUB_V1 &#8211; IoT-devices, LLC &#8211; Electronics manufacturer for IoT</title>
	<link>https://iot-devices.com.ua</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Термометр LM75: підключення  до ESP12.OLED_V1 у ESPHome</title>
		<link>https://iot-devices.com.ua/lm75-thermometer-connection-to-esp12-oled_v1-in-esphome/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Sun, 07 Jan 2024 11:21:20 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[ESP12.OLED]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[ESPHome]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[I2CHUB_V1]]></category>
		<category><![CDATA[LM75]]></category>
		<category><![CDATA[yaml]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=3223</guid>

					<description><![CDATA[Всі хто займається DIY IoT проектами знайомі з сенсором температури LM75. Термометр LM75 &#8211; це дешевий і зручний сенсор, який має достатню точність та діапазон вимірювання.&#160; Та найголовніша його перевага у тому, що він працює через I2C шину.&#160; Чому ці термометри є недооціненими Хтось може зауважити, що LM75 це не найкращий сенсор за своїми технологічними [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Всі хто займається DIY IoT проектами знайомі з сенсором температури LM75. Термометр LM75 &#8211; це дешевий і зручний сенсор, який має достатню точність та діапазон вимірювання.&nbsp;</p>



<p class="wp-block-paragraph">Та найголовніша його перевага у тому, що він працює через I2C шину.&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/2IO_QsYCPegb15n4XkZZsZDiHSr8LHAXmo0eJKCdHTLIiyRERwwLw8AZLHsOyJnZ_85ciPBnnY23iEOM8HTMqSwMHFZrgcqfWqxqIV2IVVB4kx3fCC8g7F9LLwW0iX_haE7DYUq38NYbpO8Er0IQdGw" alt=""/></figure>



<h1 class="wp-block-heading">Чому ці термометри є недооціненими</h1>



<p class="wp-block-paragraph">Хтось може зауважити, що LM75 це не найкращий сенсор за своїми технологічними особливостями і виконанням у вигляді мікросхеми. І дійсно, є багато інших типів сенсорів температури, такі як <a href="https://esphome.io/components/sensor/dallas.html?highlight=wire#dallas-temperature-sensor" target="_blank" rel="noopener">1-Wire Dallas&nbsp; DS18b20</a>. Ці сенсори мають одно-провідне підключення та багато інших конструктивних переваг, таких як вологозахищені металізовані корпуси у вигляді капсули, тощо. На шину 1-Wire можливо підключити багато термометрів на одному дроті, 1Wire підтримує контроль помилок та ідентифікацію пристроїв, тощо, тощо.</p>



<p class="wp-block-paragraph">Але у шини 1-Wire є один і найголовніший недолік &#8211; для цієї шини не випускають інших пристроїв, крім термометрів. Точніше не так, їх випускають, але це настільки не популярний сегмент, що їх неможливо купити.</p>



<p class="wp-block-paragraph">Коли нам потрібно побудувати пристрій середньої складності, як-от метеостанція, одразу декілька різноманітних сенсорів та інших периферійних пристроїв необхідно підключати до головного контролера (перелік, наприклад):</p>



<ul class="wp-block-list"><li>Сенсор BME680 / BME280 I2C / SPI;</li><li>Сенсор DS18b20 1-Wire;</li><li>Дисплей SPI / I2C;</li><li>Сенсор блискавки AS3935 SPI / I2C;</li><li>Сенсор освітленості MAX44009 I2C;</li><li>Сенсор температури та вологості HDC1080 I2C;</li><li>Сенсор CCS811 I2C;</li><li>Сенсор SCD4X I2C;</li></ul>



<p class="wp-block-paragraph">І навіть в ситуації з потужним ESP32 (не кажучи про ESP8266 та подібні контролери, як-от Arduino чи RPI Pico W), ми будемо вимушені вирішувати задачу оптимізації кількості інтерфейсів та протоколів. Адже обробка кількох різних протоколів рано чи пізно вплине на нашу розробку і буде вимагати спрощення не лише на боці апаратного забезпечення (бюджет вільних портів вводу-виводу), а і програмної реалізації драйверів для різних протоколів та інтерфейсів, які мають крутитися паралельно в головному циклі контролера.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><em><strong>Примітка.</strong> Про SPI ми не пишемо тут, адже це спеціалізований протокол з абсолютно іншим призначенням та сильними сторонами, які стосуються хіба що виключних ситуацій, коли йдеться про сенсори.</em></p></blockquote>



<p class="wp-block-paragraph">Тому, на нашу думку варто одразу обирати рішення, які буде можливо легко розширювати та експлуатувати в майбутньому. 1-Wire- та SPI- пристрої мало придатні до таких вимог і через це ми радимо їх не розглядати крім випадків, коли це дійсно необхідно (як у випадку з SPI: дисплеями високої роздільної здатності, чи вимірюванням величин з швидкостями наближеними до реального часу).</p>



<p class="wp-block-paragraph">Варто спробувати будувати оптимальне програмно-апаратне рішення &#8211; робимо крок у бік шини I2C. Тобто, оскільки у нас на головному контролері буде дисплей SSD1306 з I2C, кейпад <a href="https://iot-devices.com.ua/product-uk/i2cui4v1-user-interface-i2c-module-with-5keys-keypad-rgb-led-buzzer/">I2CUI4_V1</a> з I2C &#8211; навіщо нам ставити сенсори температури з якимось іншим інтерфейсом? &#8211; Так і вирішили, буде лише один інтерфейс: шина I2C. Всі з’єднання будуть через поділювач / хаб <a href="https://iot-devices.com.ua/product-uk/i2chub-v1-module-i2c-bus-interfaces-splitter/">I2CHUB_V1</a>, який підтримує підключення до контролера 5 пристроїв одночасно.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><em><strong>Примітка.</strong> Нагадаємо, що I2C &#8211;&nbsp; чудова шина &#8211; дозволяє не лише підключати безліч пристроїв одночасно, а також надає можливості з ідентифікації пристроїв на шині, контролю помилкових даних та можливість гарячої заміни (підключення і відключення пристроїв користувачем на ходу).</em></p></blockquote>



<h1 class="wp-block-heading">Вбудовані у ESPHome драйвери</h1>



<p class="wp-block-paragraph">Втім, коли ми робимо пошук на сайті ESPHome, то виявляється, що сенсор LM75, який ми зібралися використати у проекті в якості термометрів, не підтримується &#8211; вбудованого драйвера немає.</p>



<p class="wp-block-paragraph">Починаємо проводити власне невелике розслідування щодо наявних драйверів у ESPHome для сенсорів температури подібних до LM75 (0.89 USD на Mouser). І виявляємо, що є два інші термометри, для яких вже написано вбудований драйвер у ESPHome:</p>



<ul class="wp-block-list"><li><a href="https://esphome.io/components/sensor/mcp9808" target="_blank" rel="noopener">MCP9808</a> (1.39 USD на Mouser)</li><li><a href="https://esphome.io/components/sensor/tmp1075" target="_blank" rel="noopener">TMP1075</a> (0.74 USD на Mouser)</li></ul>



<p class="wp-block-paragraph">Обидва сенсори нас би влаштували технічно. Вони є в наявності на Mouser та інших подібних майданчиках. Але ми не змогли знайти готові модулі з цими мікросхемами за ціною, яка була б наближено до ціни на модулі з LM75.&nbsp;</p>



<p class="wp-block-paragraph">Ми подумали, що це нас не влаштовує, як не влаштувало б і більшість наших читачів. З огляду на подібність цих чіпів, ніхто не воліє переплачувати за модуль термометра 5-10 разів, якщо у кожному магазині можна купити модуль на базі LM75.</p>



<p class="wp-block-paragraph">Цікаво, що сенсор TMP1075 є сумісним зі специфікацією LM75 (про це чітко вказано у даташит), яка дефакто є галузевим стандартом. Відтак, ми зробили висновок, що можемо спробувати підключити наш LM75-термометр з драйверами для TM1075, які є вбудованими у ESPHome.</p>



<p class="wp-block-paragraph">Але, на жаль, у нас не вийшло зробити таке підключення, навіть зважаючи на те, що адресація на шині, внутрішні регістри є тотожними у згаданих сенсорів. Єдине що їх відрізняє, так це те, що у TMP1075 також є спеціальний регістр ідентифікації, якого не має сенсор LM75. Але навіть спроби внести зміни у перевірку типу сенсора на рівні CPP-коду цього драйвера не дали нам змоги його застосувати з чипом LM75.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><em><strong>Примітка.</strong> Чесно кажучи, нам досі не зрозуміло, чому розробники та контрибутори ESPHome, досі не зробили вбудованого драйвера для LM75. Нам би не довелося писати цю публікацію і проводити купу часу за дивними експериментами.</em></p></blockquote>



<p class="wp-block-paragraph">Тому ми повернулися у вихідну точку і зробили так, як потрібно було зробити з самого початку.&nbsp;</p>



<h1 class="wp-block-heading">Підключення драйвера ззовні</h1>



<p class="wp-block-paragraph">Як ви мабуть знаєте, в ESPHome є щонайменше два механізми підключення власних драйверів пристроїв ззовні: <a href="https://esphome.io/components/sensor/custom.html" target="_blank" rel="noopener">Custom Component</a> та <a href="https://esphome.io/components/external_components" target="_blank" rel="noopener">External Component</a>. </p>



<p class="wp-block-paragraph">Custom component наразі вважається застарілим варіантом інтеграції і не рекомендується документацією ESPHome до використання.&nbsp;</p>



<p class="wp-block-paragraph">Натомість, документація радить використовувати інший, альтернативний спосіб, який на наш погляд, є наразі єдиним, найпростішим та найкращим для виконання інтеграції драйверів власноруч &#8211; External Component.&nbsp;</p>



<p class="wp-block-paragraph">Відмінність External Component полягає у тому, що користувач ESPHome не прописує вручну інтерфейси для потоків даних з сенсора через манівці, а застосовує цілком регламентовані механізми, які до речі застосовуються також всіма іншими компонентами ESPHome:</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/fhNnFHCjYoYeeW3YgVORrZe0q2lyXcUaa4xA8T0t9_3djudr-Oh-DGAgBgDhDNXycpoDgDG9s8-TOZv4eebVcJ_4TYSi3_V_7k1PN8ohzUPVyY3GptHfUwkf9InA6ttQ86HDp9OkrFDhmrSe6FOTOlc" alt=""/></figure>



<p class="wp-block-paragraph">Отже, щоб підключити External Component, спочатку потрібно правильно описати його обвязку. Ми не будемо тут занурюватися у деталі програмування та конфігурацій, адже ми знайшли на GitHub вже готовий компонент для LM75.</p>



<p class="wp-block-paragraph">Щоб додати сенсори LM75, у YAML-конфіг пристрою в ESPHome, потрібно додати лише кілька рядків:</p>



<ul class="wp-block-list"><li>підключити зовнішній компонент (External Component):</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/GiggLaW8SoWJlEFXlWf7k0F6WK3AhbYfrN4R9S5W1FnR0UnApOTweIlfQ8pNje9f1YZFrwnXBVIoWiidj9D1r-9eVaScu6LnZc6xZvGNTWcdagqLFWJJDIXOGLf37IgnxLXaHlJa5sfalcPoYj0NQ_g" alt=""/></figure>



<ul class="wp-block-list"><li>додати сутності сенсорів LM75</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/l7JbCPB76qDdLuZWnWDmjvXdPfJS0COrbhYlSTKwOD-kiEt7DxrkwiUMFcYOvfVGLgImvW9zC7h8X3J3ViYwVggYGbuqlPpwfuLTE8TPDJHVq1E67OW8PRd__e0lSMbPyPUV6RVn8_zN4vaUVps700A" alt=""/></figure>



<p class="wp-block-paragraph">Для зручності ми форкнули репозиторій esphome-lm75, який надано <a href="https://github.com/btomala" target="_blank" rel="noopener">https://github.com/btomala</a> на GitHub у свій акаунт <a href="https://github.com/iotdevicesdev/esphome-lm75" target="_blank" rel="noopener">https://github.com/iotdevicesdev/esphome-lm75</a></p>



<p class="wp-block-paragraph">Приклад, як виглядає підключення драйверів LM75 для контролера ESP12.OLED_V1 виробництва IoT-devices, LLC у ESPHome:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""># YAML Config Example
esphome:
  name: esp12oled-lm75
  friendly_name: esp12oled-lm75
  comment: "Configuration example of two LM75 for ESP12.OLED_V1 with ESPHome firmware"
  project:
    name: "iot-devices.esp12oled-lm75"
    version: "1.0.0"


external_components:
  - source: github://iotdevicesdev/esphome-lm75
    components: [ lm75 ]


esp8266:
  board: nodemcuv2


logger:


api:
  encryption:
    key: "8tDDLc3S5dnSjADItGR5+7KxoUBhUIqeOiJZIXy"


ota:
  password: "c15e9a44e1408352d945b8cd35b79"


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password


  ap:
    ssid: "Test-Node Fallback Hotspot"
    password: "rtF1XxDZ9"


captive_portal:


i2c:
  sda: 4
  scl: 5
  id: i2c_bus


sensor:
  - platform: lm75
    id: temperature
    name: "LM75 temperature"
    update_interval: 30s
    address: 0x48


  - platform: lm75
    id: temperature2
    name: "LM75 temperature2"
    update_interval: 30s
    address: 0x49
# END YAML Config Example
</pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><em><strong>Примітка.</strong> Цей код також є на нашому GitHub: <a href="https://github.com/iotdevicesdev/ESP12.OLED_V1-LM75-ESPHome" target="_blank" rel="noopener">github.com/iotdevicesdev/ESP12.OLED_V1-LM75-ESPHome</a> </em></p></blockquote>



<h1 class="wp-block-heading">Склад проекту</h1>



<p class="wp-block-paragraph">1 x Модуль <a href="https://iot-devices.com.ua/en/product/esp12oled-universal-esp8266-mcuboard-oled-en/">ESP12.OLED_V1</a> з прошивкою ESPHome 2023.12.5;</p>



<p class="wp-block-paragraph">1 x Модуль <a href="https://iot-devices.com.ua/en/product/i2chub-v1-module-i2c-bus-interfaces-splitter/">I2CHUB_V1</a>;</p>



<p class="wp-block-paragraph">1 x Модуль LM75 (no brand);</p>



<p class="wp-block-paragraph">1 x Модуль CJMCU-75.</p>



<h1 class="wp-block-heading">Результати проекту</h1>



<p class="wp-block-paragraph">Головне, що ми хотіли вам розповісти у цьому тексті:</p>



<ol class="wp-block-list"><li>Ми підключили LM75 через механізм External Component настільки легко і просто, що самі не повірили у успіх після складних експериментів з драйвером для TMP1075.</li><li>Конфігурації підтягуються напряму з GitHub, або можуть лінкуватися з локального сховища на вашому ESPHome / HomeAssistant диску. Підключений таким чином External Component автоматично включається у прошивку під час її компіляції.</li><li>Ми перевірили, що з цим компонентом не виникає проблем з адресацією кількох сенсорів LM75 одночасно.</li><li>Все настільки ж просто, як підключити у ESPHome сенсор для якого є вбудований драйвер на кшталт BME280. Простота застосування готового компоненту через метод External Component не йде ні в яке порівняння з застосуванням застарілого методу Custom Component, який ми колись робили для інших своїх задач із сенсором ультрафіолету VEML6070.&nbsp;&nbsp;</li></ol>



<p class="wp-block-paragraph">Як можна бачити на наступних скріншотах, наш проект успішно виконано:</p>



<ul class="wp-block-list"><li>LM75 підключено до контролера ESP12.OLED_V1 з прошивкою ESPHome;</li><li>Два сенсори LM75 одночасно працюють з головним контролером. Там де працює два сенсори, може працювати і вісім (за потреби, LM75 має три піни конфігурації I2C адреси, що дозволяє одночасно працювати з вісьмома сенсорами на кожній шині I2C);</li><li>Дані з сенсорів потрапляють у Home Assistant та виводяться на Dashboard;</li><li>Далі значення сенсорів можуть або автономно виводитися на дисплей контролера ESP12.OLED_V1 засобами прошивки ESPHome, та/або можуть застосовуватися у сценаріях автоматизації Home Assistant.</li></ul>



<h2 class="wp-block-heading">Значення сенсорів LM75 на Dashboard сервера Home Assistant:</h2>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/acaO4mGBATm3R6jzes0mGzzjmRyzUxaL-6iyqv6N8WU7OFE9OMSp491EVcjqcoUL2GHRmAxIZWZJD9XeAB4dOspKdLGxDZWCB3UIDyG3vkJV7-xwE7sH3eahGRzSWIz3SupGSo_-pjFTKhunHcEo9EI" alt=""/></figure>



<h2 class="wp-block-heading">Графіки з Logbook сервера Home Assistant:</h2>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/ptCieHiX5fvP03Sls1EwV4lyliuggL_4NYJglhDjCkdg91jMyGi3wF-6hKYWzKgxDSWx8MRz1lAyHZNT9OI7g0krtebesXDgHHKJJUjNtEahWW_jL2xIx7jqzUDsyAudWB-GPFNB6tc6LTBZlw1dKKU" alt=""/></figure>



<h2 class="wp-block-heading">Значення сенсорів LM75 у меню Developer Tools сервера Home Assistant:</h2>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/D6khohe5sku1MkzapvAicnvyQcwPRACHO-GXe5PQARDyUtOy0FIlymy-ood33FKdA-Amjys9B9mMLQ8hot69UCZd6449YPOR1PjAHGc6ICtuCZt51_j-XG7l9hJSPqvOvQ9b_0GwdtUWBTTEqpms8vQ" alt=""/></figure>



<h2 class="wp-block-heading">Скріншоти консолі ESPHome:</h2>



<ul class="wp-block-list"><li>Пристрої знайдено під час сканування шини I2C (дисплей і два термометри)</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/NJerrlBsGoKpzLNQ5Pbv-erEZkMrZNETE3dMAzkqdfoCPEukPqyjZ8Qb9c7Kpx4pNYH1HSO9vxPxJJkdm5mp-aGXt1DtQK4-MZklgLQOiRsd83zjYum4m9UeYDY4IcFsnflwP-mbxyCiokCRWt0bbVI" alt=""/></figure>



<ul class="wp-block-list"><li>Драйвери для сенсорів LM75 ініціалізовано</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/Y7ulzeeq0M9KBePJRl0vvtU-EVObTNn3n-RDIPB-lsAx9rVp_xdmsYoW5_bpZKXzwm08S5ZVoeTRvkq7NZiFMph-ojmhF2yqRL0wJe4d5-wZwFr8yaTsQp0LINUNUIZBo_niNpuNh_BNlyaAY6-ybKU" alt=""/></figure>



<ul class="wp-block-list"><li>Дані з сенсорів отримує ESPHome та передає у Home Assistant</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/pySE4l9JF_jNWySJ03bDw-1hr8PlL6w6rLtDvjQY6HAwzeB0JFCVAF_7vR5Ypxn7K6Ccm4zrnKLoQqJmCiKCKPPzzfuQFCAB9ouBUG_m2V_R4u7-QxvvxcnrxD9CnVZvCGSb4RvcW2_K9EpbD3tFrw8" alt=""/></figure>



<p class="wp-block-paragraph">Це наразі все, що ми запланували розповісти за цією темою.</p>



<p class="wp-block-paragraph">Дякуємо за увагу!</p>



<p class="wp-block-paragraph">Бажаємо успіхів!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>I2CHUB_V1 &#8211; застосування поділювача інтерфейсів на шині I2C</title>
		<link>https://iot-devices.com.ua/zastosuvannya-podilyuvacha-interfejsiv-na-shyni-i2c/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Mon, 05 Sep 2022 14:24:29 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[application-note]]></category>
		<category><![CDATA[I2C]]></category>
		<category><![CDATA[I2CHUB_V1]]></category>
		<category><![CDATA[technical-note]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=2309</guid>

					<description><![CDATA[Опис задачі Маємо головний контролер системи, до якого нам потрібно підключити декілька пристроїв з інтерфейсом I2C. На рисунку наводимо приблизний класичний набір модулів, які може бути необхідно підключати до головного контролера (MCU). Рис. Приклад різноманітних модулів з шиною I2C Більшість мікроконтролерів (MCU) є мініатюрними пристроями і має дуже обмежений бюджет вільних портів вводу/виводу. Зазвичай на [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Опис задачі</h2>



<p class="wp-block-paragraph"><br>Маємо головний контролер системи, до якого нам потрібно підключити декілька пристроїв з інтерфейсом I2C. На рисунку наводимо приблизний класичний набір модулів, які може бути необхідно підключати до головного контролера (MCU).</p>



<figure class="wp-block-image size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_7_i2c-modules-example_branded.jpg"><img fetchpriority="high" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_7_i2c-modules-example_branded.jpg" alt="" class="wp-image-2315" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_7_i2c-modules-example_branded.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_7_i2c-modules-example_branded-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_7_i2c-modules-example_branded-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_7_i2c-modules-example_branded-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_7_i2c-modules-example_branded-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">Рис. Приклад різноманітних модулів з шиною I2C</p>



<p class="wp-block-paragraph">Більшість мікроконтролерів (MCU) є мініатюрними пристроями і має дуже обмежений бюджет вільних портів вводу/виводу. Зазвичай на контролерах типу Arduino / ESP8266 / ESP32 / STM32 під шину I2C (навіть якщо їх передбачено дві) у реальності можливо зарезервувати лише один інтерфейс: два порти GPIO під сигнальні канали SDA та SCL.</p>



<p class="wp-block-paragraph">Причин цьому щонайменше дві.</p>



<p class="wp-block-paragraph"><strong>По-перше</strong>, GPIO порти &#8211; це коштовний ресурс на головному контролері. Вони задіяні під інші, не менш важливі зовнішні інтерфейси : UART, SPI, Deep Sleep Wakeup, входи під кнопки, виходи під актюатор(и),тощо.</p>



<p class="wp-block-paragraph"><strong>По-друге</strong>, дизайн плати модуля головного контролера має враховувати обмеження за розмірами: чим більше роз’ємів встановлено на цій платі, тим більші лінійні розміри вона буде мати.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Примітка</strong>. Також всі ми знаємо, що послідовну шину I2C може бути реалізовано не лише апаратно, з фіксованими портами вводу-виводу MCU, але і програмно, коли сигнальні лінії шини можуть бути призначені на будь-які порти GPIO MCU. Ба більше, програмна реалізація шини дозволяє об’явити декілька програмних шин I2C з різними Bus_ID.</p></blockquote>



<figure class="wp-block-image size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_2_hw_sw_mcu-i2c-bus_branded.jpg"><img decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_2_hw_sw_mcu-i2c-bus_branded.jpg" alt="" class="wp-image-2319" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_2_hw_sw_mcu-i2c-bus_branded.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_2_hw_sw_mcu-i2c-bus_branded-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_2_hw_sw_mcu-i2c-bus_branded-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_2_hw_sw_mcu-i2c-bus_branded-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_2_hw_sw_mcu-i2c-bus_branded-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">Рис. Апаратна та програмна реалізації шини I2C головного контролера</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Але маніфестація кількох програмних шин I2C одночасно в межах одного MCU скорочує кількість вільних виводів під інші задачі. Через це такими можливостями мало коли користуються. Виключенням можуть бути ситуації, коли така техніка дозволяє уникати проблем, які неможливо вирішити у інший спосіб. Наприклад, колізії адресації (два різних пристрої з однаковою 7-біт адресою) та подібні проблеми. Але навіть для таких проблем ефективніше застосувати апаратний мультиплексор шин I2C, ніж кілька програмних шин I2C.</p></blockquote>



<h2 class="wp-block-heading"><br>Вирішення задачі</h2>



<p class="wp-block-paragraph">Для вирішення проблеми одного порту I2C на MCU найчастіше вдаються до застосування апаратного поділювача інтерфейсів шини I2C. Це пасивний хаб, який розгалужує один наявний інтерфейс I2C у необхідну кількість таких самих інтерфейсів.</p>



<p class="wp-block-paragraph">На ринку є безліч подібних пристроїв, та ми наведемо приклади на пристрої власного виробництва &#8211; <a href="https://iot-devices.com.ua/product-uk/i2chub-v1-module-i2c-bus-interfaces-splitter/">I2CHUB_V1</a>, має 6 портів I2C: 3 x JST HX2.54, 3 x Dupont і два виділені порти живлення.</p>



<figure class="wp-block-image size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_1_i2chub_branded.jpg"><img decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_1_i2chub_branded.jpg" alt="" class="wp-image-2317" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_1_i2chub_branded.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_1_i2chub_branded-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_1_i2chub_branded-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_1_i2chub_branded-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_1_i2chub_branded-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">Рис. Модуль поділювача інтерфейсів I2CHUB_V1 як приклад</p>



<p class="wp-block-paragraph">Ще одним способом, у випадку послідовного інтерфейсу типу шина, яким є I2C, може бути застосування заздалегідь передбачених наскрізних інтерфейсів у окремих модулях сенсорів чи актуаторів, які підключаються на шину.</p>



<figure class="wp-block-image size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_3_two-connector_i2c_modules_branded.jpg"><img loading="lazy" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_3_two-connector_i2c_modules_branded.jpg" alt="" class="wp-image-2322" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_3_two-connector_i2c_modules_branded.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_3_two-connector_i2c_modules_branded-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_3_two-connector_i2c_modules_branded-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_3_two-connector_i2c_modules_branded-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_3_two-connector_i2c_modules_branded-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">Рис. Приклад підключення специфічних модулів сенсорів з двома роз’ємами I2C</p>



<p class="wp-block-paragraph">“Вхідний” інтерфейс кожного такого модуля підключається до MCU або попереднього модуля сенсора на шині, а “вихідний” інтерфейс дозволяє каскадом підключити наступний модуль. Деякі виробники передбачають по два інтерфейси шини I2C саме з цією метою. Але, нажаль, більшість модулів не оснащено такими можливостями. Тому розглядаємо I2C HUB як більш поширений і універсальний підхід. Нижче наводимо основні схеми підключення модулів із застосуванням поділювача / хаба.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Примітка</strong>. Коли зростає кількість з’єднань, степеневим чином зростає:<br>&#8211; кількість точок відмови (PoF, Point of Failure);<br>&#8211; ризик людської помилки під час виконання з’єднань сигналів інтерфейсу.</p></blockquote>



<p class="wp-block-paragraph">З міркувань захисту обладнання від виходу з ладу та помилок монтажу, з метою підвищення загальної надійності системи, радимо:</p>



<ul class="wp-block-list"><li>якомога частіше застосовувати роз’єми з ключем;</li><li>застосовувати модулі з взаємно сумісними електричними інтерфейсами та фізичними роз’ємами.</li></ul>



<p class="wp-block-paragraph">Не дивлячись на те, що ми рекомендуємо застосовувати за можливості роз’єми з ключем, ми намагаємося рахуватися з реаліями ринку електронних компонентів та враховувати потреби споживачів. І тому ми наділили поділювач I2CHUB_V1 можливістю виступати у якості конвертора типу роз’ємів з JST на Dupont і навпаки &#8211; з Dupont на JST.</p>



<p class="wp-block-paragraph"><br>Вважаємо це дуже корисною функцією, адже завдяки можливості вільно розвертати інтерфейсні кабелі JST &#8211; Dupont відповідним боком користувач може підключити до хаба практично будь-який існуючий на ринку модуль з інтерфейсом I2C. Також користувач може вільно використовувати власні штирьові кабелі Dupont &#8211; Dupont.<br>Для опції &#8220;<em>Замовлення з кабелями</em>&#8221; в модулі I2CHUB_V1 роз&#8217;єми завжди встановлюються за однаковою схемою: половина роз’ємів &#8211; 2.54 мм JST (з ключем), інша половина &#8211; штирьові роз&#8217;єми Dupont. Це робиться саме для забезпечення згаданої вище гнучкості взаємного підключення різноманітних I2C-модулів.</p>



<h2 class="wp-block-heading"><br>Схеми модульного підключення до поділювача інтерфейсів</h2>



<h3 class="wp-block-heading">Зірка</h3>



<p class="wp-block-paragraph"><br>Найпоширеніша схема, коли всі модулі інтерфейсами I2C підключаються у поділювач. Назвемо її “Зірка”.</p>



<figure class="wp-block-image size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_4_hub_star_connection_branded.jpg"><img loading="lazy" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_4_hub_star_connection_branded.jpg" alt="" class="wp-image-2324" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_4_hub_star_connection_branded.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_4_hub_star_connection_branded-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_4_hub_star_connection_branded-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_4_hub_star_connection_branded-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_4_hub_star_connection_branded-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">Рис. Приклад підключення типу “Зірка”</p>



<h3 class="wp-block-heading">Каскадування</h3>



<p class="wp-block-paragraph"><br>Наступна топологія є каскадом двох і більше “Зірок”. Назвемо її “Каскадування”.</p>



<figure class="wp-block-image size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_5_hub_cascading_branded.jpg"><img loading="lazy" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_5_hub_cascading_branded.jpg" alt="" class="wp-image-2326" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_5_hub_cascading_branded.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_5_hub_cascading_branded-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_5_hub_cascading_branded-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_5_hub_cascading_branded-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_5_hub_cascading_branded-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">Рис. Приклад підключення типу “Каскадування”</p>



<p class="wp-block-paragraph">Оскільки один з портів поділювача інтерфейсів завжди задіяно як “вхід”, то в деяких ситуаціях може виникнути нестача вільних портів поділювача. Саме в цьому випадку застосовується каскадування поділювачів у необхідній кількості таким чином, щоб забезпечити бажану кількість інтерфейсних портів на шині I2C.</p>



<p class="wp-block-paragraph">Наприклад, I2CHUB_V1 виробництва IoT-devices має 6 портів I2C. Якщо в проекті, за задумом, необхідно підключати до MCU більше 5 підпорядкованих пристроїв, то можливо застосувати каскадування двох поділювачів і розподілити між їх інтерфейсами відповідні підпорядковані пристрої.</p>



<h3 class="wp-block-heading"><br>Довга лінія</h3>



<p class="wp-block-paragraph"><br>Остання можлива схема впровадження, яку варто навести у даній публікації &#8211; це топологія з довгою лінією передачі даних і двома віддаленими, незалежними джерелами живлення. Назвемо її “Довга лінія”.</p>



<figure class="wp-block-image size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_6_hub_long-line_remote-power_branded.jpg"><img loading="lazy" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_6_hub_long-line_remote-power_branded.jpg" alt="" class="wp-image-2328" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_6_hub_long-line_remote-power_branded.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_6_hub_long-line_remote-power_branded-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_6_hub_long-line_remote-power_branded-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_6_hub_long-line_remote-power_branded-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/09/i2chub-modules-connection-schemas_6_hub_long-line_remote-power_branded-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a></figure>



<p class="wp-block-paragraph">Рис. Приклад підключення типу “Довга лінія”</p>



<p class="wp-block-paragraph">В даній схемі застосовується лише три сигнальні лінії, в той час як живлення пристроїв відбувається від місцевого, незалежного джерела з кожного боку. Така схема дозволяє організувати відносно довгу лінію передачі даних на інтерфейсі послідовної шини I2C без застосування спеціальних шинних повторювачів/підсилювачів.</p>



<h2 class="wp-block-heading">Сумісність поділювачів з іншими системами</h2>



<p class="wp-block-paragraph"><br>Якщо ви використовуєте в одному проекті модулі з різними напругами живлення, то маєте приділити особливу увагу взаємному узгодженню таких компонентів. Та якщо ви вирішили застосувати пасивний поділювач, який не має елементів перетворення чи узгодження рівня напруги, то просто враховуйте, що та напруга, яку ви подаєте на роз’єми поділювача потрапить на всі підключені до поділювача модулі через відповідні сигнальні лінії шини I2C.</p>



<p class="wp-block-paragraph">Втім, оскільки класичний поділювач I2C (такий як I2CHUB_V1) є пристроєм пасивним та не перетворює напруги за рівнем, він автоматично є сумісним з будь-яким контролером, до якого ви вирішили його підключити: Arduino, STM32, ESP8266, ESP32, Raspberry Pi, etc.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Увага!</strong> Лише ви вирішуєте, з якими логічними рівнями мають працювати компоненти проекту: 1.8V, 3.3V чи 5V.</p></blockquote>



<h2 class="wp-block-heading"><br>Докладні специфікації шини I2C</h2>



<p class="wp-block-paragraph"><br>Для того, щоб ознайомитися докладно з усіма особливостями шини I2C, рекомендуємо читати офіційні настанови та вимоги специфікації за посиланням: https://www.nxp.com/docs/en/user-guide/UM10204.pdf<br>А також інші ресурси в мережі інтернет.</p>



<p class="wp-block-paragraph">Ось і все, що ми запланували розповісти у даній публікації. Ми розглянули особливості і можливості підключення підпорядкованих модулів до інтерфейсу шини I2C головного контролера. Показали основні схеми застосування поділювача, такі як “Зірка”, “Каскадування”, “Довга лінія”, з можливістю віддаленого незалежного живлення окремих ланок шини, завдяки наявності у поділювача спеціальних портів “входів” / “виходів” живлення.</p>



<p class="wp-block-paragraph">Дякуємо за увагу. Ставте запитання у наших соцмережах.<br>Бажаємо успіхів!</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
