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/1-getting-started/lessons/2-deeper-dive/README.md

277 lines
50 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": "9dd7f645ad1c6f20b72fee512987f772",
"translation_date": "2025-08-26T23:44:27+00:00",
"source_file": "1-getting-started/lessons/2-deeper-dive/README.md",
"language_code": "ru"
}
-->
# Более глубокое погружение в IoT
![Скетчноут с обзором этого урока](../../../../../translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.ru.jpg)
> Скетчноут от [Nitya Narasimhan](https://github.com/nitya). Нажмите на изображение, чтобы увидеть его в большем размере.
Этот урок был частью серии [Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) от [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). Урок состоял из двух видео: часового занятия и часового обсуждения, где более подробно рассматривались части урока и отвечались на вопросы.
[![Урок 2: Более глубокое погружение в IoT](https://img.youtube.com/vi/t0SySWw3z9M/0.jpg)](https://youtu.be/t0SySWw3z9M)
[![Урок 2: Более глубокое погружение в IoT - Обсуждение](https://img.youtube.com/vi/tTZYf9EST1E/0.jpg)](https://youtu.be/tTZYf9EST1E)
> 🎥 Нажмите на изображения выше, чтобы посмотреть видео
## Викторина перед лекцией
[Викторина перед лекцией](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/3)
## Введение
Этот урок углубляется в некоторые из концепций, рассмотренных в предыдущем уроке.
В этом уроке мы рассмотрим:
* [Компоненты IoT-приложения](../../../../../1-getting-started/lessons/2-deeper-dive)
* [Более глубокое погружение в микроконтроллеры](../../../../../1-getting-started/lessons/2-deeper-dive)
* [Более глубокое погружение в одноплатные компьютеры](../../../../../1-getting-started/lessons/2-deeper-dive)
## Компоненты IoT-приложения
Два основных компонента IoT-приложения — это *Интернет* и *вещь*. Давайте рассмотрим их подробнее.
### Вещь
![Raspberry Pi 4](../../../../../translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.ru.jpg)
**Вещь** в IoT относится к устройству, которое может взаимодействовать с физическим миром. Эти устройства обычно представляют собой небольшие, недорогие компьютеры, работающие на низких скоростях и с низким энергопотреблением — например, простые микроконтроллеры с несколькими килобайтами оперативной памяти (в отличие от гигабайт в ПК), работающие на частоте всего в несколько сотен мегагерц (в отличие от гигагерц в ПК), но потребляющие настолько мало энергии, что могут работать неделями, месяцами или даже годами на батарейках.
Эти устройства взаимодействуют с физическим миром, используя датчики для сбора данных из окружающей среды или управляя выходами и исполнительными механизмами для внесения физических изменений. Типичный пример — умный термостат, устройство с температурным датчиком, средством для установки желаемой температуры, например, циферблатом или сенсорным экраном, и подключением к системе отопления или охлаждения, которая может включаться, если температура выходит за пределы желаемого диапазона. Температурный датчик определяет, что в комнате слишком холодно, и исполнительный механизм включает отопление.
![Диаграмма, показывающая температуру и циферблат как входные данные для IoT-устройства, и управление обогревателем как выходные данные](../../../../../translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.ru.png)
Существует огромное разнообразие устройств, которые могут выступать в роли IoT-устройств: от специализированного оборудования, которое измеряет что-то одно, до универсальных устройств, таких как ваш смартфон! Смартфон может использовать датчики для обнаружения окружающего мира и исполнительные механизмы для взаимодействия с ним — например, используя GPS-датчик для определения вашего местоположения и динамик для предоставления навигационных инструкций.
✅ Подумайте о других системах вокруг вас, которые считывают данные с датчиков и используют их для принятия решений. Один из примеров — термостат в духовке. Можете ли вы найти другие примеры?
### Интернет
**Интернет** в IoT-приложении включает приложения, к которым IoT-устройство может подключаться для отправки и получения данных, а также другие приложения, которые могут обрабатывать данные с IoT-устройства и помогать принимать решения о том, какие команды отправлять исполнительным механизмам устройства.
Обычно используется облачный сервис, к которому подключается IoT-устройство. Этот сервис обрабатывает такие задачи, как безопасность, получение сообщений от устройства и отправка сообщений обратно. Облачный сервис может быть связан с другими приложениями, которые обрабатывают или хранят данные с датчиков, либо используют эти данные вместе с данными из других систем для принятия решений.
Устройства не всегда подключаются к Интернету напрямую через WiFi или проводное соединение. Некоторые устройства используют сетевые технологии, такие как Bluetooth, для связи друг с другом через хаб, который имеет подключение к Интернету.
В примере с умным термостатом устройство подключается к облачному сервису через домашний WiFi. Оно отправляет данные о температуре в облако, где они записываются в базу данных, позволяя владельцу дома проверять текущую и прошлую температуру через приложение на телефоне. Другой сервис в облаке знает, какую температуру хочет владелец, и отправляет сообщения обратно на IoT-устройство через облако, чтобы включить или выключить систему отопления.
![Диаграмма, показывающая температуру и циферблат как входные данные для IoT-устройства, двухстороннюю связь устройства с облаком, которое также связано с телефоном, и управление обогревателем как выходные данные](../../../../../translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.ru.png)
Более умная версия может использовать ИИ в облаке с данными от других датчиков, таких как датчики присутствия, которые определяют, какие комнаты используются, а также данные о погоде и вашем календаре, чтобы умно регулировать температуру. Например, она может выключить отопление, если в вашем календаре указано, что вы в отпуске, или отключить отопление в отдельных комнатах в зависимости от их использования, обучаясь на данных для повышения точности со временем.
![Диаграмма, показывающая несколько температурных датчиков и циферблат как входные данные для IoT-устройства, двухстороннюю связь устройства с облаком, которое также связано с телефоном, календарем и погодным сервисом, и управление обогревателем как выходные данные](../../../../../translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.ru.png)
✅ Какие еще данные могли бы помочь сделать интернет-подключенный термостат умнее?
### IoT на границе
Хотя буква I в IoT означает Интернет, эти устройства не всегда должны подключаться к Интернету. В некоторых случаях устройства могут подключаться к "пограничным" устройствам — шлюзам, работающим в вашей локальной сети, что позволяет обрабатывать данные без обращения в Интернет. Это может быть быстрее при большом объеме данных или медленном подключении к Интернету, позволяет работать оффлайн, где Интернет недоступен, например, на корабле или в зоне бедствия, и обеспечивает конфиденциальность данных. Некоторые устройства содержат код, созданный с использованием облачных инструментов, и выполняют его локально, чтобы собирать и обрабатывать данные без подключения к Интернету.
Примером может служить умное домашнее устройство, такое как Apple HomePod, Amazon Alexa или Google Home, которое использует ИИ для обработки речи, обученного в облаке, но работающего локально. Эти устройства "просыпаются" при произнесении определенного слова или фразы и только тогда отправляют вашу речь в Интернет для обработки. Устройство прекращает отправку речи, когда обнаруживает паузу. Все, что вы говорите до активации устройства, и все, что вы говорите после завершения прослушивания, не отправляется в Интернет, оставаясь конфиденциальным.
✅ Подумайте о других сценариях, где конфиденциальность важна, и обработка данных лучше выполняется на границе, а не в облаке. Подсказка: подумайте об IoT-устройствах с камерами или другими устройствами для обработки изображений.
### Безопасность IoT
С любым подключением к Интернету безопасность — это важный аспект. Существует старая шутка: "буква S в IoT означает безопасность" — намекая на то, что в IoT нет буквы S, то есть безопасность отсутствует.
IoT-устройства подключаются к облачному сервису, и их безопасность зависит от безопасности этого сервиса. Если облачный сервис позволяет подключаться любому устройству, это может привести к отправке вредоносных данных или вирусным атакам. Это может иметь реальные последствия, так как IoT-устройства взаимодействуют и управляют другими устройствами. Например, [червь Stuxnet](https://wikipedia.org/wiki/Stuxnet) манипулировал клапанами в центрифугах, чтобы повредить их. Хакеры также использовали [слабую безопасность для доступа к детским мониторам](https://www.npr.org/sections/thetwo-way/2018/06/05/617196788/s-c-mom-says-baby-monitor-was-hacked-experts-say-many-devices-are-vulnerable) и другим устройствам домашнего наблюдения.
> 💁 Иногда IoT-устройства и пограничные устройства работают в сети, полностью изолированной от Интернета, чтобы сохранить данные конфиденциальными и безопасными. Это называется [воздушным зазором](https://wikipedia.org/wiki/Air_gap_(networking)).
## Более глубокое погружение в микроконтроллеры
На прошлом уроке мы познакомились с микроконтроллерами. Теперь давайте рассмотрим их подробнее.
### CPU
CPU — это "мозг" микроконтроллера. Это процессор, который выполняет ваш код и может отправлять данные на подключенные устройства и получать их от них. CPU может содержать одно или несколько ядер — по сути, несколько процессоров, которые работают вместе для выполнения вашего кода.
CPU работает с тактовым генератором, который "тикает" миллионы или миллиарды раз в секунду. Каждый тик, или цикл, синхронизирует действия, которые может выполнять CPU. С каждым тиком CPU может выполнять инструкцию из программы, например, извлекать данные из внешнего устройства или выполнять математическое вычисление. Этот регулярный цикл позволяет завершить все действия до обработки следующей инструкции.
Чем быстрее тактовая частота, тем больше инструкций может быть обработано за секунду, а значит, тем быстрее работает CPU. Скорость CPU измеряется в [Герцах (Hz)](https://wikipedia.org/wiki/Hertz), где 1 Hz означает один тик или цикл в секунду.
> 🎓 Скорость CPU часто указывается в МГц или ГГц. 1 МГц — это 1 миллион Hz, 1 ГГц — 1 миллиард Hz.
> 💁 CPU выполняет программы, используя [цикл извлечения-декодирования-исполнения](https://wikipedia.org/wiki/Instruction_cycle). На каждый тик CPU извлекает следующую инструкцию из памяти, декодирует её, а затем выполняет, например, используя арифметико-логическое устройство (ALU) для сложения двух чисел. Некоторые инструкции требуют нескольких тиков для выполнения, поэтому следующий цикл начнётся после завершения текущей инструкции.
![Цикл извлечения-декодирования-исполнения, показывающий извлечение инструкции из программы, хранящейся в RAM, её декодирование и выполнение на CPU](../../../../../translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.ru.png)
Микроконтроллеры имеют гораздо более низкие тактовые частоты, чем настольные или портативные компьютеры, а также большинство смартфонов. Например, Wio Terminal имеет CPU с частотой 120 МГц или 120 000 000 циклов в секунду.
✅ Средний ПК или Mac имеет CPU с несколькими ядрами, работающими на частоте в несколько гигагерц, что означает миллиарды тиков в секунду. Исследуйте тактовую частоту вашего компьютера и сравните, насколько он быстрее Wio Terminal.
Каждый тактовый цикл потребляет энергию и выделяет тепло. Чем быстрее тики, тем больше энергии потребляется и больше тепла выделяется. ПК имеют радиаторы и вентиляторы для отвода тепла, без которых они перегрелись бы и выключились за считанные секунды. Микроконтроллеры часто не имеют таких систем охлаждения, так как работают гораздо медленнее и выделяют меньше тепла. ПК работают от сети или больших батарей, которых хватает на несколько часов, а микроконтроллеры могут работать дни, месяцы или даже годы от небольших батареек. Микроконтроллеры также могут иметь ядра, работающие на разных скоростях, переключаясь на более медленные и энергоэффективные ядра, когда нагрузка на CPU низкая, чтобы снизить энергопотребление.
> 💁 Некоторые ПК и Mac также используют комбинацию быстрых высокопроизводительных ядер и медленных энергоэффективных ядер, переключаясь между ними для оптимизации времени работы от батареи или скорости в зависимости от выполняемой задачи. Например, чип M1 в последних ноутбуках Apple может переключаться между 4 производительными ядрами и 4 энергоэффективными ядрами.
✅ Немного исследуйте: Прочитайте о CPU в [статье Википедии о центральных процессорах](https://wikipedia.org/wiki/Central_processing_unit).
#### Задание
Изучите Wio Terminal.
Если вы используете Wio Terminal для этих уроков, попробуйте найти CPU. Найдите раздел *Обзор оборудования* на [странице продукта Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html), чтобы увидеть изображение внутренностей устройства, и попробуйте найти CPU через прозрачное пластиковое окно на задней стороне.
### Память
Микроконтроллеры обычно имеют два типа памяти: память программ и оперативную память (RAM).
Память программ является энергонезависимой, то есть данные в ней сохраняются даже при отключении питания устройства. Эта память используется для хранения кода вашей программы.
RAM используется программой во время выполнения, в ней хранятся переменные, выделенные вашей программой, и данные, полученные от периферийных устройств. RAM является энергозависимой, то есть её содержимое теряется при отключении питания, что фактически приводит к сбросу программы.
🎓 Память программы хранит ваш код и сохраняется даже при отсутствии питания.
🎓 ОЗУ используется для выполнения вашей программы и сбрасывается при отключении питания
Как и у процессора, объем памяти в микроконтроллере на порядки меньше, чем у ПК или Mac. Типичный ПК может иметь 8 гигабайт (ГБ) ОЗУ, или 8,000,000,000 байт, где каждый байт — это достаточно места для хранения одной буквы или числа от 0 до 255. Микроконтроллер обычно имеет только килобайты (КБ) ОЗУ, где килобайт равен 1,000 байт. У Wio Terminal, упомянутого выше, 192 КБ ОЗУ, или 192,000 байт — более чем в 40,000 раз меньше, чем у среднего ПК!
Диаграмма ниже показывает относительную разницу в размере между 192 КБ и 8 ГБ — маленькая точка в центре представляет 192 КБ.
![Сравнение между 192 КБ и 8 ГБ — более чем в 40,000 раз больше](../../../../../translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.ru.png)
Объем памяти для хранения программ также меньше, чем у ПК. Типичный ПК может иметь жесткий диск на 500 ГБ для хранения программ, тогда как микроконтроллер может иметь только килобайты или, возможно, несколько мегабайт (МБ) памяти (1 МБ — это 1,000 КБ, или 1,000,000 байт). У Wio Terminal 4 МБ памяти для хранения программ.
✅ Проведите небольшое исследование: Сколько ОЗУ и памяти для хранения данных у компьютера, который вы используете для чтения этого текста? Как это соотносится с микроконтроллером?
### Ввод/Вывод
Микроконтроллеры нуждаются в соединениях ввода и вывода (I/O) для считывания данных с датчиков и отправки управляющих сигналов на исполнительные устройства. Обычно они содержат несколько универсальных выводов ввода/вывода (GPIO). Эти выводы можно настроить в программном обеспечении как вход (то есть они принимают сигнал) или как выход (они отправляют сигнал).
🧠⬅️ Входные выводы используются для считывания значений с датчиков
🧠➡️ Выходные выводы отправляют инструкции исполнительным устройствам
✅ Вы узнаете больше об этом в следующем уроке.
#### Задание
Исследуйте Wio Terminal.
Если вы используете Wio Terminal для этих уроков, найдите выводы GPIO. Найдите раздел *Pinout diagram* на [странице продукта Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html), чтобы узнать, какие выводы за что отвечают. Wio Terminal поставляется с наклейкой, которую можно прикрепить на заднюю часть устройства с номерами выводов, так что добавьте ее сейчас, если еще не сделали этого.
### Физический размер
Микроконтроллеры обычно имеют небольшой размер, а самый маленький, [Freescale Kinetis KL03 MCU, достаточно мал, чтобы поместиться в углубление на поверхности мяча для гольфа](https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/). Только процессор в ПК может иметь размеры 40 мм x 40 мм, и это без учета радиаторов и вентиляторов, необходимых для того, чтобы процессор мог работать более нескольких секунд без перегрева, что значительно больше, чем полный микроконтроллер. Набор разработчика Wio Terminal с микроконтроллером, корпусом, экраном и рядом соединений и компонентов не намного больше, чем голый процессор Intel i9, и значительно меньше, чем процессор с радиатором и вентилятором!
| Устройство | Размер |
| ------------------------------- | --------------------- |
| Freescale Kinetis KL03 | 1.6 мм x 2 мм x 1 мм |
| Wio Terminal | 72 мм x 57 мм x 12 мм |
| Intel i9 CPU, радиатор и вентилятор | 136 мм x 145 мм x 103 мм |
### Фреймворки и операционные системы
Из-за низкой скорости и небольшого объема памяти микроконтроллеры не используют операционную систему (ОС) в привычном для настольных компьютеров смысле. Операционная система, которая заставляет ваш компьютер работать (Windows, Linux или macOS), требует много памяти и вычислительной мощности для выполнения задач, которые совершенно не нужны микроконтроллеру. Помните, что микроконтроллеры обычно программируются для выполнения одной или нескольких очень специфических задач, в отличие от универсального компьютера, такого как ПК или Mac, который должен поддерживать пользовательский интерфейс, воспроизводить музыку или фильмы, предоставлять инструменты для написания документов или кода, играть в игры или просматривать Интернет.
Для программирования микроконтроллера без ОС вам понадобятся инструменты, которые позволят вам создавать код таким образом, чтобы микроконтроллер мог его выполнять, используя API для взаимодействия с периферийными устройствами. Каждый микроконтроллер отличается, поэтому производители обычно поддерживают стандартные фреймворки, которые позволяют следовать стандартному «рецепту» для создания кода и его выполнения на любом микроконтроллере, поддерживающем этот фреймворк.
Вы можете программировать микроконтроллеры с использованием ОС — часто называемой операционной системой реального времени (RTOS), так как она предназначена для обработки передачи данных на периферийные устройства и обратно в реальном времени. Эти операционные системы очень легковесны и предоставляют такие функции, как:
* Многопоточность, позволяющая вашему коду выполнять более одного блока кода одновременно, либо на нескольких ядрах, либо поочередно на одном ядре
* Сетевые возможности для безопасной передачи данных через Интернет
* Компоненты графического пользовательского интерфейса (GUI) для создания пользовательских интерфейсов (UI) на устройствах с экранами.
✅ Ознакомьтесь с различными RTOS: [Azure RTOS](https://azure.microsoft.com/services/rtos/?WT.mc_id=academic-17441-jabenn), [FreeRTOS](https://www.freertos.org), [Zephyr](https://www.zephyrproject.org)
#### Arduino
![Логотип Arduino](../../../../../images/arduino-logo.svg)
[Arduino](https://www.arduino.cc) — это, пожалуй, самый популярный фреймворк для микроконтроллеров, особенно среди студентов, любителей и разработчиков. Arduino — это открытая платформа для электроники, объединяющая программное обеспечение и оборудование. Вы можете купить платы, совместимые с Arduino, у самой компании Arduino или у других производителей, а затем программировать их с использованием фреймворка Arduino.
Платы Arduino программируются на C или C++. Использование C/C++ позволяет вашему коду быть очень компактным и работать быстро, что необходимо для устройства с ограниченными ресурсами, такого как микроконтроллер. Основная часть приложения Arduino называется скетчем и представляет собой код на C/C++ с двумя функциями — `setup` и `loop`. Когда плата запускается, код фреймворка Arduino выполнит функцию `setup` один раз, а затем будет снова и снова выполнять функцию `loop`, пока питание не будет отключено.
Вы пишете код настройки в функции `setup`, например, подключение к WiFi и облачным сервисам или инициализацию выводов для ввода и вывода. Ваш код в функции `loop` будет содержать обработку, например, считывание данных с датчика и отправку значения в облако. Обычно вы добавляете задержку в каждом цикле, например, если вы хотите отправлять данные с датчика каждые 10 секунд, вы добавляете задержку в 10 секунд в конце цикла, чтобы микроконтроллер мог перейти в режим сна, экономя энергию, а затем снова выполнить цикл через 10 секунд.
![Скетч Arduino сначала выполняет setup, затем повторяет loop](../../../../../translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.ru.png)
✅ Эта архитектура программы известна как *цикл событий* или *цикл сообщений*. Многие приложения используют ее в своей основе, и это стандарт для большинства настольных приложений, работающих на ОС, таких как Windows, macOS или Linux. Функция `loop` слушает сообщения от компонентов пользовательского интерфейса, таких как кнопки, или устройств, таких как клавиатура, и реагирует на них. Вы можете узнать больше в [статье о цикле событий](https://wikipedia.org/wiki/Event_loop).
Arduino предоставляет стандартные библиотеки для взаимодействия с микроконтроллерами и выводами ввода/вывода, с различными реализациями под капотом для работы на разных микроконтроллерах. Например, функция [`delay`](https://www.arduino.cc/reference/en/language/functions/time/delay/) приостановит выполнение программы на заданный период времени, а функция [`digitalRead`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/) считывает значение `HIGH` или `LOW` с указанного вывода, независимо от того, на какой плате выполняется код. Эти стандартные библиотеки означают, что код Arduino, написанный для одной платы, можно перекомпилировать для любой другой платы Arduino, и он будет работать, если выводы совпадают и платы поддерживают одинаковые функции.
Существует большая экосистема сторонних библиотек Arduino, которые позволяют добавлять дополнительные функции в ваши проекты Arduino, такие как использование датчиков и исполнительных устройств или подключение к облачным IoT-сервисам.
##### Задание
Исследуйте Wio Terminal.
Если вы используете Wio Terminal для этих уроков, перечитайте код, который вы написали в прошлом уроке. Найдите функции `setup` и `loop`. Отследите вывод в последовательный порт для функции `loop`, которая вызывается повторно. Попробуйте добавить код в функцию `setup`, чтобы записать данные в последовательный порт, и убедитесь, что этот код вызывается только один раз при каждом перезапуске. Попробуйте перезапустить устройство с помощью переключателя питания на боковой стороне, чтобы показать, что этот код вызывается каждый раз при перезапуске устройства.
## Более глубокое погружение в одноплатные компьютеры
В прошлом уроке мы познакомились с одноплатными компьютерами. Теперь давайте рассмотрим их более подробно.
### Raspberry Pi
![Логотип Raspberry Pi](../../../../../translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.ru.png)
[Фонд Raspberry Pi](https://www.raspberrypi.org) — это благотворительная организация из Великобритании, основанная в 2009 году для продвижения изучения компьютерных наук, особенно на школьном уровне. В рамках этой миссии они разработали одноплатный компьютер, называемый Raspberry Pi. Raspberry Pi в настоящее время доступен в трех вариантах — полноразмерная версия, меньшая Pi Zero и вычислительный модуль, который можно встроить в ваше конечное IoT-устройство.
![Raspberry Pi 4](../../../../../translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.ru.jpg)
Последняя итерация полноразмерного Raspberry Pi — это Raspberry Pi 4B. У него четырехъядерный процессор (4 ядра) с тактовой частотой 1.5 ГГц, 2, 4 или 8 ГБ ОЗУ, гигабитный Ethernet, WiFi, 2 порта HDMI с поддержкой 4k экранов, аудио- и композитный видеовыход, USB-порты (2 USB 2.0, 2 USB 3.0), 40 выводов GPIO, разъем для камеры Raspberry Pi, и слот для SD-карты. Все это на плате размером 88 мм x 58 мм x 19.5 мм, питающейся от USB-C блока питания на 3А. Цена начинается от 35 долларов США, что значительно дешевле, чем ПК или Mac.
> 💁 Существует также Pi400 — компьютер «все в одном» с Pi4, встроенным в клавиатуру.
![Raspberry Pi Zero](../../../../../translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.ru.jpg)
Pi Zero значительно меньше и менее мощный. У него одноядерный процессор с тактовой частотой 1 ГГц, 512 МБ ОЗУ, WiFi (в модели Zero W), один порт HDMI, один порт micro-USB, 40 выводов GPIO, разъем для камеры Raspberry Pi, и слот для SD-карты. Его размеры — 65 мм x 30 мм x 5 мм, и он потребляет очень мало энергии. Цена Zero — 5 долларов США, а версия W с WiFi — 10 долларов США.
> 🎓 Процессоры в обоих этих устройствах — ARM, в отличие от процессоров Intel/AMD x86 или x64, которые вы найдете в большинстве ПК и Mac. Они похожи на процессоры, которые используются в некоторых микроконтроллерах, а также почти во всех мобильных телефонах, Microsoft Surface X и новых Mac на базе Apple Silicon.
Все варианты Raspberry Pi работают на версии Debian Linux, называемой Raspberry Pi OS. Она доступна в легкой версии без рабочего стола, что идеально подходит для «безголовых» проектов, где экран не нужен, или в полной версии с полноценной средой рабочего стола, веб-браузером, офисными приложениями, инструментами для кодирования и играми. Поскольку ОС является версией Debian Linux, вы можете установить любое приложение или инструмент, который работает на Debian и создан для процессора ARM внутри Pi.
#### Задание
Исследуйте Raspberry Pi.
Если вы используете Raspberry Pi для этих уроков, изучите различные аппаратные компоненты на плате.
* Вы можете найти информацию о процессорах, используемых в Raspberry Pi, на [странице документации по оборудованию Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/). Ознакомьтесь с процессором, используемым в вашем Pi.
* Найдите выводы GPIO. Узнайте больше о них на [странице документации GPIO Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md). Используйте [руководство по использованию выводов GPIO](https://www.raspberrypi.org/documentation/usage/gpio/README.md), чтобы определить различные выводы на вашем Pi.
### Программирование одноплатных компьютеров
Одноплатные компьютеры — это полноценные компьютеры, работающие на полноценной ОС. Это означает, что существует широкий спектр языков программирования, фреймворков и инструментов, которые вы можете использовать для их кодирования, в отличие от микроконтроллеров, которые зависят от поддержки платы в таких фреймворках, как Arduino. Большинство языков программирования имеют библиотеки, которые могут обращаться к выводам GPIO для отправки и получения данных с датчиков и исполнительных устройств.
✅ Какие языки программирования вы знаете? Поддерживаются ли они на Linux?
Самый распространенный язык программирования для создания IoT-приложений на Raspberry Pi — это Python. Существует огромная экосистема оборудования, разработанного для Pi, и почти все они включают соответствующий код, необходимый для их использования, в виде библиотек Python. Некоторые из этих экосистем основаны на «шляпах» — так называемых, потому что они устанавливаются сверху Pi, как шляпа, и подключаются через большой разъем к 40 выводам GPIO. Эти шляпы предоставляют дополнительные возможности, такие как экраны, датчики, дистанционно управляемые автомобили или адаптеры для подключения датчиков со стандартными кабелями.
### Использование одноплатных компьютеров в профессиональных IoT-разработках
Одноплатные компьютеры используются в профессиональных IoT-разработках, а не только как наборы для разработчиков. Они могут быть мощным инструментом для управления оборудованием и выполнения сложных задач, таких как запуск моделей машинного обучения. Например, существует [модуль Raspberry Pi 4 Compute Module](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/), который обладает всей мощностью Raspberry Pi 4, но в компактной и более дешевой форме без большинства портов, предназначенной для установки в пользовательское оборудование.
---
## 🚀 Задание
Задание из последнего урока заключалось в том, чтобы перечислить как можно больше IoT-устройств, которые есть у вас дома, в школе или на рабочем месте. Для каждого устройства из этого списка подумайте, основано ли оно на микроконтроллерах, одноплатных компьютерах или, возможно, на их сочетании.
## Викторина после лекции
[Викторина после лекции](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/4)
## Обзор и самостоятельное изучение
* Прочитайте [руководство по началу работы с Arduino](https://www.arduino.cc/en/Guide/Introduction), чтобы лучше понять платформу Arduino.
* Ознакомьтесь с [введением в Raspberry Pi 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/), чтобы узнать больше о Raspberry Pi.
* Узнайте больше о некоторых концепциях и аббревиатурах в статье [Что такое CPU, MPU, MCU и GPU?](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/) в журнале Electrical Engineering Journal.
✅ Используйте эти руководства, а также информацию о стоимости, доступную по ссылкам в [руководстве по оборудованию](../../../hardware.md), чтобы решить, какую аппаратную платформу вы хотите использовать, или предпочли бы вы использовать виртуальное устройство.
## Задание
[Сравните и сопоставьте микроконтроллеры и одноплатные компьютеры](assignment.md)
---
**Отказ от ответственности**:
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.