Сроки в проектах с устройствами обычно рвутся на стыке между теми, кто пишет прошивку, и теми, кто пишет приложение. Мы берём обе стороны: протокол согласуется один раз, и баг некому передать.
Обычно где-то между рабочим прототипом и продуктом, который человек сможет настроить сам.
Приложение к вашему устройству
Железо и прошивка есть, не хватает стороны телефона. Плюс обычная спасательная история: приложение работает на айфоне основателя и на половине андроидов. Делаем BLE- или WiFi-клиент, сценарий сопряжения, экраны управления и выпуск в сторы.
Протокол с обеих сторон ведёт одна команда
От прототипа на столе до продукта
ESP32 на макетке, который работает у вас на столе, — ещё не устройство, которое клиент достанет из коробки. Доводим до настройки подключения, состояний ошибок, сброса к заводским, обновлений и всего, что вылезает за пределами лаборатории.
Работают не только счастливые сценарии
Подключение устройства к WiFi
Шаг, на котором рождается большинство обращений в поддержку. Делаем настройку через BLE или SoftAP, разбираемся с сетями только на 2,4 ГГц, captive-порталами и неверными паролями — и говорим пользователю, что именно пошло не так.
Владелец доводит настройку до конца без вас
Телеметрия и дашборды
Устройства отправляют данные по MQTT или HTTPS в бэкенд, который принадлежит вам. Показания, состояние, ошибки и заряд в одном месте, с алертом, когда устройство перестало выходить на связь.
Видно, что происходит с парком устройств
OTA-обновления, которым можно доверять
Подписанные образы, две партиции и откат, который действительно срабатывает: новая сборка помечает себя рабочей только после того, как убедилась, что всё ещё достаёт до облака. Именно этот шаг чаще всего пропускают, и поэтому откат обычно оказывается декоративным. Поэтапная раскатка не пускает плохой релиз на весь парк.
Обновление прошивки без отзыва партии
Устройства на батарейке
Глубокий сон, источники пробуждения и то, как часто устройству на самом деле нужно выходить на связь. Батарею сажает редко ток сна — обычно это всплески радио и внешняя флешка. Меряем на вашей плате, а не берём цифры из даташита.
Время работы, которое можно писать на коробке
Стек
С чем работаем
Кристаллы Espressif и транспорты вокруг них, плюс приложение и бэкенд, которые делают устройство пригодным для людей.
Чипы и прошивка
ESP32
ESP32-S3
ESP32-C3
ESP8266 (legacy)
ESP-IDF
FreeRTOS
Arduino core
Связь
BLE / GATT
WiFi
MQTT
HTTPS / TLS
Настройка через SoftAP и BLE
OTA
Приложения и облако
React Native
iOS и Android
Node.js
PostgreSQL
Хранение временных рядов
Дашборды
ESP8266 помечен Espressif как не рекомендованный для новых разработок, поэтому мы берём его для устройств, которые уже в поле, а новое начинаем на ESP32-C3 или C6. У вас другой микроконтроллер или SDK вендора? Скажите какой: половина с приложением и облаком от этого не меняется.
Границы
Где начинается и заканчивается наша часть
Договориться об этом на входе дешевле, чем выяснить через месяц.
Делаем
Прошивку для ESP32 / ESP8266 и сопоставимых микроконтроллеров
Протокол BLE и WiFi — и на устройстве, и в приложении
Настройку подключения, OTA и управление парком устройств
Приложения для iOS и Android, включая выпуск в сторы
Бэкенд, хранение телеметрии и дашборды
Разбор связи, которая работает на столе и отваливается в поле
Не делаем
Схемотехнику и разводку печатных плат
Корпус и промышленный дизайн
Сертификацию EMC, FCC и CE
Серийное производство и цепочку поставок
Работаем рядом с вашим схемотехником или контрактным производителем и говорим с ними на одном языке.
Процесс
Как идёт проект с устройством
01
Смотрим, что уже есть
Ваше железо, прошивку в том виде, в котором она есть, и протокол между устройством и телефоном. Первое, что мы записываем, — сам протокол, с версией: чтобы потом изменение в прошивке и изменение в приложении не разошлись молча. Дальше говорим, что оставили бы, а что переделали.
02
Соединяем сквозь всю цепочку
Самая ранняя полезная веха — телефон, который разговаривает с вашей настоящей платой. Делаем это первым, потому что именно здесь живут неизвестные. Пока плат мало или их перевыпускают, приложение пишется против симулятора устройства и не ждёт железо.
03
Строим продукт вокруг
Настройка подключения, экраны управления, телеметрия, OTA и сценарии ошибок. Прошивка и приложение едут вместе, поэтому протокол не расходится.
04
Полевые тесты и релиз
Настоящие телефоны, настоящие роутеры, настоящие стены. Проверяем на разных производителях Android, выпускаем в сторы и остаёмся на первых раскатках прошивки.
FAQ
Частые вопросы
У нас ещё нет железа. Возьмётесь?
Да, если электронику делает ваш инженер или контрактный производитель. Можем прототипировать на отладочной плате, чтобы приложение и облако были готовы к приезду первых плат, но саму плату мы не проектируем.
У нас уже есть прошивка. Вы её перепишете?
Обычно нет. Читаем её, договариваемся о протоколе и дописываем там, где приложению нужно то, чего она не отдаёт. Переписывание предлагаем, только если существующий код не может безопасно нести OTA и защиту, и объясняем почему.
Почему BLE работает на iPhone, но не на части Android?
Потому что BLE в Android различается и у производителей, и между версиями системы. Недокументированная ошибка GATT 133, негласный лимит в пять сканирований за 30 секунд, MTU, который остаётся дефолтным в 23 байта, если его никто не согласовал, и фирменные энергоменеджеры, убивающие фоновые соединения, — это обычные полевые отказы. Мы тестируем на наборе реальных телефонов тех марок, которыми пользуются ваши клиенты, а не на одном флагмане.
Сколько это занимает?
Телефон, говорящий с вашей платой, — обычно 2–3 недели. Устройство, которое человек достаёт из коробки и настраивает сам, — 2–4 месяца в зависимости от того, сколько прошивки уже есть и сколько у продукта состояний.
Кому принадлежат прошивка и ключи?
Вам. Исходники, ключи подписи и облачные аккаунты ваши с первого дня и живут в ваших аккаунтах, а не в наших. Если позже заберёте разработку внутрь, переносить будет нечего.
Есть устройство, которое нужно подключить?
Расскажите, что за железо и на чём застряли. Скажем, что сделали бы первым и чего это потребует.