<?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>LM75 &#8211; IoT-devices, LLC &#8211; Electronics manufacturer for IoT</title>
	<atom:link href="https://iot-devices.com.ua/tag/lm75/feed/" rel="self" type="application/rss+xml" />
	<link>https://iot-devices.com.ua</link>
	<description>Від модулів до складних пристроїв</description>
	<lastBuildDate>Sun, 07 Jan 2024 17:30:24 +0000</lastBuildDate>
	<language>uk</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</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>LM75 &#8211; IoT-devices, LLC &#8211; Electronics manufacturer for IoT</title>
	<link>https://iot-devices.com.ua</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Термометр LM75: підключення  до ESP12.OLED_V1 у ESPHome</title>
		<link>https://iot-devices.com.ua/lm75-thermometer-connection-to-esp12-oled_v1-in-esphome/</link>
		
		<dc:creator><![CDATA[iot-guru]]></dc:creator>
		<pubDate>Sun, 07 Jan 2024 11:21:20 +0000</pubDate>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Тестування]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[ESP12.OLED]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[ESPHome]]></category>
		<category><![CDATA[Home Assistant]]></category>
		<category><![CDATA[I2CHUB_V1]]></category>
		<category><![CDATA[LM75]]></category>
		<category><![CDATA[yaml]]></category>
		<guid isPermaLink="false">https://iot-devices.com.ua/?p=3223</guid>

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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


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


esp8266:
  board: nodemcuv2


logger:


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


ota:
  password: "c15e9a44e1408352d945b8cd35b79"


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


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


captive_portal:


i2c:
  sda: 4
  scl: 5
  id: i2c_bus


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


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



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



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



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



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



<p>1 x Модуль LM75 (no brand);</p>



<p>1 x Модуль CJMCU-75.</p>



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



<p>Головне, що ми хотіли вам розповісти у цьому тексті:</p>



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



<p>Як можна бачити на наступних скріншотах, наш проект успішно виконано:</p>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p>Це наразі все, що ми запланували розповісти за цією темою.</p>



<p>Дякуємо за увагу!</p>



<p>Бажаємо успіхів!</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
