Тестирование телефонов с помощью arduino · pdf filearduino 10k...

76

Upload: vancong

Post on 22-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП
Page 2: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Тестирование телефонов с помощью Arduino

Алексей Лавренюк, Тимур Торубаров

Page 3: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Выбирали между своей и очень платной сторонней библиотекой. Допилить или купить?

С чего все начиналось

3

Page 4: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

чтобы понять, кто быстрее сажает батарейку, приходилось полностью разряжать телефон. Три дня на каждый тест

Page 5: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Задача

Энергопотребление — это интегральная метрика

› Мерить потребление тока на любых устройствах (мобильные телефоны, планшеты, может быть даже ноутбуки)

› Делать это автоматически

› С большой частотой (тысячи раз в секунду)

5

Page 6: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

〉почему мы не взяли мультиметр

〉как мы сделали свой мультиметр

〉как мы его совершенствовали

〉как вам его сделать (Тимур)

〉как им пользоваться (Тимур)

〉демо!

У нас есть план!

6

Page 7: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Как это делают обычно

Page 8: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

8

Page 9: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

9

20 секунд

Page 10: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

10

Page 11: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Окей. Строим мультиметр

Page 12: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› цифровые осциллографы

› Power Monitor

› battOr

Что есть готового

12

200К/девайс — нецелесообразно

15К/девайс. Не гибко (black box)

ОК! Но нельзя купить

Page 13: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

13

телефон

шунт

усилитель (микросхема)

Page 14: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

14

шунт

усилитель

Arduino nano

Page 15: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

15

Power Monitor

Page 16: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Измерение в разрыве USB — это proof of concept

Так мерим ток заряда батарейки, а не потребление телефона

вытащим батарейку и используем внешнее питание.

Почему нельзя мерить ток в разрыве USB

16

Page 17: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

17

Тимур

iPhone 6S

Page 18: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

18

+

-

Page 19: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

19

Page 20: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Как вывести провода из закрытого корпуса?

Гибкие печатные платы (battOr). Приблизительно $42 за один провод.

Или… Наше решение…

20

Page 21: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

21

Page 22: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

22

Page 23: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

23

Page 24: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› максимальный ток 3А

› разрядность 10 bit

› частота замеров 500 SPS (samples per second)

потом к нам пришли из команды мобильного браузера…

Что получилось

24

Page 25: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

I WANT MOAR

Page 26: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Один фрейм видео — 16 мс

26

Page 27: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

1 миллисекунда с разрешением 1 MSPS

27

Page 28: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Разные ядра, разные АЦП

Arduino Nano разогнали до 10KSPS

Arduino Due (1MSPS): ARM

STM32 (1MSPS): native USB (stm32f103c8t6 blue pill)

28

Page 29: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП
Page 30: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Синхронизируй это!

Page 31: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Хотим видеть корреляцию между событиями в логах телефона и графиком энергопотребления

разные часы на телефоне компьютере и контроллере

› где начинается тест

› где заканчивается

› какая функция выполняется

Что и зачем нужно синхронизировать

31

Page 32: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› генерируем всплески энергопотребления (мигаем фонариком)

› генерируем прямоугольный сигнал: 1 — там, где фонарик горел, 0 — там, где он не горел

› сопоставляем прямоугольный сигнал с измерениями энергопотребления

точка синхронизации там, где они наиболее похожи

Как синхронизировать

32

Page 33: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

33

Page 34: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› если считать "в лоб", получается очень долго, несколько минут на один тест

› решение неустойчивое, не всегда находится именно "тот" пик

disclaimer: я не настоящий сварщик, но попробую объяснить

Проблемы

34

Page 35: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Как посчитать быстрее

Кросс-корреляция эквивалентна свертке (convolution) с отраженным по оси времени референсом или сигналом:

FFT свертка намного быстрее, чем если считать в лоб. Меньше секунды на тест.

35

Page 36: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› применяем быстрое преобразование Фурье к обеим функциям

› перемножаем попарно элементы получившихся векторов

› применяем обратное быстрое преобразование Фурье

Как работает свертка?

www.analog.com/media/en/technical-documentation/dsp-book/dsp_book_Ch18.pdf 36

Page 37: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Много слов, на Python одна строка

37

signal.fftconvolve(signal, reference[::-1], mode="valid")

Page 38: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Откуда неустойчивость и что делать

38

referencecross-correlation

"шторка"

Page 39: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Мигали вручную — неустойчиво

Мигали рандомно — иногда устойчиво, иногда нет

наверное, есть оптимальная форма сигнала

Периодичность миганий

39

Page 40: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

www.youtube.com/watch?v=rzCO5fQysw0 40

Page 41: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

www.youtube.com/watch?v=rzCO5fQysw0 41

Page 42: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

42

Random Chirp

Page 43: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

43

Page 44: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Ручное тестирование

Page 45: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Ручной тест

45

запись измерений

стопстарт

отключениеUSB

миганияВыполнение

сценария тестаподключение

USBсборлогов

Lunapark

t

