Телефон зазвичай описують через те, що він робить: дзвінки, фото, застосунки. Натомість опишіть його через те, що він містить: достатньо відкалібрований мікрофон із частотою дискретизації 48 kHz, дві або три камери, яскравий світлодіодний ліхтарик, вібромотор, акселерометр і екран, який може миготіти з точною частотою. Це не просто телефон. Це маленька лабораторія із сенсорним екраном.
Більшість застосунків використовують лише одну з цих деталей за раз і лише за її прямим призначенням. Найцікавіші вимірювання починаються тоді, коли ви використовуєте їх не за призначенням та в поєднанні: ліхтарик як джерело світла для камери, вібромотор як збудник для акселерометра, а другий телефон — як другу половину експерименту. Цей допис є картою цієї території, що розділена на три рівні зростання складності.
Рівень 1: один датчик, пасивне прослуховування
Найпрошіші інструменти спрямовують один датчик на навколишній світ і аналізують отримані дані:
- Спектр звуку — запишіть аудіо, обчисліть спектр і подивіться, де саме зосереджена енергія. Це універсальний робочий інструмент для дослідження двигунів, гулу, деренчання чи звуку удару по об'єктах.
- Акустичний тест (простукування) — постукайте по фрукту або матеріалу й проаналізуйте згасання коливань: домінантний резонанс та швидкість його затухання скажуть про те, що всередині, значно більше, ніж будь-коли зможе гучність. (Детальніше у дописі про акустичні тести.)
- Вібрація — покладіть телефон на пральну машину, компресор або 3D-принтер, і акселерометр запише унікальний характер вібрації.
- Колір і світло камери — точкове вимірювання кольору, визначення мерехтіння/частоти миготіння дисплеїв та світлодіодного освітлення, освітленість, підрахунок повторюваних об'єктів, зчитування аналогових лічильників, оцінка розмірів.
Головне правило: отримання даних має бути настільки «сирим», наскільки це дозволяє платформа. На Android це означає запит необробленого сигналу з мікрофона — без автоматичного регулювання підсилення чи шумозаглушення, які спотворюють саме той сигнал, що ви намагаєтеся виміряти, — а також фіксацію автоекспозиції та балансу білого камери, коли вимірювання залежить від незмінності рівня освітлення.
Рівень 2: телефон генерує імпульс, а потім вимірює власне збудження
Телефон також має актуатори, і поєднання актуатора з датчиком перетворює пасивне прослуховування на активний інструмент:
- Ліхтарик + відбивна здатність камери — зробіть пару кадрів із вимкненим та увімкненим ліхтариком; різниця дозволяє виділити те, як поверхня відбиває відоме світло, практично виключаючи фонове освітлення кімнати з результатів.
- Ліхтарик як джерело світла: пульс і напівпрозорість — притисніть кінчик пальця до камери з увімкненим ліхтариком, і камера перетвориться на фотодетектор, який відстежує зміну об'єму крові з кожним ударом серця. Ця ж оптика вимірює ступінь напівпрозорості матеріалу.
- Вібромотор + акселерометр + мікрофон — телефон вібрує на об'єкті, одночасно записуючи його реакцію — як механічну, так і акустичну. Пустотіла та суцільна панелі дадуть абсолютно різні результати.
Активні інструменти мають властивість, якої бракує пасивним: стимул є відомим. Коли ви контролюєте збудження, ви можете будувати функції на основі співвідношень та реакцій, а не абсолютних рівнів, завдяки чому результати можна порівнювати на різних моделях телефонів без необхідності калібрувати кожен пристрій.
Рівень 3: два телефони, один експеримент
Деякі величини за своєю природою вимагають двостороннього вимірювання: скільки звуку затримує стіна або скільки світла пропускає вікно. Один телефон не може бути з обох боків одночасно, але два — можуть, і в більшості домогосподарств знайдеться два пристрої.
Трюк, який дозволяє робити це без лабораторного обладнання, полягає у співвідношенні для одного й того ж приймача. Телефон-випромінювач відтворює самоідентифікований стимул — ступінчастий свіп-тон або миготіння екрана з фіксованою частотою. Телефон, що здійснює вимірювання, робить запис двічі: один раз за прямої видимості випромінювача (еталон), а другий — крізь стіну чи вікно. Як результат використовується лише співвідношення цих двох записів, отриманих на тому самому мікрофі чи камері. Гучність випромінювача, чутливість приймача, акустика кімнати — усе це взаємно компенсується. Тому двом телефонам не потрібна ні синхронізація годинників, ні кабелі, ні взаємне калібрування. (Покрокову інструкцію дивіться в дописі про звукоізоляцію.)
Правило проєктування для всіх трьох рівнів: ніколи не довіряйте абсолютним рівням. Мікрофони та камери телефонів різняться залежно від моделі; натомість резонанси, швидкість затухання, шаблони в порядковій області та співвідношення для одного приймача переважно залишаються незмінними. Функції, побудовані на відносних величинах, працюють на будь-ках пристроях; функції, що базуються на абсолютних значеннях, завжди потребуватимуть індивідуального калібрування для кожного пристрою.
Від поодиноких показників до каталогу
Показник сам по собі мало про що говорить. Показники перетворюються на знання, коли вони прив'язані до речей: цієї дині, цього колеса чи цієї стіни, виміряних сьогодні і знову наступного тижня. Тому кожне вимірювання можна зберегти під певним об'єктом у каталозі — Категорія → Об'єкт → Сценарій використання → Вимірювання — а будь-яке вимірювання згодом може отримати підтверджену мітку: ви постукали по дині, потім розрізали її та записали результат. Цей замкнений цикл, повторений багатьма користувачами та для багатьох об'єктів, — саме те, як класифікатори акустичних тестів навчаються на реальних фруктах, а не на лабораторних зразках.
А для повноцінних завдань, а не просто вимірювань (наприклад, налаштування велосипедного колеса чи перевірка ізоляції кімнати), покрокові активності об'єднують кілька інструментів у правильній послідовності й підказують, що робити між вимірюваннями, записуючи результати в той самий каталог. Перша така активність детально описана в дописі про налаштування спиць.
Куди це веде
Список інструментів постійно зростає, а архітектура розроблена так, що додавання нового інструмента є адитивним: це просто новий запис у реєстрі, без переробки того, що вже збережено. Усе працює безпосередньо на пристрої в офлайн-режимі, а результати видаються менш ніж за секунду; у дописі про роботу в офлайні пояснюється, чому це обмеження є фундаментальним опорним елементом, а не просто галочкою в списку функцій.