Arduino:Хакинг/Сборка Minty Boost/Зарядка устройств от Apple
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Зарядка устройств от Apple[1][2]
Видео ниже рассказывает не только об «айфонах» и зарядке, но и об использовании термовоздушных паяльных станций:
Хотите поподробнее? Листайте дальше!
Краткое введение в USB
У каждого компьютера есть один или несколько USB-коннекторов, и все они, в принципе, одинаковые – имеют по 4 контакта. Один для заземления (Ground), два – для передачи данных (D+ и D-) и еще один – для 5-вольтового питания (5V). Контакты Ground и 5V используются, чтобы обеспечивать питанием устройство, подключенное к USB-разъему, будь то клавиатура, мышь, USB-флэшка или что-то еще. Два других контакта используются для передачи информации туда-сюда – какая клавиша нажата или файлы, сохраняемые на USB-флэшку и т.д.
Все эти четыре линии показаны выше. Красная – это питание, черная – «земля», а белая и зеленая – линии для передачи данных.
Использование USB для питания
Некоторые дешевые USB-устройства (вроде USB-вентилятора или мини-охладителя для газировки) не передают никаких данных, а просто используют USB-порт для подпитки энергией. То есть в данном случае они не подключены и не используют контакты для данных, так что эти контакты работают как бы вхолостую.
Технически USB-порт может обеспечить силу тока в 500 миллиампер и, опять же, технически каждый девайс должен обмениваться с компьютером хотя бы самыми базовыми данными (это называется «энумерацией»). То есть устройство как бы говорит компьютеру «эй, я тяну от тебя 500 мА, ну, чтоб ты знал», а компьютер может ответить «ладненько» или «не в мою смену!» (это называют «power negotiations» или «переговорами по питанию»).
Тем не менее, мы обнаружили, что если девайсу не нужно передавать никаких данных (это может быть USB-вентилятор или USB-зарядник), то он не беспокоит компьютер лишними расспросами, а просто начинает тянуть у него питание через USB-порт – до 500 мА (или даже больше!). В общем, если такое устройство не подключено к компьютеру через хаб, не имеющий функционал для самостоятельного питания, то все должно быть нормально. У всех компьютеров на USB-портах стоят самовосстанавливающиеся предохранители, поэтому если устройство начнет тянуть через USB-порт более 1000 мА, то питание будет прекращено. Это защита от короткого замыкания, которое может произойти на вашем маленьком 5-долларовом вентиляторе, но способное испортить целый компьютер!
Проблема с устройствами от Apple
Зная, как работает USB, мы сделали так, чтобы у первого Minty Boost вообще не было линий для передачи данных. Мы посчитали, что любой зарядник или другой похожий девайс просто проигнорирует эти контакты, потому что они, как правило, не используются.
К примеру, в CAD-файле для первого Minty Boost коннектор USB – это большой квадрат, находящийся вверху. Четыре овальных контакта, находящиеся в нижней части этого квадрата – это контакты коннектора USB. Контакты #1 и #4 используются для питания (к ним подключены синие линии), но к двум средним контактам (для передачи данных) никаких линий не ведет. Они простаивают.
Когда мы выпустили первую версию Minty Boost, то люди, владеющие устройствами от Apple, начали писать нам, что их девайсы не заряжаются. То есть старые модели заряжались без проблем, а новые, вроде iPod Mini, это делать отказывались. Хм... Расчехляем паяльник!
Первая попытка
Мы обнаружили, что для того, чтобы Apple-устройства начали заряжаться, нужно сделать что-то очень простое, и это что-то определенно связано с линиями для передачи данных (линии для питания – это фиксированные «земля» и 5V). Тогда мы подумали: «Может, внутри каждого зарядника стоит чип для энумерации?». Но проверять это было дорого (и «убивать» зарядник тоже не хотелось), поэтому мы просто решили почитать о том, как работает протокол USB (в этой книге Яны Акселсон). В частности, в ее фантастической книге есть фрагмент о низкоуровневых сигналах-состояниях. То есть, если мы хотим зарядить iPod, но чтобы он при этом НЕ ДЕЛАЛ энумерацию, то нам нужно было отыскать специальное сигнал-состояние, которое говорило бы «соединения с компьютером нет, но зато есть питание». И, как выяснилось, такой сигнал есть! Он называется SEI и образуется, когда обе линии данных имеют напряжение в 3 вольта.
Но это нужно проверить. Мы украли у друга iPod и надрезали кабель, чтобы была возможность экспериментировать с линиями для данных. Мы попробовали 3 разных варианта – соединение с «землей», c 3 вольтами и без соединения (вхолостую). Одновременно с этим мы измеряли силу тока, идущую через линию для питания. Обнаружилось следующее:
iPod Mini | Контакт D- / R4 | |||
Контакт D+ / R5 | X | 0 вольт | Без соединения | Более 3 вольт |
0 вольт | X | X | 100 мА | |
Без соединения | X | X | 250 мА | |
Более 3 вольт | X | 250 мА | 250 мА |
Итак, если контакты работают вхолостую, то зарядки нет. Еще одно наблюдение: когда контакты притянуты к «земле» или 3 вольтам, начинает идти ток. Поскольку это был первый Minty Boost, оснащенный MX756, мы хотели использовать более низкую силу тока (100 мА), поэтому один контакт был притянут в нижней части вольтового диапазона, а другой – к верхней. Это поспособствовало бы более эффективному использованию батареи и предотвратило бы нагревание чипа (он может выдавать и 250 мА, но нам этот вариант не слишком нравился).
И так родился Minty Boost версии v1.1!
Minty Boost работает от двух AA-батареек, поэтому необходимые 3 вольта мы можем получить от них напрямую. Поэтому мы подключили подтягивающий резистор прямо к входному контакту батареи.
iPhone и более крупные модели iPod
Эта версия нормально работала примерно год, но затем люди начали покупать новые «айподы» и обнаружили, что Minty Boost их больше не заряжает.
Время тестов!
iPod Nano 2G | Контакт D- / R4 | |||
Контакт D+ / R5 | X | 0 вольт | Без соединения | Более 3 вольт |
0 вольт | X | X | X | |
Без соединения | X | X | 250 мА | |
Более 3 вольт | X | 250 мА | 250 мА |
iPod Shuffle 2G | Контакт D- / R4 | |||
Контакт D+ / R5 | X | 0 вольт | Без соединения | Более 3 вольт |
0 вольт | X | X | X | |
Без соединения | X | X | X | |
Более 3 вольт | X | X | 100 мА (макс) |
Хмм.. кажется, теперь нам нужно два подтягивающих резистора. Мы сделали новую версию, у которой теперь на линии D+ есть и подтягивающий, и стягивающий резисторы.
«Айфоны»
Это сработало, но потом начали выходить «айфоны». Батареи у них были большие, поэтому им не очень нравилось заряжаться на 250 мА – они хотели 500 мА или даже 1000 мА! Мы начали искать замену MAX756 и нашли LT1302, который выдавал 500 мА безо всяких проблем.
Резисторы на 1000 кОм, стоящие на линиях для передачи данных, работали отлично, и все были счастливы. Но потом вышел iPhone 3G и...
Apple перестала халтурить с зарядным интерфейсом и стала очень придирчивой к зарядникам, отдавая предпочтение своим собственным (т.е. официальным). Мы по-прежнему сомневаемся, что в их зарядниках стоят чипы для энумерации – слишком сложно и дорого. Но что тогда происходит на линиях для передачи данных?
Ну что ж... видимо, настало время пожертвовать зарядником к Apple iPhone 3G!
Разобрав его, распаяв 4 резистора, стоящих на линиях для данных, и померив их мультиметром, мы обнаружили, что схема выглядит следующим образом:
Эти 4 резистора создают напряжение на каждой линии для данных, которое равно не 3,3 вольта, а 2,8 и 2,0 вольта (или около того). Но проблема в том, что в таком случае iPhone начинает тянуть целый 1 ампер!
Это гораздо больше, чем могут дать LT1302 и две AA-батарейки. В общем, получалось, что Minty Boost нельзя было заставить работать с «айфонами», и мы расстроились, но потом решили прогуляться в магазин J&R и нашли там штуковину под названием TuneJuice. Это зарядник для iPhone, использующий четыре AAA-батарейки. Нам это показалось интересным, потому что получить 1 ампер из AAA-батареек нельзя – они попросту очень маленькие. И это значило, что в этом заряднике происходит что-то еще, не дающее iPhone «сожрать» батарейки. Самое время взяться за отвертку!
И вот что мы обнаружили (в этой схеме указаны немного другие значения для резисторов, мы заменили их ближайшими аналогами с допуском 1%):
То есть здесь напряжение на обеих линиях для данных составляет 49,9 кОм / (49,9 кОм + 75 кОм) х 5,0 вольт = 2,0 вольт.
Мы немного поэкспериментировали (см. видео выше) и обнаружили, что разные напряжения/сопротивления влияют на силу тока. При использовании 2,8 и 2,0 вольт получается 1 ампер, а при использовании 2,0 и 2,0 вольт получается 500 миллиампер.
Здорово! Потому что чип Minty Boost может работать с 500 мА. Мы переделали печатную плату, чтобы к линиям для данных можно было подключить 4 резистора, а также стали класть в каждый набор 2 резистора на 75 кОм и 2 резистора на 49,9 кОм. До сих пор никаких проблем с зарядкой iPhone не возникало. Ура!
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |