Звуковий осцилограф у Phyphox
Завдання роботи:
Створити звуковий осцилографу у редакторі Phyphox webeditor.
Обладнання:
ПК, смартфон.
Основні терміни та поняття
Теоретична частина
Перш ніж виконувати цю роботу рекомендується ознайомитися з редактором Phyphox webeditor, виконавши роботи №1 та №2.
Окрім акселерометру, а також гіроскопу (датчику кутової швидкості), будь який смартфон має звукову карту, мікрофон, динамік та аудіо роз’єм. У наступній роботі створимо експеримент з отримання осцилограми сигналу, що подається на вхід звукової карти з мікрофону, або аудіо входу. Даний експеримент імітує роботу простого осцилографа: він записує аудіосигнал із мікрофона смартфону, обмежує його тривалість відповідно до заданої користувачем тривалості часової розгортки, формує відповідну часову шкалу та відображає сигнал у вигляді графіка залежності амплітуди від часу.
Хід роботи
- Відкрийте Phyphox webeditor, перейшовши за посиланням: https://phyphox.org/editor/neweditor/.
- Придумайте, та напишіть у вкладниці Main назву (Title), категорію (Category), та опис (Description) експерименту. Наприклад, Simple Audio Scope, Acoustics, Simplified audio oscilloscope.
- Перейдіть до вкладники Input, зачепіть пазлик audio на лівій боковій панелі лівою кнопкою миші, та перетягніть у пазлик input на робочому полі.
- Здійсніть налаштування блоку у відповідності до рис. 1.

Рис. 1. Налаштування блоку вхідних даних
- Змініть назву out на recording (рис. 2).

Рис. 2. Зміна назви даних
Recording – це основний масив аудіоданих, який складається з цифрових значень амплітуди звукового сигналу, отриманого з мікрофону. Значення – в умовних одиницях, оскільки рівень звуку не відкалібрований.
Rate – це частота дискретизації, тобто кількість вимірів, які пристрій здійснює за секунду. Ця величина потрібна для обчислення тривалості сигналу та побудови часової осі.
Розмір масиву аудіоданих визначається максимальною тривалістю часової розгортки (довжиною часової осі), доступною користувачеві у налаштуваннях. Так, наприклад, якщо ми хочемо закласти максимальну тривалість розгортки у 500 мс, або 0,5 с, то мінімальний розмір масиву аудіоданих при 48000 вимірів на секунду складе 48000×0,5 = 24000 значень. Зазвичай, його дещо збільшують для забезпечення стабільності. Якщо збільшити розмір масиву аудіоданих на 10%, то він складе 26400 значень.
- До автоматично створених у правому полі контейнерів даних recording та rate за допомогою кнопки Add data container додайте контейнери time, length та lengthSamples.
- Налаштуйте усі контейнери даних у відповідності до табл. 1 та рис. 3.
Таблиця 1. Налаштування контейнерів даних.
|
Назва |
Розмір (size) | Початкове значення (init) |
Призначення |
| recording |
26400 |
– |
Аудіосигнал |
| rate |
1 |
– |
Частота дискретизації |
| time |
26400 |
– |
Масив часу |
|
length |
1 |
10 |
Тривалість сигналу в мс. Відповідає тривалості часової розгортки, що задається користувачем |
| lengthSamples |
1 |
– |
Тривалість у відліках |

Рис. 3. Контейнери даних
- Перейдіть у вкладнику Analysis. У боковому лівому полі оберіть Basic Math, зачепіть лівою кнопкою миші самий верхній блок виразу та перетягніть його до пазлу analysis (рис. 4).
![]()
Рис. 4. Створення блоку аналізу.
- У блоці виразу додайте ще одну змінну, натиснувши «+» у його правій частині. Змініть знак «+» між блоками змінних на знак «×».
- Перейдіть у Basic Math, та перетягніть дві змінні та одну константу у блок виразу у відповідності до рис. 5.

