You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/2-farm/lessons/2-detect-soil-moisture/README.md

169 lines
28 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "4fb20273d299dc8d07a8f06c9cd0cdd9",
"translation_date": "2025-08-26T22:42:39+00:00",
"source_file": "2-farm/lessons/2-detect-soil-moisture/README.md",
"language_code": "ru"
}
-->
C, произносится как *ай-квадрат-си*, — это протокол с несколькими контроллерами и периферийными устройствами, где любое подключенное устройство может выступать в роли контроллера или периферийного устройства, общаясь через шину I²C (так называют систему передачи данных). Данные передаются в виде адресованных пакетов, каждый из которых содержит адрес устройства, для которого они предназначены.
> 💁 Ранее эту модель называли master/slave (ведущий/ведомый), но от этой терминологии отказываются из-за её ассоциации с рабством. [Ассоциация Open Source Hardware приняла термины контроллер/периферия](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), но вы всё ещё можете встретить упоминания старой терминологии.
Устройства имеют адрес, который используется при подключении к шине I²C, и обычно он жёстко задан на устройстве. Например, каждый тип датчиков Grove от Seeed имеет одинаковый адрес: все датчики освещённости имеют один адрес, все кнопки — другой, отличный от адреса датчиков освещённости. Некоторые устройства позволяют изменить адрес, изменяя настройки перемычек или спаивая контакты.
I²C использует шину, состоящую из двух основных проводов, а также двух проводов питания:
| Провод | Название | Описание |
| ---- | --------- | ----------- |
| SDA | Serial Data (Серийные данные) | Этот провод используется для передачи данных между устройствами. |
| SCL | Serial Clock (Серийные часы) | Этот провод передаёт тактовый сигнал с частотой, установленной контроллером. |
| VCC | Voltage common collector (Общий коллектор напряжения) | Источник питания для устройств. Этот провод подключён к проводам SDA и SCL через подтягивающий резистор, который отключает сигнал, если ни одно устройство не является контроллером. |
| GND | Ground (Земля) | Обеспечивает общий контур для электрической цепи. |
![Шина I2C с 3 устройствами, подключёнными к проводам SDA и SCL, с общим проводом заземления](../../../../../translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.ru.png)
Для передачи данных одно из устройств инициирует стартовое состояние, показывая, что оно готово передавать данные. Оно становится контроллером. Затем контроллер отправляет адрес устройства, с которым хочет взаимодействовать, а также указывает, хочет ли он читать или записывать данные. После передачи данных контроллер отправляет сигнал остановки, чтобы показать, что передача завершена. После этого другое устройство может стать контроллером и начать передачу или приём данных.
I<sup>2</sup>C имеет ограничения по скорости, с тремя различными режимами, работающими на фиксированных скоростях. Самый быстрый — это режим высокой скорости с максимальной скоростью 3.4 Мбит/с (мегабит в секунду), хотя очень мало устройств поддерживают такую скорость. Например, Raspberry Pi ограничен быстрым режимом на 400 Кбит/с (килобит в секунду). Стандартный режим работает на скорости 100 Кбит/с.
> 💁 Если вы используете Raspberry Pi с Grove Base hat в качестве вашего IoT-оборудования, вы сможете увидеть несколько разъемов I<sup>2</sup>C на плате, которые можно использовать для связи с датчиками I<sup>2</sup>C. Аналоговые датчики Grove также используют I<sup>2</sup>C с АЦП для передачи аналоговых значений в виде цифровых данных, поэтому датчик света, который вы использовали, имитировал аналоговый вывод, передавая значение через I<sup>2</sup>C, так как Raspberry Pi поддерживает только цифровые выводы.
### Универсальный асинхронный приемопередатчик (UART)
UART включает физическую схему, которая позволяет двум устройствам обмениваться данными. Каждое устройство имеет 2 коммуникационных вывода — передающий (Tx) и принимающий (Rx), причем вывод Tx первого устройства подключен к выводу Rx второго, а вывод Tx второго устройства подключен к выводу Rx первого. Это позволяет передавать данные в обоих направлениях.
* Устройство 1 передает данные с вывода Tx, которые принимаются устройством 2 на его выводе Rx.
* Устройство 1 принимает данные на выводе Rx, которые передаются устройством 2 с его вывода Tx.
![UART с выводом Tx одного чипа, подключенным к выводу Rx другого, и наоборот](../../../../../translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.ru.png)
> 🎓 Данные передаются по одному биту за раз, и это называется *последовательной* передачей. Большинство операционных систем и микроконтроллеров имеют *последовательные порты*, то есть соединения, которые могут отправлять и принимать последовательные данные, доступные вашему коду.
Устройства UART имеют [скорость передачи данных](https://wikipedia.org/wiki/Symbol_rate) (также известную как символическая скорость), которая определяет скорость отправки и получения данных в битах в секунду. Обычная скорость передачи данных — 9600, что означает, что 9600 бит (0 и 1) данных передаются каждую секунду.
UART использует стартовые и стоповые биты — то есть отправляет стартовый бит, чтобы указать, что собирается отправить байт (8 бит) данных, а затем стоповый бит после отправки 8 бит.
Скорость UART зависит от оборудования, но даже самые быстрые реализации не превышают 6.5 Мбит/с (мегабит в секунду, или миллионы бит, 0 или 1, отправленных в секунду).
Вы можете использовать UART через GPIO-выводы — можно настроить один вывод как Tx, а другой как Rx, затем подключить их к другому устройству.
> 💁 Если вы используете Raspberry Pi с Grove Base hat в качестве вашего IoT-оборудования, вы сможете увидеть разъем UART на плате, который можно использовать для связи с датчиками, использующими протокол UART.
### Последовательный периферийный интерфейс (SPI)
SPI предназначен для связи на коротких расстояниях, например, между микроконтроллером и устройством хранения, таким как флэш-память. Он основан на модели контроллер/периферия с одним контроллером (обычно процессором IoT-устройства), взаимодействующим с несколькими периферийными устройствами. Контроллер управляет всем, выбирая периферийное устройство и отправляя или запрашивая данные.
> 💁 Как и в случае с I<sup>2</sup>C, термины контроллер и периферия являются недавними изменениями, поэтому вы можете встретить старые термины.
Контроллеры SPI используют 3 провода, а также 1 дополнительный провод на периферийное устройство. Периферийные устройства используют 4 провода. Эти провода:
| Провод | Название | Описание |
| ---- | --------- | ----------- |
| COPI | Вывод контроллера, ввод периферии | Этот провод используется для отправки данных от контроллера к периферийному устройству. |
| CIPO | Ввод контроллера, вывод периферии | Этот провод используется для отправки данных от периферийного устройства к контроллеру. |
| SCLK | Последовательный тактовый сигнал | Этот провод отправляет тактовый сигнал с частотой, установленной контроллером. |
| CS | Выбор чипа | Контроллер имеет несколько проводов, по одному на периферийное устройство, и каждый провод подключается к проводу CS соответствующего периферийного устройства. |
![SPI с одним контроллером и двумя периферийными устройствами](../../../../../translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.ru.png)
Провод CS используется для активации одного периферийного устройства за раз, связи через провода COPI и CIPO. Когда контроллеру нужно переключиться на другое периферийное устройство, он деактивирует провод CS, подключенный к текущему активному периферийному устройству, затем активирует провод, подключенный к периферийному устройству, с которым он хочет взаимодействовать.
SPI является *полнодуплексным*, что означает, что контроллер может одновременно отправлять и получать данные от одного и того же периферийного устройства, используя провода COPI и CIPO. SPI использует тактовый сигнал на проводе SCLK для синхронизации устройств, поэтому, в отличие от передачи напрямую через UART, ему не нужны стартовые и стоповые биты.
Для SPI нет определенных ограничений по скорости, и реализации часто могут передавать несколько мегабайт данных в секунду.
Наборы разработчиков IoT часто поддерживают SPI через некоторые из GPIO-выводов. Например, на Raspberry Pi можно использовать GPIO-выводы 19, 21, 23, 24 и 26 для SPI.
### Беспроводная связь
Некоторые датчики могут обмениваться данными через стандартные беспроводные протоколы, такие как Bluetooth (в основном Bluetooth Low Energy, или BLE), LoRaWAN (протокол низкого энергопотребления для **Lo**ng **Ra**nge сетей) или WiFi. Это позволяет использовать удаленные датчики, которые не подключены физически к IoT-устройству.
Один из примеров — коммерческие датчики влажности почвы. Они измеряют влажность почвы в поле, затем отправляют данные через LoRaWAN на концентратор, который обрабатывает данные или отправляет их через Интернет. Это позволяет датчику находиться вдали от IoT-устройства, которое управляет данными, снижая энергопотребление и необходимость в больших WiFi-сетях или длинных кабелях.
BLE популярен для сложных датчиков, таких как фитнес-трекеры, которые работают на запястье. Они объединяют несколько датчиков и отправляют данные с них на IoT-устройство, например, ваш телефон, через BLE.
У вас есть какие-либо Bluetooth-датчики на себе, в вашем доме или школе? Это могут быть датчики температуры, датчики присутствия, трекеры устройств и фитнес-устройства.
Один из популярных способов подключения коммерческих устройств — Zigbee. Zigbee использует WiFi для создания сетей типа "mesh" между устройствами, где каждое устройство подключается к как можно большему числу ближайших устройств, формируя множество соединений, похожих на паутину. Когда одно устройство хочет отправить сообщение в Интернет, оно может отправить его ближайшим устройствам, которые затем передают его другим ближайшим устройствам и так далее, пока оно не достигнет координатора и не будет отправлено в Интернет.
> 🐝 Название Zigbee связано с "танцем тряски" медоносных пчел после их возвращения в улей.
## Измерение уровня влажности почвы
Вы можете измерить уровень влажности почвы, используя датчик влажности почвы, IoT-устройство и комнатное растение или ближайший участок почвы.
### Задача - измерение влажности почвы
Пройдите соответствующее руководство, чтобы измерить влажность почвы с помощью вашего IoT-устройства:
* [Arduino - Wio Terminal](wio-terminal-soil-moisture.md)
* [Одноплатный компьютер - Raspberry Pi](pi-soil-moisture.md)
* [Одноплатный компьютер - Виртуальное устройство](virtual-device-soil-moisture.md)
## Калибровка датчиков
Датчики работают на основе измерения электрических характеристик, таких как сопротивление или емкость.
> 🎓 Сопротивление, измеряемое в омах (Ω), показывает, насколько сильно электрический ток встречает сопротивление при прохождении через материал. Когда на материал подается напряжение, количество проходящего через него тока зависит от сопротивления материала. Подробнее можно прочитать на [странице о сопротивлении на Wikipedia](https://wikipedia.org/wiki/Electrical_resistance_and_conductance).
> 🎓 Емкость, измеряемая в фарадах (F), показывает способность компонента или цепи накапливать и сохранять электрическую энергию. Подробнее можно прочитать на [странице о емкости на Wikipedia](https://wikipedia.org/wiki/Capacitance).
Эти измерения не всегда полезны — представьте себе датчик температуры, который выдает значение 22.5 кОм! Вместо этого измеренное значение должно быть преобразовано в полезную единицу путем калибровки — то есть сопоставления измеренных значений с измеряемой величиной, чтобы новые измерения можно было преобразовать в правильную единицу.
Некоторые датчики поставляются предварительно откалиброванными. Например, датчик температуры, который вы использовали в прошлом уроке, уже был откалиброван, чтобы возвращать измерение температуры в °C. На заводе первый созданный датчик подвергался воздействию ряда известных температур, и измерялось сопротивление. Затем это использовалось для создания расчета, который может преобразовывать значение, измеренное в Ω (единица сопротивления), в °C.
> 💁 Формула для расчета сопротивления по температуре называется [уравнением Штейнхарта–Харта](https://wikipedia.org/wiki/SteinhartHart_equation).
### Калибровка датчика влажности почвы
Влажность почвы измеряется с использованием гравиметрического или объемного содержания воды.
* Гравиметрическое — это вес воды в единице веса почвы, измеряемый как количество килограммов воды на килограмм сухой почвы.
* Объемное — это объем воды в единице объема почвы, измеряемый как количество кубических метров воды на кубические метры сухой почвы.
> 🇺🇸 Для американцев, благодаря согласованности единиц измерения, это можно измерять в фунтах вместо килограммов или в кубических футах вместо кубических метров.
Датчики влажности почвы измеряют электрическое сопротивление или емкость — это зависит не только от влажности почвы, но и от типа почвы, так как компоненты в почве могут изменять ее электрические характеристики. Идеально, если датчики откалиброваны — то есть сняты показания с датчика и сопоставлены с измерениями, полученными более научным методом. Например, лаборатория может рассчитать гравиметрическую влажность почвы, используя образцы конкретного поля, взятые несколько раз в год, и эти числа могут быть использованы для калибровки датчика, сопоставляя показания датчика с гравиметрической влажностью почвы.
![График напряжения против содержания влаги в почве](../../../../../translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.ru.png)
График выше показывает, как откалибровать датчик. Напряжение фиксируется для образца почвы, который затем измеряется в лаборатории путем сравнения влажного веса с сухим (измеряется вес влажного образца, затем он сушится в печи и измеряется сухой вес). После того как снято несколько показаний, их можно нанести на график и провести линию через точки. Эта линия затем может быть использована для преобразования показаний датчика влажности почвы, снятых IoT-устройством, в фактические измерения влажности почвы.
💁 Для резистивных датчиков влажности почвы напряжение увеличивается с увеличением влажности почвы. Для емкостных датчиков влажности почвы напряжение уменьшается с увеличением влажности почвы, поэтому графики для них будут наклонены вниз, а не вверх.
![Значение влажности почвы, интерполированное из графика](../../../../../translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.ru.png)
График выше показывает показание напряжения с датчика влажности почвы, и, следуя этому значению до линии на графике, можно рассчитать фактическую влажность почвы.
Этот подход позволяет фермеру получить всего несколько лабораторных измерений для поля, а затем использовать IoT-устройства для измерения влажности почвы — значительно ускоряя процесс получения измерений.
---
## 🚀 Задание
Резистивные и емкостные датчики влажности почвы имеют ряд различий. Какие это различия, и какой тип (если таковой имеется) лучше всего подходит для использования фермером? Меняется ли ответ в зависимости от того, идет ли речь о развивающихся или развитых странах?
## Тест после лекции
[Тест после лекции](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/12)
## Обзор и самостоятельное изучение
Изучите оборудование и протоколы, используемые датчиками и исполнительными устройствами:
* [Страница GPIO на Wikipedia](https://wikipedia.org/wiki/General-purpose_input/output)
* [Страница UART на Wikipedia](https://wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter)
* [Страница SPI на Wikipedia](https://wikipedia.org/wiki/Serial_Peripheral_Interface)
* [Страница I<sup>2</sup>C на Wikipedia](https://wikipedia.org/wiki/I²C)
* [Страница Zigbee на Wikipedia](https://wikipedia.org/wiki/Zigbee)
## Задание
[Откалибруйте ваш датчик](assignment.md)
---
**Отказ от ответственности**:
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.