# Raspberry Pi
[Raspberry Pi](https://raspberrypi.org) — це одноплатний комп'ютер. Ви можете додавати датчики та виконавчі пристрої, використовуючи широкий спектр пристроїв та екосистем. У цих уроках ми будемо використовувати апаратну екосистему під назвою [Grove](https://www.seeedstudio.com/category/Grove-c-1003.html). Ви будете програмувати ваш Pi та отримувати доступ до датчиків Grove за допомогою Python.

## Налаштування
Якщо ви використовуєте Raspberry Pi як апаратне забезпечення для IoT, у вас є два варіанти: ви можете пройти всі ці уроки та програмувати безпосередньо на Pi, або підключитися до "безголового" Pi віддалено та програмувати з вашого комп'ютера.
Перед початком вам також потрібно підключити Grove Base Hat до вашого Pi.
### Завдання - налаштування
Встановіть Grove Base Hat на ваш Pi та налаштуйте Pi.
1. Підключіть Grove Base Hat до вашого Pi. Роз'єм на платі підходить до всіх GPIO-пінів на Pi, повністю насуваючись на них, щоб щільно сидіти на основі. Плата накриває Pi.

1. Визначте, як ви хочете програмувати ваш Pi, і перейдіть до відповідного розділу нижче:
* [Робота безпосередньо на вашому Pi](../../../../../1-getting-started/lessons/1-introduction-to-iot)
* [Віддалений доступ для програмування Pi](../../../../../1-getting-started/lessons/1-introduction-to-iot)
### Робота безпосередньо на вашому Pi
Якщо ви хочете працювати безпосередньо на вашому Pi, ви можете використовувати настільну версію Raspberry Pi OS та встановити всі необхідні інструменти.
#### Завдання - робота безпосередньо на вашому Pi
Налаштуйте ваш Pi для розробки.
1. Дотримуйтесь інструкцій у [посібнику з налаштування Raspberry Pi](https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up), щоб налаштувати ваш Pi, підключити його до клавіатури/миші/монітора, підключити до вашої WiFi або Ethernet мережі та оновити програмне забезпечення.
Для програмування Pi з використанням датчиків та виконавчих пристроїв Grove вам потрібно встановити редактор для написання коду пристрою, а також різні бібліотеки та інструменти для взаємодії з апаратним забезпеченням Grove.
1. Після перезавантаження вашого Pi запустіть Terminal, натиснувши на іконку **Terminal** у верхньому меню, або виберіть *Menu -> Accessories -> Terminal*.
1. Виконайте наступну команду, щоб переконатися, що ОС та встановлене програмне забезпечення оновлені:
```sh
sudo apt update && sudo apt full-upgrade --yes
```
1. Виконайте наступні команди для встановлення всіх необхідних бібліотек для апаратного забезпечення Grove:
```sh
sudo apt install git python3-dev python3-pip --yes
git clone https://github.com/Seeed-Studio/grove.py
cd grove.py
sudo pip3 install .
sudo raspi-config nonint do_i2c 0
```
Спочатку встановлюється Git, а також Pip для встановлення Python-пакетів.
Однією з потужних функцій Python є можливість встановлювати [Pip-пакети](https://pypi.org) — це пакети коду, написані іншими людьми та опубліковані в Інтернеті. Ви можете встановити Pip-пакет на ваш комп'ютер однією командою, а потім використовувати цей пакет у вашому коді.
Python-пакети Seeed Grove потрібно встановлювати з вихідного коду. Ці команди клонують репозиторій, що містить вихідний код для цього пакета, а потім встановлюють його локально.
> 💁 За замовчуванням, коли ви встановлюєте пакет, він доступний всюди на вашому комп'ютері, і це може призвести до проблем із версіями пакетів — наприклад, одна програма залежить від однієї версії пакета, яка перестає працювати після встановлення нової версії для іншої програми. Щоб уникнути цієї проблеми, ви можете використовувати [віртуальне середовище Python](https://docs.python.org/3/library/venv.html), яке є копією Python у спеціальній папці, і коли ви встановлюєте Pip-пакети, вони встановлюються лише в цю папку. Ви не будете використовувати віртуальні середовища при роботі з вашим Pi. Скрипт встановлення Grove встановлює Python-пакети Grove глобально, тому для використання віртуального середовища вам потрібно буде налаштувати віртуальне середовище, а потім вручну перевстановити пакети Grove всередині цього середовища. Легше просто використовувати глобальні пакети, особливо тому, що багато розробників Pi перезаписують чисту SD-карту для кожного проекту.
Нарешті, це дозволяє інтерфейсу I2C працювати.
1. Перезавантажте Pi, використовуючи меню або виконавши наступну команду в Terminal:
```sh
sudo reboot
```
1. Після перезавантаження Pi знову запустіть Terminal і виконайте наступну команду для встановлення [Visual Studio Code (VS Code)](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn) — це редактор, який ви будете використовувати для написання коду пристрою на Python.
```sh
sudo apt install code
```
Після встановлення VS Code буде доступний у верхньому меню.
> 💁 Ви можете використовувати будь-який Python IDE або редактор для цих уроків, якщо у вас є улюблений інструмент, але інструкції в уроках будуть базуватися на використанні VS Code.
1. Встановіть Pylance. Це розширення для VS Code, яке забезпечує підтримку мови Python. Ознайомтеся з [документацією розширення Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) для інструкцій щодо встановлення цього розширення у VS Code.
### Віддалений доступ для програмування Pi
Замість програмування безпосередньо на Pi, він може працювати "безголовим", тобто без підключення до клавіатури/миші/монітора, а ви можете налаштовувати та програмувати його з вашого комп'ютера, використовуючи Visual Studio Code.
#### Налаштування Pi OS
Для віддаленого програмування необхідно встановити Pi OS на SD-карту.
##### Завдання - налаштування Pi OS
Налаштуйте "безголову" Pi OS.
1. Завантажте **Raspberry Pi Imager** зі [сторінки програмного забезпечення Raspberry Pi OS](https://www.raspberrypi.org/software/) та встановіть його.
1. Вставте SD-карту у ваш комп'ютер, використовуючи адаптер, якщо необхідно.
1. Запустіть Raspberry Pi Imager.
1. У Raspberry Pi Imager виберіть кнопку **CHOOSE OS**, потім виберіть *Raspberry Pi OS (Other)*, а потім *Raspberry Pi OS Lite (32-bit)*.

> 💁 Raspberry Pi OS Lite — це версія Raspberry Pi OS без графічного інтерфейсу або інструментів на основі інтерфейсу. Вони не потрібні для "безголового" Pi, що робить установку меншою та швидшою для завантаження.
1. Виберіть кнопку **CHOOSE STORAGE**, а потім виберіть вашу SD-карту.
1. Запустіть **Advanced Options**, натиснувши `Ctrl+Shift+X`. Ці опції дозволяють попередньо налаштувати Raspberry Pi OS перед її записом на SD-карту.
1. Поставте галочку **Enable SSH** та встановіть пароль для користувача `pi`. Це пароль, який ви будете використовувати для входу на Pi пізніше.
1. Якщо ви плануєте підключатися до Pi через WiFi, поставте галочку **Configure WiFi** та введіть ваш WiFi SSID і пароль, а також виберіть вашу країну для WiFi. Вам не потрібно це робити, якщо ви будете використовувати Ethernet-кабель. Переконайтеся, що мережа, до якої ви підключаєтеся, та сама, що й на вашому комп'ютері.
1. Поставте галочку **Set locale settings** та встановіть вашу країну та часовий пояс.
1. Виберіть кнопку **SAVE**.
1. Виберіть кнопку **WRITE**, щоб записати ОС на SD-карту. Якщо ви використовуєте macOS, вас попросять ввести ваш пароль, оскільки інструмент, який записує образи дисків, потребує привілейованого доступу.
ОС буде записана на SD-карту, і після завершення карта буде автоматично витягнута операційною системою, а ви отримаєте повідомлення. Вийміть SD-карту з вашого комп'ютера, вставте її в Pi, увімкніть Pi і зачекайте близько 2 хвилин, щоб він повністю завантажився.
#### Підключення до Pi
Наступним кроком є віддалений доступ до Pi. Ви можете зробити це за допомогою `ssh`, який доступний на macOS, Linux та останніх версіях Windows.
##### Завдання - підключення до Pi
Віддалений доступ до Pi.
1. Запустіть Terminal або Command Prompt і введіть наступну команду для підключення до Pi:
```sh
ssh pi@raspberrypi.local
```
Якщо ви використовуєте Windows старішої версії, яка не має встановленого `ssh`, ви можете використовувати OpenSSH. Інструкції з встановлення можна знайти в [документації з встановлення OpenSSH](https://docs.microsoft.com//windows-server/administration/openssh/openssh_install_firstuse?WT.mc_id=academic-17441-jabenn).
1. Це має підключити вас до Pi і запитати пароль.
Можливість знаходити комп'ютери у вашій мережі за допомогою `.local` — це досить недавнє доповнення до Linux та Windows. Якщо ви використовуєте Linux або Windows і отримуєте помилки про те, що ім'я хоста не знайдено, вам потрібно буде встановити додаткове програмне забезпечення для увімкнення ZeroConf мережі (також відомої як Bonjour у Apple):
1. Якщо ви використовуєте Linux, встановіть Avahi за допомогою наступної команди:
```sh
sudo apt-get install avahi-daemon
```
1. Якщо ви використовуєте Windows, найпростіший спосіб увімкнути ZeroConf — це встановити [Bonjour Print Services for Windows](http://support.apple.com/kb/DL999). Ви також можете встановити [iTunes for Windows](https://www.apple.com/itunes/download/), щоб отримати новішу версію утиліти (яка недоступна окремо).
> 💁 Якщо ви не можете підключитися, використовуючи `raspberrypi.local`, ви можете використовувати IP-адресу вашого Pi. Ознайомтеся з [документацією IP-адрес Raspberry Pi](https://www.raspberrypi.org/documentation/remote-access/ip-address.md) для інструкцій про кілька способів отримання IP-адреси.
1. Введіть пароль, який ви встановили в Advanced Options Raspberry Pi Imager.
#### Налаштування програмного забезпечення на Pi
Після підключення до Pi вам потрібно переконатися, що ОС оновлена, а також встановити різні бібліотеки та інструменти для взаємодії з апаратним забезпеченням Grove.
##### Завдання - налаштування програмного забезпечення на Pi
Налаштуйте встановлене програмне забезпечення Pi та встановіть бібліотеки Grove.
1. У вашій `ssh` сесії виконайте наступну команду для оновлення, а потім перезавантаження Pi:
```sh
sudo apt update && sudo apt full-upgrade --yes && sudo reboot
```
Pi буде оновлено та перезавантажено. `ssh` сесія завершиться, коли Pi перезавантажиться, тому зачекайте близько 30 секунд, а потім підключіться знову.
1. У повторно підключеній `ssh` сесії виконайте наступні команди для встановлення всіх необхідних бібліотек для апаратного забезпечення Grove:
```sh
sudo apt install git python3-dev python3-pip --yes
git clone https://github.com/Seeed-Studio/grove.py
cd grove.py
sudo pip3 install .
sudo raspi-config nonint do_i2c 0
```
Спочатку встановлюється Git, а також Pip для встановлення Python-пакетів.
Однією з потужних функцій Python є можливість встановлювати [Pip-пакети](https://pypi.org) — це пакети коду, написані іншими людьми та опубліковані в Інтернеті. Ви можете встановити Pip-пакет на ваш комп'ютер однією командою, а потім використовувати цей пакет у вашому коді.
Python-пакети Seeed Grove потрібно встановлювати з вихідного коду. Ці команди клонують репозиторій, що містить вихідний код для цього пакета, а потім встановлюють його локально.
> 💁 За замовчуванням, коли ви встановлюєте пакет, він доступний всюди на вашому комп'ютері, і це може призвести до проблем із версіями пакетів — наприклад, одна програма залежить від однієї версії пакета, яка перестає працювати після встановлення нової версії для іншої програми. Щоб уникнути цієї проблеми, ви можете використовувати [віртуальне середовище Python](https://docs.python.org/3/library/venv.html), яке є копією Python у спеціальній папці, і коли ви встановлюєте Pip-пакети, вони встановлюються лише в цю папку. Ви не будете використовувати віртуальні середовища при роботі з вашим Pi. Скрипт встановлення Grove встановлює Python-пакети Grove глобально, тому для використання віртуального середовища вам потрібно буде налаштувати віртуальне середовище, а потім вручну перевстановити пакети Grove всередині цього середовища. Легше просто використовувати глобальні пакети, особливо тому, що багато розробників Pi перезаписують чисту SD-карту для кожного проекту.
Нарешті, це дозволяє інтерфейсу I2C працювати.
1. Перезавантажте Pi, виконавши наступну команду:
```sh
sudo reboot
```
`ssh` сесія завершиться, коли Pi перезавантажиться. Повторне підключення не потрібне.
#### Налаштування VS Code для віддаленого доступу
Після налаштування Pi ви можете підключитися до нього за допомогою Visual Studio Code (VS Code) з вашого комп'ютера — це безкоштовний текстовий редактор для розробників, який ви будете використовувати для написання коду пристрою на Python.
##### Завдання - налаштування VS Code для віддаленого доступу
Встановіть необхідне програмне забезпечення та підключіться до вашого Pi віддалено.
1. Встановіть VS Code на ваш комп'ютер, дотримуючись [документації VS Code](https://code.visualstudio.com?WT.mc_id=academic-17441-jabenn).
1. Дотримуйтесь інструкцій у [документації VS Code Remote Development using SSH](https://code.visualstudio.com/docs/remote/ssh?WT.mc_id=academic-17441-jabenn) для встановлення необхідних компонентів.
1. Дотримуючись тих самих інструкцій, підключіть VS Code до Pi.
1. Після підключення дотримуйтесь інструкцій [управління розширеннями](https://code.visualstudio.com/docs/remote/ssh#_managing-extensions?WT.mc_id=academic-17441-jabenn), щоб встановити [розширення Pylance](https://marketplace.visualstudio.com/items?WT.mc_id=academic-17441-jabenn&itemName=ms-python.vscode-pylance) віддалено на Pi.
## Привіт, світ
Зазвичай, коли починаєш працювати з новою мовою програмування або технологією, створюють додаток "Hello World" — невеликий додаток, який виводить текст на кшталт `"Hello World"`, щоб переконатися, що всі інструменти налаштовані правильно.
Додаток Hello World для Pi допоможе переконатися, що Python і Visual Studio Code встановлені коректно.
Цей додаток буде знаходитися в папці `nightlight`, і його код буде використовуватися в наступних частинах цього завдання для створення додатку нічного світла.
### Завдання - Hello World
Створіть додаток Hello World.
1. Запустіть VS Code, або безпосередньо на Pi, або на вашому комп'ютері, підключеному до Pi за допомогою розширення Remote SSH.
1. Запустіть термінал VS Code, вибравши *Terminal -> New Terminal* або натиснувши `` CTRL+` ``. Термінал відкриється в домашній директорії користувача `pi`.
1. Виконайте наступні команди, щоб створити директорію для вашого коду та створити файл Python під назвою `app.py` у цій директорії:
```sh
mkdir nightlight
cd nightlight
touch app.py
```
1. Відкрийте цю папку у VS Code, вибравши *File -> Open...* і вибравши папку *nightlight*, потім натисніть **OK**.

1. Відкрийте файл `app.py` у провіднику VS Code і додайте наступний код:
```python
print('Hello World!')
```
Функція `print` виводить у консоль те, що передано їй як аргумент.
1. У терміналі VS Code виконайте наступну команду, щоб запустити ваш Python-додаток:
```sh
python app.py
```
> 💁 Можливо, вам доведеться явно викликати `python3`, щоб запустити цей код, якщо у вас встановлений Python 2 разом із Python 3 (остання версія). Якщо у вас встановлений Python 2, то виклик `python` буде використовувати Python 2 замість Python 3. За замовчуванням останні версії Raspberry Pi OS мають встановлений лише Python 3.
У терміналі з'явиться наступний вивід:
```output
pi@raspberrypi:~/nightlight $ python3 app.py
Hello World!
```
> 💁 Ви можете знайти цей код у папці [code/pi](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/pi).
😀 Ваш додаток "Hello World" успішно створений!
---
**Відмова від відповідальності**:
Цей документ був перекладений за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають внаслідок використання цього перекладу.