От пустой платы ESP32 до устройства, которое шлёт данные вам на телефон, — за один вечер. Скрипты на понятном языке вместо C, без тулчейна, без своего сервера и без пересборок. Достаточно быстро, чтобы проверить идею, и достаточно просто для первого урока.
Первая прошивка из браузера по USB. Дальше всё идёт по воздуху.
R1BBIT превращает плату ESP32 в готовое подключённое устройство — без тулчейна, без своего сервера и без единой строки на C.
Особенно хорошо он подходит для трёх вещей: быстро довести продукт до первой работающей версии, проверить идею прежде, чем вкладываться в неё всерьёз, и учиться электронике и робототехнике — последнее в первую очередь тем, кто начинает с нуля.
В каталоге собрано железо, которое мы проверили руками, но экосистема работает почти на любом ESP32.
В прошивке живёт интерпретатор, поэтому плата выполняет обычный текстовый файл, а не собранный бинарник. Её 298 команд покрывают пины, датчики, экраны, звук, камеру и сеть — без C, без тулчейна, без компиляции.
Пишите в браузере: автодополнение для каждой команды и проверка, которая ловит ошибки прямо при наборе. Помощник напишет или починит скрипт за вас, а галерея готовых примеров избавит от пустого листа. Даже самая первая прошивка происходит здесь, по USB-кабелю.
Платы подключаются сами по зашифрованному каналу. Показания сохраняются и рисуются графиком, новые скрипты и прошивки приходят по воздуху, а у каждого устройства есть консоль и файловый менеджер, которые вы откроете откуда угодно.
Значение, которое публикует плата, становится плиткой на телефоне; сдвиньте там ползунок — плата отреагирует. В приложении есть и редактор, и консоль, и документация, и тот же помощник, а если что-то пойдёт не так, оно само вас позовёт.
CONFIG
PSRAM_SIZE 8
PSRAM_TYPE OCTAL
I2C_SDA 16
I2C_SCL 15
SPI_MOSI 11
SPI_MISO 13
SPI_CLK 12
DISPLAY_DRIVER ILI9341
DISPLAY_CS 10
DISPLAY_DC 46
DISPLAY_BL 45
DISPLAY_WIDTH 320
DISPLAY_HEIGHT 240
TOUCH_DRIVER FT6x36
TOUCH_INT 17
END_CONFIG
DISPLAY_INIT
DISPLAY_WIDGET(1, "label", 20, 24, 280, 36)
DISPLAY_WIDGET(2, "arc", 90, 76, 140, 140)
VAR T, F
VAR A[1]
DS1820_INIT(A, 1000)
VARS_PUBLISH(T, F)
WHILE(1)
T = A[0]
F = T * 9 / 5 + 32 ' to Fahrenheit
UI_TEXT(1, "Temperature " + T + " C")
UI_VALUE(2, T)
IF T > 30 THEN SEND_NOTIFY("Greenhouse", "Too hot: " + T)
PAUSE 1000
WEND
Веб-флешер пишет прошивку из браузера по USB. Ни тулчейна, ни поисков драйверов.
В веб-среде или в мобильном приложении — с автодополнением, подсказками по аргументам прямо в строке и проверкой типов на лету.
Нажимаете Run — и через пару секунд скрипт уже на плате: по воздуху, по шифрованному каналу, без всякого кабеля. Скрипт можно подхватить и с SD-карты или ввести через консоль. Плата хранит его во флеше, а AUTOSTART запускает снова при следующем включении.
Теперь видно, что происходит: показания приходят на панель и в телефон примерно раз в секунду, а в терминале видно всё, что скрипт печатает. Что-то не так — поправили строку и отправили заново. А плата тем временем обрастает новыми командами: обновления прошивки тоже приходят по воздуху.
Если вы пришли к ESP32 через Arduino IDE, вам знакома цена каждой правки: пересобрать, воткнуть кабель, перепрошить — и так по кругу, пока логика не уляжется. Blynk и Arduino Cloud дают панель и облако, но логика под ними — по-прежнему C++, который надо пересобирать и заливать заново на каждое изменение. R1BBIT оставляет вам контроль и убирает пересборку: логика — текстовый скрипт, который читает плата, а панель — это просто переменные, которые она публикует.
Ваша программа — текстовый файл, который плата читает и выполняет. Поправьте строку в браузере, отправьте на плату — и она подействует, а сама прошивка не меняется никогда. Даже подключение описано текстом: сменить экран или перевесить датчик на другие пины — это правка, а не новая сборка.
В Arduino IDE каждая правка — это цикл пересборки и перепрошивки по кабелю.
Ничего не нужно ставить и держать у себя. Устройства подключаются к cloud.r1bbit.com из коробки, телеметрия ложится в базу временных рядов и сама рисуется графиком, а у каждого устройства есть удалённый терминал и файловый менеджер. Нужны данные из интернета? HTTP_GET заберёт их прямо с платы — без посредников.
С Blynk или Arduino Cloud панель готова, но скетч под ней — всё тот же C++, который вы пересобираете и заливаете на каждое изменение.
Опишите, что должно делать устройство, и встроенный помощник напишет для этого R1BBIT-BASIC. Он видит скрипт, который у вас уже есть, поэтому может его дополнить, объяснить команду или найти ошибку, которую вы не находите. Он есть и в веб-среде, и в мобильном приложении.
Обычный чат-бот с лёгкостью выдумывает команды, которых в этом языке никогда не было.
27 типов виджетов рисуются на собственном экране устройства — графики, индикаторы, ползунки, даже тайлы OpenStreetMap. Опубликуйте переменную, и она станет плиткой в мобильном приложении; сдвиньте там ползунок — на плате сработает ON_VAR. Пуш-уведомление — одна команда.
На деле это один шаг: добавьте виджет в мобильном приложении и укажите переменную — устройство само на неё подпишется и начнёт отправлять данные.
Интерпретатор изолирован от прошивки. Ошибка во время работы останавливает скрипт; плата сохраняет связь и принимает исправление по воздуху.
До 15 фоновых задач помимо главного цикла, с общими переменными и кооперативным планировщиком — без кода RTOS.
Поставьте SIM-модуль — и телеметрия, терминал и доставка скриптов продолжат работать, когда пропадёт Wi-Fi.
Проигрывать MP3 и трекерную музыку, записывать, считать FFT, транслировать камеру в браузер или на другую плату.
16 разделов, каждая команда с аргументами и примером — на английском, русском, испанском, французском и немецком.
Официальная галерея шаблонов прямо в среде и форум, где делятся скриптами и схемами подключения.
Работа со встраиваемыми системами редко сводится к коду. Нужно доставить файлы на плату, привести картинки к формату, который экран действительно прочитает, уместить шрифт во флеш — и многое лучше вообще на плату не класть. Всё это лежит в той же вкладке браузера, что и редактор: без отдельных утилит и без беготни с картами памяти.
Откройте окно файлов устройства — и вы смотрите на флеш платы, которая может стоять в другом здании. Перемещайтесь по нему, перетаскивайте файл в окно, чтобы загрузить, забирайте обратно, переименовывайте, удаляйте, создавайте папки — и сохраняйте редактируемый скрипт прямо на устройство. Индикатор свободного места показывает, сколько останется, прежде чем вы зальёте большой шрифт или звук.
У платы меньше мегабайта флеша — одна фотография съедает половину. Поэтому держите медиа в облаке: загрузите файл один раз, дайте короткое имя и напишите это имя со знаком @ впереди. Плата заберёт его по требованию скрипта, в нужном размере, и ничего у себя не сохранит.
Откройте картинку, обрежьте, порисуйте поверх, выберите глубину цвета, которую хочет экран, — и заберите результат либо массивом прямо в скрипт, либо файлом сразу на плату. Счётчик внизу заранее говорит, во сколько байт это обойдётся.
Загрузите любой TTF, выберите, какие диапазоны символов оставить, и поправьте неудачный глиф вручную, по пикселю. Строка внизу считает, сколько памяти это займёт, и предупреждает, когда бо́льшая часть — пустое место: обычно именно поэтому шрифт и не влезает.
Задайте холсту размер вашего экрана, перетащите на него подписи, кнопки, ползунки, индикаторы, графики и списки и разложите их по сетке. Одна кнопка — и вы получаете скрипт, который рисует ровно этот экран. Он же умеет разобрать готовый скрипт, так что раскладку можно переделать позже.
Трекерные модули играют и в браузере, и на плате. Откройте один — и получите сетку паттернов со всеми нотами и эффектами, список каналов и все сэмплы: правьте здесь, а тот же файл будет играть из вашего скрипта.
Ролик превращается в ленту кадров, каждый из которых можно править отдельно: нарисовать поверх одного, продублировать, вырезать кусок. Потом ужать до того, что вытянет маленький экран: однобитный чёрно-белый с дизерингом или сжатый цвет.
Бросьте трек — и увидите осциллограмму: выделить кусок, вырезать, оставить только нужное. Дальше выберите битрейт, и строка снизу заранее назовёт цену: трек на две с половиной минуты ужался с 15 МБ до 1,3 — достаточно мало, чтобы держать его на плате.
Всё, что вы здесь сделаете, уходит прямо на плату — или остаётся на сервере, где скрипт находит это по имени.
Мобильное приложение — не пульт, прикрученный в последний момент, а тот же рабочий процесс, что и в браузере. Собирайте панель, пишите и правьте скрипты, перекладывайте файлы на плату и обратно, открывайте терминал, смотрите живые значения, читайте документацию и спрашивайте помощника. Войдите в аккаунт — и все ваши устройства уже здесь.
Редактор
Виджеты
Терминал Звук и видео на микроконтроллере обычно означают кодеки, буферы и неделю чтения даташитов. Здесь это команды. Радио, поток с камеры, канал рации между платами и телефонами — каждое умещается в несколько строк, а трафик несёт облако.
Направьте команду на файл во флеше, на файл, лежащий на сервере, или прямо на интернет-радиостанцию — плата раскодирует и проиграет. Она ещё и скажет, что играет сейчас, потому что читает данные о треке от станции.
VAR title$
PLAY_AUDIO("https://mangoradio.stream.laut.fm/mangoradio")
WHILE 1
AUDIO_TITLE(title$)
PRINT "Now playing: " + title$
PAUSE 5000
WEND
Поставьте несколько плат в одну комнату — и они слышат друг друга. Держите кнопку, чтобы говорить, отпустите, чтобы слушать. Телефоны заходят в ту же комнату, так что устройство и человек оказываются на одном канале — удобно для мастерской, ворот, теплицы в дальнем конце участка.
CONFIG
IN1 4
IN1_PULL UP
END_CONFIG
JOIN_AUDIO_ROOM("myteam", 16)
WHILE 1
IF IN1 = 0 THEN PTT(1)
IF IN1 = 1 THEN PTT(0)
PAUSE 50
WEND
Откройте видеокомнату — и камера выходит в эфир. Смотрите в мобильном приложении или в браузере, а вторая плата с экраном может зайти в ту же комнату зрителем: дверной звонок показывает себя на панели в кухне, и никакого своего сервера посередине.
CAM_INIT
CAM_RESOLUTION(320, 240)
START_VIDEO_ROOM("frontdoor", 10)
// on the board with the screen:
// JOIN_VIDEO_ROOM("frontdoor")
Голос и видео идут по каналу с малой задержкой, с автоматическим обходом, если его блокируют. Звук вдобавок умеет проигрывать ноты и мелодии, трекерные модули, писать WAV и MP3 и показывать спектр в реальном времени.
Все команды звука и видеоПрошивка собирается под шесть целей: ESP32-S3, ESP32-P4, ESP32-C6, ESP32-C3, классический ESP32 и S3 без PSRAM. Платы ниже мы проверили своими руками. Возьмите отладочную плату того же семейства — у неё точно так же будет свой блок CONFIG.
Эталонная платформа — новое появляется здесь первым
The big-screen one
Wi-Fi 6 в крошечном корпусе
The smallest and cheapest
Собирается и под классический ESP32 (D0WD), и под ESP32-S3 без PSRAM: тот же язык, то же облако, меньше периферии.
Экосистема готова к коммерческой работе уже сегодня. Соберите устройство на ESP32 — и та же прошивка, то же облако и те же приложения, что крутят первую плату у вас на столе, будут крутить сотню плат в поле. Переписывать ничего не придётся в тот день, когда проект перестанет быть хобби.
R1BBIT работает на обычных модулях ESP32, которые дистрибьюторы продают партиями. Переход от одной штуки к тысяче — вопрос закупки, а не переделки, и один и тот же скрипт работает на каждой.
Исправленный скрипт или новая сборка прошивки уходит по воздуху сразу на все платы. Никто не едет на объект с ноутбуком и кабелем.
Каждое устройство пишет показания в облако, они лежат по устройствам и готовы к построению графиков на месяцы назад. Бэкенд писать не надо, базу поднимать тоже.
Приложения для iOS и Android опубликованы и готовы. Устройство принадлежит аккаунту владельца, и его виджеты появляются там сами — второе приложение никто не пишет.
Устройство привязано к аккаунту, а всё, чем оно обменивается с облаком — телеметрия, команды, скрипты и прошивки, — идёт по шифрованному каналу.
В каталоге железо, которое мы проверили руками, но прошивка собирается под шесть целей ESP32 — так что плата вашей собственной разработки войдёт в ту же экосистему.
Статистика с холодильного оборудования и холодных складов, отопление и кондиционирование зданий, мониторинг мастерской и теплицы — за всем этим стоит один и тот же стек.
R1BBIT для бизнесаПервый день новичка с микроконтроллером уходит на что угодно, только не на программирование: поставить среду, найти драйверы, выбрать плату в меню, дождаться сборки. R1BBIT убирает этот день. Браузер, недорогая плата и USB-кабель — и класс пишет логику в первой половине урока, а не на третьем занятии.
CONFIG
OUT1 2
END_CONFIG
WHILE 1
OUT1 1
PAUSE 500
OUT1 0
PAUSE 500
WEND
CONFIG
I2C_SCL 7
I2C_SDA 6
END_CONFIG
VAR T, H
SI7021_INIT(T, H, 2000)
WHILE 1
PRINT "temp " + T + " hum " + H
PAUSE 2000
WEND
CONFIG
I2C_SCL 7
I2C_SDA 6
END_CONFIG
VAR T, H
SI7021_INIT(T, H, 2000)
VARS_PUBLISH(T, H)
WHILE 1
IF T > 27 THEN
SEND_NOTIFY("Too warm", STR$(T) + " C")
ENDIF
PAUSE 60000
WEND
Каждый скрипт здесь — это вся программа целиком: нет ни скрытого файла настроек, ни проекта, который нужно настраивать.
Всё происходит в браузере — на школьном компьютере без прав администратора, на ноутбуке, даже на планшете. Ничего не скачивать, никаких лицензий и никакой версии, которая работает только на одной машине в кабинете.
Команды говорят, что делают: DHT_INIT, PRINT, PAUSE, IF … THEN. Ученик читает строку и понимает её, поэтому урок может быть про циклы и условия, а не про точки с запятой и фигурные скобки.
Скрипт выполняется в изолированном интерпретаторе. Неверная строка останавливает его и объясняет почему; плата продолжает работать и через секунду принимает исправление. Ни испорченного железа, ни сорванного урока.
Самые маленькие поддерживаемые чипы стоят пару долларов, а плата с датчиком — это уже работающий проект. На комплект для целого класса не нужен грант.
Ни прав администратора, ни лицензий, ни образа для класса, который кому-то пришлось бы поддерживать.
Документация есть на английском, русском, испанском, французском и немецком.
Каждая плата подключается к облаку один раз, и вместе с этой активацией идут три месяца тарифа Starter. Дальше вы выбираете тариф или остаётесь на бесплатном — плата работает в любом случае.
Платится один раз за каждую плату, а не ежемесячно. Активация привязывает плату к вашему аккаунту и открывает три месяца тарифа Starter — редактор, облако, мобильные приложения и помощника, всё сразу.
Бесплатно
$6.99 / месяц
или $69.99 в год
$19.99 / месяц
или $199 в год
Цены указаны за аккаунт в долларах США и приходят прямо из нашей биллинговой системы. Годовая оплата дешевле двенадцати месячных. Бесплатному тарифу карта не нужна вовсе.
Откройте облако, почитайте документацию или спросите на форуме: первая плата занимает вечер, а не выходные.
Веб-среда, галерея шаблонов, панели и терминал к каждой плате — в браузере.
Открыть облако16 разделов, каждая команда с аргументами и примером, на пяти языках.
Читать документацию