<?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>LUA &#8211; IoT-devices, LLC &#8211; Electronics manufacturer for IoT</title>
	<atom:link href="https://iot-devices.com.ua/tag/lua/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</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>LUA &#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>Емулятор лічильника Гейгера GGreg20_V3 засобами ESP8266 Частина 3: Тестування та висновок</title>
		<link>https://iot-devices.com.ua/geiger-counter-emulator-ggreg20_v3-module-by-means-of-esp8266-part3-ua/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Fri, 31 Mar 2023 12:58:07 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Новини]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[ESP12.OLED]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Espressif]]></category>
		<category><![CDATA[Geiger]]></category>
		<category><![CDATA[geiger-counter]]></category>
		<category><![CDATA[GGreg20_V3]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[iot]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[SBM20]]></category>
		<category><![CDATA[tindie]]></category>
		<category><![CDATA[unit test]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=2842</guid>

					<description><![CDATA[Тестування емулятора Після того, як ми зібрали емулятор лічильника Гейгера і запрограмували ESP8266, ми можемо протестувати його, щоб переконатися, що він працює правильно. Склавши фізичну схему і розробивши та завантаживши / компілювавши Lua-код у контролери, запускаємо емулятор лічильника Гейгера та головний контролер, щоб перевірити як працює наш тестовий стенд. Як можна бачити, підключення емулятора дуже [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><a></a> Тестування емулятора</h2>



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



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



<figure class="wp-block-image size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-scaled.jpg"><img fetchpriority="high" decoding="async" width="1024" height="768" src="https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-1024x768.jpg" alt="" class="wp-image-2588" srcset="https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-1024x768.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-300x225.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-768x576.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-1536x1152.jpg 1536w, https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-2048x1536.jpg 2048w, https://iot-devices.com.ua/wp-content/uploads/2023/01/esp12_oled_we_disp_ggreg20_hwemu-454x341.jpg 454w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>Рис. Тестовий стенд емулятора GGreg20_V3 на базі ESP12.OLED (MCU_B) підключений до NodeMCU dev.board (MCU_A, поза меж фото)</figcaption></figure>



<p class="wp-block-paragraph">Як можна бачити, підключення емулятора дуже просте: кабель живлення micro USB та сигнальні дроти імпульсного виходу, а також за бажанням можна підключити debug-консоль через UART.</p>



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



<figure class="wp-block-image size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_log_2022-12-01_222323.jpg"><img decoding="async" width="1024" height="631" src="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_log_2022-12-01_222323-1024x631.jpg" alt="" class="wp-image-2590" srcset="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_log_2022-12-01_222323-1024x631.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_log_2022-12-01_222323-300x185.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_log_2022-12-01_222323-768x473.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_log_2022-12-01_222323-454x280.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_log_2022-12-01_222323.jpg 1421w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>Рис. Тестовий стенд емулятора GGreg20_V3 на базі ESP12.OLED (MCU_B) підключений до NodeMCU dev.board (MCU_A, поза меж фото)</figcaption></figure>



<figure class="wp-block-image size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323.jpg"><img decoding="async" width="1024" height="397" src="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323-1024x397.jpg" alt="" class="wp-image-2592" srcset="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323-1024x397.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323-300x116.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323-768x298.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323-1536x595.jpg 1536w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323-454x176.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_distribution_2022-12-01_222323.jpg 1610w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>Рис. Графічний розподіл 175 подій на виході емулятора в межах однієї хвилини</figcaption></figure>



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



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



<figure class="wp-block-image size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_random_distribution_2022-12-07.jpg"><img loading="lazy" decoding="async" width="1024" height="476" src="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_random_distribution_2022-12-07-1024x476.jpg" alt="" class="wp-image-2594" srcset="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_random_distribution_2022-12-07-1024x476.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_random_distribution_2022-12-07-300x139.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_random_distribution_2022-12-07-768x357.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_random_distribution_2022-12-07-454x211.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-ggreg20_v3_hwemu_esp12_oled_nodemcu_random_distribution_2022-12-07.jpg 1529w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>Рис. Графічне зображення випадкових 175 подій на виході емулятора (ліва вісь) та вільної пам’яті (права вісь) контролера ESP8266 під час виконання 60-секундного циклу</figcaption></figure>



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



<h2 class="wp-block-heading"><a></a>Відомі обмеження</h2>



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



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



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



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



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



<p class="wp-block-paragraph">Сайт IoT-devices.com.ua:&nbsp;<a href="https://iot-devices.com.ua/product-uk/gcemu20_v1-geiger-counter-emulator/">GCcemu20_V1</a></p>



<p class="wp-block-paragraph">tindie.com:&nbsp;<a href="https://www.tindie.com/products/iotdev/gcemu20_v1-geiger-counter-emulator/" target="_blank" rel="noreferrer noopener">GCcemu20_V1</a></p>



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



<p class="wp-block-paragraph">Початок статті:</p>



<p class="wp-block-paragraph"><a href="https://iot-devices.com.ua/geiger-counter-emulator-ggreg20_v3-module-by-means-of-esp8266-part1-ua/">Емулятор лічильника Гейгера GGreg20_V3 засобами ESP8266: Частина 1. Вступ та загальний огляд</a></p>



<p class="wp-block-paragraph"><a href="http://Емулятор лічильника Гейгера GGreg20_V3 засобами ESP8266">Емулятор лічильника Гейгера GGreg20_V3 засобами ESP8266: Частина 2 Створення емулятора</a></p>



<p class="wp-block-paragraph">Бажаємо успіхів!</p>



<p class="wp-block-paragraph">Команда IoT-devices LLC</p>



<p class="wp-block-paragraph">&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Емулятор лічильника Гейгера GGreg20_V3 засобами ESP8266: Частина 2 Створення емулятора</title>
		<link>https://iot-devices.com.ua/geiger-counter-emulator-ggreg20_v3-module-by-means-of-esp8266-part2-ua/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Wed, 29 Mar 2023 11:50:27 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Новини]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[ESP12.OLED]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Espressif]]></category>
		<category><![CDATA[Geiger]]></category>
		<category><![CDATA[geiger-counter]]></category>
		<category><![CDATA[GGreg20_V3]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[iot]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[SBM20]]></category>
		<category><![CDATA[tindie]]></category>
		<category><![CDATA[unit test]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=2813</guid>

					<description><![CDATA[Емулятор лічильника Гейгера: що нам знадобиться Для побудови емулятора лічильника Гейгера нам знадобляться наступні деталі та матеріали: ESP8266 #1 як основний (MCU_A, модуль NodeMCU); ESP8266 #2 як емулятор GGreg20_V3 (MCU_B, модуль ESP12.OLED); Дроти для перемичок; USB кабель для програмування та живлення. Далі нам потрібно буде запрограмувати основний контролер MCU_A та код скрипту емуляції програмного забезпечення [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading" id="block-786c35cc-31be-43f0-a658-40945e2c73d7">Емулятор лічильника Гейгера: що нам знадобиться</h2>



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



<ul class="wp-block-list"><li>ESP8266 #1 як основний (MCU_A, модуль NodeMCU);</li><li>ESP8266 #2 як емулятор GGreg20_V3 (MCU_B, модуль ESP12.OLED);</li><li>Дроти для перемичок;</li><li>USB кабель для програмування та живлення.</li></ul>



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Примітка 3</strong>. Ми будемо наводити приклади у цій публікації на модулях власного виробництва <a href="https://iot-devices.com.ua/product-uk/esp12oled-universal-esp8266-mcuboard-oled/">ESP12.OLED</a>. Втім, якщо у вас немає модуля ESP12.OLED, ви також можете застосувати плату розробника на базі ESP8266, наприклад NodeMCU, і самостійно розробити програмне забезпечення керуючись прикладами, що наведено у тексті. Якщо ж ви бажаєте одразу користуватися готовим пристроєм, будь-ласка, дочитайте цю статтю до кінця, адже далі ми даємо посилання на наш готовий до використання модуль емулятора, який можливо придбати.</p></blockquote>



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



<h2 class="wp-block-heading" id="block-fa9009c2-5b8c-41b0-bb8a-10108721c789">Бюджет необхідних нам входів/виходів</h2>



<p class="wp-block-paragraph" id="block-72e01d54-951b-4117-8327-b53872654d3a">На головному контролері макету нам необхідно визначити порти вводу/виводу, які будуть обслуговувати задачу реєстрації вхідних імпульсів від модуля емулятора лічильника Гейгера.</p>



<p class="wp-block-paragraph" id="block-dc43f265-c4cd-4a94-8940-0af029bf502d">На модулі емулятора лічильника Гейгера нам необхідно буде вже трохи більше портів. Тут необхідно задіяти порти вводу/виводу: для емуляції вихідних імпульсів, для RGB світлодіода та для кнопки перемикання режиму роботи емулятора.</p>



<figure class="wp-block-table"><table><tbody><tr><td><br>﻿</td><td>Роль MCU_A (Головний)</td><td>Роль MCU_B (Емулятор)</td></tr><tr><td>1 х GPIO лічильника вхідних імпульсів</td><td>NodeMCU</td><td>&#8211;</td></tr><tr><td>1 х GPIO емуляції вихідних імпульсів GGreg20_V3</td><td>&#8211;</td><td>ESP12.OLED</td></tr><tr><td>3 х GPIO RGB світлодіода індикації вихідних імпульсів GGreg20_V3</td><td>&#8211;</td><td>ESP12.OLED</td></tr><tr><td>1х GPIO кнопки перемикання режимів роботи емулятора</td><td>&#8211;</td><td>ESP12.OLED</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Схема підключення</p>



<p class="wp-block-paragraph" id="block-c6b2cc85-b3fb-4407-a53a-677106212716">Щоб взаємодія головного контролера з емулятором модуля GGreg20_V3 виглядала реалістично, пропонуємо скористатися вбудованими властивостями певних портів вводу/виводу плати ESP12.OLED і обрати на контролері емулятора MCU_B наступні GPIO:</p>



<ul class="wp-block-list" id="block-f010198d-685b-4fee-b4d6-3e1d8f38aeb3"><li>для емуляції імпульсного виходу GGreg20_V3 рекомендуємо використовувати GPIO4 / D2 (GPIO D-index в Lua);</li><li>для перемикання режимів роботи емулятора ми можемо використати вбудовану на платі ESP12.OLED кнопку Flash &#8211; GPIO0 / D3;</li><li>вбудований RGB-світлодіод на модулі ESP12.OLED займає GPIO14 / D5; GPIO12 / D6; GPIO13 / D7.</li></ul>



<p class="wp-block-paragraph" id="block-2527070a-42a1-48e0-983b-6cfc16e216fc">На модулі головного контролера MCU_A, пропонуємо обрати наступний порт для лічильника вхідних імпульсів:</p>



<ul class="wp-block-list" id="block-c8feffc1-6e34-42d2-b70e-3b3631fb85fb"><li>GPIO14 / D5.</li></ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Примітка 5</strong>. У якості довідкового матеріалу за нумерацією портів рекомендуємо наступні матеріали: </p><p>Стандарт планування та застосування пінів, розроблений alterstrategy.lab: <a href="https://alterstrategy.com/recommended-pin-use-standard/" target="_blank" rel="noopener">ttps://alterstrategy.com/recommended-pin-use-standard/</a> </p><p>Документація на прошивку NodeMCU: <a href="https://nodemcu.readthedocs.io/en/latest/modules/gpio/" target="_blank" rel="noopener">https://nodemcu.readthedocs.io/en/latest/modules/gpio/</a> </p><p>Документація на модуль ESP12.OLED на сайті: <a href="https://iot-devices.com.ua/en/product/esp12oled-universal-esp8266-mcuboard-oled-en/">https://iot-devices.com.ua/en/product/esp12oled-universal-esp8266-mcuboard-oled-en/</a> </p><p>та на Tindie: <a href="https://www.tindie.com/products/iotdev/esp12oled-universal-esp8266096oled-mcu-board/" target="_blank" rel="noopener">https://www.tindie.com/products/iotdev/esp12oled-universal-esp8266096oled-mcu-board/</a></p></blockquote>



<p class="wp-block-paragraph" id="block-0017d8d7-e663-4e4b-8d4e-d20072cdf305">Оновимо таблицю з урахуванням конкретних портів вводу/виводу, які ми обрали:</p>



<figure class="wp-block-table"><table><tbody><tr><td><br>﻿</td><td>Роль MCU_A</td><td>Роль MCU_B</td></tr><tr><td>1 х GPIO лічильника вхідних імпульсів</td><td>NodeMCU GPIO14/ D5</td><td>&#8211;</td></tr><tr><td>1 х GPIO емуляції вихідних імпульсів GGreg20_V3</td><td>&#8211;</td><td>ESP12.OLED GPIO4 / D2</td></tr><tr><td>3 х GPIO RGB світлодіода індикації вихідних імпульсів GGreg20_V3</td><td>&#8211;</td><td>ESP12.OLED GPIO14 / D5 GPIO12 / D6 GPIO13 / D7</td></tr><tr><td>1х GPIO кнопки перемикання режимів роботи емулятора</td><td>&#8211;</td><td>ESP12.OLED GPIO0 / D3</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">﻿</p>



<figure class="wp-block-image size-full" id="block-3e816c74-b488-4f9c-af8a-46e7b768c80c"><a href="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-the-esp12.oled-geiger-counter-emulator-and-nodemcu-wiring-diagram.jpg"><img loading="lazy" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-the-esp12.oled-geiger-counter-emulator-and-nodemcu-wiring-diagram.jpg" alt="" class="wp-image-2586" srcset="https://iot-devices.com.ua/wp-content/uploads/2023/01/10-the-esp12.oled-geiger-counter-emulator-and-nodemcu-wiring-diagram.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-the-esp12.oled-geiger-counter-emulator-and-nodemcu-wiring-diagram-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-the-esp12.oled-geiger-counter-emulator-and-nodemcu-wiring-diagram-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-the-esp12.oled-geiger-counter-emulator-and-nodemcu-wiring-diagram-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2023/01/10-the-esp12.oled-geiger-counter-emulator-and-nodemcu-wiring-diagram-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a><figcaption>Рис. Підключення модулів з використанням двох апаратних контролерів ESP8266. У ролі MCU_B &#8211; модуль ESP12.OLED. У ролі MCU_A &#8211; модуль NodeMCU</figcaption></figure>



<h2 class="wp-block-heading" id="block-cb422977-8184-4a88-9c04-66d8e4c95e9d"><br>Режими роботи емулятора</h2>



<p class="wp-block-paragraph" id="block-4228e826-79a4-4376-aad4-045e96815dc7">Для того, щоб наш емулятор лічильника Гейгера GGreg20_V3 міг імітувати роботу в умовах різного рівня радіації пропонуємо реалізувати можливість перемикати діапазон потужності випромінювання, який начебто вимірюється пристроєм і подається на імпульсний вихід.</p>



<p class="wp-block-paragraph" id="block-4e0350bb-494c-480f-b831-a6e3d0c4b3ce">Натискаючи кнопку Flash (D3), користувач може поперемінно перемикати режими, щоб вибрати необхідний.</p>



<p class="wp-block-paragraph" id="block-8566cf3a-6d34-494a-a1c4-9783454ba6ad">Для зручності користування емулятором RGB-світлодіод модуля ESP12.OLED блимає різними кольорами, які легко розрізняються людським оком. За кожним режимом роботи емулятора закріплено свій колір. Тож коли емулятор видає на імпульсний вихід сигнал про вдаване “спрацювання”, світлодіод також буде блимати кольором поточного режиму роботи.</p>



<h2 class="wp-block-heading" id="block-63c378b0-b723-4c14-a913-697192337a31">Діапазони рівня радіації</h2>



<p class="wp-block-paragraph" id="block-d791023e-f3f0-4cb0-a8d6-56b4f2d848c6">Пропонуємо реалізувати емуляцію наступних діапазонів радіаційного випромінювання оточуючого середовища, яке буде імітувати MCU_B:</p>



<p class="wp-block-paragraph" id="block-b19d8848-2821-488d-9731-af30f8d6a932">Режим 0. Немає імпульсів (імітація помилки сенсора);</p>



<p class="wp-block-paragraph" id="block-b78e9cf4-f0ce-4bb5-a037-2e465dbc7279">Режим 1. Природне фонове випромінювання: 0.1 &#8211; 0.2 мкЗв/год;</p>



<p class="wp-block-paragraph" id="block-fcdb4d5e-1a51-47d4-b7eb-656d53f9f600">Режим 2. Припустимий рівень: 0.2 &#8211; 0.3 мкЗв/год;</p>



<p class="wp-block-paragraph" id="block-2b79a053-b8bb-4548-ad17-d8f31bb58219">Режим 3. Підвищений рівень: 0.3 &#8211; 0.6 мкЗв/год;</p>



<p class="wp-block-paragraph" id="block-555eda96-59ee-425b-b6bb-29b4d1775ecf">Режим 4. Небезпечний рівень: 0.6 мкЗв/год &#8211; 1.5 мкЗв/год.</p>



<p class="wp-block-paragraph" id="block-636beefb-1875-4800-b434-371a282b0432">За замовчуванням модуль буде стартувати після подачі живлення з “Режиму 1”. Цей режим ми обрали як початковий лише через те, що це зручно, коли подавши живлення ми одразу отримуємо імпульси на рівні фонового випромінювання.</p>



<p class="wp-block-paragraph" id="block-e688333a-52ff-469c-b8f4-9f9559f976a6">Реальний модуль GGreg20_V3 оснащено трубкою Гейгера радянського виробництва СБМ-20. Ця трубка має наступний коефіцієнт перерахунку імпульсів на хвилину у мікрозіверти на годину:</p>



<p class="has-text-align-center wp-block-paragraph" id="block-57d145ae-f971-436c-9dc2-ea5b1f3946aa">мкЗв на годину = CPM * 0.0057</p>



<p class="wp-block-paragraph" id="block-5f2d88d1-fa2a-4c1c-b998-6c2d35b5188d">Виконаємо обернену операцію, щоб розрахувати для діапазонів радіації відповідну вилку кількості імпульсів на годину, які мав би генерувати емулятор, працюючи у певному режимі:</p>



<p class="has-text-align-center wp-block-paragraph" id="block-1a1a2729-0148-4991-a7c5-b8d7190e5969">CPM = мкЗв на годину / 0.0057</p>



<p class="wp-block-paragraph" id="block-939c0593-7e19-41fe-940b-0d34f5a5af24">Робимо приблизний розрахунок таким чином, щоб утворити діапазони потужності, що не перетинаються за значенням:</p>



<p class="wp-block-paragraph" id="block-a0935c72-ddee-4500-92dd-caa443833e00">Режим 0. 0 CPM;</p>



<p class="wp-block-paragraph" id="block-bfbf37c0-e77a-40bb-a524-aecffb2f5ffc">Режим 1. від 18 CPM до 35 CPM;</p>



<p class="wp-block-paragraph" id="block-9b5a7549-1217-4a21-862e-6123d5f1fcc0">Режим 2. від 36 CPM до 52 CPM;</p>



<p class="wp-block-paragraph" id="block-a28b6f7b-2535-426d-97c5-289e31330abe">Режим 3. від 53 CPM до 105 CPM;</p>



<p class="wp-block-paragraph" id="block-4d52fbd2-bff2-4f66-b1a7-44a17677efb3">Режим 4. від 106 CPM до 264 CPM.</p>



<p class="wp-block-paragraph" id="block-0761ad79-1104-4eb4-8586-2b413119bad9">Співвіднесення кольору спалахів RGB-світлодіода певному режиму роботи є наступним:</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>Режим роботи</strong></td><td><strong>Колір спалахів</strong></td><td><strong>R</strong></td><td><strong>G</strong></td><td><strong>B</strong></td></tr><tr><td>Режим 0</td><td>немає спалахів black</td><td>0</td><td>0</td><td>0</td></tr><tr><td>Режим 1</td><td>cyan</td><td>0</td><td>1</td><td>1</td></tr><tr><td>Режим 2</td><td>green</td><td>0</td><td>1</td><td>0</td></tr><tr><td>Режим 3</td><td>red</td><td>1</td><td>0</td><td>0</td></tr><tr><td>Режим 4</td><td>magenta</td><td>1</td><td>0</td><td>1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Тепер нам лишається написати відповідний програмний Lua-код для ролі MCU_A та для ролі MCU_B.</p>



<h2 class="wp-block-heading" id="block-f6fa38ba-c4f6-4484-9e32-cb4c380574d4"><strong>Приклад</strong>. Код лічильника Гейгера для головного контролера (роль MCU_A)</h2>



<p class="wp-block-paragraph" id="block-923bc983-837f-4384-9148-96385e6b3e3b">Ми візьмемо цей код з GitHub за наступною адресою:</p>



<p class="wp-block-paragraph"><a href="https://github.com/iotdevicesdev/ggreg20-v3-nodemcu-lua-example" target="_blank" rel="noopener">https://github.com/iotdevicesdev/ggreg20-v3-nodemcu-lua-example</a></p>



<p class="wp-block-paragraph" id="block-0979654a-2651-4027-abcd-2ff33ce599d4">Код з GitHub повністю готовий до застосування. Щоб запускати код з GitHub, треба його скачати з інтернет і завантажити у контролер, наприклад у модуль NodeMCU, як у нашому випадку. Також необхідно написати ще один Lua-скрипт і його теж завантажити у контролер:</p>



<pre class="wp-block-code"><code>-- filename: mcu_a.lua
-- MCU_A Lua code example
-- Copyright 2022 IoT-devices LLC, Kyiv, Ukraine
dofile('ggreg20_v3_nodemcu_firmware_lua_example.lua')
init(5, 1, 60000)

function snsrUpd()
ma5_rad_lvl, cpm, minutes = read()
print(ma5_rad_lvl, cpm, minutes)
end

snsrUpd_tmr = tmr.create()
snsrUpd_tmr:register(60000, tmr.ALARM_AUTO, function() snsrUpd() end)
snsrUpd_tmr:start()</code></pre>



<h2 class="wp-block-heading" id="block-245d7efc-1d20-42e3-b2d1-14d29e6b7cb1"><strong>Приклад</strong>. Код для емулятора модуля GGreg20_V3 (роль MCU_B)</h2>



<p class="wp-block-paragraph" id="block-6f398d6f-0323-4900-81bf-fb082b4bb006">Документація на мову Lua нам підказує, що у швидкісних задачах необхідно робити перепризначення глобальних ідентифікаторів на локальні, що додає швидкості виконання у десятки разів. Тому ми це зробимо у такий спосіб:</p>



<pre class="wp-block-code"><code>local gpio = gpio
local mode = gpio.mode
local trig = gpio.trig
local write = gpio.write
local read = gpio.read
local INT = gpio.INT
local OUTPUT = gpio.OUTPUT
local FLOAT = gpio.FLOAT
local HIGH = gpio.HIGH
local LOW = gpio.LOW
local PULLUP = gpio.PULLUP
local print = print

local tmr = tmr
local create = tmr.create
local now = tmr.now
local delay = tmr.delay
local alarm = tmr.alarm
local ALARM_SINGLE = tmr.ALARM_SINGLE
local ALARM_SEMI = tmr.ALARM_SEMI
local ALARM_AUTO = tmr.ALARM_AUTO
local register = tmr.register
local start = tmr.start
local stop = tmr.stop

local node = node
local heap = node.heap
local random = node.random</code></pre>



<p class="wp-block-paragraph" id="block-02068264-0668-452a-a175-d7f2197ecf05">Також нам необхідно налаштувати GPIO, які у нас будуть відповідати за свої функції (див. вище):</p>



<pre class="wp-block-code"><code>mode(3,INT,FLOAT)
mode(4,OUTPUT, PULLUP)
write(4, HIGH)</code></pre>



<p class="wp-block-paragraph" id="block-67fa4fe3-dab6-44c3-b317-89d685a65809">Щоб генерувати імпульси, які імітують вихідний інтерфейс GGreg20_V3, нам потрібно випадковим чином запускати ось таку функцію:</p>



<pre class="wp-block-code"><code>local function pulseOut()
	write(4, LOW)
	delay(10)
	write(4, HIGH)
end</code></pre>



<p class="wp-block-paragraph" id="block-76bde581-ad02-443e-9b0e-1b0b5a802151">Але щоб у повній мірі забезпечити емуляцію лічильника Гейгера, нам недостатньо просто запустити <code>pulseOut()</code> визначену кількість разів на хвилину. Насправді все складніше, і нам необхідно таким чином запускати <code>pulseOut()</code>, щоб виконувалася справжня випадковість виникнення імпульсів на виході ESP8266.</p>



<p class="wp-block-paragraph" id="block-45dc16f8-88b4-48cc-b315-92da5ffdc8af">Зважаючи на широкі можливості платформи, можна було б запропонувати навіть декілька способів реалізації цієї функціональності, але ми обмежимося лише одним з них &#8211; тим, що на наш погляд максимально відтворює випадковість імпульсів реального модуля лічильника Гейгера.</p>



<p class="wp-block-paragraph" id="block-0b0c2c3e-e7e7-4aaf-a30c-395557aa8674">Для цього нам знадобиться скористатися генератором випадкових чисел, який відповідно до документації на прошивку NodeMCU здатен генерувати справжні випадкові числа. У прошивці для цього ми маємо готовий метод <code>node.random().</code></p>



<p class="wp-block-paragraph" id="block-c0c54a29-d8c5-4824-896e-cc3ce2eae785">Щоб хаотично розподілити обрану кількість імпульсів в межах однієї хвилини скористаємося таймерами, які можливо створювати у теоретично необмеженій кількості:</p>



<pre class="wp-block-code"><code>create():alarm(timer timeout, timer type, callback function)</code></pre>



<p class="wp-block-paragraph" id="block-a4766066-59e9-40ea-9b6e-8cfbb48c83e8">Єдиним обмеженням є кількість вільної оперативної пам’яті контролера. Експериментально ми встановили, що у такий спосіб без проблем можливо створювати близько 260 імпульсів на хвилину, що вкладається у наші вимоги до максимального рівня віртуальної радіації, яку може відтворити наш емулятор.</p>



<p class="wp-block-paragraph" id="block-cc004032-5661-4186-9c8c-e28b279f3726">Тож функція, яка у циклі створює випадкові таймаути запуску <code>pulseOut(),</code> має наступний вигляд:</p>



<pre class="wp-block-code"><code>local t_start = 0
local count = 0
local function randGen(pulses)
	for i = 1, pulses do -- pulses
			create():alarm(random(60000), ALARM_SINGLE, 
				function()
						print(heap(), count, i, (now() - t_start)/1000000)
						pulseOut()
				end
			)
	end
end</code></pre>



<p class="wp-block-paragraph" id="block-2b32df03-eab1-4d84-b60f-00e71a4c3ead">Працюючи у парі, розроблені нами функції <code>randGen(<em>pulses</em>)</code> та <code>pulseOut()</code> створюють необхідну нам кількість абсолютно випадкових імпульсів на виході ESP8266 тривалістю 10 мікросекунд кожен в межах однієї хвилини.</p>



<p class="wp-block-paragraph" id="block-70e9c748-19dd-4028-bbb7-5fe1f0280797">Кількість імпульсів на хвилину задаємо за допомогою параметра <em><code>pulses</code></em>.</p>



<p class="wp-block-paragraph" id="block-4a90ceb2-c169-4711-9d49-5b43bb34435e">Для того, щоб емулятор працював у різних режимах потужності удаваної радіації необхідно забезпечити випадкове значення кількості імпульсів <code><em>pulses</em>,</code> що потрапляє як завдання на вхід функції <code>randGen().</code> Це можна зробити наступним чином:</p>



<pre class="wp-block-code"><code>radMode = 1
rand_tmr = create()
rand_tmr:register(1000, ALARM_AUTO, 
	function()
		if radMode == 0 and running == 0 then 
			print(heap(), 'Mode0:Snsr Err emu')
			return 0
		end
		local num = 0
		if radMode == 1 then 
			num = random(math.ceil(18),math.ceil(35))
		elseif radMode == 2 then
			num = random(math.ceil(36),math.ceil(52))
		elseif radMode == 3 then
			num = random(math.ceil(53),math.ceil(105))
		elseif radMode == 4 then
			num = random(math.ceil(106),math.ceil(264))
		end
		if num ~= 0 then print('count:',count + 1,'mode:',radMode, 'num:',num); randGen(num) end
	end
)

rand_tmr:start()</code></pre>



<p class="wp-block-paragraph" id="block-e5b05b89-d43b-4a2d-8e18-2bffffe503be">Задаючи значення глобальної змінної <em><code>radMode</code></em>, користувач може задавати один з п’яти режимів потужності іонізуючого випромінювання, яке відтворює на виході емулятор.</p>



<p class="wp-block-paragraph" id="block-601d0a86-27e4-4066-a9a4-61d3770b1b94">Останнє, що нам необхідно передбачити у емуляторі, це перемикання режиму потужності радіації за допомогою вбудованої кнопки Flash / GPIO0 / D3:</p>



<pre class="wp-block-code"><code>trig(3, 'down', 
	function(lvl, ts, cnt)
		if radMode &lt; 4 then radMode = radMode + 1 else radMode = 0 end
		print ('New radMode:', radMode)
	end
)</code></pre>



<h3 class="wp-block-heading" id="block-1b688a62-cea2-48b8-811d-2e5cde4c87b1">Повний програмний код емулятора</h3>



<p class="wp-block-paragraph" id="block-be1e5721-a28c-4eb4-9552-eb301bf23577">Готового прикладу для цієї ролі контролера у нас немає, як було у випадку з головним контролером. Тож напишемо необхідний код з нуля. Ось мінімально необхідний код, який здатен виконувати емуляцію імпульсів лічильника Гейгера.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Примітка 6.</strong> Наведений у даному розділі код є лише прикладом. Ви можете самостійно завантажити і налагодити роботу даного прикладу у власному емуляторі лічильника Гейгера, або придбати готовий до використання апаратний модуль з прошивкою та повнофункціональним програмним забезпеченням у нашому магазині чи на Tindie за наступними посиланнями:</p><p>Сайт: <a href="https://iot-devices.com.ua/product-uk/gcemu20_v1-geiger-counter-emulator/">GCcemu20_V1</a></p><p>Tindie: <a href="https://www.tindie.com/products/iotdev/gcemu20_v1-geiger-counter-emulator/" target="_blank" rel="noopener">GCcemu20_V1</a></p></blockquote>



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



<pre class="wp-block-code"><code>-- filename: mcu_b.lua
-- MCU_B Lua code example
-- Copyright 2022 IoT-devices LLC, Kyiv, Ukraine
local t_start = 0
local count = 0
radMode = 0

local gpio = gpio
local mode = gpio.mode
local trig = gpio.trig
local write = gpio.write
local read = gpio.read
local INT = gpio.INT
local OUTPUT = gpio.OUTPUT
local FLOAT = gpio.FLOAT
local HIGH = gpio.HIGH
local LOW = gpio.LOW
local PULLUP = gpio.PULLUP
local print = print

local tmr = tmr
local create = tmr.create
local now = tmr.now
local delay = tmr.delay
local alarm = tmr.alarm
local ALARM_SINGLE = tmr.ALARM_SINGLE
local ALARM_SEMI = tmr.ALARM_SEMI
local ALARM_AUTO = tmr.ALARM_AUTO
local register = tmr.register
local start = tmr.start
local stop = tmr.stop

local node = node
local heap = node.heap
local random = node.random

mode(3,INT,FLOAT)
mode(4,OUTPUT, PULLUP)
write(4, HIGH)

local function pulseOut()
	write(4, LOW)
	delay(10)
	write(4, HIGH)
end

local function randGen(pulses)
	for i = 1, pulses do -- pulses
			create():alarm(random(60000), ALARM_SINGLE, 
				function()
						print(heap(), count, i, (now() - t_start)/1000000)
						pulseOut()
				end
			)
	end
end

rand_tmr = create()
rand_tmr:register(1000, ALARM_AUTO, 
	function()
		if radMode == 0 and running == 0 then 
			print(heap(), 'Mode0:Snsr Err emu')
			return 0
		end
		local num = 0
		if radMode == 1 then 
			num = random(math.ceil(18),math.ceil(35))
		elseif radMode == 2 then
			num = random(math.ceil(36),math.ceil(52))
		elseif radMode == 3 then
			num = random(math.ceil(53),math.ceil(105))
		elseif radMode == 4 then
			num = random(math.ceil(106),math.ceil(264))
		end
		if num ~= 0 then print('count:',count + 1,'mode:',radMode, 'num:',num); randGen(num) end
	end
)

rand_tmr:start()

trig(3, 'down', 
	function(lvl, ts, cnt)
		if radMode &lt; 4 then radMode = radMode + 1 else radMode = 0 end
		print ('New radMode:', radMode)
	end
)</code></pre>



<p class="wp-block-paragraph">Початок статті:  <a href="https://iot-devices.com.ua/geiger-counter-emulator-ggreg20_v3-module-by-means-of-esp8266-part1-ua/">Емулятор модуля лічильника Гейгера GGreg20_V3 засобами ESP8266: Частина 1. Вступ та загальний огляд </a></p>



<p class="wp-block-paragraph">Завершення статті за кілька днів у наступній публікації:<br>Емулятор модуля лічильника Гейгера GGreg20_V3 засобами ESP8266: Частина 3. Тестування та висновок</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Емулятор лічильника Гейгера GGreg20_V3 засобами ESP8266</title>
		<link>https://iot-devices.com.ua/geiger-counter-emulator-ggreg20_v3-module-by-means-of-esp8266-part1-ua/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Mon, 27 Mar 2023 18:55:25 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Новини]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[emulator]]></category>
		<category><![CDATA[ESP12.OLED]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Espressif]]></category>
		<category><![CDATA[Geiger]]></category>
		<category><![CDATA[geiger-counter]]></category>
		<category><![CDATA[GGreg20_V3]]></category>
		<category><![CDATA[GPIO]]></category>
		<category><![CDATA[iot]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[SBM20]]></category>
		<category><![CDATA[tindie]]></category>
		<category><![CDATA[unit test]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=2793</guid>

					<description><![CDATA[Ласкаво просимо до нашого посібника зі створення програмно-апаратного емулятора лічильника Гейгера GGreg20_V3 на базі ESP8266. Цей емулятор може бути корисним для тестування та налаштування лічильників Гейгера або у навчальних цілях. Давайте почнемо! Оновлено: Під час написання цієї статті, ми подумали і вирішили зробити окремий комерційний продукт &#8211; емулятор лічильника Гейгера GCemu20_V1. Частина 1: Вступ та [&#8230;]]]></description>
										<content:encoded><![CDATA[
<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> на базі ESP8266. Цей емулятор може бути корисним для тестування та налаштування лічильників Гейгера або у навчальних цілях. Давайте почнемо!</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Оновлено:</strong> Під час написання цієї статті, ми подумали і вирішили зробити окремий комерційний продукт &#8211; емулятор лічильника Гейгера <a href="https://iot-devices.com.ua/product-uk/gcemu20_v1-geiger-counter-emulator/">GCemu20_V1</a>.</p></blockquote>



<h2 class="wp-block-heading">Частина 1: Вступ та загальний огляд</h2>



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



<p class="wp-block-paragraph"><a href="https://web.archive.org/web/20170321162556/http://esp8266-re.foogod.com/wiki/Random_Number_Generator" target="_blank" rel="noopener">https://web.archive.org/web/20170321162556/http://esp8266-re.foogod.com/wiki/Random_Number_Generator</a></p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Увага</strong>. У тексті застосовується два різних поняття, які мають однакову назву. Так історично склалося, що на ринку існує апаратний модуль NodeMCU, а також програмна прошивка NodeMCU. </p><p>Прошивка NodeMCU &#8211; це компільована мікропрограма з відкритим вихідним кодом, яка може записуватися на апаратні модулі з контролером ESP8266 компанії Espressif. Одним з величезної кількості продуктів на базі контролера ESP8266, є апаратний модуль NodeMCU. </p><p>Тож програмну прошивку NodeMCU можливо записати на апаратний модуль NodeMCU. У тексті цієї статті ми намагаємося, де це можливо, вказувати, що саме мається на увазі поруч з назвою NodeMCU: модуль чи прошивка.</p></blockquote>



<h2 class="wp-block-heading"><a></a>Для чого потрібен емулятор лічильника Гейгера</h2>



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



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



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



<h3 class="wp-block-heading">1. Немає високої напруги</h3>



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



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



<h3 class="wp-block-heading">2. Спрощений навчальний процес</h3>



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



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



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



<h3 class="wp-block-heading">3. Нижча вартість</h3>



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



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



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



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



<h3 class="wp-block-heading">4. Справжнє джерело радіації не потрібне</h3>



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



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



<p class="wp-block-paragraph">З емулятором жодної з цих проблем не буде. Прилад вміє імітувати 5 різних режимів потужності іонізуючого випромінювання. Емулятор лічильника Гейгера створює вихідні імпульси аналогічні імпульсам справжнього модуля GGreg20_V3 у діапазоні від 0 до 1.5 мкЗв/год (якщо брати за аналогічний еталон трубку СБМ-20). На виході генеруються хаотичні (із застосуванням генератора справжніх випадкових чисел ESP8266) імпульси однакової амплітуди з тривалістю повного періоду імпульсу 10 мікросекунд кожен.</p>



<h3 class="wp-block-heading">5. Ресурс емулятора не виснажується</h3>



<p class="wp-block-paragraph">Трубка СБМ-20, яку встановлено у GGreg20_V3, має відносно великий, але все ж таки обмежений ресурс частинок, які вона може детектувати за своє життя.</p>



<p class="wp-block-paragraph">Заявлений у документації ресурс трубки СБМ-20 складає не менше 2*10<sup>10</sup> імпульсів.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Примітка 1</strong>. За фонового випромінювання 0.15 мкЗв/год з коефіцієнтом 0.0057 трубка СБМ-20 детектувати близько 27 імпульсів на хвилину.</p></blockquote>



<p class="wp-block-paragraph">Таким чином, за нормальних умов ресурсу трубки вистачить на 2*10<sup>10</sup> / (27 * 60 * 24) = 20 000 000 000 / (26 * 60 * 24) = 514403 днів. І здавалося б, що це цілком достатній потенційний строк експлуатації однієї трубки.</p>



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



<p class="wp-block-paragraph">Наведемо приклад:</p>



<p class="wp-block-paragraph">На своєму сайті компанія Images Scientific Instruments наводить перелік дозволених до ввозу граничних рівнів радіоактивного випромінювання для тестових джерел:</p>



<p class="wp-block-paragraph"><a href="https://www.imagesco.com/geiger/radioactive-sources-int.html" target="_blank" rel="noopener">https://www.imagesco.com/geiger/radioactive-sources-int.html</a></p>



<p class="wp-block-paragraph">Візьмемо два джерела з наведеного за посиланням переліку:</p>



<ol class="wp-block-list"><li>Co-60 1.00 uCi, 37000 Bq;</li><li>Cs-137 0.25 uCi, 9250 Bq;</li></ol>



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



<ol class="wp-block-list"><li>20 000 000 000 / (37000 / 2 * 60 * 60 * 24) = 12 днів (для Co-60);</li><li>20 000 000 000 / (9250 / 2 * 60 * 60 * 24) = 50 днів (для Cs-137).</li></ol>



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



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



<h3 class="wp-block-heading"> 6. Дані налагодження в UART</h3>



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



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



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>Примітка 2</strong>. Для підключення до UART-консолі, модуль <a href="https://iot-devices.com.ua/product-uk/esp12-oled-komplekt-2-kontroler-iot-bez-displeya-na-osnovi-esp8266-12f/">ESP12.OLED</a>, на якому базується емулятор GGreg20_V3, має на друкованій платі окремо виведені лінії інтерфейсу UART (отвори з кроком 2.54 мм під пайку). Для підключення емулятора до комп’ютера користувачеві додатково потрібно мати власний перетворювач USB-UART. Далі у тексті буде наведено схему підключення.</p></blockquote>



<p class="wp-block-paragraph">Продовження статті у наступних публікаціях:<br><a href="https://iot-devices.com.ua/geiger-counter-emulator-ggreg20_v3-module-by-means-of-esp8266-part2-ua/">Емулятор модуля лічильника Гейгера GGreg20_V3 засобами ESP8266 Частина 2 Створення емулятора</a><br>Емулятор модуля лічильника Гейгера GGreg20_V3 засобами ESP8266 Частина 3: Тестування та висновок</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Емулятор лічильника Гейгера з імпульсним виходом GCemu20_V1</title>
		<link>https://iot-devices.com.ua/gcemu20_v1-geiger-counter-emulator-with-pulse-output/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Thu, 23 Mar 2023 19:56:30 +0000</pubDate>
				<category><![CDATA[Новини]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Geiger]]></category>
		<category><![CDATA[GGreg20_V3]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=2763</guid>

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



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2023/03/gcemu20_v1_eng_press-release.png"><img loading="lazy" decoding="async" width="1024" height="683" src="https://iot-devices.com.ua/wp-content/uploads/2023/03/gcemu20_v1_eng_press-release-1024x683.png" alt="" class="wp-image-2765" srcset="https://iot-devices.com.ua/wp-content/uploads/2023/03/gcemu20_v1_eng_press-release-1024x683.png 1024w, https://iot-devices.com.ua/wp-content/uploads/2023/03/gcemu20_v1_eng_press-release-300x200.png 300w, https://iot-devices.com.ua/wp-content/uploads/2023/03/gcemu20_v1_eng_press-release-768x512.png 768w, https://iot-devices.com.ua/wp-content/uploads/2023/03/gcemu20_v1_eng_press-release-454x303.png 454w, https://iot-devices.com.ua/wp-content/uploads/2023/03/gcemu20_v1_eng_press-release.png 1500w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure></div>



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



<p class="wp-block-paragraph">Емулятор лічильника Гейгера з імпульсним виходом GCemu20_V1 &#8211; це не тільки чудовий інструмент для радіоаматорів та ентузіастів &#8220;зроби сам&#8221;, але й ідеальний пристрій для тих, хто займається розробкою, налаштуванням, тестуванням і вивченням детекторів радіації.</p>



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



<p class="wp-block-paragraph">&#8220;Ми раді представити наш останній продукт, емулятор лічильника Гейгера GCemu20_V1, на ринку B2C&#8221;, &#8211; сказав представник компанії. &#8220;Цей пристрій розроблений спеціально для радіоаматорів та ентузіастів &#8220;зроби сам&#8221;, яким потрібно імітувати рівні радіації в своїх проектах, і ми впевнені, що він задовольнить їхні унікальні потреби&#8221;.</p>



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



<p class="wp-block-paragraph"></p>



<figure class="wp-block-table is-style-stripes"><table><tbody><tr><td>Tindie:</td><td><a href="https://www.tindie.com/products/iotdev/gcemu20_v1-geiger-counter-emulator/" target="_blank" rel="noopener">GCemu20_V1</a></td></tr><tr><td>iot-devices.com.ua:</td><td><a href="https://iot-devices.com.ua/product-uk/gcemu20_v1-geiger-counter-emulator/">GCemu20_V1</a></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Для отримання додаткової інформації, будь ласка, відвідайте сайт IoT-devices, LLC.</p>



<h3 class="wp-block-heading">Про компанію IoT-devices, LLC</h3>



<p class="wp-block-paragraph">IoT-devices, LLC &#8211; провідний постачальник інноваційних рішень у сфері Інтернету речей. Компанія базується в Києві, Україна, і пропонує широкий спектр продуктів, покликаних допомогти своїм клієнтам покращити знання про Інтернет речей та досвід у сфері &#8220;зроби сам&#8221; і досягти поставлених цілей.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Як додати в сервер Home Assistant сенсор GGreg20_V3 з каналу ThingSpeak</title>
		<link>https://iot-devices.com.ua/yak-dodaty-v-server-home-assistant-sensor-ggreg20_v3-z-kanalu-thingspeak/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Wed, 27 Jul 2022 16:27:09 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[counter]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[geiger-counter]]></category>
		<category><![CDATA[gm-tube]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[radiation]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=2161</guid>

					<description><![CDATA[Якщо у вас є контролер з модулем детектора радіації GGreg20_V3, який періодично надсилає дані на сервер ThingSpeak, то ви також можете легко підключити його&#160; і до вашого сервера Home Assistant. У цій публікації ми розглянемо чому може виникнути така необхідність, а також як це зробити. У даній публікації ми приводимо приклади на двох модулях виробництва [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Якщо у вас є контролер з модулем детектора радіації GGreg20_V3, який періодично надсилає дані на сервер <a href="https://thingspeak.com/" target="_blank" rel="noopener">ThingSpeak</a>, то ви також можете легко підключити його&nbsp; і до вашого сервера <a href="https://www.home-assistant.io/" target="_blank" rel="noopener">Home Assistant</a>. У цій публікації ми розглянемо чому може виникнути така необхідність, а також як це зробити.</p>



<p class="wp-block-paragraph">У даній публікації ми приводимо приклади на двох модулях виробництва IoT-devices LLC:</p>



<ul class="wp-block-list"><li>модуль контролера <a href="https://iot-devices.com.ua/product-uk/esp12oled-universal-esp8266-mcuboard-oled/">ESP12.OLED</a> з ESP8266;</li><li>модуль детектора іонізуючої радіації <a href="https://iot-devices.com.ua/product-uk/ggreg20_v3-ionizing-radiation-detector-with-geiger-tube-sbm-20/">GGreg20_V3</a>.</li></ul>



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



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3.jpg"><img loading="lazy" decoding="async" width="1024" height="768" src="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3-1024x768.jpg" alt="" class="wp-image-2165" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3-1024x768.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3-300x225.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3-768x576.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3-1536x1152.jpg 1536w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3-454x341.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto1-esp12oled-esp8266-ggreg20v3.jpg 1600w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>F1. Лічильник Гейгера з контролером ESP12.OLED (на базі ESP8266) з сенсором GGreg20_V3</figcaption></figure></div>



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



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto2-ggreg20v3-radiation-sensor-node-data-flow-thingspeak.jpg"><img loading="lazy" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto2-ggreg20v3-radiation-sensor-node-data-flow-thingspeak.jpg" alt="" class="wp-image-2170" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto2-ggreg20v3-radiation-sensor-node-data-flow-thingspeak.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto2-ggreg20v3-radiation-sensor-node-data-flow-thingspeak-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto2-ggreg20v3-radiation-sensor-node-data-flow-thingspeak-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto2-ggreg20v3-radiation-sensor-node-data-flow-thingspeak-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto2-ggreg20v3-radiation-sensor-node-data-flow-thingspeak-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a><figcaption>F2. GGreg20_V3 Radiation Sensor Node data flow to ThingSpeak</figcaption></figure></div>



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



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



<ul class="wp-block-list"><li>контролер на базі ESP8266, як у нас, або будь-який інший з підтримкою <a href="https://en.wikipedia.org/wiki/Representational_state_transfer" target="_blank" rel="noopener">REST</a> (HTTP POST/GET);&nbsp;</li><li>модуль GGreg20_V3, або будь-який інший сенсор;&nbsp;</li><li>налаштований <a href="https://thingspeak.com/channels/1749073" target="_blank" rel="noopener">публічний канал ThingSpeak</a>: власний (щоб мати змогу вносити зміни), або наш (тільки читання, як приклад);&nbsp;</li><li>програмний код (у нашому випадку це <a href="https://nodemcu.readthedocs.io/en/latest/modules/http/#httppost" target="_blank" rel="noopener">Lua-скрипт</a> для прошивки NodeMCU), який відправляє дані з контролера у хмару ThingSpeak;</li><li>сервер <a href="https://www.home-assistant.io/" target="_blank" rel="noopener">Home Assistant</a> з доступом адміністратора.</li></ul>



<p class="wp-block-paragraph">Отже, у нас є модуль ESP12.OLED з <a href="https://github.com/nodemcu/nodemcu-firmware" target="_blank" rel="noopener">прошивкою NodeMCU</a> і розробленим кодом на Lua та підключеним до нього сенсором GGreg20_V3, який вже працює з сервісом ThingSpeak. Нам дуже не хочеться вносити в нього якісь зміни спеціально для Home Assistant. Крім того, сенсор, що у нас вже є, підключено до <a href="https://twitter.com/GGreg20_V3" target="_blank" rel="noopener">Twitter</a> через <a href="https://www.mathworks.com/help/thingspeak/thingtweet-app.html" target="_blank" rel="noopener">ThingSpeak</a> у якості демонстраційного сенсорного вузла. Тож втручатися в його роботу до наших планів не входить.. Але ми хочемо також отримувати з нього виміри в наш сервер Home Assistant. Ба більше, це може бути сенсор сусіда, який ми також можемо використовувати як джерело даних для нашого Home Assistant. Саме тому ми вирішили скористатися з наявних інструментів і вирішити всі задачі одночасно з мінімальними трудовитратами.</p>



<h2 class="wp-block-heading">Інформаційні потоки</h2>



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



<p class="wp-block-paragraph">Це можливо зробити завдяки можливостям, які нам надає сервіс ThingSpeak. Схема руху даних наведена на наступному Рис.</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto3-dataflows-homeassistant-thingspeak-httpget-request-response.jpg"><img loading="lazy" decoding="async" width="960" height="540" src="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto3-dataflows-homeassistant-thingspeak-httpget-request-response.jpg" alt="" class="wp-image-2172" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto3-dataflows-homeassistant-thingspeak-httpget-request-response.jpg 960w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto3-dataflows-homeassistant-thingspeak-httpget-request-response-300x169.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto3-dataflows-homeassistant-thingspeak-httpget-request-response-768x432.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto3-dataflows-homeassistant-thingspeak-httpget-request-response-800x450.jpg 800w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto3-dataflows-homeassistant-thingspeak-httpget-request-response-454x255.jpg 454w" sizes="(max-width: 960px) 100vw, 960px" /></a><figcaption>F3. Data Flows: Home Assistant &#8211; ThingSpeak HTTP GET Request/Response</figcaption></figure></div>



<p class="wp-block-paragraph">Наш демонстраційний канал для модуля GGreg20_V3 на ThingSpeak працює у постійному режимі та має такий вигляд:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto4-public-ggreg20v3-radiationsensorchannel-thingspeak.jpg"><img loading="lazy" decoding="async" width="1024" height="746" src="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto4-public-ggreg20v3-radiationsensorchannel-thingspeak-1024x746.jpg" alt="" class="wp-image-2174" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto4-public-ggreg20v3-radiationsensorchannel-thingspeak-1024x746.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto4-public-ggreg20v3-radiationsensorchannel-thingspeak-300x219.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto4-public-ggreg20v3-radiationsensorchannel-thingspeak-768x559.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto4-public-ggreg20v3-radiationsensorchannel-thingspeak-454x331.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto4-public-ggreg20v3-radiationsensorchannel-thingspeak.jpg 1418w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>F4. Public GGreg20_V3 Radiation Sensor Node Channel at ThingSpeak</figcaption></figure></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Адреса даного каналу така: <a href="https://thingspeak.com/channels/1749073" target="_blank" rel="noopener">https://thingspeak.com/channels/1749073</a></p>



<p class="wp-block-paragraph">Крім цього каналу ви також можете переглядати та підписатися на твіти нашого демо-модуля у мережі Twitter за посиланням: <a href="https://twitter.com/GGreg20_V3" target="_blank" rel="noopener">https://twitter.com/GGreg20_V3</a></p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto5-ggreg20v3-radiationsensornode-tweeting-live-from-kyiv.jpg"><img loading="lazy" decoding="async" width="969" height="509" src="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto5-ggreg20v3-radiationsensornode-tweeting-live-from-kyiv.jpg" alt="" class="wp-image-2176" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto5-ggreg20v3-radiationsensornode-tweeting-live-from-kyiv.jpg 969w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto5-ggreg20v3-radiationsensornode-tweeting-live-from-kyiv-300x158.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto5-ggreg20v3-radiationsensornode-tweeting-live-from-kyiv-768x403.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto5-ggreg20v3-radiationsensornode-tweeting-live-from-kyiv-454x238.jpg 454w" sizes="(max-width: 969px) 100vw, 969px" /></a><figcaption>F5. GGreg20_V3 Radiation Sensor Node tweeting live from Kyiv</figcaption></figure></div>



<p class="wp-block-paragraph">Також рекомендуємо переглянути корисні розділи нашого сайту за цією темою:</p>



<figure class="wp-block-embed is-type-wp-embed is-provider-electronics-manufacturer-for-iot wp-block-embed-electronics-manufacturer-for-iot"><div class="wp-block-embed__wrapper">
<div class="oceanwp-oembed-wrap clr"><blockquote class="wp-embedded-content" data-secret="Q37gESv1ld"><a href="https://iot-devices.com.ua/en/our-modules-real-demo/">Our modules: real demo</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;Our modules: real demo&#8221; &#8212; Electronics manufacturer for IoT" src="https://iot-devices.com.ua/en/our-modules-real-demo/embed/#?secret=upjG4LqpNx#?secret=Q37gESv1ld" data-secret="Q37gESv1ld" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div>
</div></figure>



<figure class="wp-block-embed is-type-wp-embed is-provider-electronics-manufacturer-for-iot wp-block-embed-electronics-manufacturer-for-iot"><div class="wp-block-embed__wrapper">
<div class="oceanwp-oembed-wrap clr"><blockquote class="wp-embedded-content" data-secret="2B5Koyrijw"><a href="https://iot-devices.com.ua/en/ggreg20_v3-ionizing-radiation-detector/">GGreg20_V3 Ionizing Radiation Detector</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8220;GGreg20_V3 Ionizing Radiation Detector&#8221; &#8212; Electronics manufacturer for IoT" src="https://iot-devices.com.ua/en/ggreg20_v3-ionizing-radiation-detector/embed/#?secret=JFBupmBawV#?secret=2B5Koyrijw" data-secret="2B5Koyrijw" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div>
</div></figure>



<h2 class="wp-block-heading">Реалізація задачі у Home Assistant</h2>



<p class="wp-block-paragraph">Сервер Home Assistant має всі необхідні механізми та інструменти для реалізації поставленої нами задачі. Таке підключення віртуального сенсора до даних у хмарі вирішується в кілька рядків конфігурації у файлі /config/configuration.yaml сервера:</p>



<pre class="wp-block-code"><code>#YAML 
  - platform: rest 
    name: UA GGreg20_V3 Radiation Sensor Node 
    resource: https://api.thingspeak.com/channels/1749073/fields/2.json?results=1 
    scan_interval: 300 # check every 5 minutes 
    unit_of_measurement: uSv/h  
    value_template: '{{ value_json.feeds.0.field2 }}' 
    headers: 
      Content-Type: application/json 
#YAML 
</code></pre>



<h2 class="wp-block-heading">Результати</h2>



<p class="wp-block-paragraph">Після додавання такого фрагменту конфігурації та перезапуску сервера ми отримуємо новий сенсор в Home Assistant. На наступних Рис. наводимо скріншоти отриманих результатів:</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto6-developertools-menu-new-sensor-entity.jpg"><img loading="lazy" decoding="async" width="1024" height="564" src="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto6-developertools-menu-new-sensor-entity-1024x564.jpg" alt="" class="wp-image-2179" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto6-developertools-menu-new-sensor-entity-1024x564.jpg 1024w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto6-developertools-menu-new-sensor-entity-300x165.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto6-developertools-menu-new-sensor-entity-768x423.jpg 768w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto6-developertools-menu-new-sensor-entity-454x250.jpg 454w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto6-developertools-menu-new-sensor-entity.jpg 1415w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption>F6. Developer Tools Menu. New sensor entity</figcaption></figure></div>



<p class="wp-block-paragraph">Віджети, які ми створили для перегляду даних сенсора в Home Assistant:</p>



<div class="wp-block-image"><figure class="aligncenter size-full"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto7-dashboard-widget-examples.jpg"><img loading="lazy" decoding="async" width="465" height="302" src="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto7-dashboard-widget-examples.jpg" alt="" class="wp-image-2181" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/07/foto7-dashboard-widget-examples.jpg 465w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto7-dashboard-widget-examples-300x195.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2022/07/foto7-dashboard-widget-examples-454x295.jpg 454w" sizes="(max-width: 465px) 100vw, 465px" /></a><figcaption>F7. Dashboard widget examples</figcaption></figure></div>



<p class="wp-block-paragraph">Отримавши на рівні Home Assistant новий сенсор, ми можемо виконувати за його допомогою такі задачі, наче це справжній сенсор:&nbsp;</p>



<ul class="wp-block-list"><li>реалізовувати сценарії автоматизації, </li><li>створювати віджети, </li><li>сповіщати про рівні радіації за порогами, </li><li>використовувати значення з сенсора як вхідні дані для інших пристроїв, підключених до Home Assistant, тощо.</li></ul>



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



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



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



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



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



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



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



<p class="wp-block-paragraph">Ми вирішили всі ці питання авдяки протоколу REST (HTTP), сервісу ThingSpeak та серверу Home Assistant. Подяка їх розробникам.</p>



<p class="wp-block-paragraph">На цьому все. Бажаємо успіхів!</p>



<p class="wp-block-paragraph">IoT-devices, LLC</p>



<p class="wp-block-paragraph"></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>Приклад Lua коду для GGreg20_V3 з прошивкою NodeMCU з контролером ESP8266 / ESP32</title>
		<link>https://iot-devices.com.ua/lua-code-example-for-ggreg20-with-nodemcu-firmware-esp8266-esp32/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Thu, 03 Feb 2022 23:51:57 +0000</pubDate>
				<category><![CDATA[Новини]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ESP32]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[GGreg20_V3]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=1784</guid>

					<description><![CDATA[Київ. Україна. Команда IoT-devices LLC розробила та виклала у вільний доступ на GitHub приклад Lua коду для свого продукту GGreg20_V3, який може бути застосовано&#160;для контролерів ESP8266 та ESP32 з прошивкою NodeMCU. Скрипт дозволяє отримувати імпульси від модуля детектування іонізуючої радіації GGreg20_V3, накопичувати імпульси та розраховувати ковзне середнє (MA5) потужності випромінювання (uSV/h) з п&#8217;ятихвилинним буфером.Ви можете [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Київ. Україна. Команда IoT-devices LLC розробила та виклала у вільний доступ на GitHub приклад Lua коду для свого продукту GGreg20_V3, який може бути застосовано&nbsp;для контролерів ESP8266 та ESP32 з прошивкою NodeMCU. </p>



<figure class="wp-block-image size-large"><a href="https://iot-devices.com.ua/wp-content/uploads/2022/02/ggreg20_v3_luaexample_iot-deviceslogo.png"><img loading="lazy" decoding="async" width="1024" height="683" src="https://iot-devices.com.ua/wp-content/uploads/2022/02/ggreg20_v3_luaexample_iot-deviceslogo-1024x683.png" alt="lua code example ggreg20_v3 " class="wp-image-1786" srcset="https://iot-devices.com.ua/wp-content/uploads/2022/02/ggreg20_v3_luaexample_iot-deviceslogo-1024x683.png 1024w, https://iot-devices.com.ua/wp-content/uploads/2022/02/ggreg20_v3_luaexample_iot-deviceslogo-300x200.png 300w, https://iot-devices.com.ua/wp-content/uploads/2022/02/ggreg20_v3_luaexample_iot-deviceslogo-768x512.png 768w, https://iot-devices.com.ua/wp-content/uploads/2022/02/ggreg20_v3_luaexample_iot-deviceslogo-454x303.png 454w, https://iot-devices.com.ua/wp-content/uploads/2022/02/ggreg20_v3_luaexample_iot-deviceslogo.png 1500w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="wp-block-paragraph">Скрипт дозволяє отримувати імпульси від модуля детектування іонізуючої радіації GGreg20_V3, накопичувати імпульси та розраховувати ковзне середнє (MA5) потужності випромінювання (uSV/h) з п&#8217;ятихвилинним буфером.<br>Ви можете знайти репозиторій за наступним посиланням:</p>



<p class="wp-block-paragraph"><a href="https://github.com/iotdevicesdev/ggreg20-v3-nodemcu-lua-example" target="_blank" rel="noreferrer noopener">https://github.com/iotdevicesdev/ggreg20-v3-nodemcu-lua-example</a> </p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Про Lora, UART, Lua, NodeMCU та ESP8266</title>
		<link>https://iot-devices.com.ua/pro-lora-uart-lua-nodemcu-ta-esp8266/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Tue, 27 Jul 2021 17:43:39 +0000</pubDate>
				<category><![CDATA[Тестування]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[lora]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[UART]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=1117</guid>

					<description><![CDATA[Останнім часом вирішили поглибити досвід роботи з LoRa. Модуль LoRa обирали за наступними принципами: відносно низька вартість; є достатніми, щоб перевірити і зрозуміти технологію LoRa у режимі P2P; має простий інтерфейс програмування &#8211; UART (сам чіп зазвичай має лише SPI &#8211; незручний інтерфейс для LoRa у якості модему) підтримка режиму роботи Node &#8211; Node, тобто [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Останнім часом вирішили поглибити досвід роботи з <a class="rank-math-link" href="https://www.actility.com/what-is-lorawan/" target="_blank" rel="noopener">LoRa</a>.</p>



<p class="wp-block-paragraph">Модуль LoRa обирали за наступними принципами:</p>



<ul class="wp-block-list"><li>відносно низька вартість;</li><li>є достатніми, щоб перевірити і зрозуміти технологію LoRa у режимі P2P;</li><li>має простий інтерфейс програмування &#8211; UART (сам чіп зазвичай має лише SPI &#8211; незручний інтерфейс для LoRa у якості модему)</li><li>підтримка режиму роботи Node &#8211; Node, тобто без “LoRa-хаба”.</li><li>також завдяки UART, має легко конфігуруватися у консолі &#8211; має бути підтримка</li></ul>



<p class="wp-block-paragraph">Ми знайшли один такий і придбали комплект для тестування. Це модулі AIThinker RA-06 на базі вже не нового і всім відомого чіпа Semtech&nbsp; SX1278.</p>



<h3 class="wp-block-heading"><strong>Заздалегідь відомі недоліки</strong></h3>



<p class="wp-block-paragraph">Для цих чіпів немає готових драйверів під ESPHome (читай Home Assistant).</p>



<p class="wp-block-paragraph">Щоправда, в ESPHome є потенційна можливість: підключення через Custom UART Text Sensor API, але це значить, окрім інтеграційних скриптів на YAML, програмування конекторів/парсерів на С. І це не дуже добре, адже Home Assistant зараз є дуже популярною платформою. Чомусь розробники HA/ESPHome не зробили жодної підтримки для LoRa.</p>



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



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



<p class="wp-block-paragraph">Саме тому ми все ж вирішили попрацювати з RA-06 SX1278.</p>



<h3 class="wp-block-heading"><strong>Підтримка модуля в прошивці NodeMCU</strong></h3>



<p class="wp-block-paragraph">Тут теж немає готового драйвера ні для модуля AIThinker RA-06, ні для чіпа SX1278, але у складі прошивки NodeMCU є універсальний модуль Soft-UART, що дозволяє підключити модуль до будь-яких двох GPIO ESP8266 і програмувати його на рівні Lua.</p>



<p class="wp-block-paragraph">На жаль, під час тестування виявилося, що один з параметрів протоколу UART не підтримується обопільно двома цими системами:</p>



<ul class="wp-block-list"><li>Soft-UART прошивки NodeMCU функціонально обмежений і не підтримує режим <code>Parity: Odd</code> або <code>Even</code>. Доступний лише <code>Parity:None</code>.</li><li>LoRa модуль не підтримує <code>Parity:None</code>, але підтримує <code>Odd</code> чи <code>Even</code>.</li></ul>



<p class="wp-block-paragraph">Ця дрібничка, на яку зазвичай взагалі ніхто не звертає уваги, не дозволяє працювати з модулем LoRa через програмний Soft-UART.</p>



<h3 class="wp-block-heading"><strong>Апаратний інтерфейс UART контролера ESP8266</strong></h3>



<p class="wp-block-paragraph">Залишається лише можливість використовувати апаратний інтерфейс UART 0 модуля ESP8266.</p>



<p class="wp-block-paragraph">І тоді все має бути добре. &#8211; Якби не прикрість, що цей UART в NodeMCU застосовується для консолі програмування. А ще одного повного TX/RX UART в ESP8266EX немає.</p>



<h3 class="wp-block-heading"><strong>Що ж робити?</strong></h3>



<p class="wp-block-paragraph">Є вихід. Потрібно лишень:</p>



<ul class="wp-block-list"><li>перенаправити консоль програмування у інший протокол &#8211; наприклад, працювати з консоллю через інкапсульований у WiFi і TCP : telnet.</li><li>підключити LoRa модуль на місце консолі (тобто на апаратний UART0)</li></ul>



<p class="wp-block-paragraph">Про результати спроби запустити LoRa через UART на ESP8266 під керуванням NodeMCU розповімо зовсім скоро у наших наступних публікаціях.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>ESP8266 + датчик двері / вікна (NodeMCU (LUA) &#8211; без Arduino)</title>
		<link>https://iot-devices.com.ua/nodemcu-lua-esp8266-door-window-sensor-no-arduino/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Fri, 02 Oct 2020 08:15:37 +0000</pubDate>
				<category><![CDATA[Новини]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[door-window]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[no-Arduino]]></category>
		<category><![CDATA[NodeMCU]]></category>
		<category><![CDATA[sensor]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=858</guid>

					<description><![CDATA[У цьому керівництві показано, як побудувати датчик двері / вікна тільки з ESP8266 і NodeMCU (LUA) &#8211; без Arduino. Використовується інтерфейс EasyIoT для відображення статусу дверей / вікон на телефоні, планшеті або настільному комп&#8217;ютері. Читати далі]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">У цьому керівництві показано, як побудувати датчик двері / вікна тільки з ESP8266 і NodeMCU (LUA) &#8211; без Arduino. Використовується інтерфейс EasyIoT для відображення статусу дверей / вікон на телефоні, планшеті або настільному комп&#8217;ютері.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="400" height="400" src="https://iot-devices.com.ua/wp-content/uploads/2020/10/nodemcu.jpg" alt="" class="wp-image-860" srcset="https://iot-devices.com.ua/wp-content/uploads/2020/10/nodemcu.jpg 400w, https://iot-devices.com.ua/wp-content/uploads/2020/10/nodemcu-100x100.jpg 100w, https://iot-devices.com.ua/wp-content/uploads/2020/10/nodemcu-300x300.jpg 300w, https://iot-devices.com.ua/wp-content/uploads/2020/10/nodemcu-150x150.jpg 150w" sizes="(max-width: 400px) 100vw, 400px" /></figure></div>



<p class="wp-block-paragraph"><a href="https://iot-playground.com/blog/2-uncategorised/36-esp8266-door-window-sensor-nodemcu-lua-no-arduino" class="rank-math-link" target="_blank" rel="noopener"><strong>Читати далі</strong></a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
