Назад

Семь хэллоуинских проектов, которые можно собрать и запустить в браузере

Каждый октябрь на Hackster, Instructables и в хэллоуинском хакатоне element14 возвращается одна и та же горстка сборок: череп с сервоприводом челюсти, который вопит, когда кто-то проходит мимо; пара глаз на круглых дисплеях, следящих за вами; картина, реагирующая на приближение; тыква, набитая NeoPixel, и чаша для конфет, которая выдаёт сладости, только если протянуть руку.

Мы пересобрали семь из них как примеры в галерее Velxio — по одному на семейство плат — используя детали Arduino и модули наших партнёров Seeed Studio, DFRobot, M5Stack и Pimoroni. Каждый открывается в редакторе с уже собранной схемой и уже написанным скетчем. Нажмите Run — и он скомпилируется и запустится в браузере, так что вы сможете настроить тайминги, цвета и пороги, прежде чем отрежете хотя бы один провод.

ПроектПлатаОсновные деталиОткрыть
Череп с внезапным испугомArduino UnoPIR, сервопривод, 2 светодиода, зуммерhalloween-uno-jump-scare-skull
Автомат для конфетArduino UnoHC-SR04, сервопривод, OLED SSD1306, зуммерhalloween-uno-candy-dispenser
Глаз, который следит за вамиSeeed XIAO ESP32-S3Seeed Round Display (GC9A01 + сенсор)halloween-round-display-eye
Тыква-светильник GroveSeeed XIAO ESP32-S3Grove RGB LED Ring, датчик света, PIR, пассивный зуммерhalloween-grove-pumpkin-ring
Портрет с привидениемESP32 DevKitРадар DFRobot C4001 mmWave, 2 светодиода, зуммерhalloween-c4001-haunted-portrait
Детектор призраковM5Stack Coreвстроенный LCD, кнопки и динамикhalloween-m5stack-ghost-detector
Тыква на светодиодной матрицеPimoroni Stellar UnicornRGB-матрица 16x16, кнопкиhalloween-stellar-unicorn-pumpkin

Поиск по слову halloween на странице примеров покажет все семь.

Фотография в начале пяти разделов — это иллюстрация того, как мог бы выглядеть готовый реквизит, сгенерированная с помощью ИИ. Все остальные изображения в этой статье — снимки примера, работающего в Velxio.

Как открыть и запустить любой из них

  1. Нажмите на ссылку проекта в таблице. Редактор откроется с платой, деталями, проводами и скетчем на своих местах.
  2. Нажмите зелёную кнопку Run на панели инструментов. Скетч скомпилируется на наших серверах (первая сборка для платы может занять минуту), а затем запустится в вашем браузере.
  3. Откройте монитор порта внизу. Каждый скетч выводит, что он делает, так что вы увидите реакцию реквизита даже с выключенным звуком.
  4. Щёлкните по датчику на холсте во время работы симуляции, чтобы открыть его панель. Именно там находятся ползунки расстояния, освещённости и присутствия.

1. Череп с внезапным испугом (Arduino Uno)

Иллюстрация, сгенерированная ИИ, готового черепа с внезапным испугом на крыльце: красные светодиодные глаза, сервопривод, открывающий челюсть, PIR-датчик спереди и Arduino Uno с зуммером позади

Иллюстрация готового реквизита, сгенерированная с помощью ИИ. Схема ниже — та, что работает в Velxio.

Классический реквизит для крыльца. PIR-датчик движения на D2 следит за дверным проёмом. Когда кто-то проходит мимо, два красных светодиодных глаза на D5 и D6 вспыхивают на полную яркость, сервопривод на D9 заставляет челюсть стучать четыре раза, а зуммер на D8 вопит сиреной, которая соскальзывает с 1,8 кГц вниз до рычания. Между посетителями глаза тлеют, как угли, а четырёхсекундная задержка не даёт черепу напугать одного и того же человека дважды подряд.

Череп с внезапным испугом на Arduino Uno: PIR-датчик, челюсть на сервоприводе, два красных светодиодных глаза и зуммер

Чтобы попробовать, щёлкните по PIR-датчику на холсте. Выход переходит в HIGH на три секунды — именно так ведёт себя настоящий HC-SR501 с подстроечником задержки, выкрученным до минимума.

Весь испуг — это короткая функция. Обратите внимание, что tone() на Uno использует Timer2, а библиотека Servo использует Timer1, поэтому вопль и челюсть никогда не борются за один таймер:

void scare() {
  eyes(255);
  for (int i = 0; i < 4; i++) {          // the jaw chatters four times
    jaw.write(JAW_OPEN);
    if (i == 0) scream(); else delay(160);
    jaw.write(JAW_CLOSED);
    delay(140);
  }
  eyes(40);
  lastScare = millis();
}

2. Автомат для конфет на Хэллоуин (Arduino Uno)

Иллюстрация, сгенерированная ИИ, готового автомата для конфет: расписная коробка-тыква с трубкой для конфет, ультразвуковой датчик над чашей, лоток, выдающий конфету, OLED-дисплей и Arduino Uno за боковым окошком

Иллюстрация готового реквизита, сгенерированная с помощью ИИ. Схема ниже — та, что работает в Velxio.

Бесконтактная чаша для конфет. Ультразвуковой датчик HC-SR04 направлен вверх из-под лотка и ищет руку ближе 10 см. Когда он её находит, сервопривод открывает заслонку, выдаёт одну конфету и снова закрывает её, зуммер играет короткую мелодию, а OLED-дисплей SSD1306 отсчитывает оставшееся, с маленькой тыквой-светильником, нарисованной в углу. Когда запас заканчивается, экран показывает TRICK, и зуммер смеётся над вами вместо этого.

Автомат для конфет на Arduino Uno с открытой заслонкой и OLED-дисплеем, отсчитывающим конфеты

Щёлкните по HC-SR04 и перетащите ползунок расстояния ниже 10 см, чтобы протянуть руку. Затем скетч ждёт, пока руку уберут, так что одно движение — одна конфета, и никто не опустошит чашу, оставив руку на месте.

3. Глаз, который следит за вами (Seeed Round Display для XIAO)

Иллюстрация, сгенерированная ИИ, черепа с двумя Seeed Round Display вместо глаз, каждый показывает налитый кровью глаз со щелевидным зрачком

Иллюстрация готовой пары глаз, сгенерированная с помощью ИИ. Пример в Velxio запускает один дисплей; пара — это два таких.

Глаза на круглых TFT-дисплеях были повсюду в прошлогоднем хэллоуинском хакатоне element14 — от напечатанных на 3D-принтере черепов до реквизитов, срабатывающих по радару. Этот использует Seeed Round Display для XIAO с XIAO ESP32-S3, установленной на его обратной стороне. 1,28-дюймовый GC9A01 показывает налитое кровью глазное яблоко с оранжевой радужкой.

Налитое кровью глазное яблоко на Seeed Round Display, зрачок смотрит туда, где касаются стекла

Нажмите на стекло, и зрачок последует за вашим указателем. Продолжайте нажимать, и он сузится в кошачью щель. Отпустите — и он вернётся к тому, чтобы самостоятельно оглядывать комнату и моргать каждые несколько секунд.

Контроллер касаний — это CHSC6X на шилде, считываемый так же, как его читает собственный драйвер Seeed: падающий фронт на D7 означает, что палец опущен, а пятибайтовое чтение по I2C по адресу 0x2E возвращает позицию. Каждый кадр рисуется в закадровый спрайт и выталкивается на стекло за один раз, так что панель никогда не показывает наполовину нарисованный глаз. Перерисовывается только квадрат 174 пикселя, до которого может добраться радужка; ободок с его венами рисуется один раз и снова после каждого моргания:

static void drawEye() {
  frame.fillScreen(TFT_BLACK);
  drawSclera(frame, BX, BY);           // the part of the sclera inside the box
  ...                                  // iris, streaks, pupil, glint, eyelids
  frame.pushSprite(BX, BY);
}

Выводы — собственные выводы шилда, поэтому один и тот же скетч работает на реальном стеке.

Для пары глаз соберите два: череп или вырезанная тыква принимает два Round Display в свои глазницы, каждый со своей XIAO, запускающей этот скетч. Они оглядываются и моргают независимо, что выглядит более живым, чем два глаза в идеальном синхроне.

4. Тыква-светильник Grove, которая просыпается в сумерках (Seeed XIAO ESP32-S3)

Иллюстрация готовой тыквы-светильника Grove, созданная ИИ: светодиодное кольцо светится зелёным и фиолетовым внутри вырезанной тыквы, рядом на кабелях Grove — плата XIAO, PIR-датчик и датчик освещённости

Иллюстрация готового реквизита, сгенерированная ИИ. Схема ниже — та, что работает в Velxio.