Рис. 5. Створення виразу у блоці аналізу.
- Змініть змінні у виразі та здійсніть налаштування блоку у відповідності до рис. 6.

Рис. 6. Налаштування блоку виразу.
За допомогою даного блоку ви обчислюєте тривалість сигналу у відліках lengthSamples, помножуючи тривалість запису length у мс на частоту дискретизації rate. Коефіцієнт 0,001 необхідний для переведення мс у с.
Загальні налаштування блоку аналізу:
– sleep – затримка перед запуском обчислень. 0 s означає, що аналіз починається одразу після запуску експерименту або після надходження даних.
– dynamic sleep – динамічна затримка (наприклад, залежно від інших значень). В даному експерименті не використовується.
– on user input? – запуск аналізу тільки після введення користувачем значень (наприклад у числовому полі). Якщо не активовано – аналіз працює автоматично.
– timed run – запуск аналізу кожні N секунд автоматично. Якщо не активовано – аналіз запускатиметься один раз, коли готові дані.
– requireFill – ім’я контейнеру, який має бути заповнений, щоб запуск аналізу відбувся. В даному випадку аналіз не стартує, поки в контейнері recording не буде достатньо даних.
– requireFill threshold – мінімальна кількість часу (в секундах) звуку, яка повинна бути зібрана, перш ніж дозволити запуск аналізу.
– requireFill dynamic – кількість вимірів, яку необхідно здійснити для запуску аналізу. В даному випадку кількість вимірів дорівнює lengthSamples, яка визначається вибраною користувачем тривалістю часової розгортки length.
- Перейдіть у Data Generation, оберіть пазл ramp (лінійна послідовність) та встановіть його у блок аналізу.
- Знову перейдіть у Data Generation, та встановіть до пазлу ramp одну константу та дві змінних у відповідності до рис. 7.

Рис. 7. Створення масиву часу
- Налаштуйте блок масиву часу у відповідності до рис. 8.

Рис. 8. Налаштування блоку масиву часу.
Ви створили масив часу, який відповідає тривалості часової розгортки length, розбитий на кількість точок, що дорівнює lengthSamples.
- Перейдіть у вкладнику View та створіть блок у відповідності до рис. 9.

Рис. 9. Блок виведення
- 16. Здійсніть налаштування блоку виведення у відповідності до рис. 10.

Рис. 10. Налаштування блоку виведення
- 17. Перейдіть у вкладнику Export, та створіть блок у відповідності до рис. 11.

Рис. 11. Блок експорту даних
- У верхньому правому куті екрану натисніть GENERATE, а у вікні що з’явилося – QR Code Online. Нижче має з’явитися QR код.
- Підключить смартфон до мережі Internet та відкрийте застосунок Phyphox.
- У застосунку натисніть кнопку Додати (+), та оберіть Додати експеримент за QR кодом.
- Відскануйте QR код з монітору. На запит збереження експерименту у колекції, натисніть Cancel. У застосунку має з’явитися створений вами експеримент під назвою Simple Audio Scope. Він повинен мати одну вкладнику, у якій має бути одне вікно графіку Audio Data та поле для введення часу розгортки Duration.
- Відкрийте на комп’ютері онлайн тонгенератор, наприклад за посиланням: https://splaudio.com.ua/ua/services/tongenerator/, запустіть вимірювання на смартфоні та запустіть тонгенератор. Пробуйте змінювати час розгортки Duration, частоту та амплітуду тонгенератору.

Рис. 12. Запис створеного експерименту у застосунку Phyphox
- Зупиніть вимірювання та вийдіть із застосунку, не зберігаючи дані на телефон.
- У Phyphox webeditor завантажте на ПК файл створеного експерименту.
Аналіз даних
Зробіть висновки щодо точності відтворення звукового сигналу. Наведіть приклади практичного застосування створеного експерименту.