← Главное меню

Второй этаж: 16 каналов

Над основной платой ставится вторая такая же плата со своим ADS1299. Плата внизу (A) остаётся главной и отдаёт по Bluetooth все 16 каналов. Плата сверху (B) читает каналы 9–16 и передаёт их на A по трём проводам через разъём J5. Пайки к ножкам микросхем в основном варианте нет. То же самое по шагам в 3D: 06 Второй этаж в 3D.

Сначала соберите и проверьте 8 каналов. Плата A должна пройти все проверки из частей 1–3 и показать альфа-ритм. Только после этого добавляйте второй этаж: так любую ошибку легко найти.
ADS1299 ESP32 A · К1–К8, BIAS, Bluetooth ADS1299 ESP32 B · К9–К16, без Bluetooth J5 ↔ J5: TX→RX, RX←TX, GND REF аккумулятор → тумблер → J1 обеих плат стойки M3 как раньше

Почему так, а не «Daisy» как у OpenBCI

В OpenBCI второй ADS1299 передаёт данные через вход DAISY_IN первого. На нашей плате этот вывод (41) припаян к земле. Вывод тактовой частоты CLK (37) никуда не разведён, а шину SPI к разъёмам не вывели. Свободен только J5. Поэтому вторая плата получает свой ESP32 и шлёт готовые отсчёты на A по UART. Нужна вторая плата из заказа в Резоните и второй комплект деталей. Новую печатную плату заказывать не надо.

Каждый ADS1299 работает от своего генератора. Частоты отличаются на доли процента, поэтому прошивка A берёт к каждому своему отсчёту самый свежий отсчёт B. Сдвиг между половинами шапки не больше одного отсчёта (4 мс). Для нейрофидбека, мощности ритмов и BCI этого хватает. Если нужна точная фаза между каналами 1–8 и 9–16 (когерентность, источники), сделайте шаг 9: один провод даёт общий такт.

Что понадобится

ЧтоСколькоГдеЗаметка
Вторая плата из заказа Резонит1уже естьПлата B
Детали на вторую плату1 комплектсписок покупокЕсли брали детали на одну плату. Дороже всего ADS1299 (AliExpress 3,3–5,3 тыс. ₽) и ESP32-S3-WROOM-1-N16R8 (Чип и Дип 0,7–1 тыс. ₽). SW1 на B не нужен, см. шаг 1
Стойки M3 латунные «папа–мама» 12 мм4Ozon, AliExpressВкручиваются в стойки платы A сверху, на них ложится B
Винты M3×64OzonКрепят B сверху
Гнёзда TouchProof EE-B058AliExpressЕсли осталось меньше 8 из прошлых лотов, нужен ещё лот на 8
Электроды с разъёмом TouchProof 1,5 мм8как для первых восьмиИли шапка на 16+ позиций
Провод МГТФ 0,12–0,2 мм² или Dupont F-F≈ 1,5 мЧип и Дип, OzonJ5, питание, REF, 8 каналов
Разъём PH-2.0 с проводами (2 pin)1AliExpress, Чип и ДипПитание на J1 платы B
Для шага 9: провод ПЭЛ/ПЭТВ 0,1 мм, флюс, лупапо желаниюЧип и ДипОбщий такт для двух ADS1299

Шаги

1 Соберите плату B

Паяйте по тем же 3D-инструкциям части 1, что и A. Отличия:

2 Проверьте B отдельно

Пройдите часть 2 с прошивкой самотеста, как для A. Питание B на время проверки дайте с аккумулятора на J1 (перемычка вместо SW1 уже стоит), USB-C подключите к компьютеру для монитора. Обязательно: ID = 0x3E, DRDY 250 Гц, тестовый сигнал и шум с замкнутыми входами в норме.

3 Прошейте обе платы

Откройте папку firmware/eeg16 в PlatformIO. В ней две конфигурации:

В PlatformIO внизу слева выберите окружение (env) и нажмите Upload. Шлите прошивки до установки этажа: потом USB-C платы B закрыт стенкой корпуса.

4 Соедините J5 крест-накрест

Три провода по 6–8 см, скрутите их между собой. Надпись на плате у разъёма: GND-RX-TX.

Плата A, J5Плата B, J5Сигнал
TX (GPIO43)→RX (GPIO44)команды от A: проверка контакта, тест, старт
RX (GPIO44)←TX (GPIO43)отсчёты каналов 9–16, 921600 бод
GND—GNDобщая земля

TX одной платы всегда идёт на RX другой. Если соединить TX с TX, ничего не сгорит, но данных не будет.

5 Питание

Обе платы питаются от одного аккумулятора через тот же тумблер. Припаяйте второй разъём PH-2.0 параллельно первому: красный к выходу тумблера (OUT+ TP4056 после тумблера), чёрный к OUT−. Вставьте его в J1 платы B. Проверьте полярность по шагу «Аккумулятор» в части 3: квадратная площадка J1 это минус.

Две платы берут примерно в полтора раза больше тока, аккумулятор сядет быстрее. Когда к A подключён USB для монитора, B всё равно питается от аккумулятора, это нормально: земли плат соединены через J5 и минус аккумулятора.

6 REF, BIAS и каналы 9–16

