Ogni ottobre la stessa manciata di progetti torna su Hackster, Instructables e all’hackathon di Halloween di element14: un teschio con la mascella a servo che urla quando qualcuno passa davanti, un paio di occhi su display rotondi che ti seguono, un quadro che reagisce quando ti avvicini, una zucca piena di NeoPixel e una ciotola di caramelle che dà dolci solo se tendi la mano.
Ne abbiamo ricostruiti sette come esempi nella galleria di Velxio, uno per famiglia di schede, usando componenti Arduino e i moduli dei nostri partner Seeed Studio, DFRobot, M5Stack e Pimoroni. Ognuno si apre nell’editor con il circuito già cablato e lo sketch già scritto. Premi Run e viene compilato e avviato nel browser, così puoi regolare i tempi, i colori e le soglie prima ancora di tagliare un filo.
| Progetto | Scheda | Componenti principali | Aprilo |
|---|---|---|---|
| Teschio che spaventa | Arduino Uno | PIR, servo, 2 LED, buzzer | halloween-uno-jump-scare-skull |
| Distributore di caramelle | Arduino Uno | HC-SR04, servo, OLED SSD1306, buzzer | halloween-uno-candy-dispenser |
| L’occhio che ti segue | Seeed XIAO ESP32-S3 | Seeed Round Display (GC9A01 + touch) | halloween-round-display-eye |
| Zucca Grove | Seeed XIAO ESP32-S3 | Grove RGB LED Ring, sensore di luce, PIR, buzzer passivo | halloween-grove-pumpkin-ring |
| Ritratto infestato | ESP32 DevKit | Radar mmWave DFRobot C4001, 2 LED, buzzer | halloween-c4001-haunted-portrait |
| Rilevatore di fantasmi | M5Stack Core | LCD, pulsanti e speaker integrati | halloween-m5stack-ghost-detector |
| Zucca a matrice LED | Pimoroni Stellar Unicorn | Matrice RGB 16x16, pulsanti | halloween-stellar-unicorn-pumpkin |
Cercando halloween nella pagina degli esempi
li trovi tutti e sette.
La foto in cima a cinque delle sezioni è un’illustrazione di come potrebbe apparire l’oggetto finito, generata con l’AI. Ogni altra immagine in questo articolo è una cattura dell’esempio in esecuzione in Velxio.
Come aprire ed eseguire uno qualsiasi di essi
- Clicca il link del progetto nella tabella. L’editor si apre con la scheda, i componenti, i fili e lo sketch al loro posto.
- Premi il pulsante verde Run nella barra degli strumenti. Lo sketch viene compilato sui nostri server (la prima compilazione di una scheda può richiedere un minuto) e poi viene eseguito nel tuo browser.
- Apri il Serial Monitor in basso. Ogni sketch stampa quello che sta facendo, così puoi vedere gli oggetti reagire anche con l’audio disattivato.
- Clicca un sensore sulla tela mentre la simulazione è in corso per aprire il suo pannello. È lì che si trovano i cursori di distanza, luce e presenza.
1. Teschio che spaventa (Arduino Uno)

Illustrazione dell’oggetto finito, generata con l’AI. Il circuito qui sotto è quello che viene eseguito in Velxio.
Il classico oggetto da portico. Un sensore di movimento PIR su D2 sorveglia l’ingresso. Quando qualcuno passa, due occhi a LED rossi su D5 e D6 si accendono a piena luminosità, un servo su D9 fa battere la mascella quattro volte e un buzzer su D8 urla con una sirena che scende da 1,8 kHz fino a un ringhio. Tra un visitatore e l’altro gli occhi covano come braci, e un tempo di attesa di quattro secondi impedisce al teschio di spaventare la stessa persona due volte di fila.

Per provarlo, clicca il sensore PIR sulla tela. L’uscita va HIGH per tre secondi, che è quello che fa un vero HC-SR501 con il potenziometro del ritardo tutto al minimo.
Tutto lo spavento è una breve funzione. Nota che tone() sull’Uno usa il
Timer2 e la libreria Servo usa il Timer1, quindi l’urlo e la mascella non si
contendono mai un timer:
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. Distributore di caramelle per dolcetto o scherzetto (Arduino Uno)

