<?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>I2C &#8211; IoT-devices, LLC &#8211; Electronics manufacturer for IoT</title>
	<atom:link href="https://iot-devices.com.ua/tag/i2c/feed/" rel="self" type="application/rss+xml" />
	<link>https://iot-devices.com.ua</link>
	<description>Від модулів до складних пристроїв</description>
	<lastBuildDate>Mon, 08 May 2023 12:34:35 +0000</lastBuildDate>
	<language>uk</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</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>I2C &#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>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>
		<item>
		<title>Чому ми не додали інтерфейс I2C у модуль GGreg20_V3</title>
		<link>https://iot-devices.com.ua/why-we-didnt-add-the-i2c-interface-to-the-ggreg20_v3-module-uk/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Sat, 28 May 2022 19:24:07 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ESP-IDF]]></category>
		<category><![CDATA[ESPHome]]></category>
		<category><![CDATA[Espressif]]></category>
		<category><![CDATA[Geiger]]></category>
		<category><![CDATA[Geiger-Counter-Device]]></category>
		<category><![CDATA[GGreg20_V3]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[I2C]]></category>
		<category><![CDATA[ionizing radiation]]></category>
		<category><![CDATA[IoT-devices]]></category>
		<category><![CDATA[ISR]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[MicroPython]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[Pulse-Counter]]></category>
		<category><![CDATA[SBM20]]></category>
		<category><![CDATA[STM32]]></category>
		<category><![CDATA[Tasmota]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=1993</guid>

					<description><![CDATA[І дійсно, чому б не додати на модуль такий зручний інтерфейс? Пропонуємо до вашої уваги наш черговий матеріал, де ми цього разу розмірковуємо про переваги та недоліки оснащення модуля детектора іонізуючої радіації GGreg20_V3 інтерфейсом I2C. Одразу зазначимо, що серед інших інтерфейсів передачі даних нам дуже подобається послідовна шина I2C за її простоту, функціональність та надійність [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_iot-deviceslogo_i2c_publpic_ukr.png"><img loading="lazy" decoding="async" width="1024" height="683" src="https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_iot-deviceslogo_i2c_publpic_ukr-1024x683.png" alt="GGreg20_V3, I2C" class="wp-image-2021" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_iot-deviceslogo_i2c_publpic_ukr-1024x683.png 1024w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_iot-deviceslogo_i2c_publpic_ukr-300x200.png 300w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_iot-deviceslogo_i2c_publpic_ukr-768x512.png 768w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_iot-deviceslogo_i2c_publpic_ukr-454x303.png 454w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_iot-deviceslogo_i2c_publpic_ukr.png 1500w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></div>



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



<p class="wp-block-paragraph">Одразу зазначимо, що серед інших інтерфейсів передачі даних нам дуже подобається послідовна шина I2C за її простоту, функціональність та надійність роботи. Ви можете ознайомитися з іншими публікаціями, де ми розглядаємо цю чудову шину: <br><a href="https://iot-devices.com.ua/how-to-choose-the-right-i2c-chips-ukr/">Як правильно вибрати I2C чіпи. Або про приховану програмну проблему вибору<br>апаратних модулів</a> / <a href="https://iot-devices.com.ua/en/how-to-choose-the-right-i2c-chips-en/">How to choose the right I2C chips. Or the hidden software problem of<br>choosing hardware modules</a></p>



<p class="wp-block-paragraph"><a href="https://iot-devices.com.ua/application-of-i2c-bus-interface-splitter/">Application of I2C bus interface splitter</a> </p>



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



<p class="wp-block-paragraph">Ось подивіться:</p>



<p class="wp-block-paragraph"><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">(1)</mark></strong> Коли  якийсь модуль чи мікросхема має інтерфейс комунікації I2C (чи SPI, UART), це автоматично вимагає написати для такого пристрою низькорівневий драйвер-коннектор.</p>



<p class="wp-block-paragraph"><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">(2)</mark></strong> Також такий пристрій взагалі не може інтегруватися з іншими компонентами, які заздалегідь не підтримують певний інтерфейс обміну даними чи керування, як-от I2C. Буває купа проектів, у яких немає I2C, або ж під шину I2C не вистачає вільних GPIO.</p>



<p class="wp-block-paragraph"><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">(3)</mark></strong> Модуль вимірювання радіації, за певних умов, має бути спроможним застосовуватися у польових умовах, без підключення до головного контролера. Користувач має мати змогу використати такий пристрій незалежно від умов, в яких він опинився. Без програмування чи апаратних доробок.</p>



<p class="wp-block-paragraph"><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">(4)</mark></strong> Оснащення модуля інтерфейсом I2C вимагає розташування на модулі вбудованого контролера-компаньйона, який забезпечує підготовку даних для споживача та комунікацію у режимі підпорядкованого пристрою (Slave Device) відповідно до специфікації I2C. Хоча це може бути простий і недорогий контролер, його наявність підвищує вартість, а також збільшує розміри модуля. Також потрібно виділити додаткове місце на платі модуля під площадки вибору адреси. </p>



<p class="wp-block-paragraph"><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-green-cyan-color">(5)</mark></strong> Модуль з інтерфейсом I2C обов&#8217;язково потребує наявності головного контролера та дисплею, щоб ним можливо було користуватися за призначенням. І це при тому, що на модулі вже є вбудований контролер &#8211; компаньйон. Головні контролери бувають дуже різні. Хтось використовує Raspberry Pi, або ж Arduino, а комусь важливо мати можливість застосувати ESP32 / ESP8266. Саме тому ми не ставимо головний контролер на плату модуля GGreg20. Ми вважаємо, що користувач має право обирати контролер, платформу чи середовище розробки незалежно та самостійно. А наша задача &#8211; забезпечити якомога ширшу сумісність та універсальність нашого продукту.</p>



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



<p class="wp-block-paragraph">На Рис. наводимо схематичні зображення двох модулів &#8211; поточної версії GGreg20 без I2C, та версії з інтерфейсом I2C, щоб показати, наскільки довелося б змінити модуль з урахуванням реальних розмірів (10х10 мм) додаткової мікросхеми вбудованого контролера-компаньйона.</p>



<figure class="wp-block-image size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic.png"><img loading="lazy" decoding="async" width="1024" height="566" src="https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic-1024x566.png" alt="GGreg20_V3" class="wp-image-2005" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic-1024x566.png 1024w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic-300x166.png 300w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic-768x424.png 768w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic-1536x848.png 1536w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic-454x251.png 454w, https://iot-devices.com.ua/wp-content/uploads/2022/05/6-ggreg20_v3_publication_pic.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph"><em><br>Рис. Якби GGreg20_V3 мав інтерфейс I2C (червоним показано вбудований контролер-компаньйон, що забезпечує режим I2C Slave Device</em>)</p>



<p class="wp-block-paragraph">Єдиними перевагами для обґрунтування доцільності оснащення нашого модуля радіації інтерфейсом I2C є наступні:</p>



<ul class="wp-block-list"><li>можливість підключення декількох пристроїв на I2C-інтерфейс головного контролера;</li><li>розрахунок користувацьких значень засобами вбудованого контролера-компаньйона.</li></ul>



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



<figure class="wp-block-table is-style-regular"><table class="has-fixed-layout"><tbody><tr><td></td><td><strong>Інтерфейс I2C</strong>                         </td><td><strong>Інтерфейс лічильника імпульсів на порту вводу-виводу (GPIO pulse counter)</strong></td></tr><tr><td>Автономне використання в “ручному” режимі</td><td>Ні</td><td>Так</td></tr><tr><td>Потребує вбудований контролер &#8211; компаньйон</td><td>Так:&nbsp;<br>&#8211; вища вартість;<br>&#8211; більші розміри.</td><td>Ні</td></tr><tr><td>Драйверна підтримка</td><td>Відсутня / дуже обмежена</td><td>Найширша</td></tr><tr><td>Вимоги до апаратної обв’язки</td><td>Високі:<br>&#8211; головний контролер;<br>&#8211; дисплей.</td><td>Низькі / відсутні</td></tr><tr><td>Вимоги до кваліфікації користувача</td><td>Високі:<br>&#8211; програмування embed.;<br>&#8211; адміністрування/конфіг;<br>&#8211; інтерфейси/протоколи;<br>&#8211; електроніка/інтеграція.</td><td>Низькі / відсутні</td></tr></tbody></table></figure>



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



<h2 class="wp-block-heading"><strong>Проблема #1</strong> Польові умови / Надзвичайна ситуація&nbsp;</h2>



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



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



<p class="wp-block-paragraph">Наш модуль GGreg20_V3 достатньо лише заживити від павербанка (чи навіть кількох батарейок АА/ААА) чи сонячної панелі &#8211; і все: можна вручну проводити вимір за спалахами світлодіода та секундоміром чи власним відліком.&nbsp;</p>



<p class="wp-block-paragraph">Кількість спалахів за хвилину помножена на коефіцієнт перетворення &#8211; і є рівень радіації у mkSv/hour.&nbsp;</p>



<p class="wp-block-paragraph">Коефіцієнт перетворення для трубки SBM20 є рівним 0.0054. Таким чином маємо просту формулу:&nbsp;</p>



<p class="has-text-align-center wp-block-paragraph">CPM x 0.0054 = mkSv/hour.&nbsp;</p>



<p class="wp-block-paragraph">де CPM &#8211; кількість спалахів на хвилину (<em>Counts per Minute</em>).</p>



<p class="wp-block-paragraph">Для Києва [20 &#8211; 48] спалахів &#8211; це нормальний рівень (0.10 &#8211; 0.26 mkSv/h).</p>



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



<h2 class="wp-block-heading"><strong>Проблема #2</strong> Драйверна підтримка</h2>



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



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



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



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



<figure class="wp-block-table"><table><tbody><tr><td><strong>Платформа</strong>         </td><td class="has-text-align-center" data-align="center"><strong>Модуль сенсора радіації з I2C, вбудована драйверна підтримка платформою</strong>      </td><td class="has-text-align-center" data-align="center"><strong>Модуль сенсора радіації З імпульсним виходом, вбудована драйверна підтримка (GPIO pulse counter, external ISR) платформою</strong></td></tr><tr><td>Arduino</td><td class="has-text-align-center" data-align="center">Ні</td><td class="has-text-align-center" data-align="center">Так</td></tr><tr><td>NodeMCU (Lua)</td><td class="has-text-align-center" data-align="center">Ні</td><td class="has-text-align-center" data-align="center">Так</td></tr><tr><td>MicroPython</td><td class="has-text-align-center" data-align="center">Ні</td><td class="has-text-align-center" data-align="center">Так</td></tr><tr><td>ESPHome / Home Assistant</td><td class="has-text-align-center" data-align="center">Ні</td><td class="has-text-align-center" data-align="center">Так</td></tr><tr><td>Espressif ESP-IDF</td><td class="has-text-align-center" data-align="center">Ні</td><td class="has-text-align-center" data-align="center">Так</td></tr><tr><td>STM32</td><td class="has-text-align-center" data-align="center">Ні</td><td class="has-text-align-center" data-align="center">Так</td></tr><tr><td>Tasmota</td><td class="has-text-align-center" data-align="center">Ні</td><td class="has-text-align-center" data-align="center">Так</td></tr></tbody></table></figure>



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



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



<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td><strong>Platform</strong></td><td><strong>Link</strong></td></tr><tr><td>Arduino contributed library</td><td>https://www.arduino.cc/reference/en/libraries/ggreg20_v3/</td></tr><tr><td>ESPHome / Home Assistant example</td><td>https://github.com/iotdevicesdev/ggreg20-v3-homeassistant-esphome-example</td></tr><tr><td>Tasmota driver example</td><td>https://github.com/iotdevicesdev/ggreg20-v3-tasmota-esp32-driver</td></tr><tr><td>NodeMCU (Lua) example</td><td>https://github.com/iotdevicesdev/ggreg20-v3-nodemcu-lua-example</td></tr><tr><td>NodeMCU (Lua) full functional driver</td><td>https://alterstrategy.com/product/radcounter/</td></tr></tbody></table></figure>



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



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



<p class="wp-block-paragraph">У випадку ж з лічильником імпульсів на GPIO абсолютно інша ситуація: усі платформи підтримують таку функцію і дуже просто програмуються.</p>



<h2 class="wp-block-heading"><strong>Замість висновків</strong></h2>



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



<p class="wp-block-paragraph">Купуйте детектор іонізуючої радіації <a href="https://iot-devices.com.ua/product-uk/ggreg20_v3-ionizing-radiation-detector-with-geiger-tube-sbm-20/">GGreg20_V3</a> з імпульсним виходом.</p>



<p class="wp-block-paragraph">Бажаємо успіхів!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Як правильно вибрати I2C чіпи. Або про приховану програмну проблему вибору апаратних модулів</title>
		<link>https://iot-devices.com.ua/how-to-choose-the-right-i2c-chips-ukr/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Tue, 14 Sep 2021 13:51:58 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[application-note]]></category>
		<category><![CDATA[GGreg20_V3]]></category>
		<category><![CDATA[I2C]]></category>
		<category><![CDATA[I2CUI4_V1]]></category>
		<category><![CDATA[MCP23017]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=1139</guid>

					<description><![CDATA[&#8220;IoT-devices&#8221; повсякчасно просуває застосування шини I2C, як одного з найкращих послідовних цифрових інтерфейсів. Шина I2C пропонує всі необхідні функції: простоту фізичного інтерфейсу: сигнали даних SDA та синхронізації SCL потребують лише два дроти для підключення до шини; адресацію пристроїв на шині унікальними 7-ми бітними адресами; ідентифікацію пристроїв на шині за їх адресою чи за унікальними ідентифікаторами [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">&#8220;IoT-devices&#8221; повсякчасно просуває застосування шини I2C, як одного з найкращих послідовних цифрових інтерфейсів.</p>



<p class="wp-block-paragraph">Шина I2C пропонує всі необхідні функції:</p>



<ul class="wp-block-list"><li>простоту фізичного інтерфейсу: сигнали даних SDA та синхронізації SCL потребують лише два дроти для підключення до шини;</li></ul>



<ul class="wp-block-list"><li>адресацію пристроїв на шині унікальними 7-ми бітними адресами;</li><li>ідентифікацію пристроїв на шині за їх адресою чи за унікальними ідентифікаторами (якщо такі передбачено виробником чіпів);</li><li>можливість “гарячого” підключення / відключення пристроїв на кшталт “Plug &amp; Play”;</li><li>живлення пристрою від шини або від власного джерела кожного модуля;</li><li>підтримку різних напруг живлення пристроїв на шині (за умови узгодження сигналів за рівнем напруги);</li><li>розвинену інфраструктуру з підсилювачів, повторювачів, поділювачів та мультиплексорів для побудови складних топологій, що пропонують виробники чіпів;</li></ul>



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



<p class="wp-block-paragraph">Сенсори чи виконавчі механізми можуть бути виносними на дроті. Або всі чіпи можуть бути зосередженими на одному модулі.</p>



<p class="wp-block-paragraph">Головний контролер та підпорядковані пристрої можуть мати незалежне живлення. Або всі пристрої на шині можуть живитися від спільного джерела.</p>



<p class="wp-block-paragraph">Шину I2C підтримує абсолютна більшість виробників мікроелектроніки. З шиною сумісні всі популярні контролери, платформи ІоТ / Smart Home та відповідні середовища розробки.</p>



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



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



<p class="wp-block-paragraph">Почнемо з популярного модуля сенсора радіації <a href="https://www.tindie.com/products/iotdev/ggreg20_v3-ionizing-radiation-detector/" target="_blank" data-type="URL" data-id="https://www.tindie.com/products/iotdev/ggreg20_v3-ionizing-radiation-detector/" rel="noreferrer noopener">GGreg20</a>.&nbsp;</p>



<h2 class="wp-block-heading">Приклад №1. GGreg20 і I2C</h2>



<figure class="wp-block-image size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2021/09/ggreg20.jpg"><img loading="lazy" decoding="async" width="1024" height="287" src="https://iot-devices.com.ua/wp-content/uploads/2021/09/ggreg20-1024x287.jpg" alt="ggreg20-i2c-chip" class="wp-image-1141" srcset="https://iot-devices.com.ua/wp-content/uploads/2021/09/ggreg20-1024x287.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2021/09/ggreg20-454x127.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2021/09/ggreg20-300x84.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2021/09/ggreg20-768x215.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2021/09/ggreg20.jpg 1529w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>IoT-devices GGreg20_V3 модуль сенсора іонізуючої радіації з імпульсним виходом</figcaption></figure>



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



<p class="wp-block-paragraph">Якщо коротко, то ні, не варто. Спробуємо обгрунтувати свою думку розлого.&nbsp;</p>



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



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



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



<p class="wp-block-paragraph">Вочевидь, нам у IoT-devices потрібно, щоб наш сенсор мали змогу підключити всі бажаючі. Контролер чи платформу мають обирати саме вони &#8211; наші клієнти. Ми ж маємо забезпечити універсальність як для Arduino, ESP32 / ESP8266 чи то Raspberry Pi, так і для NodeMCU, Node-RED чи ESPHome у Home Assistant, та багатьох інших засобів побудови ІоТ, про які ми могли навіть не чути.</p>



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



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



<p class="wp-block-paragraph">Далі розглянемо ще один приклад двох подібних пристроїв. Обидва з інтерфейсом I2C, але з різними перспективами застосування.</p>



<h2 class="wp-block-heading">Приклад №2. I2CUI3, I2CUI4 та I2C</h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><a href="https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui3_v1.jpg"><img loading="lazy" decoding="async" src="https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui3_v1-939x1024.jpg" alt="i2cui3_v1-i2c-chip" class="wp-image-1142" width="341" height="371"/></a><figcaption>IoT-devices I2CUI3_V1 модуль інтерфейсів користувача з I2C (PCA9538 8-біт)</figcaption></figure></div>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui4.jpg"><img loading="lazy" decoding="async" width="1024" height="928" src="https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui4-1024x928.jpg" alt="I2CUI4_V1-i2c-chip" class="wp-image-1143" srcset="https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui4-1024x928.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui4-454x411.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui4-300x272.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui4-768x696.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2021/09/i2cui4.jpg 1224w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>IoT-devices I2CUI4_V1 модуль інтерфейсів користувача з I2C (MCP23017 16-біт)</figcaption></figure></div>
</div>
</div>



<p class="wp-block-paragraph">Спочатку ми розробили <a href="https://www.tindie.com/products/iotdev/i2cui3-ui-i2c-module-with-5-key-rgb-led-buzzer/" target="_blank" data-type="URL" data-id="https://www.tindie.com/products/iotdev/i2cui3-ui-i2c-module-with-5-key-rgb-led-buzzer/" rel="noreferrer noopener">I2CUI3</a> &#8211; корисний і надійний продукт. Це універсальний модуль інтерфейсів користувача з інтерфейсом I2C, який забезпечує ввід керівних дій користувачем за допомогою п’яти кнопок навігації та вивід даних на RGB-світлодіод і базер про стан чи події IoT-пристрою. В основі 8-бітний розширювач портів NXP PCA9538. Багато років ми застосовуємо цей чіп для різних задач, у тому числі як головний компонент модуля I2CUI3. Розширювач портів PCA9538 є зручним, адже працює напівавтоматично після подачі живлення і для деяких задач взагалі не потребує попереднього програмування, а відтак може працювати навіть без головного мікроконтролера.</p>



<p class="wp-block-paragraph">А потім нам стало зрозуміло, що для деяких задач потрібен не 8-бітний, а 16-бітний аналогічний модуль. Так з’явився новий продукт &#8211; модуль I2CUI4 на базі чіпа розширювача портів MCP23017, теж з інтерфейсом I2C.</p>



<p class="wp-block-paragraph">Для нового <a href="https://www.tindie.com/products/iotdev/i2cui4_v1-user-interface-i2c-module-with-5-keys/" target="_blank" data-type="URL" data-id="https://www.tindie.com/products/iotdev/i2cui4_v1-user-interface-i2c-module-with-5-keys/" rel="noreferrer noopener">I2CUI4</a> ми могли б скористатися старшим у лінійці розширювачем компанії NXP. У них є кілька чіпів розширювачів на 16-біт, наприклад PCA6416, PCA9539, PCA9575, PCA9673. Але для жодного з чіпів немає офіційних бібліотек ні на сайті arduino.cc, ні на сайті esphome.io. Під прошивку NodeMCU теж немає драйверів.</p>



<p class="wp-block-paragraph">На Github є лише кілька бібліотек для PCA9539, але ні від Adafruit ні від Seeed Studio драйверів немає для жодного чіпа NXP.</p>



<p class="wp-block-paragraph">Саме тому на новому продукті I2CUI4 передбачено сумісність з поширеними платформами і встановлено мабуть найпопулярніший чіп MCP23017 з I2C інтерфейсом.</p>



<p class="wp-block-paragraph">Через це наш продукт на базі MCP23017 може похизуватися повною підтримкою у Arduino, NodeMCU, ESPHome / Home Assistant, Node-RED, Blynk, MicroPython, Raspberry Pi, STM32 та багатьох інших брендів. На GitHub можливо знайти сотні репозиторіїв з драйверами на C/C++, Python, JS, Lua, тощо.</p>



<h2 class="wp-block-heading">Висновок</h2>



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



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



<p class="wp-block-paragraph">Керування цими принципами дозволило нам розробити два прекрасні продукти GGreg20 та I2CUI4, мінімізувати ризики і уникнути згаданих проблем.</p>



<p class="wp-block-paragraph">Сподіваємося, цей матеріал буде вам корисним.&nbsp;</p>



<p class="wp-block-paragraph">Дякуємо за увагу.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Новинка: модуль I2CUI1- виносна панель керування та індикації станів.</title>
		<link>https://iot-devices.com.ua/module-i2cui1-user-interface-external-module/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Thu, 20 Aug 2020 08:09:00 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[I2C]]></category>
		<category><![CDATA[PCA9538]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=828</guid>

					<description><![CDATA[Ми виготовили і почали продаж нового модуля I2CUI1. 1. Загальний огляд. Це панель, яка може встановлюватися на стінці корпусу&#160;для керування пристроєм. Для керування встановлений джойстик. Для індикації станів пристрою встановлений RGB світлодіод а звукові сигнали виводяться на buzzer. Взаємодія з контролером по цифровому інтерфейсу I2C; Модуль буде зручно застосувати в багатьох користувацьких проектах на основі [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Ми виготовили і почали продаж нового модуля <a class="rank-math-link" href="https://iot-devices.com.ua/product/i2cuiv2-user-interface-module-4-in-1/"><strong>I2CUI1</strong></a>.</p>



<p class="wp-block-paragraph"><strong>1. Загальний огляд.</strong> Це панель, яка може встановлюватися на стінці корпусу&nbsp;для керування пристроєм. Для керування встановлений джойстик. Для індикації станів пристрою встановлений RGB світлодіод а звукові сигнали виводяться на buzzer. Взаємодія з контролером по цифровому інтерфейсу I2C; Модуль буде зручно застосувати в багатьох користувацьких проектах на основі ESP8266 чи Arduino. На панелі також встановлений роз’єм з інтерфейсом I2C, щоб було зручно підключати зовнішні пристрої &#8211; наприклад, цифровий термометр.</p>



<p class="wp-block-paragraph"><strong>2.</strong> Цей модуль може Вам сподобатися наступними <strong>рішеннями</strong>:</p>



<ul class="wp-block-list"><li>&nbsp;В ході конструювання одного з наших пристроїв стояла задача розміщення п’яти кнопок в “тісному” корпусі. Випадково знайдений джойстик наштовхнув нас на це елегантне рішення, яке і на практиці нас не підвело. Отже, замість традиційних кнопок на I2CUI1 встановлений компактний джойстик, який в корпусі тактової кнопки об’єднує 5 кнопок (вліво, вправо, вверх, вниз, ОК);&nbsp;</li><li>Встановлений на платі розширювач GPIO PCA9538 вирішує дві задачі &#8211; зручне віддалення (наприклад, при необхідності встановлювати на стінках корпусу) панелі від головного контролера компактною дводротовою шиною I2c і одночасно встановленими популярними компонентами керування і індикації;</li><li>Широкий діапазон напруги живлення дозволяє інтегрувати модуль в системах на&nbsp; ESP8266 і Arduino;</li><li>Зроблений апаратний захист від “брязкоту” контактів джойстика;</li><li>Встановлений на модулі <strong>buzzer</strong> підключений окремою шиною до GPIO контролера, бо світлодіодом і джойстиком зайняті усі порти розширювача. На перший погляд, це недолік але, за нашим досвідом, buzzer-ом потрібно мати можливість програмно керувати (гучність, звукові ефекти). Якби buzzer був підключений до GPIO розширювача, було б доступне тільки програмне вкл/викл, адже розширювач портів PCA9538 не підтримує необхідний для керування режим PWM;</li><li>Шина INT активується при кожному натисканні джойстика і ініціює переривання ПЗ для обробки станів джойстика;</li><li>Компактність і якість виготовлення.</li></ul>



<div class="wp-block-media-text alignwide is-stacked-on-mobile"><figure class="wp-block-media-text__media"><video controls src="https://iot-devices.com.ua/wp-content/uploads/2020/08/i2ciui1.mp4"></video></figure><div class="wp-block-media-text__content">
<p class="has-normal-font-size wp-block-paragraph">замість традиційних кнопок на I2CUI1 встановлений компактний джойстик, який в корпусі тактової кнопки об’єднує 5 кнопок (вліво, вправо, вверх, вниз, ОК)</p>
</div></div>



<p class="wp-block-paragraph"><strong>3. Приклад застосування модуля</strong>.</p>



<p class="wp-block-paragraph">За декілька хвилин ми склали термостат, використавши:&nbsp;&nbsp;</p>



<figure class="wp-block-table alignwide is-style-regular"><table><thead><tr><th class="has-text-align-left" data-align="left"><strong>Назва модуля</strong></th><th><strong>Кількість</strong></th><th><strong>Посилання</strong></th></tr></thead><tbody><tr><td class="has-text-align-left" data-align="left">Контролер ESP12.OLED</td><td>1</td><td><a href="http://ESP12.OLED_V1. Комплект 2. Контролер IoT без дисплея на основі ESP8266-12F" class="rank-math-link">ESP12.OLED_V1. Комплект 2. Контролер IoT без дисплея на основі ESP8266-12F</a>  </td></tr><tr><td class="has-text-align-left" data-align="left">I2CUI1</td><td>1</td><td><a href="https://iot-devices.com.ua/product/i2cuiv2-user-interface-module-4-in-1/" class="rank-math-link">Модуль I2CUI1 інтерфейсів користувача</a>  </td></tr><tr><td class="has-text-align-left" data-align="left">Цифровий сенсор температури на мікросхемі LM75</td><td>1</td><td>Виготовили самостійно</td></tr><tr><td class="has-text-align-left" data-align="left">Модуль живлення</td><td>1</td><td><a href="https://iot-devices.com.ua/product/akb-16340/" class="rank-math-link">Модуль живлення на АКБ 16340</a>  </td></tr><tr><td class="has-text-align-left" data-align="left">Модуль реле</td><td>1</td><td>В цьому тестовому макеті реле імітували зуммером. Для виготовлення термостата потрібно підключити реле з&nbsp;обмоткою і контактами у відповідності до потужності побутової техніки, якою потрібно керувати.</td></tr><tr><td class="has-text-align-left" data-align="left">З’єднання</td><td>12</td><td>Поширені серед IoT-шників з’єднувальні PLS шини мама-мама довжиною 10 см.</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Звісно, що термостат вимагає розробки оригінального програмного забезпечення.</p>



<p class="wp-block-paragraph">Будемо вдячні з підтримку нашої сторінки у <a href="https://www.facebook.com/IoT-devices-114746816966582/" class="rank-math-link" target="_blank" rel="noopener"><img loading="lazy" decoding="async" width="50" height="50" class="wp-image-799" style="width: 50px;" src="https://iot-devices.com.ua/wp-content/uploads/2020/07/fb.png" alt="" srcset="https://iot-devices.com.ua/wp-content/uploads/2020/07/fb.png 300w, https://iot-devices.com.ua/wp-content/uploads/2020/07/fb-100x100.png 100w, https://iot-devices.com.ua/wp-content/uploads/2020/07/fb-150x150.png 150w" sizes="(max-width: 50px) 100vw, 50px" /></a> і придбання товарів в нашому магазині. <a href="https://iot-devices.com.ua/shop/" class="rank-math-link"><strong>iot-devices.com.ua</strong></a></p>
]]></content:encoded>
					
		
		<enclosure url="https://iot-devices.com.ua/wp-content/uploads/2020/08/i2ciui1.mp4" length="33180279" type="video/mp4" />

			</item>
	</channel>
</rss>
