Создаем мини-версию большого адронного коллайдера на Arduino

Когда заходит речь о физике элементарных частиц, воображение сразу рисует огромные подземные тоннели Большого адронного коллайдера в ЦЕРНе, протянувшиеся на 27 километров. Но изучить физику столкновения частиц можно прямо у себя на столе.

Мы набрели на игрушечную версию адронного коллайдера в виде компактного устройства на базе Arduino Pro Mini и светодиодного кольца NeoPixel, которое визуализирует движение, взаимодействие и «аннигиляцию» виртуальных частиц.

В этой статье мы подробно разберем, как собрать это устройство, какое программное обеспечение потребуется, и как интерпретировать поведение разноцветных «частиц».

По сути, это не настоящий «коллайдер», а симуляция движения частиц в 1D-пространстве (по кольцу) под действием «гравитации», задаваемой наклоном платы.

Создаем мини-версию большого адронного коллайдера на Arduino

Принцип работы

«Вы не можете позволить себе собственный Большой адронный коллайдер? Я тоже не могу. И потом, куда бы я его поставил? У меня и так достаточно хлама», — так автор проекта объясняет мотивацию его создания.

Устройство на Arduino имитирует поведение элементарных частиц в ускорителе. Светодиоды на кольце NeoPixel выступают в роли «точек трека», по которым движутся разноцветные огоньки — «частицы». Встроенный акселерометр MPU-9150 позволяет управлять движением частиц наклоном устройства.

Наклоняя коллайдер, вы заставляете частицы «скатываться» в ту или иную сторону, сталкиваться, менять цвет (имитируя превращение частиц) и «аннигилировать».

Физика «частиц»: как это работает и что означают цвета

Как только устройство запустится, вы увидите хаотичное движение огоньков. Вот что они символизируют:

  • Цвета. Разные цвета обозначают разные типы частиц (например, красный — кварк, синий — лептон и т.д.).
  • Взаимодействия. Когда две частицы встречаются на одном пикселе, они либо меняют цвет (рассеивание), либо оба гаснут (аннигиляция), либо порождают новую частицу третьего цвета.
  • Темная материя. Автор проекта упоминает «неуловимую частицу темной материи». Это специальный тип частиц, который не взаимодействует с обычными частицами, их можно заметить только по косвенным эффектам (например, они двигаются, не меняя траекторию при столкновении других).

Что такое WS2812B? Это «умные» светодиоды с контроллером внутри. Каждый пиксель можно программировать индивидуально (отсюда разные «частицы»). Под частицами мы понимаем в этом проекте виртуальные объекты в коде, имеющие координату (номер светодиода), скорость и «цвет/массу». Акселерометр (MPU) измеряет проекцию вектора силы тяжести.

Полный список компонентов

Перед началом сборки убедитесь, что у вас есть все необходимые детали.

Электроника

Компонент Характеристики Примечание
Arduino Pro Mini 5V, 16MHz Основной мозг устройства. Нет USB-порта, требует программатора.
MPU-9150 Акселерометр + Магнитометр Датчик инерции, определяющий наклон.
Конвертер уровней Bidirectional (3.3V ↔ 5V), 4 канала Так как MPU-9150 работает от 3.3V, а Arduino от 5V.

Существует плата MPU-9150 от компании Drotek со встроенным конвертером уровней. Это упростит монтаж, но удорожит проект.

Дисплей и оптика

Компонент Характеристики Примечание
NeoPixel Ring 60 пикселей (рекомендуется) Обеспечивает высокую детализацию треков.
Бюджетная версия 24 пикселя Бюджетный вариант, но отображает только 2 частицы одновременно.
Минимум 12 пикселей Поддерживается прошивкой автоматически.

Прошивка автоматически определяет размер кольца. Вы можете использовать любую совместимую модель WS2812B.

Инструменты и расходники

  • Макетная плата 65×95 мм (полоски меди).
  • Провода многожильные и одножильные.
  • Паяльник, кусачки, скальпель (или специальный нож для резки дорожек).
  • FTDI адаптер для прошивки Arduino Pro Mini.
  • Источник питания Power Bank 5V (через USB) или 2 батарейки AA + повышающий преобразователь до 5V.

Пошаговая инструкция по сборке

Шаг 1. Подготовка платы

На макетной плате необходимо сделать разрезы медных дорожек (как показано на схеме красными точками в оригинальном руководстве). Это предотвратит короткие замыкания между цепями питания, земли и данных. Автор советует использовать лупу для проверки качества резки, чтобы не осталось медных перемычек.

Шаг 2. Монтаж Arduino и датчиков

  1. Припаяйте SIL-гнездак пинам Arduino Pro Mini для упрощения программирования.
  2. Установите Arduino, MPU-9150 и конвертер уровней на плату. Автор использует одножильный провод, продетый сквозь отверстия компонентов и платы, чтобы жестко зафиксировать их перед пайкой.
  3. Подключение I2C шины (SCL, SDA) от Arduino к датчику обязательнодолжно идти через конвертер уровней, так как MPU-9150 не терпит 5V логики.

Шаг 3. Подключение неопиксельного кольца

Все кольца NeoPixel имеют 4 контакта:

  • Power (Vcc) — 5V
  • Gnd — Земля
  • Data-In (IN) — вывод D6 Arduino.
  • Data-Out (OUT) — не используется, нужен для последовательного соединения нескольких колец.