Illustrazione dell’oggetto finito, generata con l’AI. Il circuito qui sotto è quello che viene eseguito in Velxio.
Una ciotola di caramelle senza contatto. Un sensore a ultrasuoni HC-SR04 punta verso l’alto da sotto lo scivolo e cerca una mano a meno di 10 cm. Quando la trova, un servo apre il cancello, fa cadere una caramella e lo richiude, il buzzer suona un breve jingle e un OLED SSD1306 fa il conto alla rovescia di quelle rimaste, con una piccola zucca disegnata nell’angolo. Quando le scorte finiscono lo schermo dice TRICK e il buzzer ti ride in faccia.

Clicca l’HC-SR04 e trascina il suo cursore della distanza sotto i 10 cm per tendere una mano. Lo sketch poi aspetta che la mano venga ritirata, così un gesto è una caramella e nessuno svuota la ciotola lasciando una mano ferma.
3. L’occhio che ti segue (Seeed Round Display per XIAO)

Illustrazione di un paio di occhi finiti, generata con l’AI. L’esempio in Velxio esegue un solo display; un paio sono due di questi.
Gli occhi su display TFT rotondi erano ovunque all’hackathon di Halloween di element14 dell’anno scorso, dai teschi stampati in 3D agli oggetti attivati da radar. Questo usa il Seeed Round Display per XIAO con un XIAO ESP32-S3 montato sul retro. Il GC9A01 da 1,28 pollici mostra un bulbo oculare iniettato di sangue con un’iride arancione.

Premi sul vetro e la pupilla insegue il tuo puntatore. Continua a premere e si restringe in una fessura da gatto. Lascia e torna a guardarsi intorno per la stanza da sola e a sbattere le palpebre ogni pochi secondi.
Il controller touch è il CHSC6X sullo shield, letto allo stesso modo in cui lo legge il driver di Seeed: un fronte di discesa su D7 indica che un dito è premuto e una lettura I2C di cinque byte a 0x2E restituisce la posizione. Ogni fotogramma viene disegnato in uno sprite fuori schermo e inviato al vetro in un colpo solo, così il pannello non mostra mai un occhio disegnato a metà. Viene ridisegnato solo il quadrato di 174 pixel che l’iride può raggiungere; il bordo con le sue venature viene dipinto una volta, e di nuovo dopo ogni battito di palpebre:
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);
}
I pin sono quelli dello shield stesso, quindi lo stesso sketch funziona sullo stack reale.
Per un paio di occhi, costruiscine due: un teschio o una zucca intagliata ospita due Round Display nelle sue orbite, ognuno con il proprio XIAO che esegue questo sketch. Guardano e sbattono le palpebre in modo indipendente, il che risulta più vivo di due occhi perfettamente sincronizzati.
4. Zucca di Grove che si accende al crepuscolo (Seeed XIAO ESP32-S3)

Illustrazione dell’oggetto finito, generata con AI. Il circuito qui sotto è quello che funziona in Velxio.
Quattro moduli Grove su un XIAO ESP32-S3 compongono un inserto per una zucca intagliata. Il Grove Light Sensor mantiene al buio l’Ultimate RGB LED Ring da 42 LED durante il giorno. Quando fa buio l’anello sfarfalleggia arancione e giallo come una candela, ogni LED con la propria fiamma. Quando il Grove PIR vede qualcuno, la zucca viene posseduta: un vortice verde e viola gira intorno all’anello e il Grove Passive Buzzer suona qualche battuta di una melodia inquietante.

Per provarla, clicca sul sensore di luce e trascina il suo cursore verso il basso per far venire notte, poi clicca sul PIR e attivalo.

Sull’hardware reale, alimenta l’anello dal pad 5 V dello XIAO (l’esempio è cablato così) e mantieni la luminosità bassa: 42 LED WS2813 a bianco pieno assorbono molto più di quanto una porta USB gradisca fornire.
5. Ritratto infestato (radar mmWave DFRobot C4001)

