<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Урок 21. UNITS. EARTH]]></title><description><![CDATA[<h3>Цель урока</h3>
<p dir="auto">Привет! Сегодня мы познакомимся с EARTH UNITS и научимся определять влажность почвы в горшке с растением (рисунок 1).</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/17307d/PK8qsB5Av20.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 1</p>
<p dir="auto">Этот урок научит: получать и обрабатывать аналоговые данные о влажности почвы с датчика.</p>
<h3>Краткая справка</h3>
<ul>
<li>Назначение: применяют для определения влажности почвы</li>
<li>Сфера применения: сельское хозяйство и наука</li>
<li>Интерфейс подключения: I / O (разъём Groove Port B)</li>
<li>Напряжение питания: 5 В</li>
<li>Совместимость: M5 FIRE</li>
<li>Форм-фактор: LEGO-совместимый</li>
</ul>
<h3>Краткий обзор</h3>
<p dir="auto">EARTH — один из большого семейства дополнительных модулей (UNITS), предназначенных прежде всего для М5 Fire. Поставляется данный модуль в пластиковой коробке. В комплект входит отличный кабель (15 см) с установленными вилками Groove (рисунок 2). На лицевой стороне датчика имеется наклейка с названием модуля и обозначением контактов. Интересно то, что датчик может работать в двух режимах: как в аналоговом, так и в цифровом.</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/173086/jlIhFTSlFVI.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 2</p>
<p dir="auto">Для того, чтобы установить порог срабатывания для цифрового выхода, на обратной стороне датчика имеется движок подстроечного резистора (рисунок 3), который можно вращать с помощью отвертки.</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/173090/ZHGO9vV1wzM.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 3</p>
<p dir="auto">Габаритные размеры датчика смешные, и, проблем с установкой не будет (рисунок 4) :)</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/17309a/JpAzWTRajxM.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 4</p>
<p dir="auto">Подключается датчик напрямую к указанному выше порту М5 с помощью прилагаемого кабеля (рисунок 5). Устанавливается датчик вилкой в грунт до чёрного слоя.</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/1730a4/bOw8fI42iTM.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 5</p>
<h2>Начнём!</h2>
<h3>Blockly (<a href="http://flow.m5stack.com" target="_blank" rel="noopener noreferrer nofollow ugc">UI Flow</a>)</h3>
<p dir="auto">Прежде всего мы должны убедиться в том, что UI Flow подключён к M5. Если Вы видите надпись "Disconneted", то многократно нажимайте на стрелки (1) до тех, пор пока надпись (2) не смениться на "Connected". Отлично! Теперь можем добавить UNITS для этого кликните на плюс (3) (рисунок 6).</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/1730c1/nzbUMgRky8s.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6</p>
<p dir="auto">Хорошо, теперь поставьте галочку около EARTH (1), затем нажмите ОК (2) (рисунок 6.1).</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/1730ad/VGi4XTgzDbA.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.1</p>
<p dir="auto">Для того, чтобы получить аналоговые данные с модуля необходимо добавить соответствующий пазл Blockly. Нажмите UNITS (1), затем Earth (2), далее передащите в рабочую область пазл Analog Value (3) (рисунок 6.2).</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/1730b7/npYL4TDyIsk.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.2</p>
<p dir="auto">Класс! Теперь мы хотим изменять изображение в зависимости от влажности почвы. Первое - необходимо загрузить изображения из архива Images.zip в устройство. Для этого кликните на иконку Resource Manager (1) (рисунок 6.3).</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020455/1710b7/GYp5nVpXUmg.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.3</p>
<p dir="auto">Далее нажмите кнопку Add Image (1) и загрузите поочерёдно все четыре изображения, затем нажмите Cancel (2) (рисунок 6.4). На этом загрузка изображений в устройство завершена.</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020455/1710c1/LADSBxMSFjQ.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.4</p>
<p dir="auto">Перетащите образ Image и бросьте на дисплей виртуального устройства (1). Кликните на появившуюся картинку, затем откроется таблица свойств. Необходимо изменить первые четыре свойства в соответствии с номером картинки (2) (рисунок 6.5). Повторите данный шаг для каждого изображения.</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020455/1710f1/CBsU_HjlhD4.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 6.5</p>
<p dir="auto">Хорошо. Не забудьте конвертировать полученное значение с аналогового входа из типа float в тип integer с помощью соответствующего пазла (рисунок 7).</p>
<p dir="auto"><img src="https://pp.userapi.com/c847020/v847020151/1730ca/Mt_oLZlmwPc.jpg" alt="" class=" img-fluid img-markdown" /></p>
<p dir="auto">Рисунок 7.</p>
<p dir="auto">На этом урок закончен! :)</p>
<h3>MicroPython (<a href="http://flow.m5stack.com" target="_blank" rel="noopener noreferrer nofollow ugc">UI Flow</a>)</h3>
<pre><code>from m5stack import *
from m5ui import *
import units

clear_bg(0x111111)
earth0 = units.Earth(units.PORTB)


btnA = M5Button(name="ButtonA", text="ButtonA", visibility=False)
btnB = M5Button(name="ButtonB", text="ButtonB", visibility=False)
btnC = M5Button(name="ButtonC", text="ButtonC", visibility=False)
image0 = M5Img(20, 20, "res/0.jpg", True)
image1 = M5Img(20, 20, "res/1.jpg", True)
image2 = M5Img(20, 20, "res/2.jpg", True)
image3 = M5Img(20, 20, "res/3.jpg", True)

wet = None
percent = None
dry = None



while True:
  wet = int((earth0.a_read()))
  percent = wet * 100
  percent = percent / 1024
  wet = wet * 255
  wet = wet / 1024
  dry = 255 - wet
  rgb.set_all(int('0x%02x%02x%02x' % (round(min(100, max(0, dry)) * 2.55), round(min(100, max(0, dry)) * 2.55), round(min(100, max(0, wet)) * 2.55))))
  if percent &gt;= 50:
    image0.show()
  else:
    if percent &gt;= 30:
      image1.show()
    else:
      if percent &gt;= 20:
        image2.show()
      else:
        image3.show()
  wait(0.1)
  wait(0.001)
</code></pre>
<h3>C &amp; C++ (<a href="https://www.arduino.cc/en/Main/Software" target="_blank" rel="noopener noreferrer nofollow ugc">Arduino IDE</a>)</h3>
<p dir="auto">Пример ещё не написан ^_^</p>
<h3>Downloads</h3>
<ol>
<li><a href="https://yadi.sk/d/pavvcKByDy1iyA" target="_blank" rel="noopener noreferrer nofollow ugc">Images</a></li>
</ol>
<h3>Demo</h3>
<ol>
<li><a href="https://youtu.be/II13VrG-BkU" target="_blank" rel="noopener noreferrer nofollow ugc">YouTube</a></li>
</ol>
]]></description><link>https://community.m5stack.com/topic/496/урок-21-units-earth</link><generator>RSS for Node</generator><lastBuildDate>Thu, 07 May 2026 00:04:24 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/496.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Jan 2019 09:57:27 GMT</pubDate><ttl>60</ttl></channel></rss>