Производитель NeoPixel советует подключать электролитический конденсатор на 1000 мкФ (16V) между Vcc и Gnd кольца для сглаживания скачков напряжения. Резистор 220 Ом в разрыв линии Data-In снижает риск повреждения от выбросов. Автор проекта признает, что сам не всегда их ставит, но для надежной работы лучше их добавить.

Шаг 4. Ориентация компонентов

Критически важный момент: компоненты на плате и кольцо должны смотреть в противоположные стороны. То есть, если плата прикручена к фанере или акрилу с одной стороны, кольцо должно быть с другой. Первый пиксель кольца (тот, что сразу после входа Data-In) должен быть расположен строго вверху (12 часов).

Программирование и прошивка

Это самый сложный этап для новичков, так как Arduino Pro Mini не имеет USB. Нам понадобится внешний USB-UART адаптер (FTDI).

Настройка среды (Arduino IDE):

  1. Скачайте и установите Arduino IDEс официального сайта.
  2. Подключите FTDI адаптер к компьютеру и к пинам Arduino Pro Mini. Схема подключения: GND — GND, VCC — VCC, TX — RX, RX — TX.
  3. В Device Manager (Диспетчер устройств) найдите номер COM-порта, который занял адаптер.

Есть два варианта .hex файлов (готовых прошивок):

  • hex. Стандартная версия для датчика с адресом 0x68.
  • SHC-0x69.hex. Для модулей Drotek или других датчиков, которые «отзываются» на адресе 0x69.

Их можно скачать тут.

Команда для загрузки (AVRDude)

Поскольку стандартный функционал загрузки в Arduino IDE иногда «падает» с ошибками типа stk500_recv(): programmer is not responding, есть метод через командную строку.

Откройте cmd и введите:

set COM=COM10

set ARDUINO=C:\Program Files (x86)\Arduino

cd Downloads

«%ARDUINO%\hardware\tools\avr/bin/avrdude» -C»%ARDUINO%\hardware\tools\avr/etc/avrdude.conf» -v -patmega328p -carduino -P%COM% -b57600 -D -Uflash:w:SHC.hex:i

Разбор аргументов:

  • -patmega328p — тип микроконтроллера.
  • -b57600 — скорость обмена с загрузчиком.
  • -P%COM% — обратите внимание, нет пробела между -P и номером порта. Опытные пользователи отмечают, что пробел может вызывать ошибку cannot open COM port.

Диагностика ошибок прошивки

Ошибка Возможная причина Решение
ser_open(): can’t open device Порт занят или неверный номер COM. Закройте Serial Monitor в IDE. Проверьте Device Manager. Уберите пробел после -P.
not in sync: resp=0x00 Неверная скорость (Baud rate) или питание. Проверьте, выбран ли в меню Arduino плата Arduino Pro Mini (16MHz).
Вращающиеся паттерны IMU не отвечает. Проверьте пайку I2C (SCL/SDA). Попробуйте прошивку SHC-0x69.hex.

Почему возникают ошибки timeout при прошивке?

  • Решение 1. Проблема часто не в команде, а в том, что в команде есть пробел после -P. Нужно писать -PCOM3, а не -P COM3.
  • Решение 2. Не мучайтесь с ручным вводом. Загрузите стандартный скетч (например, Blink) через Arduino IDE. Когда загрузка завершится, скопируйте последнюю строку с avrdude из лога внизу окна. Замените в ней путь к файлу .hex на название нашего файла (hex).
  • Решение 3. Попробуйте программатор -carduino вместо -cavrispmkII, так как у Pro Mini стоит загрузчик Arduino (bootloader), а не программатор AVRISP.

MPU6050 connection failed или connection failed?

На экране сообщение об ошибке подключения к датчику, хотя I2C сканер видит чип. Причина в том, что устройство отвечает по адресу 0x69 (старый стандарт), а прошивка ищет 0x68. Используйте альтернативную прошивку SHC-0x69.hex.

Можно ли MPU-9250 вместо MPU-9150?

Деталь MPU-9150 снята с производства. Везде продают MPU-9250. MPU-9250 имеет другую внутреннюю структуру регистров. Готовая прошивка скорее всего не заработает с ним без правок исходного кода.

Если не умеете программировать, ищите на вторичном рынке именно MPU-9150 или датчики на базе MPU-6050 (только акселерометр, без магнитометра, но для симуляции наклона этого хватит). Покупать MPU-9250 — лотерея.

Можно ли Arduino Uno / Nano вместо Pro Mini?

Да, вы можете использовать Uno — они практически одинаковы, за исключением того, что на Uno уже встроен FTDI-адаптер для прошивки (просто вставьте Uno в USB).

Большая наука в миниатюре

Игрушечный адронный коллайдер — это идеальный пример проекта на стыке физики, электроники и искусства (Pi-Art). Он требует навыков пайки, понимания логики Arduino и терпения при отладке I2C шины, но результат стоит того.

Глядя на мелькание цветных огней, вы будете вспоминать о реальных экспериментах в ЦЕРНе, где физики точно так же (только на графиках) ищут следы новых частиц.

Читать еще по теме:

Что будем искать? Например,ChatGPT

Мы в социальных сетях