Illustrazione dell’oggetto finito, generata con AI. Il circuito qui sotto è quello che funziona in Velxio.
Il dipinto i cui occhi seguono la stanza è un vecchio trucco da luna park, e un radar lo rende migliore. Il DFRobot C4001 (SEN0610) è un sensore mmWave a 24 GHz che misura quanto è lontana una persona, e il suo segnale passa direttamente attraverso una tela e una cornice di legno. Nascosto dietro il quadro, nulla lo tradisce.
Lo sketch mette il radar in modalità velocità, dove riporta sia la distanza che la presenza. Più ti avvicini, più brillano intensamente i due occhi LED del ritratto e più veloce batte un battito cardiaco sul buzzer, da un battito ogni 1,5 secondi a sei metri fino a quasi tre al secondo da vicino. Entra entro un metro e strilla.

Clicca sul radar e trascina il suo cursore della distanza per avvicinarti al dipinto.
// 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. Rilevatore di fantasmi (M5Stack Core)
Più un gioco che un oggetto di scena, e l’unico senza nulla da cablare. L’M5Stack Core Basic disegna un indicatore a lancetta che legge il “campo spettrale” della stanza. La lancetta vaga da sola e ogni tanto schizza nella zona rossa HAUNT; è allora che un fantasma fluttua sullo schermo e l’altoparlante inizia a crepitare.

I tre pulsanti frontali sono i comandi:
- A scansiona più intensamente per tre secondi, così i fantasmi compaiono più spesso.
- B scatta una foto. Cattura il fantasma mentre è sullo schermo e il contatore nell’angolo sale.
- C attiva e disattiva il suono.
L’indicatore è disegnato in uno sprite M5Canvas a 8 bit e inviato in un colpo solo, il che
evita che la lancetta sfarfallii. Uno sprite a 16 bit a schermo intero non ci starebbe:
il Core Basic non ha PSRAM.
7. Zucca a matrice LED (Pimoroni Stellar Unicorn)
L’ultimo è pura decorazione. La matrice RGB 16x16 del Pimoroni Stellar Unicorn diventa una zucca intagliata a coste i cui occhi, naso e bocca frastagliata brillano da una candela all’interno. Premi A per un fulmine seguito da un HAPPY HALLOWEEN scorrevole, B per far vagare un fantasma attraverso la faccia, e LUX + e - per impostare la luminosità.

La faccia è una griglia di caratteri 16 per 16 nello sketch, una lettera per LED, quindi cambiare l’espressione è solo questione di modificare il testo.
Portarli sull’hardware reale
Gli sketch sono scritti per le stesse librerie e gli stessi pin che useresti sul banco di lavoro, quindi passare dal simulatore a una build reale è soprattutto una questione di alimentazione e meccanica:
- I servo assorbono picchi di corrente che il regolatore 5 V dell’Uno non gradisce. Per il teschio e il distributore, dai al servo la sua alimentazione 5 V separata e unisci le masse.
- Un PIR reale ha bisogno di circa un minuto per stabilizzarsi dopo l’accensione e scatterà da solo un paio di volte durante quel minuto.
- Per l’anello LED, alimentalo a 5 V e mantieni
setBrightness()basso a meno che tu non abbia un alimentatore dimensionato per questo. - Il C4001 vede attraverso legno sottile, cartone e tessuto ma non attraverso il metallo, quindi fai attenzione alla ferramenta di sospensione della cornice.
Limiti
- Il radar, il sensore di luce e il sensore a ultrasuoni sono pilotati da cursori. Danno allo sketch i numeri che darebbe un sensore reale, non una scena fisica.
- Il suono viene riprodotto tramite il browser. Le parti del buzzer seguono la frequenza che il pin produce; non modellano il volume o il timbro di un vero piezo.
Aprine uno, modificalo e costruisci la versione che spaventa la tua porta di casa. Buon Halloween.