Diamond Box AIRBAR 20000. Бесплатная отладочная плата ARM Cortex-M0
Электроника в наше время стала недорога.
Вот уже и электронные сигареты среднейпаршивости ценовой категории на 32-битных МК делают.
Под катом — отчет о вскрытии подопытного и рекомендации по экспериментам.
Добро пожаловать!
Девайс сделан необычно цельным.
Я его долго крутил в руках, пытаясь сообразить, как оно собрано. Корпус довольно неплох, пилить его ножовкой не хотелось бы.
Сбоку — маленький семисегментный индикатор, снизу — разъем USB-C и переключатель режимов накурки.
И пара щелей. Отлично, точка проникновения установлена — приступаем к взлому методом брутфорса. Ну в смысле — втыкаем в щель лезвие ножа, чтобы фронтальную панель корпуса выгнуло.
После этого панель можно поддеть за уголок и отклеить. Переворачиваем девайс на обратную сторону и повторяем операцию:
Теперь берем простую советскую плоскую отвертку и вжимаем внутрь защелки в прорезях возле дна корпуса. После этого дно корпуса вместе с электронной частью устройства и нагревателем можно вытащить наружу:
Контейнер с губкой для жидкости при этом остаётся в корпусе — держится исключительно на трении и при необходимости вытаскивается пинцетом/плоскогубцами.
Плата девайса расположена в «корыте», прикрыта пластмассовой пластинкой и закреплена вместе с ней парой мелких саморезов.
Удаляем саморезы и пластинку, открывая вид на саму плату. Она обильно покрыта компаундом для защиты от протечек — электроника тут довольно навороченная и от попадания жидкости может начать вести себя неадекватно, к примеру запустив режим самоуничтожения прямо в кармане владельца.
Аккуратно вытянем плату наружу — к ней припаян шлейф мини-дисплея, причем с нижней стороны.
Сам дисплей собран в корпусе, похожем на стеклянный, и приклеен к «корыту».
Собственно, вот так выглядит извлеченная наружу электронная часть:
Индикатор имеет 6 выводов при не менее чем 25 сегментах, следовательно управляется методом чарлиплексинга. Светится белым цветом, по некоторым данным это OLED:
Аккумулятор имеет заявленную емкость чуть менее 1 Ач:
Защитный компаунд легко снимается иголкой, давая возможность прочитать маркировку элементов на плате:
Маленький квадратик сверху — контроллер зарядки литиевых аккумуляторов BC91801 от Semihigh. Умеет заряжать током до 1А и обращаться с глубоко разряженными ячейками.
Квадратик чуть побольше снизу — микроконтроллер Puya PY32C642, самый дешевый ARM — примерно по 5 центов за штуку. За эти деньги(а в нашем случае — вообще без денег) пользователь получает 32-битное ядро Cortex-M0+ с рабочей частотой 24MHz, 24 кбайт Flash-памяти и 3 кбайт ОЗУ. Из периферии — до 18 выводов GPIO, 10-канальный 12-битный АЦП на 1MSPS, 2 16-битных таймера и пару компараторов. Привычных всем UART, SPI и I2C не завезли — программируется МК через SWD интерфейс. Зато этот интерфейс выведен на удобные для пайки и заботливо подписанные пятачки на нижней стороне платы:
Контроллер очень похож на обсуждавшийся у нас тут примерно год назад PY32F002A — чуть меньше памяти, зато сильно порезанная периферия.
Родной программатор для контроллеров Puya стоит каких-то невменяемых денег, но заменяется слегка доработанным ST-Link V2, перешитым в J-Link.
Пример программы для «помигать светодиодом»:
Вот тут пример реверсинга другого вейпа на таком же МК.
Ещё для интересующихся темой:Опыты с платой на PY32F002A, проект на её основе, тема на форуме по PY32F002A, шаблоны программирования.
Что из этого можно сделать? Например, драйвер для светодиодного фонарика — питание начиная с 1,7 В и умение в глубокий сон тому способствует. Различные светодиодные гирлянды и часы(а вот тут придется делать I2C/SPI программно). При должной степени упорстваи упоротости — даже целый web-сервер.
Вот уже и электронные сигареты средней
Под катом — отчет о вскрытии подопытного и рекомендации по экспериментам.
Добро пожаловать!
Девайс сделан необычно цельным.
Я его долго крутил в руках, пытаясь сообразить, как оно собрано. Корпус довольно неплох, пилить его ножовкой не хотелось бы.
Сбоку — маленький семисегментный индикатор, снизу — разъем USB-C и переключатель режимов накурки.
И пара щелей. Отлично, точка проникновения установлена — приступаем к взлому методом брутфорса. Ну в смысле — втыкаем в щель лезвие ножа, чтобы фронтальную панель корпуса выгнуло.
После этого панель можно поддеть за уголок и отклеить. Переворачиваем девайс на обратную сторону и повторяем операцию:
Теперь берем простую советскую плоскую отвертку и вжимаем внутрь защелки в прорезях возле дна корпуса. После этого дно корпуса вместе с электронной частью устройства и нагревателем можно вытащить наружу:
Контейнер с губкой для жидкости при этом остаётся в корпусе — держится исключительно на трении и при необходимости вытаскивается пинцетом/плоскогубцами.Плата девайса расположена в «корыте», прикрыта пластмассовой пластинкой и закреплена вместе с ней парой мелких саморезов.
Удаляем саморезы и пластинку, открывая вид на саму плату. Она обильно покрыта компаундом для защиты от протечек — электроника тут довольно навороченная и от попадания жидкости может начать вести себя неадекватно,
Аккуратно вытянем плату наружу — к ней припаян шлейф мини-дисплея, причем с нижней стороны.Сам дисплей собран в корпусе, похожем на стеклянный, и приклеен к «корыту».
Собственно, вот так выглядит извлеченная наружу электронная часть:
Индикатор имеет 6 выводов при не менее чем 25 сегментах, следовательно управляется методом чарлиплексинга. Светится белым цветом, по некоторым данным это OLED:
Аккумулятор имеет заявленную емкость чуть менее 1 Ач:
Защитный компаунд легко снимается иголкой, давая возможность прочитать маркировку элементов на плате:
Маленький квадратик сверху — контроллер зарядки литиевых аккумуляторов BC91801 от Semihigh. Умеет заряжать током до 1А и обращаться с глубоко разряженными ячейками.
Квадратик чуть побольше снизу — микроконтроллер Puya PY32C642, самый дешевый ARM — примерно по 5 центов за штуку. За эти деньги(а в нашем случае — вообще без денег) пользователь получает 32-битное ядро Cortex-M0+ с рабочей частотой 24MHz, 24 кбайт Flash-памяти и 3 кбайт ОЗУ. Из периферии — до 18 выводов GPIO, 10-канальный 12-битный АЦП на 1MSPS, 2 16-битных таймера и пару компараторов. Привычных всем UART, SPI и I2C не завезли — программируется МК через SWD интерфейс. Зато этот интерфейс выведен на удобные для пайки и заботливо подписанные пятачки на нижней стороне платы:
Контроллер очень похож на обсуждавшийся у нас тут примерно год назад PY32F002A — чуть меньше памяти, зато сильно порезанная периферия.Родной программатор для контроллеров Puya стоит каких-то невменяемых денег, но заменяется слегка доработанным ST-Link V2, перешитым в J-Link.
Пример программы для «помигать светодиодом»:
int main(void)
{
HAL_Init();
APP_LedConfig();
while (1)
{
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_8); //переключем состояние анода одного сегмента
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12,0); //катод постоянно подключен к минусу
}
}
static void APP_LedConfig(void) //тут конфигурируем порты
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_8; //заполняем структуру конфигурации для 8 выхода
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //передаем структуру
GPIO_InitStruct.Pin = GPIO_PIN_12; //заполняем структуру конфигурации для 12 выхода
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //передаем структуру
}
void APP_ErrorHandler(void)
{
while (1);
}
#ifdef USE_FULL_ASSERT
void assert_failed(uint8_t *file, uint32_t line)
{
while (1)
{
}
}
#endif /* USE_FULL_ASSERT */Вот тут выложена документация на этот МК и некоторые другие от Puya.Вот тут пример реверсинга другого вейпа на таком же МК.
Ещё для интересующихся темой:Опыты с платой на PY32F002A, проект на её основе, тема на форуме по PY32F002A, шаблоны программирования.
Что из этого можно сделать? Например, драйвер для светодиодного фонарика — питание начиная с 1,7 В и умение в глубокий сон тому способствует. Различные светодиодные гирлянды и часы(а вот тут придется делать I2C/SPI программно). При должной степени упорства
Самые обсуждаемые обзоры
| +69 |
3648
77
|
| +65 |
2686
64
|
| +62 |
4164
98
|
Микроконтроллер PY32C642 с ядром Cortex-M0 и 24 КБ флэш-памяти был использован для хостинга сайтов
Это и есть «на соплях».
… в упрощении процесса ковыряния с железом и ПО. На хорошей отладке куча всяких компонентов, сиди да изучай ПО, не дотронувшись к паяльнику. А тут ни компонентов ни гребенки.
Вообще не одно и то же.
Но пока не понял, что это за две «таблетки» — напоминают микрофоны, припаяны на три контакта.
Последняя получилась трогательная.
Наверное начну с точечной сварки awithz.
А вы разбирайте дальше, у вас это иногда хорошо получается
— а вот у меня сосед рассказывает…
— ну и вы рассказывайте