# Осциллографы на весь класс

Каждый компьютер работает со своим датчиком сам по себе: сервер и интернет
не нужны. Экраны групп учитель смотрит в Veyon, как и на любом другом уроке.

```
ПК группы 1 ── USB ── датчик      ярлык «xSTEM Scope» → браузер
ПК группы 2 ── USB ── датчик      ярлык «xSTEM Scope» → браузер
ПК учителя  ── проектор           Veyon — экраны групп
```

Есть и второй путь — страница на сайте **https://edu.xstem.ru/scope/** в
Chromium или Firefox (проверен 158): программа на компьютере не нужна, браузер работает с датчиком сам,
но нужен интернет. Установка по SSH нужна в обоих случаях: она даёт ученикам
доступ к порту датчика.

## Установка по SSH (один раз)

На компьютере учителя, в каталоге `deploy/` этого компонента:

1. Список компьютеров — по образцу `hosts.example.txt`:
   ```
   cp hosts.example.txt hosts.txt
   nano hosts.txt          # student@pc-01, student@pc-02 …
   ```
2. Установить на все:
   ```
   sh deploy.sh hosts.txt
   ```
   На каждом ПК sudo может спросить пароль. В конце скрипт напишет, где
   получилось, а где нет.
3. Подключить датчики и проверить:
   ```
   sh deploy.sh hosts.txt --check
   ```
   На каждом ПК должно быть `/dev/ttyUSB0` и «xSTEM Scope установлен».

Обновить программу — `git pull` и снова `sh deploy.sh hosts.txt`. Удалить —
`sh deploy.sh hosts.txt --remove`.

Что делает установщик на каждом ПК ([`deploy/install.sh`](deploy/install.sh)):

- кладёт программу в `/opt/xstem-scope`;
- добавляет правило udev: датчик доступен тому, кто **сидит за этим
  компьютером** (`uaccess`), без группы `dialout` и без перезахода;
- в Ubuntu с Chromium из snap разрешает ему доступ к USB;
- в Ubuntu отключает службу `brltty`: она забирает себе адаптеры FTDI, и датчик
  пропадает через секунду после подключения;
- создаёт ярлык «xSTEM Scope» в меню и на рабочих столах, включая будущих
  пользователей.

Установить на один ПК без SSH: скопировать каталоги `app/` и `deploy/` и
выполнить `sudo sh deploy/install.sh`.

## Безопасность компьютеров

- **Доступ к порту.** Правило udev касается только адаптеров FTDI FT232R
  (`0403:6001`) и выдаёт доступ пользователю, который сейчас вошёл в систему
  за этим компьютером. Пользователи, зашедшие по SSH, и службы доступа не
  получают — для них по-прежнему нужна группа `dialout`.
- **Страница на сайте (Web Serial).** Браузер сам не открывает никаких
  портов: человек нажимает «Подключить датчик» и выбирает устройство в окне
  браузера. Разрешение выдаётся одному сайту на одно устройство и снимается в
  настройках сайта. Драйверы не ставятся, к файлам доступа нет.
- **Программа.** Слушает порт 8765 только для этого же компьютера: из сети
  к ней не подключиться. Команды принимает только от своей страницы — другой
  сайт, открытый в том же браузере, управлять датчиком не может.
- **brltty** отключается только там, где он установлен (Ubuntu). Он нужен
  лишь для брайлевских дисплеев; если такой дисплей в классе есть, не ставьте
  установщик на этот компьютер.

## Перед первым уроком

1. Прошить ESP32 генератором ([WIRING.md](WIRING.md#генератор-сигналов-на-esp32)).
2. Пройти с ним по всем ПК: опыт «Проверка с ESP32», размах ≈3,3 В, частота
   100 Гц. Заодно подписать кабели датчиков К1/К2.
3. Распечатать памятку ниже — по одной на группу.

---

## Памятка группе

**Запуск**

1. Подключите датчик к USB.
2. Дважды щёлкните ярлык **«xSTEM Scope»** на рабочем столе. Откроется браузер.
3. В списке **«Опыт»** выберите свой опыт и прочитайте подсказку под ним.
4. Нажмите **▶ Пуск**.

**Правила**

- Сеть 220 В — **никогда**. Только батарейки, блоки питания, платы и то, что
  выдал учитель.
- Не знаете напряжение — начните с предела **±25 В** и уменьшайте.
- «Зашкал: да» в таблице — предел мал, возьмите больше.

**Если что-то не так**

| Что видно | Что сделать |
|---|---|
| Окно «Датчик не найден» | Переподключите USB, снова щёлкните ярлык |
| «датчик отключён» | Вставьте USB обратно и нажмите **▶ Пуск**. Ярлык щёлкать заново не нужно |
| Картинка «бежит» | Синхронизация: выберите канал с сигналом и уровень внутри сигнала |
| «ждём синхронизацию» | Уровень выше или ниже сигнала — поменяйте уровень или выберите «нет» |
| Медленный опыт, графика нет | Кадр пишется 3–15 с: смотрите на полоску внизу и ждите. Или включите «Самописец» — график побежит сразу |
| На ленте самописца разрывы | Так и должно быть: пока датчик передаёт кусок, он не пишет |

**Сохранить результат**

- **Сохранить CSV** — таблица чисел, открывается в LibreOffice Calc.
- Скриншот экрана — клавиша PrtSc.
- Подпишите файл: фамилии, опыт, дата.