Page 46: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

46

сред

нее

потр

ебле

ние

apple music google music spotify vkontakte yandex music

Page 47: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Потребление браузера

47

Yabro 704 mA

Chrome 677 mA

Yabro 397 mA

Chrome 325 mAХолодный запуск

Переход по ссылке

t [сек]

t [сек]2010

2010

Page 48: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Автоматизация

Page 49: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› для автоматизации нужно USB

› USB нельзя, потому что телефон с нее заряжается

не даем телефону больше 20 mA

Провод-ограничитель

49

Page 50: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Ограничитель тока на полевом транзисторе

50

Page 51: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

В этой схеме есть проблема

51

питаниеDC IN 20V

+

-

DC OUT 4.7V

+

-датчик

тока

RS+

RS-

GND

OUT

GND

+

-

Arduino10k A0

GND10k

MacBook Pro

USB

USB

Page 52: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Проблема: нельзя подключать USB

52

питаниеDC IN 20V

+

-

DC OUT 4.7V

+

-датчик

тока

RS+

RS-

GND

OUT

GND

+

-

Arduino10k A0

GND10k

MacBook Pro

USB

USB

Page 53: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

ADUM1402 + ADS7816P

внешний 12-битный АЦП гальванически развязан с контроллером

Гальваническая развязка

53

Page 54: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

54

найдите ошибку

Гальваническая развязка

Page 55: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Автоматический тест

55

старт

Тестовая сборка

тест1 тест2

стоп

тест- лист

Синхро-приложение

Yandex.Volta

t

Page 56: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Юнит-тесты

56

Suites

UI trafficfeaturescomponents

Page 57: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Регрессии энергопотребления

57

сборка 16.3

16.4

Потребленная ёмкость

фрагмент2 фрагмент3фрагмент1

каж

дая

сбор

ка т

ести

руе

тся

N р

аз

16.5

сборка 16.3

16.4

16.5

сборка 16.3

16.4

16.5

фрагмент1

mAh

t

t

t

Page 58: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

58

github.com/yandex-load/volta

Page 59: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

не повторяйте это дома*

* приготовьте заранее 10 айфонов

Page 60: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Если решитесь, наденьте шапочку из фольги

60

Page 61: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Компоненты VoltaBox

61

датчик тока

arduinoблок питания

Page 62: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› DC-DC step down

› нужен внешний блок питания: ноутбучный, блок аккумуляторов или прикуриватель

внимание: подходят не все (замерить разность потенциалов перед подключением USB)

Питание: модуль XL4005

62

Page 63: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› ноутбук

› UPS

› VoltaBox

Тестирование геосервисов

63

Page 64: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› работает от аккумулятора для радиоуправляемых моделей

› работает от прикуривателя

› пишет данные на SD-карту

удобно ездить в командировки

VoltaBox с SD-картой и аккумулятором

64

Page 65: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› преобразует ток в напряжение

› 1А => 1В

› диапазон от 0 до 3А

нет гальванической развязки: не подключайте телефон к USB

Датчик тока: модуль MAX471

65

Page 66: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Не делай так

66

XL4005DC IN 20V

+

-

DC OUT 4.7V

+

-MAX471

RS+

RS-

GND

OUT

GND

+

-

Arduino10k A0

GND10k

MacBook Pro

USB

USB

Page 67: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› встроенный АЦП

› писать прошивку удобно в Platformio IDE

pip install platformio

Микроконтроллер: Arduino Nano

67

Page 68: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Собираем VoltaBox

68

XL4005DC IN 20V

+

-

DC OUT 4.7V

+

-MAX471

RS+

RS-

GND

OUT

GND

+

-

Arduino10k A0

GND10k

Page 69: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

github.com/yandex-load/volta

› папка firmware

› arduino_0_5k – 500 SPS

› arduino_10k – 10 KSPS

pio run -t upload

Прошивка

69

Page 70: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› разобрать

› вытащить батарейку

› отрезать контроллер

› припаять к нему провода

› собрать

Готовим телефон

70

Page 71: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

› хрупкие элементы

› ненадежные шлейфы

› болты, упирающиеся в материнскую плату

› стеклянный корпус

› клей. Клей! Везде клей!

Проблемы при разборке

71

Page 72: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

pip install volta

Page 73: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

73

Page 74: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Алексей Лавренюк

[email protected]

Контакты:

[email protected]

Тимур Торубаров

telegram

@direvius, #yandextank

Page 75: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Take away

2 часа с паяльником + Volta + Jupyter Notebook = анализ энергопотребления

Volta чат: t.me/joinchat/Bvb4RgvBER4pdC0F2v1jbw

исходный код Volta: github.com/yandex-load/volta

печать плат: rezonit.ru

пайка SMD и не только: solderpoint.ru

проектирование плат: diptrace.com

75

Page 76: Тестирование телефонов с помощью Arduino · PDF fileArduino 10k A0 10k GND MacBook Pro USB USB. ADUM1402 + ADS7816P внешний 12-битный АЦП

Спасибоза внимание!