Однажды мне захотелось организовать на своем участке видеонаблюдение. С этими мыслями я забрел на известный китайский сайт и нашел там вот такую камеру.

Стоит она около 800 рублей, имеет удобное крепление на магните, встроенный аккумулятор и питание от USB. При желании, такими можно увешать весь периметр и наблюдать за внешним миром, не привлекая внимания санитаров. Одна беда — работает камера только через свое китайское приложение и требует аккаунта на своем китайском сервере. Моему внутреннему параноику такое пришлось не по вкусу, к тому же родное приложение интерфейс имеет на редкость страшный и неудобный. После недолгих раздумий, камера была разобрана и исследована на предмет возможности хакинга.

Внутри обнаружился чип BK7252N, представляющий собой 32-битный ARM микроконтроллер, работающий на частоте 160MHz, имеющий 544Кб памяти, встроенный Wi‑Fi и параллельный интерфейс для камеры. Сенсор камеры там оказался довольно посредственный, GalaxyCore GC0329 0,3 мегапикселя, 648×488 (А на сайте, между прочим, были гордые буковки HD). Ну да ладно, для моих целей сойдет.
На плате также обнаружились контактные площадки с надписями RX и TX. Подключив к ним USB‑UART адаптер, я обнаружил там консоль операционной системы RT‑Thread. Операционка довольно распространенная, поддерживает множество контроллеров разных архитектур и про нее даже есть статья на Хабре. Но, к сожалению, SDK для чипов Beken (к коим относится и BK7252N) нет в общем доступе. Упоминания о нем встречаются на форумах, но найти его на просторах сети так и не удалось. В связи с этим было решено поискать другие варианты. На гитхабе нашелся проект OpenBeken, где люди делают открытую прошивку для похожих камер на основе FreeRTOS. Но, к сожалению, поддержки моего чипа и сенсора там нет.
И тут в дело вступает Claude. Ему был выдан доступ к папке с проектом, куда были скачаны исходники OpenBeken и поставлена задача: завести камеру. Для начала он нашел UART download tool и скачал оригинальную прошивку. Потом собрал OpenBeken для похожего чипа BK7231N и залил ее в плату. Через UART у него была возможность читать логи, из которых стало понятно, что контроллер в целом заводится, но есть проблемы с инициализацией сенсора камеры. У BK7231N отличаются адреса регистров, отвечающих за тактирование параллельного порта камеры. Claude вытащил эти адреса из оригинальной прошивки. Тактирование завелось, но изображения с камеры все равно не было. Чтобы сенсор начал отправлять картинку, нужно сначала его инициализировать. У сенсора 259 управляющих регистров и нужно записать в них корректные значения. Эти значения тоже были взяты из оригинальной прошивки. После чего камера наконец заработала как надо.

В процессе этих экспериментов камеру нужно было перезагружать после каждой прошивки. В какой‑то момент мне это надоело, я нашел в ящике стола Arduino и модуль реле, накидал простой скетч, принимающий команды через USB и управляющий реле. Через это реле было подключено питание камеры и дальше мне осталось только общаться с Claude, который сам дергал питание и заливал очередную прошивку. За несколько часов экспериментов был создан патч к OpenBeken, добавляющий поддержку моей камеры, а также добавлена функция Motion detection, чтобы при обнаружении движения в кадре камера сохраняла фото на SD‑карту. Камера поднимает свою точку доступа без пароля, после подключения к ней нужно открыть в браузере адрес 192.168.4.1 и попасть в Web интерфейс, где в Config → Configure WiFi можно задать имя и пароль своей домашней Wi‑Fi сети. После этого камеру можно найти в локальной сети по адресу вида http://name.local, где name можно задать в Web интерфейсе.
Результаты всех этих действий выложены на гитхаб с инструкцией, как собрать прошивку и залить ее в камеру. В дальнейшем также планирую сделать Android и iOS приложение. В проекте не используются никакие сторонние сервисы и облака, все работает в локалке без регистрации и СМС. Это был мой первый опыт hardware‑хакинга с помощью ИИ и результат впечатляет. У меня есть еще некоторое количество железяк, ждущих своей очереди, так что продолжение следует.
Источник: habr.com