Четыре модуля Grove на XIAO ESP32-S3 образуют вставку для вырезанной тыквы. Датчик освещённости Grove держит 42-светодиодное кольцо Ultimate RGB LED Ring выключенным днём. Когда темнеет, кольцо мерцает оранжевым и жёлтым, как свеча, причём каждый светодиод горит своим пламенем. Когда PIR-датчик Grove видит кого-то, тыква становится одержимой: зелёно-фиолетовый вихрь закручивается по кольцу, а пассивный зуммер Grove играет несколько тактов жуткой мелодии.

Тыква-светильник Grove: кольцо Ultimate RGB LED Ring мерцает, как свеча, рядом с XIAO ESP32-S3, датчиком освещённости, PIR-датчиком и пассивным зуммером

Чтобы попробовать, щёлкните по датчику освещённости и перетащите его ползунок вниз, чтобы наступила ночь, затем щёлкните по PIR-датчику и сработайте им.

Та же схема с кольцом, вращающимся зелёным и фиолетовым после срабатывания PIR-датчика

На реальном железе питайте кольцо от контакта 5 В платы XIAO (в примере разводка именно такая) и держите яркость низкой: 42 светодиода WS2813 на полной белой яркости потребляют гораздо больше, чем готов отдать USB-порт.

5. Портрет с привидениями (радар DFRobot C4001 mmWave)

Иллюстрация готового портрета с привидениями, созданная ИИ: старая картина в позолоченной раме со светящимися красными глазами, а на обороте холста — радар mmWave, плата ESP32 и зуммер

Иллюстрация готового реквизита, сгенерированная ИИ. Схема ниже — та, что работает в Velxio.

Картина, чьи глаза следят за комнатой, — старый трюк с аттракционов, а радар делает его ещё лучше. DFRobot C4001 (SEN0610) — это 24-гигагерцевый датчик mmWave, который измеряет расстояние до человека, и его сигнал проходит прямо сквозь холст и деревянную раму. Спрятанный за картиной, он ничем себя не выдаёт.

Скетч переводит радар в режим скорости, где он сообщает и дальность, и присутствие. Чем ближе вы стоите, тем ярче горят два светодиодных глаза портрета и тем быстрее стучит сердце на зуммере — от одного удара каждые 1,5 секунды на шести метрах до почти трёх в секунду вблизи. Подойдите ближе одного метра — и он завопит.

Схема портрета с привидениями: ESP32 DevKit, радар DFRobot C4001, два красных светодиодных глаза и зуммер

Щёлкните по радару и перетащите ползунок расстояния, чтобы подойти к картине.

// 6 m away: a dim glow. Right in front: full blaze.
float closeness = constrain((FAR_M - range) / (FAR_M - SHRIEK_M), 0.0f, 1.0f);
eyes(10 + (int)(closeness * 245));

6. Детектор призраков (M5Stack Core)

Скорее игра, чем реквизит, и единственный проект, где ничего не нужно подключать. M5Stack Core Basic рисует стрелочный индикатор, который показывает «спектральное поле» комнаты. Стрелка блуждает сама по себе и время от времени скачет в красную зону HAUNT; именно тогда на экран выплывает призрак, а динамик начинает трещать.

Детектор призраков на M5Stack Core: стрелочный индикатор в красной зоне и призрак на экране

Три кнопки на передней панели — это элементы управления:

Индикатор рисуется в 8-битный спрайт M5Canvas и выводится за один раз, что не даёт стрелке мерцать. Полноэкранный 16-битный спрайт не поместился бы: у Core Basic нет PSRAM.

7. Тыква на LED-матрице (Pimoroni Stellar Unicorn)

Последний проект — чистое украшение. 16x16 RGB-матрица Pimoroni Stellar Unicorn превращается в ребристую тыкву-светильник, чьи глаза, нос и зубчатый рот светятся от свечи внутри. Нажмите A для удара молнии, за которым прокручивается HAPPY HALLOWEEN, B — чтобы пустить призрака, плывущего по лицу, а LUX + и - задают яркость.

Лицо тыквы-светильника на 16x16 LED-матрице Pimoroni Stellar Unicorn

Лицо — это сетка 16 на 16 символов в скетче, по одной букве на светодиод, так что изменить выражение — вопрос редактирования текста.

Перенос на реальное железо

Скетчи написаны под те же библиотеки и контакты, которые вы использовали бы на столе, поэтому переход от симулятора к реальной сборке — в основном вопрос питания и механики:

Ограничения


Поделиться:
David Montero

Автор

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Похожие статьи


Предыдущая статья
Аналоговая электроника в браузере: семь схем, которые можно запустить и измерить
Следующая статья
Милый настольный робот: лицо, которое слушает, на ESP-VoCat с эмулятором в браузере