Гнездо на панелиКуда паять
REFотверстие «REF» на A и «REF» на B: один электрод, провод раздваивается
BIASтолько «BIAS» на A, как раньше. На B «BIAS» пустой
К9 … К16«1+» … «8+» на B (К9 = 1+, К10 = 2+, … К16 = 8+)
«1−» … «8−», «SRB2», «GND»не используются, как и на A

Цвета проводов К9–К16 повторяют К1–К8 (цветовой код резисторов). На каждый провод B наденьте кусочек термоусадки или малярного скотча с буквой B.

Гнёзда. В торцевой стенке места больше нет. Восемь новых гнёзд ставятся в заднюю длинную стенку F (137 × 38 мм, сторона без антенны) двумя рядами по четыре, с тем же шагом: 11 мм по горизонтали, 15 мм между рядами. Шаблон сверловки панели подходит, если взять из него четыре столбца.

7 Соберите этаж

  1. Измерьте самую высокую деталь на A (обычно J1 или C34). Она должна быть ниже 12 мм хотя бы на 1,5 мм. Если выше, возьмите стойки 15 мм. Тогда этаж выйдет выше на 3 мм, проверьте зазор до крышки.
  2. Выкрутите 4 верхних винта платы A и вместо них вкрутите стойки «папа–мама» 12 мм.
  3. Положите B сверху той же стороной и в ту же сторону, что A: антенны ESP32 друг над другом, J3 у стенки с гнёздами. Закрепите винтами M3×6.
  4. Высота пакета: 12 + 1,6 + 12 + 1,6 + детали B ≈ 34 мм. Внутри корпуса 38 мм, крышка закрывается.
  5. По желанию прорежьте в стенке C второе окно USB-C над первым, на 13,6 мм выше. Тогда B можно перепрошивать без разборки.
  6. Отверстия в крышке над SW3 и SW2 теперь закрыты платой B. SW3 для проверки контакта больше не обязателен: тестом и проверкой управляет монитор порта, а перезапуск делается тумблером.

8 Проверка

Электродов на голове нет. Тумблер включён, к A подключён USB, в PlatformIO открыт монитор порта A (115200).

Предлагаемая раскладка 10-20: на A ваши восемь отведений как раньше, на B К9 Fp1, К10 Fp2, К11 F7, К12 F8, К13 T7, К14 T8, К15 P7, К16 P8. Вместе с F3, F4, C3, Cz, C4, Pz, O1, O2 на плате A это покрывает всю голову.

9 По желанию: общий такт

Делайте только после того, как шаг 8 прошёл. Нужны лупа, флюс и провод 0,1 мм в лаке.

  1. Найдите вывод 37 у ADS1299 на обеих платах. Ключ (точка) у U4 слева сверху, выводы считаются против часовой стрелки: 1–16 левая сторона сверху вниз, 17–32 нижняя слева направо, 33–48 правая снизу вверх. Вывод 37 пятый снизу на правой стороне. Проверьте прозвонкой: соседний 36 (RESET) звонится на площадку R30, соседний 38 (START) идёт на ESP32. У самого вывода 37 дорожки нет.
  2. Залудите кончик провода, приложите к носику вывода 37 на A и коснитесь паяльником на полсекунды. Так же на B. Провод проведите вокруг края платы B, длина до 7 см, закрепите каплей клея. Проверьте прозвонкой, что 37 не замкнулся на 36 и 38.
  3. На плате B снимите R29 (10 кОм у CLKSEL). Площадку R29, которая не звонится на TP4 (DVDD), соедините проводом с GND (TP1). Теперь B берёт такт снаружи.
  4. В firmware/eeg16/platformio.ini замените -D SYNC_CLOCK=0 на -D SYNC_CLOCK=1 и перепрошейте обе платы.
  5. Проверка: в мониторе A Board B ready, а repeated в отчёте почти не растёт. Если B пишет no ADS1299 answer, такт до B не доходит: проверьте провод 37 и CLKSEL на земле.

После шага 9 плата B без A не работает: её ADS1299 молчит без внешнего такта. Чтобы вернуть B в самостоятельный режим, поставьте R29 обратно и уберите перемычку CLKSEL–GND.

Как устроена прошивка

Если что-то не так

ПризнакЧто проверить
Board B: NO DATAПитание B (TP6 VIN около 3,7–4,2 В), J5 крест-накрест, GND между J5. Монитор B по его USB: должна быть строка Sending samples to board A.
Много bad framesПровода J5 длиннее 15 см или не скручены, плохая пайка на J5.
B пишет ADS1299 ID … expected 0x3EКак для A: пайка U4, питание AVDD/AVSS/DVDD на TP2–TP4, подлинность чипа.
К9–К16 шумят сильнее, чем К1–К8REF не доходит до B (прозвоните REF на панели до отверстия «REF» на B), нет общей земли через J5.
Bluetooth стал хужеАнтенна B над антенной A может слегка расстроить её. Сдвиньте B на 1–2 мм назад или разверните провода J5 подальше от антенн.

Прошивка проверена компилятором только на синтаксис, на живых двух платах ещё не запускалась. Если что-то работает не так, как здесь написано, напишите в Issues. Основа: Xavier Asghar, Low-Cost-EEG, GPL v3.